| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| VRTP > Другие микроконтроллеры. > TMS320C6745 - начало пути |
| Автор: Gospodin_Riba Feb 19 2019, 01:17 PM |
| Итак, начнём... Была составлена принципиальная схема и разведена печатная плата для DSP от Texas Instruments - TMS320C6745 - легендарный DSP с мощнейшими возможностями! На борту - 32 МБ памяти, шина 16 бит. |
| Автор: Gospodin_Riba Feb 19 2019, 01:20 PM |
| По идее это чудо должно взлететь на 456 МГц (ядро) и152 МГц (память). Но я втайне надеюсь, что ещё удастся разогнать сверх этого (для тяжёлых эмуляторов). Свободные пины выведенына PLS-ки. Есть возможность параллельно подключить LCD, который не будет мешать внешней памяти, так как висят на разных шинах. Это прорыв - ни один ARM так не умеет. Только тупой RGB. |
| Автор: Andrew007 Feb 19 2019, 01:20 PM |
| Здорово! А где схема? А где плата в спринте или пикаде? |
| Автор: Gospodin_Riba Feb 19 2019, 01:23 PM |
| Сие творение поддерживает много вариантов загрузки. Мне удобны: загрузка по UART и с SPI EEPROM. В финале будет загрузчик с меню и файловой системой. С карты памяти будет считываться приложение и грузиться в SDRAM и прыг-прыг туда! Как тут делал 10 лет назад: http://zx-spectrum128k.narod.ru/Romanich/emu-apparatchik/TF.htm Принцип тот же. Только с поддержкой ФС. Вид сзади - под DSP куча блокировочных конденсаторов. |
| Автор: Gospodin_Riba Feb 19 2019, 01:27 PM |
| Несмотря на кажущуюся непопулярность, этот DSP очень популярный и завоевал сердца студентов и преподов в отраслях ЦОС. А также был замечен в некоторых приёмниках ICOM, SDR аппаратуре и много где ещё. Примеры программирования под этот DSP доступны в интернете и куча туториалов, что радует. Чисто железный подход, без линукса и кало-кубов. Заказано 9 штук печатных плат. Первоначально устройство задумано в виде отладочной платы, с набортным минимумом для запуска. Все свободные пины на плате промаркированы сеткографией, чтобыне лезть в схему. Если всё взлетит - велкам в личку! |
| Автор: Gospodin_Riba Feb 19 2019, 01:29 PM | ||||
Схема будет. Платы заказать можно будет у меня, когда прийдут. Но для начала мне самому опробовать надо. |
| Автор: Gospodin_Riba Feb 19 2019, 01:37 PM |
| Схема (draft): http://www.picshare.ru/uploads/190218/G2KVQKmE92.png |
| Автор: Andrew007 Feb 19 2019, 02:04 PM |
| Здорово! Буду ждать! |
| Автор: vladlen Feb 19 2019, 03:18 PM |
| Это DSP завоевал еще и сердца EAS систем Почему, кстати, именно такой выбрали? Чем он лучше других тмс для этой игрушки? |
| Автор: Gospodin_Riba Feb 20 2019, 01:35 PM | ||
Я не знаток всей линейки TMS-ов. Но подсказали в другом форуме. Я уже писал почему его выбрал: http://vrtp.ru/index.php?showtopic=30174&view=findpost&p=805234 |
| Автор: romanetz Feb 20 2019, 05:46 PM |
| А среда - ccs и отладчик Xds100 китайский? Я ими интересовался в 2008м, но тогда xds560 оригинальный (китайских не было) для вчерашнего студента был далеко за бюджетом |
| Автор: Gospodin_Riba Feb 24 2019, 12:57 PM | ||
Для портирования игр отладчик нафиг не нужен, ибо дорогой и есть UART со светодиодами. Не припомню одного случая , где отладчик нужен был бы мне как воздух. По CSS, ещё детально не копал. Полагаю, не хуже дела чем с Кейлом армовским. Было бы желание. GCC вроде б как тоже должен быть. |
| Автор: Gospodin_Riba Mar 1 2019, 06:02 AM |
| Пришли платы. 12 штук. Кому надо, пишите в личку, отдам недорого. |
| Автор: Gospodin_Riba Mar 1 2019, 06:03 AM |
| Контакты +5V, +3.3V, GND, перемычки для загрузки и GPIO промаркированы. |
| Автор: Gospodin_Riba Mar 1 2019, 06:03 AM |
| В ближайшее время распаяю минимум для запуска C6745. |
| Автор: Gospodin_Riba Mar 1 2019, 06:03 AM | ||
Стек печатной платы спроектирован с учётом волнового сопротивления для трасс SDRAM - в районе 40..60 Ом:
Визуальная проверка даёт приблизительно такой же результат - "слоёнка" из 7 частей, толщина 1 мм. Зазор между внешним и внутренним 1/7 = 0.1428 мм. К тому же, чем тоньше, тем более помехозащищённее (crosstalk падает квадратично с уменьшением расстояния). По дефолту делают вообще 0.2 - 0.3 мм, но для моего случая это не годится. |
| Автор: Gospodin_Riba Mar 2 2019, 12:33 PM |
| Начал собирать. Закралась ошибка - номиналы резисторов неверно выбраны для LDO на 1.3V. Вместо 5,6 кОм надо 240 Ом, а вместо 220 Ом надо 10 Ом. Иначе будет не 1.3V а 3.5 - 4.5 V и сожжет DSP. Хорошо, что я по-блочно паяю и проверяю. Пока спаял только всё минимально необходимое. Предусмотрел на плате кучу перемычек(джамперов) - можно исключать из схемы штатные LDO если они не нравятся, и запитать внешними другими. А также для замера потребляемых токов полезно. Всего 3 напряжения: 5V (исходное) 3.3V 1.3V |
| Автор: Gospodin_Riba Mar 2 2019, 12:40 PM |
| Да, пришлось немного напрячься, чтобы залить припой на Termal Pad, который он же GND микросхемы, который единственный. Лудил пузо микросхемы и пад на плате. Потом когда припаял ноги микросхемы, в отверстия вливал припой - ПОС-61 проволочка 0.5мм + китайский паяльник 45 Вт. И феном на 300 градусов дул. Плата и корпус микросхемы разогревается как утюг, думал что повредил, но вроде дышит! Весь тепловой удар взяли внутренние слои и Termal Pad который металлическая пластина (на пузе). Оно по идее так и должно, иначе как припаять Termal Pad, закрытый корпусом микросхемы с одной стороны и платой с другой?! |
| Автор: Gospodin_Riba Mar 2 2019, 12:45 PM |
| А теперь самое интересное. Выставил режим загрузки по UART-0. Чтобы его использовать, кварц тактового генератора C6745 должен быть 24 МГц. Положение перемычек на плате: B7 - замкнута лог. "1" B2 - разомкнута лог "0" B1 - замкнута лог. "1" B0 - замкнута лог. "1" И Boot3=0 (на плате всегда =0 - резистор 1 кОм на землю). Коммуникация с компом через конвертер MAX3232. UART0_TXD - контакт 5.9 на плате - к выводу 11 MAX3232 UART0_RXD - контакт 5.8 на плате - к выводу 12 MAX3232 |
| Автор: Gospodin_Riba Mar 2 2019, 12:48 PM |
| Выстраданный конвертер RS-232 => UART. Была поддельная MAX3232 которая на скорости 115200 бод не работала от 3.3V (только от 5V). Заменил брак, теперь работает как надо. На фотке ниже - нормальная MAX3232 (не брак!) |
| Автор: Gospodin_Riba Mar 2 2019, 12:49 PM |
| Ну и самое интересное: ядро дышит, DSP запущен. Отвечает BOOTME в терминалке, всё согласно документации от TI Дальше надо разбираться в каком формате грузить и как. Ну и blinking LED накидать в CSS. |
| Автор: vladlen Mar 2 2019, 01:11 PM |
| Работает нормально после жестокой пайки без нижнего подогрева, круто! |
| Автор: microxa Mar 2 2019, 03:00 PM |
| Да, круть немеряная.. хотя начало пути.. "Игровая консоль? Игровая приставка?" В прошлом веке, времен NT4.0 32метра оперативы было у компов, уровня серверного кластера... Или в синтезаторах.. (Хотя этажерку из удачных (по адресной шине) SDRAM напаивал на AWE64 - памяти на ней стало аж 8 метров.. но вышел очередной "мартышкин труд" , особо толку не было, а вот плата неприглядно выглядела из за паутины проводков.. пришлось потом откатыватся опять на 2метровый корпус ОЗУ ( вроде как из донорских 72пиновых SIMM) А так пожелаю не забывать, чтонибуть более.. радолюбительское.. или аудиофильское.. как вот был kx project там под SB-Live-вский DSP что-то "наколдовать" можно было.. (правда так и не понял, этот марсианский dsp-IT) з.ы А дату изготовления чипа, её реально опознать? |
| Автор: Gospodin_Riba Mar 2 2019, 03:49 PM | ||||
Музакер? ОЗУ на AWE также как и на Гусях и Turtle beach нужны для загрузки каcтомных MIDI-патчей. Вариант когда таблично-волновой синтезатор аппаратный и совместим с General MIDI. OPL4 вроде как. Или аналог. Сейчас в ПК ставят убогий AC97, который не более, чем тупо ЦАП-АЦП.
Дядьки за рубежом клепают на этом DSP разные штуки. У нас меньше, но вроде как на cqham что-то мелькало. А вообще конечно удивляет низкая активность радиолюбителей РФ, может из-за лже-кризиса ? Ну или смещение пластов ценностей с креативной на потребляцкую? Вспомнил такое : "В СССР достижение: человек в космос полетел. А сейчас? У жены айфон на треть миллиметра тоньше, а у меня тачка..." Жопа одним словом. |
| Автор: Gospodin_Riba Mar 3 2019, 10:15 AM | ||
| Наконец-то лёд тронулся и удалось написать рабочую моргалку светодиодом. Можно использовать Code Composer Studio Version: 5, он лечится - выкинув файл mdex.dll. Рабочий код ниже:
|
| Автор: Gospodin_Riba Mar 3 2019, 10:18 AM |
| Немного огорчило, что CCSv5 не понимает синтаксиса -C99. Хотя есть enable GNU extentions и C++ options. Тем не менее, объявление переменных в нутри цыклов и объявление массивов переменной длинны НЕ ПОДДЕРЖИВАЕТСЯ! Надо посмотреть, как дела обстоят в последних версиях CSS. Прошивка в AIS формате для загрузки по UART: |
| Автор: Gospodin_Riba Mar 3 2019, 10:19 AM |
| Пошагово алгоритм для загрузки программы по UART для TMS320C645: 1) Билдим проект: |
| Автор: Gospodin_Riba Mar 3 2019, 10:20 AM |
| 2) Делаем AIS Boot Image с помощью AISgen ДЛЯ D800K005 ! |
| Автор: Gospodin_Riba Mar 3 2019, 10:22 AM |
| 3) Полученный Blink.bin из Blink.out отправляем по UART с помощью программы UART Boot Host для OMAP-L137. Таблицу соединений ПК и отладочной платы Mini6745 я давал выше. Не забыть нажать RESET или передергнуть питание, когда нажали кнопку Start! |
| Автор: Gospodin_Riba Mar 3 2019, 10:25 AM |
| Так как политика TI оставляет желать лучшего и они склонны удалять со своих сайтов ссылки на скачивание необходимых инструментов, то выкладываю дистрибутив AISgen и UART Boot Host для C6745 и совместимых с ним по загрузке камней (C6747, C6743, OMAP-L137): |
| Автор: Gospodin_Riba Mar 3 2019, 10:26 AM |
| Ну и пруф конечно же: Следующий шаг - запуск SDRAM и её тестирование. |
| Автор: Gospodin_Riba Mar 4 2019, 05:59 AM | ||||||||
| Разобрался с PLL (файлы проекта PLL.c/PLL.h), выставил такой режим: частота ядра: 456 МГц частота шины EMIFB: 152 МГц (SDRAM) частота шины EMIFA: 91.2 МГц (пока свободна) Проинитил SDRAM (файлы проекта EMIFB.c/EMIFB.h) MT48LC16M16 на частоту 152 МГц (6.5 нс). Это максимальная частота шины по даташиту на C6745. Сама память ещё более быстрая 166 МГц (6 нс). --- Накатал тест памяти (файлы проекта MemTest.c/MemTest.h). Несколько тестов: запись словами по 8,16,32,64 байт. 16 типов шаблонов:
Вначале идёт заполнение всеми шаблонами по-очереди, затем заполнение отдельным шаблоном. А также дополнительный тест - запись псевдо-случайными числами. Код функции Random() такой:
Seed перед использованием Random32() надо проинитить простым числом (используется 0x7FFFFFFF). Тест всей памяти идёт около 4 минуты 20 секунд (последние тесты с Random вносят задержку). Если что-то не так, то тестирование памяти прекратится и светодиод на порте GP0[0] будет быстро моргать (интервал 100 мс). Если всё ОК и тест пройден, то светодиод будет медленно мигать (интервал 1 с). Кеширование кода и данных естественно - не задействовано(выключено), чтобы работа с SDRAM была не в пакетном режиме. Адресное пространство SDRAM (32 МБ) объявлено как volatile, что исключает оптимизацию компилятора - для гарантированного обращения к каждой ячейке памяти. --- При написании программ усердно курю Reference Manual на C6745 и поглядываю на следующие сорцы: c6000-evi-lib-master.zip и C6745-master.zip (оба качаются с GitHub). В первом проекте регистры периферии почему-то объявлены без VOLATILE, что приводит к неправильной работе программы, когда она Release, а не Debug и со включенной оптимизацией. В частности при настройке PLL без volatile повисало на втором цикле:
В моих исходниках все хедеры с регистрами исправлены, всё работает на максимальном уровне оптимизации. Во втором проекте автор не выложил хедеры. --- Обнаружил, что размер данных unsigned long int не 4, а 8 байт. В ARM 4 байта, а тут 8! Протестил остальные типы:
При портировании это надо учитывать! --- Токи потребления на частоте ядра 456 МГц, SDRAM 152 МГц при выполнении MemTest: Ядро 1.3V: 210 мА - пиковое значение Периферия 3.3V: 90 мА - пиковое значение C6745 и SDRAM слегка тёплые. LDO на 1.3V сильно тёплый - пиковая рассеиваемая мощность на нём 0.777 Вт = (5 V - 1.3 V)*0.21 A Как я говорил уже, на отладочной плате предусмотрены перемычки для исключения штатных LDO и запитки от других источников питания - к примеру, от более экономичных DC/DC. |
| Автор: Gospodin_Riba Mar 4 2019, 06:01 AM |
| Сорец проекта под CCS для тестирования SDRAM. В папке Release готовый bin для загрузки по UART (сгенерен AISgen-ом). |
| Автор: Gospodin_Riba Mar 4 2019, 06:03 AM |
Тест проходит успешно, по вопросам приобретения печатных плат - пишите мне в личку. |
| Автор: romanetz Mar 4 2019, 11:54 AM |
| Есть tms320c6713, а вот насчёт корпусов и расположения выводов - большой вопрос. Так бы взял платку, если подойдёт. С McBSP поиграццо и миди-синтезатором. |
| Автор: Gospodin_Riba Mar 5 2019, 02:37 PM | ||
| Доработал тестилку SDRAM, на другом форуме подсказали, что память ещё надо протестить на корректность рефреша и с включенным кешированием. Рефреш проверяется многократным чтением каждой ячейки - после первого чтения ячейка SDRAM разрушается, а refresh-цикл её восстанавливает. Если этого не происходит и из ячейки при чтении со второго раза и далее читается не то что записали - значит SDRAM бракованная или что-то не так. Тест с рефрешем успешно проходится. С кешированием пришлось повозиться. Задействовал пока кеширование данных. Архитектура C6745 имеет в 2 раза больше кеша - 32 кБ против 16 кБ у STM32. А так же есть кеш второго уровня - L2 - до 256 кБ. так что STM32 курят Ниже функция, для кеширования областей SDRAM - ничего сложного: курение референс-мануала делает своё дело:
Включение кеша первого уровня L1D - дало ускорение в 3..3.5 раза (в зависимости от теста) Включение кеша второго уровня 128 кБ - L2 дало ускорение на 20..25% Ниже сорец усовершенствованной тестилки SDRAM: |
| Автор: Gospodin_Riba Mar 5 2019, 02:42 PM |
| Далее я попробовал грузиться не по UART, а через SPI EEPROM. В наличии оказалась CAT25256 в DIP-корпусе. Встал вопрос о её прошивке, можно было шить самим C6745, но для этого пришлось писать прошивку для работы с SPI и UART и хост-программу для ПК. Это долго, а хочется как можно быстрее увидеть результат! Поэтому было решено приспособить для этого программатор USB ASP v2.0, имевшийся в наличии. Дефолтная прошивка программатора работает только с AVR-контроллерами. Но умельцы (кстати, большое им спасибо! Подробнее тут: http://plc-blog.com.ua/usbasp-flash-25xxx Пришлось искать комп с LPT портом и шить USB ASP самопальным программатором: |
| Автор: Gospodin_Riba Mar 5 2019, 02:43 PM |
| В конечном итоге, удалось залить обновленную прошивку в USB ASP и он заработал: |
| Автор: Gospodin_Riba Mar 5 2019, 02:43 PM |
| Cмострячил небольшую приблуду для SPI EEPROM: |
| Автор: Gospodin_Riba Mar 5 2019, 02:45 PM |
| Всё работает, что радует! Пошагово, как грузить C6745 с SPI EEPROM. 1) Создаем AIS-образ для заливки в SPI EEPROM: |
| Автор: Gospodin_Riba Mar 5 2019, 02:46 PM |
| 2) Открываем софт программатора (ссылку кидал выше) , открываем в нем файл прошивки и выбираем нужную память: |
| Автор: Gospodin_Riba Mar 5 2019, 02:46 PM |
| 3) Прошиваем! |
| Автор: Gospodin_Riba Mar 5 2019, 02:47 PM |
| 4) Переставляем перемычки B0,B1,B2,B7 как накартинке ниже - для загрузки с SPI EEPROM: |
| Автор: Gospodin_Riba Mar 5 2019, 02:48 PM |
| Подаем питание и смотрим последствия автономной загрузки с SPI памяти! |
| Автор: Gospodin_Riba Mar 5 2019, 02:50 PM |
| Как вы наверное догадались, что в SPI EEPROM в будущем будет свой собственный загрузчик, который будет инитить нужную периферию игровой приставки и загружать с SD-карты эмуляторы и игры в SDRAM ! При этом следует упомянуть, что часть периферии возможно настроить в самом AISgen. Ниже готовый образ для SPI EEPROM с целью проверки работоспособности платы - на GP0[0] мигающий светодиод. В целях минимизации потребления тока, частота ядра тут 24 МГц и всё отключено. |
| Автор: Gospodin_Riba Mar 5 2019, 02:59 PM |
| Следующим шагом, наверное будет размещение кода в SDRAM и его выполнение. Настройка кеша кода (L1P) и замер скоростей выполнения программ с кешированием и без. |
| Автор: microxa Mar 5 2019, 07:51 PM |
| 1.8v М/c eeprom SPI шил по LPT (напаиванием проводков), этого планшетно-сенсорного уродца на Atom Z3735F напрямую (без буфера), через подтягивающие резюки ![]() программой SPIPGMW Стояла 8метровая GigaDevice GD25Q64. Скорости оч. дикие: запись 3минуты, чтение 4 Хотя USB ASP оч.самобытен, своей ногодрыговой эмуляцией USB протокола... Саму прогу пришлось патчить (ибо не определяла eeprom-ку), благо она такая маленькая (50кб).. что была мысль ее реверснуть и насадить на USB->COM шнурок (на базе PL2303). Однако первые прогоны мигания и ногодрыга , показали нижеплинтуснейшие скоростя для подобных применений.. |
| Автор: microxa Mar 6 2019, 01:19 PM |
| А какие хорошие кодеки в него подойдут? А то смотрю I2S вроде как есть (без подробностей): Three Multichannel Audio Serial Ports (McASPs): - TMS320C6745 Supports 2 McASPs - Supports TDM, I2S, and Similar Formats [ZKB Помнится в AWE32 стояла 8лапая i2s TDA1387, звучание было с нее кристально чистое и волшебное (в него гналось даже FM/OPL аж с реверберацией).. В "мобильных" х86, новый тренд - технология Intel SST(вмест мраковой HD) и все тотже рылотек: The ALC5640 is a high performance, low power, dual I2S interface audio CODEC. Two 24bit/8kHz ~ 192kHz I2S/PCM interface for each mono DAC and stereo DAC Two 24bit/8kHz ~ 192kHz I2S/PCM interface for stereo ADC I2C control interface Представляете? вконец шизанулись, распихая его на 100500 пинов И как бы я не заморачивался с jack-детект, так и не вышло отыметь стерео вход. Ток моно... с микрофона... (впрочем что еще было ожидать от косоглазых 3.14д@р@сов) да уж |
| Автор: romanetz Mar 6 2019, 02:21 PM |
| АЦП AK5394 можно |
| Автор: Gospodin_Riba Mar 7 2019, 12:19 PM | ||||
Нормальное решение. Ведь сделать программатор - не самоцель, а вспомогательный инструмент.
Да всё что угодно! Я ещё не определился, что будет для звука. Хочется проще что-нибудь. Нужен только вывод звука. Микрофон не нужен. |
| Автор: Gospodin_Riba Mar 7 2019, 12:25 PM | ||||
| Запустил кеш инструкций и программу в SDRAM. Полет нормальный. Включение кеша L1P:
В SDRAM программа загружается AISgen-ом, если секции программы объявить что они в SDRAM (править CMD-файл в проекте). Попробовал принудительно отключать кеши и сделал замеры:
Попутно перешёл на CCS v.6, которая поддерживает обновление через интернет и скачал свежую версию компилятора C6000 8.3.3 которая как оказалось, понимает диалект C99, и я этому очень рад!!! Ну и с выкидыванием мёртвого кода разобрался. |
| Автор: microxa Mar 8 2019, 09:04 AM | ||
| Наткнулся на любопытный манускрипт (начало нулевых), https://www.veron.nl/wp-content/uploads/2014/01/FmDemodulator.pdf ориентирован еще на старенький Signal Processor TMS320C6711, в котором его описывают как
и чего на них персоналок не делали.. только платки с LPT (ляпота) https://www.picclickimg.com/d/w1600/pict/123205955841_/Texas-Instruments-DSP-Starter-Kit-TMS320C6711-DSK-Development.jpg Можно сказать, гигафлопсник(и без радиаторов охлаждения). Сколькож тогда дури в TMS320C6745.. |
| Автор: kotu Mar 10 2019, 01:42 AM |
| полезный донор от мерседеса радар, часто водой заливают, за бампером 2 стоят http://i-fotki.info/25/561af17c662394d29556261b3c1638774d795b334831169.jpg.html http://i-fotki.info/25/5ec85bd40612e7b469ac30411e84390c4d795b334831525.jpg.html |
| Автор: Gospodin_Riba Mar 10 2019, 04:32 PM | ||||
Монополия!
Даташит! |
| Автор: Gospodin_Riba Mar 10 2019, 04:35 PM | ||
Один БГА, другой слабачок. В чём их полезность в контексте темы форума? |
| Автор: Gospodin_Riba Mar 10 2019, 04:41 PM |
| Приобрёл TFT LCD такой: https://www.electrodragon.com/product/3-5-320x480-tft-lcd-module-for-arduino-8-bit-parallel/ 3.5” 320x480 TFT LCD Arduino Shield, 8-bit Parallel, ILI9486 По качеству картинки оказался таким же говном как и мой аруиновский дисплей 320x240, недостатки всё те же: http://vrtp.ru/index.php?showtopic=30174&view=findpost&p=786821 Пикча: http://vrtp.ru/index.php?act=Attach&type=post&id=786821 Но для первого старта пойдёт. Решил увеличить разрешение, чтобы с краёв не срезать, так как эмуляторы Capcom Play System имеют более широкий кадр, чем 320x240 Подключил его ко второй(точнее -первой) параллельной шине EMIFA (8 бит). На второй шине EMIFB (16 бит) висит SDRAM на 32 МБ. Составил программу, настроил кеширование, проинитил шины, клоки,,,..... Разместил всю программу в SDRAM, вроде всё работает: |
| Автор: Gospodin_Riba Mar 10 2019, 04:46 PM |
| Сейчас отрисовкой занимается C6745. С применением DMA или PRUSS - отрисовка становится параллельной и не мешает C6745 и SDRAM (шины раздельные и одновременно). PRUSS - это ещё 2 процессора внутри TMS-ки - работают на частотах вдвое меньшей, чем 6745. По сути на них можно сбацать графический фильтр и рендерер, что здОрово разгрузит основной процессор! Про PRUSS с чем их едят: http://processors.wiki.ti.com/index.php/Programmable_Realtime_Unit_Subsystem ![]() Это довольно вещь в себе, для них отдельная системакоманд и свои компиляторы (ассемблер). Сильными стараниями находятся доки, компиляторы и примеры как программировать. |
| Автор: Gospodin_Riba Mar 10 2019, 04:48 PM |
| Видео, отрисовка картинок размером 1/4 площади дисплея. Тут используется 64-битная передача данных в порты LCD: |
| Автор: Gospodin_Riba Mar 10 2019, 04:51 PM |
| В будущем, планирую искать другой дисплей 480x320 с лучшим качеством картинки. Может кто подскажет модели телефонов из которых можно снять дисплей с таким разрешением? Появилась проблема с загрузкой программ по UART0. То грузится, то нет. Выдаёт ошибку таймаута по COM-порту. Пока проблему обошёл сменой UART, теперь гружусь с UART2 - с ним загрузка идёт стабильно. Карта соединений такая: UART2_RXD - GPIO 5.12 UART2_TXD - GPIO 5.13 Положение перемычек на плате Mini6745, чтоб грузиться с UART2: B2=0 B7=1 B0=0 B1=1 |
| Автор: Gospodin_Riba Mar 10 2019, 04:58 PM |
| Про результаты подключения LCD 320x480 смотрим на предыдущей странице! Карта подключений дисплея к EMIFA: EMIFA GPIO D0 .. D7 0.0 .. 0.7 A12 1.12 !WE 2.3 !CS2 2.5 !OE 2.7 ! RESET 5.10 Ниже исходник всего проекта с дисплеем (контроллер ILI9486). Загружается UART Boot Host-ом в SDRAM. |
| Автор: Gospodin_Riba Mar 16 2019, 11:41 AM | ||
Причина проблемы обнаружена и блестяще устранена. Подтяжек в 10 кОм (на плате 9,1 кОм) - оказалось недостаточно. Напряжение на пинах было 1.8V. Для логической "1" надо больше. Поставил подтяжки 1,1 кОм - напряжение лог. "1" стало в норме: 3 - 3.2 V. Попутно выяснил, что и с логическим "0" было тоже не всё впорядке - иногда напряжение на пинах было 1.4 V. Подтянул резистором 1 кОм на GND. Теперь грузится с UART0 и с UART2 (с какого угодно)! И я рад! А то загрузка через UART Boot Host иногда капризничала по вышеназванным причинам. А теперь о новом! 1) Поднял отрисовку через EDMA - теперь процессор может заниматься другими вещами и отрисовка идёт впаралель! 2) Сделал таймер и поднял прерывание от него. Это позволило делать замеры тестов на отрисовку. При установленной шине EMIFA впритык и оптимальными времянками на дисплей, число кадров в секунду получилось таким: CPU рисует 101 кадров в секунду DMA - 108 кадров в секунду. Разрешение 480x320, 2 байта на точку. Шина - толщиной байт. 3) Поднял SPI и портировал инит SD-карты. Поддерживаются только SDHC и SDXC. Древние SDSC (менее 2 ГБ) - НЕ поддерживаются! Можно было и их поддержать, но мне лень Ах, да, SD карту подцепил на SPI, потому что Техасцы - паразиты - сделали пины на SDIO пересекающимися с EMIFA. Яотдал предпочтение EMIFA - всё-таки лучше оставить скоростную отрисовку в дисплей. Но это ещё не окончательное решение. Тут витают мысли через PRUSS сделать обмен с дисплеем через кастомные GPIO. Но это надо изучать. Карта SD при этом цепляется на SDIO, который кстати - 8 битный, только вот все 8 бит можно только в картах eMMC задействовать. Поэтому если и будет, то только в 4-битном исполнении Ниже сорец проекта для CCS v.6 - по сути - прототип SDK на C6745 от Рыбы. Большинство сорцов пришлось писать с нуля - хедеры тоже сам делаю, описываю регистры через даташит. Никаких калокубов и лишних структур, сжирающих память - объявление регистров прямое. |
| Автор: Gospodin_Riba Mar 16 2019, 11:43 AM |
| Кто написал мне письмо в личку по вопросу о конвертации - напишите мне снова, я письмо затёр случайно, не могу ответить отправителю!!! |
| Автор: microxa Mar 16 2019, 02:29 PM | ||
Gospodin_Riba а процессор вы припаивали "микроволной"?
прелюбопытно, да http://processors.wiki.ti.com/index.php/PRU_Assembly_Instructions в целом продумано, стандартные лог. операции, даже min/max. Вот это действительно, полезная многопроцессорность. (чего нехватало в интел, хотяб 8051-ых, на перефирии, на порту LPT и т.п. а не фейковых ядер по типу HT) Прееелестно-прелееестно... А вот ноут/нетбучные моники с lvds наверно нереально заюзать.. (там дифф.пары clc x 2, data_0-data3 x2 ) Хотя тоже, не угадаешь, долго пришлось привыкать к дешовке как гнус N100: экран хоть и матовый, но блеклый и углы обзора жуть. А когда другой собирал(N150-ый), то подвернулись остатки от более древней модели nc10. Запилил его (от нечего делать: и был, приятно шокирован, сочной и четкой картинкой (особенно в 80х25), нормальным углом обзора. стало понятно почему NC10-ый стоил 400эвров.. |
| Автор: Gospodin_Riba Mar 18 2019, 09:17 AM | ||||||
Нет, обычным игольчатым жалом, сточенным по диагонали "лопаткой". При пайке использую флюс котоый якобы из США, но на самом деле китайская подделка. Очень понравилось - припой реально растекается красиво по ножками и не слипается. Единственно, глаза потом 2 дня болят, если флюса много попало - ощущение как будто нагадили в глаза. И с рук смывается только спиртом, мыло не смывает. Но в отличие от канифоли - флюс полностью прозрачный и легко оттирается спиртом.
С6745 не имеет LCD контроллера. Только шины. Может лвдс как-то можно,но это выходит за сферу моих интересов.
Да, с дисплеями проблема: надо смотреть их в действии и потом покупать! Когда я брал Ардуино-дисплей 480x320 я подумал: "дам ка я шанс исправиться Ilitek'у - производителю дисплея", может дисплеи бОльшего чем 320x240 разрешения -они выпускают нормальные.... Нифига! Как были говном - так и остались! Более LCD с Ilitek-овскими контроллерами (это которые на ILI**** начинаются) -НЕ ПОКУПАЮ. Все они - говно одного сорта. Утилита от TI для раскидывания пинов на C6743/45/47 omap-L137,полезная вещь - сокращает время : |
| Автор: Gospodin_Riba Mar 18 2019, 09:23 AM |
| Портировал 3D Туннель на C6745. Оказывается, этот процессор не умеет делить плавучку! Только умножать. Но на другом форуме профи подсказали, что есть инструкция 1/X которая поддерживается аппаратно. В итоге все фрагменты деления я переписал, заменив их умножением. Вместо a/b надо a*rcp( b ) Пока это не сделал, туннель ворочал со скоростью 5 кадров в секунду. Сейчас летает! Кадр 320x240 16 бит на точку, текстура 512x512 , всё во внешней памяти - выходит 129 FPS ! Если уменьшить текстуру вчетверо 128x128, то будет 178 FPS. STM32H743 давал в 2 раза меньше ! |
| Автор: Gospodin_Riba Mar 18 2019, 09:26 AM |
| Ну и на полный Экран: 480x320, тут уже 89 FPS. Хоть и площадь экрана возросла ровно в 2 раза, но FPS просел всего лишь в 1,5 раза - это DMA помогает, впараллель отрисовывает. В целом виртуально C6745 выходит в 2 раза шустрее, чем STM32H743. Так что гипотеза о том, что этот DSP порвёт ARM-ы - оправдалась! |
| Автор: Gospodin_Riba Mar 18 2019, 09:28 AM |
| Исходники Туннеля. В Release готовая прошивка *.bin и ассемблерные листинги(очень познавательно их читать |
| Автор: microxa Mar 19 2019, 12:41 AM | ||||
Gospodin_Riba
прикольно, прокатывает и на x86 эх, сложноват Toonel чтоб его глянуть на DirectX
Оптимизация однако, шикарная.. Регистров конечно от души, не то что, кот наплакал у х86 (32бит режиме) |
| Автор: Pav-ru Mar 21 2019, 09:27 AM | ||
Gospodin_Riba! Я продублировал в личку вопрос по поводу конвертации. Вы получили? |
| Автор: Gospodin_Riba Mar 22 2019, 04:03 PM | ||
Нет! От вас ничего в личку не пришло. |
| Автор: Gospodin_Riba Mar 22 2019, 04:07 PM |
| Я тут разгадывал квест по поводу того какой контроллер стоит в LCD и насколько трудно найти доки. Итак, мой выбор пал на этот раз на LCD от сотового телефона LG GX500. Отличный LCD с хорошими углами и яркой картинкой! Ардуино-говно-LCD и рядом не валялись! И за 200 рублей вместе с телефоном б/у который на запчасти! Донор: |
| Автор: Gospodin_Riba Mar 22 2019, 04:08 PM |
| Плата сзади: |
| Автор: Gospodin_Riba Mar 22 2019, 04:14 PM |
| Разъем дисплея - 40 контактов, марка GB042-40P-H10-E3000 Этот дисплей гуляет под целими тремя вариациями - две из которых: 1) LS030B3UW01(3.0"), (400*240) B grade DRIVER IC ( S6D14E0// SAMSUNG IC . PA7556 . MAGNA CHIP) 2) Парт-номер: SVLM0035201 Parts Description: LQ030B3UX01,Main ,3.0 inch ,240*400 ,43.08*75.4*1.8t ,262K ,TFT ,TM ,S6D14E0 , , Ваапще не подошли!!! Мои посты на ардуйе: http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=49 Начиная с середины. |
| Автор: Gospodin_Riba Mar 22 2019, 04:15 PM |
| А вот и разгадка - в прошивке на телефон глянул - там full Debug со всей информацией: |
| Автор: Gospodin_Riba Mar 22 2019, 04:22 PM |
| По этой информации откопал даташит и инит с китайских сайтов. Дисплей запустился! Ура!!! |
| Автор: Gospodin_Riba Mar 22 2019, 04:25 PM |
| Далее попробовал поиграться с Туннелем - прикрутил билинейную фильтрацию в реальном времени - теперь из текстуры размером 128 на 128 делается стретч на весь экран. Раньше фильтрации не было, либо бралась огромная текстура 512 на 512. Выжимал все соки и оптимизировал пиксельный шейдер. Скажу сразу, что софтваный текстурный мэппинг - неблагодарное дело - куча глюков всплывает из-за арифметики с плавучкой. В основном из-за потери точности. Вот вначале фильтр работал неправильно: |
| Автор: Gospodin_Riba Mar 22 2019, 04:27 PM |
| Выжал 86 FPS с площадки 400x240 - это с фильтрацией текстуры в реальном времени: STM наверное бы давно загнулся ))) |
| Автор: Gospodin_Riba Mar 22 2019, 04:29 PM |
| Сорцы проекта. Сделан переход на вышеназванный LCD 400x240. |
| Автор: microxa Mar 22 2019, 11:21 PM |
| Ну просто беспрецендентнейший квест!! Раскурить такой старенький дисп о котором наверно уже ни в LG ни в SHARP уже не знают.. А он же вроде как сенсорный? или сенсор там в защитном стеклышке. Ну вообще.. Какаято фантастика. Особенно припаять такой разьемчик.. Просто высший пилотаж.. |
| Автор: Pav-ru Mar 24 2019, 02:13 PM | ||||
Продублировал ещё раз! |
| Автор: Gospodin_Riba Mar 25 2019, 01:57 PM | ||||
Нет. Сенсор и дисплей отдельно. Сенсор заинтегрирован в переднюю часть корпуса и только выламывается. Соединяется с платой микроразъемом. А дисплей там просто приложен к обратной стороне сенсора - и слава Богу !!!
Основная проблема как раз не припаять разъем - это делается довольно легко с нужным флюсом. Основная проблема сделать макетку с такими дорожками (0.27). Я знаю, сейчас набегут и начнут про фоторезист толкать Позже новое напишу, сегодня к сожалению интернет мне не улыбается |
| Автор: Gospodin_Riba Mar 25 2019, 01:59 PM | ||
Очень странно. Ничего не приходило. От других приходят. Создайте тему на форуме со своим вопросом. |
| Автор: Pav-ru Mar 25 2019, 07:21 PM | ||||
Может это модераторы чем-то не довольны. Я, вроде, правила не нарушаю и первый раз, всё же дошел в личку. Очень странно! Так я попробую в эту же тему написать... |
| Автор: Pav-ru Mar 25 2019, 07:42 PM |
| Итак, имеется устройство: китайский LCD дисплейчик TXW200035P0-CD (320 Х 240) IC:ILI9342C, управляется по SPI чипом от Nordic - NRF52832 (получаю по BLE файл, сохраняю в дополнительную Flash и с помощью этого же чипа передаю файл на дисплей). Сам NRF52832 не блещет быстродействием (пока получил только 5 кадров в секунду), но уверен, что можно и без дополнительных элементов ускориться. Подскажите, пожалуйста, как добиться хорошей скорости (использование DMA, конвертация и пр.)? |
| Автор: romanetz Mar 25 2019, 07:45 PM |
| хм. резонно - выкинуть spi, перейти на параллельную шину. ускорение на порядок сразу. |
| Автор: Gospodin_Riba Mar 26 2019, 01:50 PM |
| Раньше были доступны инженерные образцы этого DSP и название начиналось на TMX (а не TMS). Были версии только на 300 МГц и содержали очень много багов. Хорошо, что это всё в прошлом! |
| Автор: Gospodin_Riba Mar 26 2019, 01:53 PM |
| Удалось немного поднять FPS в туннеле путём оптимизирования алгоритма программы. С 86 поднял до 92 FPS. Исходники ниже: |
| Автор: Gospodin_Riba Mar 26 2019, 02:00 PM |
| Написал новую программу - вращающийся 3D КУБ С текстурированными гранями и с освещением. Что-то наподобие вот этого: https://www.youtube.com/watch?v=z1BzobSpXq0&t=300 Тут уже кроме текстурирования расчитывается освещение и отсечение невидимых полигонов(чтоб их не отрисовывать). Что даёт выигрыш до 50% в случае куба. В видео ниже синхронизация кадров от таймера и всегда 60 FPS: |
| Автор: Gospodin_Riba Mar 26 2019, 02:02 PM |
| Pico-8 Cube: Исходники ниже: |
| Автор: Gospodin_Riba Mar 26 2019, 02:03 PM |
| Здесь максимальная производительность - без синхронизации по таймеру. Максимально возможная производительность на данный момент времени: На предыдущей странице ответил. |
| Автор: Gospodin_Riba Mar 26 2019, 02:09 PM |
| Кстати, девелоп-среда CCS для DSP уже давно свободна и без ограничений: http://processors.wiki.ti.com/index.php/Download_CCS#Free_license_for_older_versions |
| Автор: Pav-ru Mar 26 2019, 03:29 PM | ||||
Менять на дисплей с меньшим разрешением? Или что вы имеете ввиду? |
| Автор: Gospodin_Riba Mar 27 2019, 08:15 AM |
| Туннель под винду. http://www.sulaco.co.za/opengl_project_racing_tunnel.htm Вместе с исходниками на Object pascal (Delphi). Под Open GL. Микроху наверное заинтересует ))) |
| Автор: Gospodin_Riba Mar 27 2019, 08:33 AM |
| Озадачился выбором микросхемы для звука. SPI заняты, остаются I2S и McASP и I2C(TWI). Что можно прицепить компактное? Желательно с усилком 0.5 - 1 Вт Нужен только ВЫВОД звука в динамик, наушники. QFP или малоножечный QFN на худой конец. |
| Автор: microxa Mar 27 2019, 05:52 PM |
| Gospodin_Riba, знаю я этот Tunnel. Только он OpenGL-вский.. Интересовал кстати больше Ваш, порт под DOS, как я понял он собран на Watcom C99. Данного компилятора не было, но тем не менее код был успешно собран как на GCC3.4.6 так и на Intel C++ 8.0 . Полученые O/OBJ-ы были не менее успешно слинкован внутренним COFF компоновщиком FreePascal 3.0.4 в Win32 прикладуху. Через вот такой вот враппер: https://pastebin.com/0ge66y8z и вау - оно даже стартануло. но не надолго - потом ошибка какаято в делении на 0 С ходу не смог разобраться в том число и мозгодробительном кодесе. Ну да ладно, хоть так |
| Автор: Gospodin_Riba Mar 28 2019, 04:36 AM |
| Рекомендую плотно освоить C(просто С без ++), потому что у Pascal очень сильно хромает оптимизация и адресная арифметика указателей у него очень слабая. Единственный способ расшевелить паскалевские программы - переписать на ассемблере критичные части кода. На Си это делается проще: -Ofast -O3. У меня тотже туннель идёт на C быстрее чем паскалевские варианты с асм-вариантом линии |
| Автор: microxa Mar 28 2019, 09:45 AM | ||
Gospodin_Riba, произошла некоторая непонятка. Код для DOS был взят из темы "дисплеи от сотиков". Компилировал tunnel.c довольно мегамощными компиляторами Cи, а фри-паскаль использовался как COFF линковщик PE Win32приложения и выводильщик BMP имеджа на HDC окна FAR)))) Поэтому и вверх тормашками получилось Так что никакой Vesa и паскаль указателей...
хорошо.. а с паскаля на Си переносил SIMD-шный код DDraw движка както так.. вот.. https://pastebin.com/JGwzFM28 |
| Автор: ведущий специалист Mar 29 2019, 09:52 AM | ||
Бери ALC5621, достаточно неплохой и дешевый кодек. единственный минус - динамик моно канал качает в остальном супер. На али ведро за рубль. |
| Автор: Kitano8 Mar 29 2019, 10:13 AM |
| Еще вариант CS43L22 c F4-disco или CS42L52. |
| Автор: octus Mar 29 2019, 08:11 PM |
| господин рыба ответьте мне в личку |
| Автор: Gospodin_Riba Mar 30 2019, 04:33 PM |
| Я долго думал какой кодек использовать для звука и пришёл к выводу, что они все избыточны: хренова туча каналов: на вход, на выход. Большое число ног, внутренняя сложность! Хотелось чего-то простого и в то же время отличного по характеристикам. Потом вспомнил, что у меня есть несколько комплектов для сборки Adlib (OPL 2/3) и OPL4 + MPU401 MIDI. Вот таких: |
| Автор: Gospodin_Riba Mar 30 2019, 04:34 PM |
| В своё время даже Audio Jam делал из VS1003 + YMF721 - эта сборная солянка играла весь раритет + современные звуковые форматы. Вот фрагмент схемы звуковой карты, которую делал: |
| Автор: Gospodin_Riba Mar 30 2019, 04:35 PM |
| Накидал печатку: I2S ЦАП YAC512-E и мостовой УНЧ(как в EMU-Pocket). Ничего лишнего - только по делу! Это 16-битный ЦАП до 48 кГц с семпл-рейтом. Для приставки хватит за глаза! Даташит: https://pdf.datasheet.live/55ce090f/toko.com/YAC516-E.pdf У китайцев их целые вёдра. Теперь надо McASP осваивать - как его в I2S перекинуть и через DMA поднять кольцевой буфер: |
| Автор: Gospodin_Riba Apr 2 2019, 01:21 PM |
| Пришлось пободаться в полный рост с McASP и сопутствующей ему периферией (Audio FIFO, прерывания, DMA). Всё очень сложно. Пришлось вкуривать мануалы, примеры в интернете есть, но они есть калокубовские нагромождения CSL или TI-BIOS. Проблемы были такие: 1) Непропай ноги питания и одной управляющей (YAC516) - заметил не сразу, так как был уставший. 2) Непонимание трактовки делителей частоты в мануале - пришлось вооружится частотомером/периодометром и смотреть каждую ножку McASP. Добился того, чтобы MCLK=12 МГц, BITCLK=MCLK/4=3 МГц, LRCLK=BITCLK/(2 slot * 32 bit) = 46.875 кГц - отличается от стандартных 48 кГц немного. На слух не особо заметно. Это соответствует режиму: MCLK=256*fs. Можно выставить режим MCLK=384*fs (MCLK/BITCLK=6), тоже работает (проверял), но тогда число вариантов частот семплирования уменьшается. Оставил первый вариант. 3) Отсутствие потока данных на SDATA - осциллографа у меня нет, пришлось понижать частоты до звуковых (выставил большие делители) и с помощью наушников, резистора и конденсатора - на слух слушал частоты со всех ног McASP: - MCLK - частота самая высокая - BITCLK - частота в 4 разаниже - LRCLK - очень низкая частота - SDATA - шум 4) Подбор полярности/фазы бит-клока, подбор источников сигнала (ножка/делитель) - вначале биты были перекручены, местами шипело и воспроизведение было грязным. 5) Подбор остальных параметров формата. В этом аудио-ЦАП (YAC516) - не совсем чисто-I2S, скорее пародия на него (например, нет синк-бита перед сигналом фрейма, защёлкивание данных по спаду, не по фронту,... ит.п.) 6) Запуск DMA и буфер FIFO с максимальной настройкой в 64 аудио-слова. Выпило всю кровь! Автомат настолько сложный, что на его освоение потратил 2 дня. 7) Особый геморой доставило включение прерывания ОТ DMA - не хотело долго включаться, так как в мануалах расплывчато сказано о взаимосвязи теневых регионов и разрешением прерывания..... Проехали, включилось! В итоге, всё пашет, как было и задумано! Вот такая "звуковая карта" вышла: |
| Автор: Gospodin_Riba Apr 2 2019, 01:23 PM |
| Схема включения: |
| Автор: Gospodin_Riba Apr 2 2019, 01:27 PM |
| Пруф и исходники ниже. Из недостатков McASP - двойной перерасход буфера на Stereo, в случае если нужно Mono. А так всё пашет здОрово, пришлось применить трюк со смещением в трансмиссии DMA, чтобы воспроизводить 16-битные семплы, вместо 32-битных. |
| Автор: Gospodin_Riba Apr 3 2019, 04:30 PM | ||
Удалось обойти этот недостаток, путём задания одного тайм-слота. Получается из I2S сделал I1S Кроме того, наконец-то покорил EDMA3 полностью - включил его в режиме 3D - теперь доступны все три измерения (ACNT, BCNT и CCNT) 2..4 байта (семпл) * 64 семпла (Audio FIFO) * 65535 порций - это около 8 МБ !!! Только вдумайтесь - одна транзакция через DMA максимально длинной около 8 МБайт!!! Такого DMA я ещё не видел... Во всех ARM-ах, включая STM32 максимальный размер блока всего 64 кБ. Проверял на загрузке больших аудиоданных - работает. Основная проблема была перевести EDMA3 в режим ABC- через Self-Chained, чтоб по трём измерениям работал и тактировался от эвентов McASP (а не сам по себе копировал данные) STM32 очередной раз курит в сторонке, нервно кусая ногти Переношу H264 проигрыватель... |
| Автор: Gospodin_Riba Apr 12 2019, 12:52 PM |
| Сделал балалайку. Всё отлично работает! Параметры такие: MP4: 400x240 16 бит на точку, 27 FPS. MP3: 32 кГц 48 кбит/с, 1 канал SD: 4 класс скорости , SPI 22.8 МГц Я думал, что SPI не протащит два потока, а оказалось, что всё ОК Задействовал PRUSS (точнее PRU0) для конвертации кадров YUV в RGB и отправкой их в дисплей. Параллельность даёт выигрыш! Только PRUSS не поддерживает плавающую точку и работает с внешней памятью без кеширования. Даже умножать не умеет Компилятор C для PRUSS от TI: clpru - говно редкостное и сырое, пришлось немного повоевать, так как делает неоптимальным код, если глядеть ассемблерный листинг. Программирование PRUSS чем-то Z80 напомнило. Cделал замеры - функция для отрисовки и конвертации та же самая(для C6745 и PRUSS) : Шина дисплея 114 МГц: декод CPU + рендер CPU : всего 29FPS декод CPU + рендер PRUSS: всего 38 FPS Шина дисплея 152 МГц: декод CPU + рендер CPU : всего 31FPS декод CPU + рендер PRUSS: всего 38 FPS Из замеров делаем вывод: использование PRUSS позволяет снизить тактовую частоту шины LCD с сохранением производительности - потому что отрисовка идет параллельно и занимает меньше времени, чем само декодирование.,,,, Пруф: |
| Автор: Gospodin_Riba Apr 22 2019, 02:32 PM |
| Наконец-то это случилось! Работа на уровне файловой системы. Прикручен FatFs. Управление- от 6-кнопочного джойстика СЕГи. |
| Автор: Gospodin_Riba Apr 22 2019, 02:34 PM |
| Загрузчик в действии. |
| Автор: Gospodin_Riba Apr 22 2019, 02:35 PM |
| Эмулятор NES. |
| Автор: Gospodin_Riba Apr 22 2019, 02:36 PM |
| В эмуляторе добавил загрузку игр с SD карты + сохранение каждой игры в отдельный стейт. Следующая на выдачу - SEGA MegaDrive (Genesis) |
| Автор: microxa Apr 22 2019, 03:49 PM | ||
А синтез, чего, пиликает? А работает такой новодел как этот Super Bat Puncher - Morphcat Games morphcat.de/superbatpuncher/ Super Bat Puncher is an original homebrew game for the NES. там музычка хорошая. |
| Автор: Gospodin_Riba Apr 22 2019, 08:34 PM | ||||
Я не понял прикола. Скачал этот новодел, но там в демоверсии совсем не то что на видеоролике, а более лажовее - нету той музычки что на видео. Запускал на ПК, эмуль FCEUX. |
| Автор: Gospodin_Riba Apr 23 2019, 04:16 PM | ||
| Настал тот день, когда наконец-то перенёс эмулятор SEGA MegaDrive! За основу брал вот этот эмулятор и потом допиливал:
Выбор игр также через меню + сейв на каждую игру. Видео работы эмулятора SEGA Megadrive: https://www.youtube.com/watch?v=NY6x8q0-Xjo |
| Автор: Gospodin_Riba Apr 23 2019, 04:21 PM |
| Сразу скажу, что STM-ы тут никакие не катят вообще, по причине того, что 400 МГц не хватит чтобы воспроизводить эмуляцию тяжелых игр на фреймрейте 60 FPS. Поэтому был задействован со-процессор (PRUSS) внутри C6745 и распараллелить алгоритм. Теперь отрисовкой занимается PRUSS, а логикой эмулятора - C6745. Несколько лет назад делал на BF532 эмулятор SEGA, так пришлось разгонять до 600 - 700 МГц чтобы нормально шло. А тут C6745 на своих 456 МГц нормально работает впараллель с PRUSS на 228 МГц ))) Так что BlackFin BF532 сосёт, и STM32H7 тем более сосёт ))) Видео - сравнение двух режимов : без PRUSS и с ним: https://www.youtube.com/watch?v=O1g8AbYWrzE |
| Автор: Gospodin_Riba Apr 23 2019, 04:23 PM |
| Здесь показана максимальная производительность всей системы (CPU+PRUSS), убрана кадровая синхронизация. Чисто для наглядности, на практике конечно, надо с синхронизацией играть https://www.youtube.com/watch?v=1JhDl9Cbn9I |
| Автор: Gospodin_Riba Apr 23 2019, 04:25 PM |
| Contra Hard Corps в действии на эмуляторе SEGA Megadrive, C6745: https://www.youtube.com/watch?v=3NkLtdYHmzg Следующий на выдачу - SNES ! |
| Автор: Gospodin_Riba Apr 23 2019, 04:27 PM | ||
Это к вопросу о том, почему нельзя портировать SEGA MegaDrive на EMU-Pocket:
|
| Автор: microxa Apr 23 2019, 05:09 PM |
| Gospodin_Riba да уж... вот это нифига сеге... .. не смог удержатся, чтоб не пройти квест по сборке эмуля Gens в архидревней ламповой шизюал студио 6.. до этого почемуто не получалось. какойто заклин, происходил.. а тут собралось .. аж самому странно.. Ну специфика тут больше х86-ая.. |
| Автор: Gospodin_Riba Apr 24 2019, 01:04 PM | ||
О том как был портирован эмулятор SEGA MegaDrive на C6745 читайте на предыдущей странице!
Святое правило: собирать проект в той среде, в которой написал его автор. Неприложная истина. Следующий шаг - выкидаваем всё виндуозное и заменяем на микроконтроллерное И ещё, данный эмулятор не на асме частично? |
| Автор: microxa Apr 24 2019, 06:21 PM | ||
ну да.. асма там более чем навалом... особенно в StarScream движке 86000 процессора... удивила производительность на скинутом по FSB и множителям до 580мгц атом N430 х86 |
| Автор: Gospodin_Riba Apr 26 2019, 03:31 PM | ||||
| Итак, после успеха с SEGA MegaDrive, я принялся портировать эмулятор SNES. Взял за основу SNES9x и стал его пилить... Успешно портировал, вывод графики на дисплей снова повешал на встроенный со-процессор (PRUSS), так как он занимает довольно много времени. А также, в эмуляторе применил полезное свойство DSP C6745 - это unaligned word access! тоже повысило быстродействие - теперь память ROM'а парсится не байтами, а словами (двойными/четверными). И пофиг, что адрес может быть не выровнен (такое может быть в эмуляторе запросто!). По этой причине, ARM'ы опять в пролёте, так как они не работают с невыровненными указателями и валятся сразу в экспешн Вот для примера (без поддержки невыровненных адресов - только побайтово и через сдвиги):
А вот с unaligned:
Очевидно, что второй вариант (поддерживаемый C6745 и x86) - выполняется быстрее |
| Автор: Gospodin_Riba Apr 26 2019, 03:33 PM |
| Попутно улыбнуло, что Dingoo A320 лажает на SNES-играх. Смотрим видео и замечаем рывки при движении картинки: https://www.youtube.com/watch?v=DC12yG3EArU |
| Автор: Gospodin_Riba Apr 26 2019, 03:35 PM |
| Вот мой вариант SNES эмулятора для C6745, выоптимизированного довольно долгое время (ещё не предел, подозреваю): https://www.youtube.com/watch?v=EpVDKmqD0zw |
| Автор: Gospodin_Riba Apr 26 2019, 03:36 PM |
| В общем получилось вполне играбельно. SNES также как и SEGA MegaDrive требует кучу ресурсов. Если у СЕГи - это процессоры, то у SNES - навороченная графика. |
| Автор: Gospodin_Riba Apr 26 2019, 03:37 PM |
| "Донкей-конг кантри" - эта игра - визитная карточка SNES |
| Автор: Gospodin_Riba Apr 26 2019, 03:39 PM |
| SNES-эмулятор и не только - для всяких DIY консолей: https://github.com/Rakashazi/emu-ex-plus-alpha/tree/master/Snes9x Следующим эмулятором - будет NEO-GEO MVS (аркадный автомат) |
| Автор: Gospodin_Riba Apr 26 2019, 03:41 PM | ||
ну так ASM же))) который к сожалению не перетащишь на другие платформы. Если портирование - то тут только "C" рулит. Не зря, K&R называли этот язык "переносным ассемблером" А вот Unity всякие с C# в пролёте... |
| Автор: Gospodin_Riba Apr 28 2019, 01:48 PM |
| Портировал эмулятор аркадного автомата NEO GEO, как обещал. Идёт просто превосходно! Видео: https://www.youtube.com/watch?v=mdpIz6Zkh78 |
| Автор: Gospodin_Riba Apr 28 2019, 01:49 PM |
| Железо МегаДрайва и НеоГео настолько схожи, что можно сказать, что NEO-GEO - это улучшенная SEGA Genesos |
| Автор: Gospodin_Riba Apr 28 2019, 01:52 PM |
| В SEGA Genesis: процессоры : M68K + Z80 звук: YM2612 + PSG видео: VDP от TMS В NEO-GEO: процессоры: M68K +Z80 звук: YM2610 + AY8910 (2610 превосходит по качеству 2612) видео: более навороченный VDP от TMS |
| Автор: Gospodin_Riba Apr 28 2019, 01:56 PM |
| При портировании эмулятора учтены особенности C6745: - unaligned word access для парсинга РОМ-сетов - отрисовка встроенным со-процессором PRUSS, работающем на частоте в2 раза ниже C6745-го - деление заменено умножением (для вещественных чисел) - конвеер кода (параллельное исполнение нескольких ассемблерных инструкций) Частоты те же: C6745 456 MГц, PRUSS 228 МГц, LCD 101 МГц, SD карта : 22 МГц. Звук: 16 бит , 46 кГц Итоговый фреймрейт - постоянный - 61 FPS. Следующий эмулятор на выдачу - Capcom Play System 1,2 Видео макета игровой консоли "Black Prism": https://www.youtube.com/watch?v=sR3LJz1eBX4 |
| Автор: Gospodin_Riba Apr 29 2019, 04:49 PM |
| Ради спортивного интереса переписал на ассемблере код отрисовки для PRUSS. И задействовал unaligned word access для эмулятора SEGA MEGA DRIVE. Результаты поразительны: - быстродействие увеличилось (синхронизация кадров убрана, чтобы оценить максимальную производительность): https://www.youtube.com/watch?v=c7B8XvB4c7c Теперь бесспорно - блекфин и STM32H7 сосут ))) у них нет шансов |
| Автор: Gospodin_Riba May 3 2019, 01:04 PM |
| Форум медленно подыхает... Перенес эмулятор Capcom Play System 1 и 2. За основу брал caname. Задолбался его вычищать. Учитывая большую любовь MAME к точности эмуляции, большой скорости ждать не пришлось. Эмулятор ворочает на C6745 на 35..40 FPS, вместо целевых 60. Но это лучше, чем ничего. Размер экрана в CPS1,2 384x224 пикселей (логически до 512x256 - скролл). Игры специфические. Видео-профит: https://www.youtube.com/watch?v=D_TOI35BflI |
| Автор: Gospodin_Riba May 3 2019, 01:05 PM |
| Игра для детей: https://www.youtube.com/watch?v=LBIxXzb1SN4 ПОКО-Нянь ))) Как тестовый РОМ очень даже ничего - на нём отлаживался))) |
| Автор: microxa May 5 2019, 02:27 AM | ||
все это конечно хорошо еслиб не было немного грусно: а именно.. вот например занимаюсь эмулятором бк0010 с 2 двумя способами - 1ый фреймовый. с синхронизацией по звуку. всем хорош.. но есть и второй... бесфреймовый метод. синхра по тактам процессора. и все не очень.. особенно на х86-том.. у которого все плохо с таймерами реального времени (команды RDTSC токо относительно хорошие).. ... а вот ARM-овая малинка могла же ведь через контролер DMA в пин радио передовать аж под 100мгц.. |
| Автор: microxa May 5 2019, 02:29 AM | ||
все это конечно хорошо еслиб не было немного грусно: а именно.. вот например занимаюсь эмулятором бк0010 с 2 двумя способами - 1ый фреймовый. с синхронизацией по звуку. всем хорош.. но есть и второй... бесфреймовый метод. синхра по тактам процессора. и все не очень.. особенно на х86-том.. у которого все плохо с таймерами реального времени (команды RDTSC токо относительно хорошие).. ... а вот ARM-овая малинка могла же ведь через контролер DMA в пин радио передовать аж под 100мгц.. |
| Автор: microxa May 5 2019, 02:30 AM | ||
все это конечно хорошо еслиб не было немного грусно: а именно.. вот например занимаюсь эмулятором бк0010 с 2 двумя способами - 1ый фреймовый. с синхронизацией по звуку. всем хорош.. но есть и второй... бесфреймовый метод. синхра по тактам процессора. и все не очень.. особенно на х86-том.. у которого все плохо с таймерами реального времени (команды RDTSC токо относительно хорошие).. ... а вот ARM-овая малинка могла же ведь через контролер DMA в пин радио передовать аж под 100мгц.. |
| Автор: Gospodin_Riba May 5 2019, 09:29 AM | ||||
Эти ваши малинки в пролёте.
Зачем мудрить? В эмуляторах проще делать синхронизацию кадров по прерыванию заполнения аудио-буфера. Расчет идет от задания требуемого FPS: допустим 60. Значит, зная разрядность семпла , частоту дискретизации и число каналов - можно получить длину буфера в байтах: 48000*2*1/60 = 1600 байт - это однаполовинка аудио-буфера. 48 кГц, 16 бит, 1 канал. прерывание по заполнению будет происходить ровно 60 раз за 1 секунду. И всё замечательно! Что касается RDTSC - в DSP, ARM-ахи блекфинах - тоже есть счетчик тактов ядра (или счетчик тактов системной шины). |
| Автор: Gospodin_Riba May 11 2019, 10:40 AM |
| Перенёс эмулятор GameBoy Advance. Оптимизировал насколько смог: 1) таблицы переходов для ARM и Thumb вместо огроменных switch-case'ов на 4096 значений 2) переделал рендерер 3) отрисовка с помощью PRUSS построчно С 15 FPS поднял до 25 - 30 FPS. Но этого мало. Надо 60 FPS. Звук отключен, так как он лагает - проигрывается дважды. В GBA неудачная архитектура звуковой системы - задержки зависят от CPU и таймеров. Поэтому на распев тянуть ноты не вышло. Видео: https://www.youtube.com/watch?v=lymA8NMXQ5I |
| Автор: Gospodin_Riba May 11 2019, 10:44 AM |
| Есть идея растянуть темп звука, сохранив тон. Но задача эта нетривиальная. Все звуковые стретчеры, которые я пробовал - дают либо эхо, либо дрожание. Можно конечно разогнать DSP, но это будет нечестно. Да и толку не даст - нужен разгон в 2 раза как минимум. Либо поискать другой эмулятор GBA. Но это не самоцель. Играть можно. Ещё немного игр: https://www.youtube.com/watch?v=sE0QRKIF_bo На смещение кадра вниз (перекрут) -не обращать внимания, я забыл добавить синхронизацию по отрисовке строки. |
| Автор: Gospodin_Riba May 15 2019, 10:56 AM |
| Добавил всё-же звук к эмулятору GBA. Использовал алгоритм растяжки темпа с сохранением тона. Задача нетривиальная и требует академического кубатуренья. Хорошо, что уже давно всё проработано. )) За основу взял эту программу (с открытыми исходниками): http://www.surina.net/soundtouch Она позволяет много чего делать со звуком: изменять темп с сохранением тона, подымать тон с сохранением темпа, ресемплинг, вычисления BPM. Куча фильтров-интерполяторов: Шеннона, Кубический, Линейный. Антиалиасинговый фильтр. Темп звука в эмуляторе растягивается в 2...3 раза (30 - 20 FPS), при этом тональность остаётся той же. Видео: https://www.youtube.com/watch?v=ulLPALpHOGk |
| Автор: Gospodin_Riba May 18 2019, 06:43 AM |
| Портировал Open Tyrian Это - классический 2D Space Shooter. Одна из немногих хороших игр для DOS. Есть версия для ПК под Win: https://www.majorgeeks.com/files/details/opentyrian.html OpenTyrian на макете игровой консоли BlackPrism (TMS320C6745 DSP). Особо каких-либо проблем, связанных с производительностью - не было. Так как всё-же это нативное приложение, а не эмуляция: https://www.youtube.com/watch?v=1VbsENAWiOE |
| Автор: Gospodin_Riba May 18 2019, 06:45 AM |
| Экран - классический видеорежим "13h": 320x200 256 цветов (палитровый) Звук - 46 кгц, 16 бит, 8 каналов Музыка - эмулятор OPL3 FM YM3812 (Adlib), lds-плеер. |
| Автор: Gospodin_Riba May 18 2019, 06:48 AM |
| Поддерживается основной функционал игры и часть дополнительного: - плеинг - сохранение игры (уровни, оружия) - просмотр видеороликов (между уровнями) - jukebox для проигрываниямузыки отдельно сетевая игра и клавиатура - выпилены по понятным причинам ))) Игра требует работу с файлами (FatFs) |
| Автор: Gospodin_Riba May 18 2019, 12:01 PM |
| OpenTyrian под ведроид - https://www.youtube.com/watch?v=G-D8KKg0tpo Как говорится, сосач очевиден: идёт медленно и выпилена музыка. Ещё одним примером больше - как всякие вёдра, ардуины-пердуины снижают производительность железа |
| Автор: Gospodin_Riba May 21 2019, 08:14 AM |
| Tyrian под Dingoo A320: https://www.youtube.com/watch?v=Ij5oHuere64 По-лучше, чем у ведроида, но всёравно сосач ))) Полупрозрачность у облаков отключена и звук местами хрипит, так как не хватило ума сделать обработку звука правильно )) Особо люто лагает с 2:12 во время демонстрации опций игры в качественном режиме: https://www.youtube.com/watch?v=Ij5oHuere64&t=132 Вот вам Dingoo и Линукс )) P.S. и видео между уровнями выпилены (глядел исходники порта Dingoo ). Выпилены - потому что там CPU кидает эксепшн из-за обращения к невыровненным данным памяти во время парсинга видео )) в своих железках я это пофиксил) |
| Автор: Gospodin_Riba May 21 2019, 08:17 AM |
| Портировал "Крокодил". Что это такое читать тут: https://vrtp.ru/index.php?showtopic=30174&view=findpost&p=791921 Видео: https://www.youtube.com/watch?v=uyxqLgsA9yE Даже никакого DMA с PRUSS не понадобились, всё успевает делать процессор. А вот на STM32H743 отрисовка через DMA, иначе подтормаживает )) Ещё один аргумент в пользу C6745 DSP |
| Автор: Gospodin_Riba Jun 5 2019, 06:31 AM |
| Предложение в силе. Есть печатные платы - 400p за 1 шт. пишем в личку. Монтажная схема, актуальная принципиальная схема, перечень элементов - по запросу. Помогу с приобретением DSP TMS320C6745 и другими комплектующими! Пишите в личку. |
| Автор: Aries Jun 24 2019, 11:45 AM |
| Хороший может получиться инструмент для лаборатории, начиная от банальных программаторов (любых !) чипов, заканчивая исследованиями в области glitch атак. Не планируется работа в этом направлении ? |
| Автор: Gospodin_Riba Jul 1 2019, 10:14 AM | ||
Вся работа уже проделана - сделана печатная плата для отладки. В каком русле её использовать - решает каждый. Мне интересны игры на этом DSP. Для средств связи - это дорогое по потреблению тока решение, проще взять аппаратные кодеки , жрать будут мало и проще. |
| Автор: Gospodin_Riba Jul 1 2019, 10:15 AM |
| Пришли несколько DSP и память на 64 МБ. Есть также память на 32 МБ. Обвест тоже есть - стабилизаторы, кварцы. Отдаю вместе с платами. Пишите в личку. |
| Автор: Gospodin_Riba Jul 1 2019, 10:16 AM |
| 64 MB SDRAM (4M x 16 bit), 6 ns |
| Автор: Gospodin_Riba Jul 1 2019, 10:17 AM |
| Платы |
| Автор: Gospodin_Riba Jul 20 2019, 02:04 PM |
| Никто не забыт, ничто не забыто! Коллектив разработчиков в лице меня и ещё нескольких человек написали игру "Gradius III Total Terror" Подробнее об игре здесь: https://www.old-games.ru/forum/threads/gradius-iii-total-terror-igra-v-stile-8-16-bitnyx-igrovyx-pristavok.86169/ Сайт игры: http://gradius3.space Скачать игру: http://gradius3.space/download5.php (Windows, билд 24.06.2019) http://gradius3.space/download6.php (Linux, билд 30.06.2019) http://gradius3.space/download7.php (DOS, билд 14.07.2019) http://youtu.be/iyaDhdNtZTo http://youtu.be/PCq9AKQk58Q http://youtu.be/as6IXMbg2GI http://youtu.be/S2NLGGZgkvE ![]() ![]() |
| Автор: Gospodin_Riba Jul 20 2019, 02:07 PM |
| Игра Gradius III Total Terror в действии на игровой консоли Black Prism: |
| Автор: Gospodin_Riba Jul 20 2019, 02:09 PM |
| Видео игры с полным прохождением: Gradius III @ BlackPrism: https://www.youtube.com/watch?v=v1qIOm6hs4Q |
| Автор: Gospodin_Riba Jul 20 2019, 02:16 PM |
Linux также не забыт! |
| Автор: intel Nov 7 2021, 08:13 AM |
| не вижу линукс !!! а вот фокусы с экраном шарп зачетные !!! мое почтение, о черный господин а реально акой экран подключить к той же малинке на gpio а то штатный экран редкий шлак !!! |