-
Постов
2 690 -
Зарегистрирован
-
Победитель дней
2
Весь контент repstosw
-
Что скажете об Allwinner v3s ? Когда нашёл, то очень удивился - 1,2ГГц в корпусе QFP, да ещё и с 64 МБ запрятанной DDR2 памяти! Порвёт же BlackFin !!! Почитал документацию, ничего закрытого в ней не нашёл. Ну и SDK есть (правда на 2 ГБ) Я этого не утверждал. Против Линукса ничего не имею. Есть желание сделать кристально чистые приложения, свободные от операционной системы. ИМЕЮ ПРАВО!
-
Не говорите то, чего не знаете! Потому что видеосистема эмулируемой платформы не просто "скопировать с нужным смещением аж 384*224 80кслов пусть даже четрыре раза", а всё намного сложнее. Ссылку на исходники эмулятора я давал в другой теме, если есть интерес - гляньте. А вот бряцать языком (точнее пальцами по клаве) - не надо, а то ваши "скопировать с нужным смещением аж 384*224 80кслов пусть даже четрыре раза" превращают меня в идиота, ничего не умеющего, что мне очень неприятно! Единственно, в чём с вами соглашусь, так это в занятии шины графической системой, которая снижает скорость общения процессора с памятью. И эмулятор там около 1 МБ получается, потому что кроме M68000 дохрена всего эмулируется. Цены на али не радуют: не ниже 14 тыс руб за Zinq-7000. Неужели какого-нибудь сраного АРМа на 1ГГц нет, который нормально открыт?
-
https://github.com/rockchip-linux/libmali Как всегда: самое интересное закрыто. Напоминает ситуацию, когда nVidia выпустила драйвера под свои GeForce-ы в виде бинарников. Вооружаться IDA Pro и колупать дизасм? Насколько я представляю, это противоречит идеологии open source в Linux. Может всё-таки есть в природе каметь более открытый чем i.MX6 или Rockchip от 1 ГГц или выше , пусть даже с минимумом периферии? Наподобие BlackFin? Мне честно говоря, почти 90% всей периферии что в рокчипах или и-мх-ах как-то не нужно особо. Например мульти-медиа функции и HDMI - совсем ни к чему. К тому же присобачу свой видеоконтроллер на ПЛИС. Нужно только быстрое CPU ядро!
-
Дело в том, что плата в настоящий момент поддерживает: 1) Эмуляторы: Game Boy, Game Boy Color, Game Boy Advance NES (Дендик) SEGA MegaDrive, SEGA MasterSystem/GameGear SNES NEO-GEO Capcom Play System 1,2 Turbo Graphx16 (NEC PC Engine) 2) Нативное приложение: Open Tyrian И писать дизайн для FPGA для каждой системы - дело неблагодарное и трудозатратное (не всё документировано). Самый верный путь тут - декапсулировать раритетные чипы и уже известный дизайн закладывать в ПЛИС. Но у меня нет всех микросхем, которые нужно декапсулировать. Например, видеочип от CPS1,2: Это не просто блиттер, а тайлово-спрайтовый движок. Дизайн на ПЛИС для енго писать - сложнее, чем просто сделать видеокарту с палитрой и переключением видео-страниц. Ну предположим, что число ячеек данной ФПГА не резиновое, и не все алгоритмы можно переложить из CPU. Не хватает скорости лишь в некоторых эмуляторах. По мере портирования эмуляторов, запросы росли, поэтому даже разогнанный до 700 МГц Блекфин уже немного не дотягивает некоторые эмуляторы до 60 FPS. К примеру - консоль GBA имеет ARM7 на борту, код эмулятора на Си естественно, эмулятор работает на скорости меньше чем 60 к/с
-
Это был другой эмулятор - Capcom Play System. Тот что летает на видео - это SEGA MD, там всё ОК с быстродействием. Мне нужно только в некоторых эмулях поднять быстродействие: SNES, GBA и Capcom. В остальных всё устраивает. Естественно, переписывать сорцы эмуляторов я не намереваюсь, поэтому есть интерес сделать девайс по-мощнее. Распбери Пи + Linux неинтересны, для этих целей у меня есть настольный ПК с 4-мя ядрами по 3 GHz каждый - ради интереса портанул под DOS - всё летает, но это слишком просто. Хочется самому плату развести и с регистрами поиграться.... :smile3046: На счёт эмулятора CPS1,2: Кстати, на счет плавучки в звуке: она там на моменте инициализации таблиц. Далее floating point вычисления не используются. Причина тормоза - софтварный блиттер эмулятора - 4 видеоплоскости по 384x224 пикселей 16 бит 4096 цветов. Оптимизировать это - это переписывать почти весь эмулятор! Палитра теперь хардварная в FPGA, так что теперь чуть быстрее. Я тоже обратил на это внимание и так и не понял: шину данных 32 бита можно выставить или нет?
-
Дано: ADSP BlackFin 708 MHz, 177 MHz 16 bit bus SDRAM CL=3, no FPU. Perfomance: 40-50 FPS, standalone bare metal Надо: Perfomance 60 FPS, no Assembler Решение: заменить BlackFin чем-то быстрым. Хотите сказать, что без Линукса я не сделаю 60 ФПС, когда на Блекфине делал чуть менее? Ну-ну... Вот плата собственного изготовления с софтом "чисто bare-metal". По срокам - пол-года : от разводки платы до освоения Блекфина (не всего, то что нужно), написания дизайна для FPGA: Хотите сказать, что с RockChip или i.MX6 этот номер не пройдёт? Видео как устройство работает, для AVR: Sonic_0.rar Никаких операционных систем. Основной цикл в main() + обработчики прерываний (видео, звук, кнопки, таймеры) + DMA для звука и видео
-
RK3288 тоже грузится с SD/MMC карты. Правда после обломов с обнаружением NAND, eMMC, SPI flash Так почему в i.MX6 шина памяти медленная?
-
Вы имели ввиду версию с eMMC, а не с NAND-flash ? Такое отличие видел на ситаровских микро-платах: там либо вариант с eMMC, либо с NAND.
-
Да, каюсь... был невнимателен. Нашёл всё-таки SDK под i.MX6, правда док в нем не оказалось (папки пустые), а сорцы как работать с под-системами есть. Даже сишный хедер с описанием 3D-регистров есть! Ну и bare-metal example на гитхабе под него есть. Вопросы к mantech: 1) Вы работали с i.MX6 Solo, у него частота 1 ГГц, не пробовали его разгонять скажем так на 20% - 50% ? Есть ли запас? 2) Процессор Little Endian? Или Big Endian ? 3) Ширина шины данных(память) там 32 бита на 1 ядро? 4) Какой длины конвеер у этого процессора? Почитал доки на RockChip, тоже заинтересовал, но огорчает отсутствие SDK, свободного от осей. А также шина 16 бит, против 32 бит в iMX6. Правда частота больше, но опять же настораживает металлический корпус и совет посадить на куллер. И что самое интересное, для Rockchip RK3288 есть мини-плата-модуль, которая по периметру обнесена контактными площадками - удобно свои устройства делать, так как CPU+RAM уже распаяны (самому разводить плату под DDR3-800 без риска не представляю как). Если сравнивать i.MX6 Solo и RK3288, то какой из них будет быстрее выполнять код из внешней DDR-памяти? У solo частота 1 ГГц, у RK 1,8 ГГц, зато у соло шина в 2 раза шире. В общем я запутался!
-
В MX6 Solo графика 2D- открыта? Выствить нужное разрешение, глубину цвета, частоту обновления смогу? Бит-блиттинг (bitblt) копирование из видеопамяти в другой участок видеопамяти с цветом прозрачности есть? Я не нашел там даташит с описанием хотя бы базовых регистров. А также как написать standalone application. Уже прикрыли: https://community.nxp.com/docs/DOC-94139 При скачивании выдает, что временно недоступно, свяжитесь с их белыми воротничками для доступности скачивания. Что за дела вообще творятся? Продают камни без документации, это самое настоящее мудачество для электронщиков... у меня нет слов!
-
Скачал AM335x Linux SDK BSP Source Code - файл am335x-evm-linux-rt-sdk-src-04.00.00.04.tar.xz Оказалось полным разводом, вообще нет ничего, что касается AM335x, куча каких-то других микросхем: opl4, m68k, mpu401, даже видео на уровне vesa. Скаладывается такое впечатление, что тут: http://software-dl.ti.com/processor-sdk-li.../index_FDS.html решили просто на отшибись выложить дерьмо с которым поделиться не жалко...
-
1) Отечественная продукция типа "Байкал", "Элвис", "КомДив" - с частными лицами не работают. В топку. 2) На рокчип RK3288 внятной документации не нашёл 3) Сейчас смотрю в сторону TI Sitara 335x БиглБоны Черные, доступны на АЛиЭксперссе, 1 ГГц, есть плавучка NEON, поддержка видео 2D/3D. Скачал Linux SDK на 1 Гб. Неужели в Линуксовых сорцах 3д- 2д- ускоритель тоже не используется из-за закрытости? 4) Да, я ССЗБ, как тут сказали, low-level-programming - моё увлечение, есть наработки в виде разных приложений типа эмуляторов, игр. Сейчас стоит цель поднять быстродействие некоторых приложений в 1,5-2 раза, без сильной оптимизации кода (код должен быть на С, с минимумом ассемблера). Сроки неограничены. mantech и jcxz как я вычитал, ковыряли камни на уровне bare-metal, посоветуйте хороший камень для комфортного ковыряния!!! TI Sitara 335x БиглБоны Черные - сойдет с позиции открытости или тоже фигня?
-
Если есть какая-то полезная информация в SDK, то это тоже рассматривается. Это даже местами лучше, так как в исходном коде программы часто освещены моменты, упущенные в документации. В те дальние времена, мне пришлось программировать видеокарты 3Dfx Voodoo2 и Voodoo3. Документация с небольшими примерами была доступна. Ради интереса её прикрепил к этому посту, вот как должно быть как минимум расписан 3D-ускоритель для того чтобы можно было ваять программы. Voodoo2.pdf Ну и пример работающей программы (целиком на ассемблере), собственно выводит движущийся тунель: V2Tunnel.txt Так есть камни с открытой документацией на графический процессор?
-
Как у них с документацией? 1) свободно для скачивания 2) прийдётся клянчить под NDA с бюрократической волокитой 3) закрыто Мне нужно: настройка частот ядра, шины. Настройка кеша данных, инструкций, конфигурирование SPI, GPIO, DMA, Memory DMA, загрузка своего кода, видео-подсистема на уровне формирования кадра, 2D-движок (блитинг), опционально: 3D-движок (рисование полигонов с текстурой и освещением) У вышеупомянутых процессоров(в первом посте) недостаточно частоты ядра или нет аппаратной поддерки плавающей точки или низкая частота/разрядность шины (в основном для памяти). Самый лучший был ADSP BlackFin, но теперь хочется поднять частоту ядра до ГГц и выше, обязательно поддержка плавучки хотя бы на уровне Float(одинарная точность), системная шина не ниже уровня PC133.
-
Здравствуйте. Разыскиваю отладочную плату с ARM ядром на борту, частота ядра должна быть не ниже 1ГГц. Память должна быть не хуже PC133, ширина шины данных 16 бит (32 бита предпочтительнее). Процессор и его периферия должны быть документированы. Как бонус - наличие FPGA (но это необязательно, если есть видеопроцессор). Писать программы планирую - исключительно "bare metal" (под голое железо). Есть опыт: программирование STM32F4xx, AT91RM9200, ADSP-BF532, BF533, дизайн FPGA Altera Cyclone-2. Писал исключительно на Cи, Ассемблере. Без применения сторонних библиотек, драйверов и ОС тем более. Основная проблема: неполная открытость современных процессоров, например под Ti AM335x не удается найти доки на 2D- и 3D- видеоускоритель. Рассматривал Rockchip RK3066 и его 1,5 ГГц, документация на GPU (графический процессор) недоступна для скачивания. Нужен полностью открытый процессор. Помогите с выбором отладочной платы!
-
Это оправдано только лишь в единичном случае. Когда приложений много, и запросы каждого уникальны, то становится очень неразумно возлагать на загрузчик SDRAM дополнительно ещё функцию загрузки части кода в L1. Использую свой загрузчик, который с SD карты считывает несколько секторов и кладёт их в SDRAM и кидает туда управление. Поиск приложения - по специальной сигнатуре в стартовом секторе карты. Оттуда же и размер приложения берется. Единственное условие - файл приложения должен быть нефрагментированным, это легко: достаточно отформатировать карту и записать файлы. Это было давно - в 2009 г. Сейчас же конечно же можно FATFs прикрутить - испытано проверено: http://elm-chan.org/fsw/ff/00index_e.html Только пришлось писать обёртку, так как порядок аргументов, возвращаемые значения и некоторые принципы - отличаются от стандартных C-функций (fopen, fread,...) Речь на этот раз идёт о вот этом девайсике: Кстати вопрос по L1, есть память для кода в BlackFin-ax. Но ведь её можно как память для данных использовать? Иначе тогда как в неё класть код? Будет ли шуршать DMA из/в этой/эту память/и ?
-
Так это всего-лишь говорит о том, что функция располагается в данной области памяти и не более того. А ответственность за наличие кода в этой области - лежит на программисте. На практике часто приходится делать большие ROM - от сотен килобайт - до несколько мегабайтов. Такие программы исполнять только в SRAM или SDRAM. Кроме того, программы загружаются во внешнюю память самописанным загрузчиком и линковщик максимум что может сделать - это сформировать вызов функции по адресу в регионе MY_L1_CODE_SECTION. А будет ли там код - это на совести программиста. Можно было вообще сделать без этих секций: void* FunctionInL1Memory=(void*)MY_L1_CODE_SECTION_Physical_Address и вызывать уже как: FunctionInL1Memory(); Но сам код нужно будет размещать в L1 самому - копировать его из SDRAM в L1, и ещё FLUSH-ить кеш данных, чтоб гаранированно легло. И ещё Position Independent, чтоб от адресов не зависел... Я просто не представляю, как линковщик сделает копирование функции из SDRAM в L1, когда бинарный образ кода линкуется для адреса 0x4. - это внешняя память. А вот задача была именно такая - из выполняемого кода в SDRAM, ресетнуть процессор. Решение найдено как писал ранее (WDT)
-
А как он её положет, если сама программа исполняется в SDRAM с адреса 0x00000004 ? Образ программы в LDF-файле задается как ROM, но это для линковщика, на самом деле там всё RAM :rolleyes: (ох уж эти линковщики :) Или речь идёт о том, что линкер сделает стартап, который сделает копию функции из SDRAM в L1 и сформирует вызовы именно из L1 ? (это фантастика =) Ну я под этим подразумевал пустой цикл :) А если запятую убрать, то получится 75 раз NOP-ов )) Ну а на счёт выкинет, есть же volatile) Если фрагмент кода сброса находится во внешней кешируемой памяти - не поможет. Надо чтоб этот фрагмент гарантировано был закеширован, тогда отключение SDRAM не страшно. Иначе получается - программа рубит сук на котором сидит)
-
В общем, найдёно изящное решение - сброс по сторожевому таймеру: static __inline__ void BlackFin_Reset(void) { *pWDOG_CNT=13200000; //таймаут 0.1 секунды (число тактов шины SCLK, у меня 132 МГц) *pWDOG_CTL=0; //выбираем RESET и включаем watchdog while(1); //зацикливание } Работает надёжно и с любого адреса, ресет такой же как при нажатии на кнопку, загрузчик снова тянет из SPI-флеш самописанную программу-загрузчик-инициализатор в SDRAM. До этого ещё пробовал как здесь: http://electronix.ru/forum/index.php?showtopic=32272 - НЕ помогло. Всё-же RAISE 1 и SWRST - это от лукавого (при выполнения кода из кешируемой области памяти)
-
Сделал вот так: static __inline__ void BlackFin_SoftReset(void) { *pSWRST=0x0007; ssync(); register u32 i=75; while(i--); __asm__ __volatile__ ("NOP;"); *pSWRST=0x0000; ssync(); __asm__ __volatile__ ("RAISE 1;"); } Работает, но не всегда - зависит от расположения данного кода. Подозреваю, что этот фрагмент должен быть в кеше инструкций целиком, тогда успешно. Каким образом можно сделать чтобы данный код был гарантированно в кеше инструкций? (код выполняется из SDRA со включенным write-back кешированием)
-
Если программно ресет не сделать, то прийдётся выводить на экран сообщение, чтоб пользователь нажал кнопку RESET. А хочется автоматически чтоб.... :rolleyes:
-
Да, хотелось бы так как при сбросе нажатием кнопки. Пара ног, которые определяют с какого носителя грузиться всегда в одном состоянии и не меняются. С какого адреса у BF532 начинается загрузчик? Попробую сделать прямой переход туда.
-
Да. Штатный загрузчик, который по двум ногам определяет, что надо скопировать код с spi-флешки AT45DB... и передать на него управление
-
ADSP BF532
repstosw опубликовал тема в Сигнальные процессоры и их программирование - DSP
Здравствуйте! Конфигурация: ADSP Blackfin BF532, код выполняется из SDRAM, кеширование включено. Первичная загрузка - из SPI флешки 8-битной (микросхема AT45DB....), затем переход кода в SDRAM. Нужно сбросить процессор, чтобы снова подгрузилась программа из SPI-флешки. (причем именно чтобы снова повторился цикл загрузки с SPI-флешки, ттак как старый образ программы в L1 может быть уже разрушен - стеком, буферами DMA) Вот так - НЕ работает: while(1) __asm__ ("raise 1;"); Спецы, подскажите плиз как сбросить программно? -
Портирую очередную программу написанную на языке C с Win32 (x86) на BlackFin (BF532). При портировании возникла проблема: C-компилятор отказывается компилировать объявление переменных внутри цикла: for(int i=0;i<10;i++) ..... Стоит сделать так - всё работает. int i; for(i=0;i<10;i++) ..... Понимаю, если по всей программе так штук 10-20... Но проблема как раз в том что в программе таких циклов огромное множество! Да и времена старой давности прошли, когда всё было строго. Есть ли у VDSP C compiler ключ какой-нибудь, чтобы понимать объявления переменных внутри цикла? Я знаю, что тот же Keil ARM C compiler поддерживает ключ -C99, при активации которого можно делать такого рода объявления и не только их! Так как? Способ переименования файлос в CPP не предлагать, нужно скомпилировать именно компилером C, а не C++ Всё, разобрался. Проблема была в том что читал протухший мануал C/C++ Compiler and Library Manual for Blackfin® Processors версии VDSP 4.0. В 5.x уже есть опция -c99 :smile3046: OFFTOP: В OpenWatcom C эта опция так и осталась недокументированной: -za99 и -aa