Перейти к содержанию
    

repstosw

Участник
  • Постов

    2 690
  • Зарегистрирован

  • Победитель дней

    2

Весь контент repstosw


  1. Что скажете об Allwinner v3s ? Когда нашёл, то очень удивился - 1,2ГГц в корпусе QFP, да ещё и с 64 МБ запрятанной DDR2 памяти! Порвёт же BlackFin !!! Почитал документацию, ничего закрытого в ней не нашёл. Ну и SDK есть (правда на 2 ГБ) Я этого не утверждал. Против Линукса ничего не имею. Есть желание сделать кристально чистые приложения, свободные от операционной системы. ИМЕЮ ПРАВО!
  2. Не говорите то, чего не знаете! Потому что видеосистема эмулируемой платформы не просто "скопировать с нужным смещением аж 384*224 80кслов пусть даже четрыре раза", а всё намного сложнее. Ссылку на исходники эмулятора я давал в другой теме, если есть интерес - гляньте. А вот бряцать языком (точнее пальцами по клаве) - не надо, а то ваши "скопировать с нужным смещением аж 384*224 80кслов пусть даже четрыре раза" превращают меня в идиота, ничего не умеющего, что мне очень неприятно! Единственно, в чём с вами соглашусь, так это в занятии шины графической системой, которая снижает скорость общения процессора с памятью. И эмулятор там около 1 МБ получается, потому что кроме M68000 дохрена всего эмулируется. Цены на али не радуют: не ниже 14 тыс руб за Zinq-7000. Неужели какого-нибудь сраного АРМа на 1ГГц нет, который нормально открыт?
  3. https://github.com/rockchip-linux/libmali Как всегда: самое интересное закрыто. Напоминает ситуацию, когда nVidia выпустила драйвера под свои GeForce-ы в виде бинарников. Вооружаться IDA Pro и колупать дизасм? Насколько я представляю, это противоречит идеологии open source в Linux. Может всё-таки есть в природе каметь более открытый чем i.MX6 или Rockchip от 1 ГГц или выше , пусть даже с минимумом периферии? Наподобие BlackFin? Мне честно говоря, почти 90% всей периферии что в рокчипах или и-мх-ах как-то не нужно особо. Например мульти-медиа функции и HDMI - совсем ни к чему. К тому же присобачу свой видеоконтроллер на ПЛИС. Нужно только быстрое CPU ядро!
  4. Дело в том, что плата в настоящий момент поддерживает: 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 к/с
  5. Это был другой эмулятор - Capcom Play System. Тот что летает на видео - это SEGA MD, там всё ОК с быстродействием. Мне нужно только в некоторых эмулях поднять быстродействие: SNES, GBA и Capcom. В остальных всё устраивает. Естественно, переписывать сорцы эмуляторов я не намереваюсь, поэтому есть интерес сделать девайс по-мощнее. Распбери Пи + Linux неинтересны, для этих целей у меня есть настольный ПК с 4-мя ядрами по 3 GHz каждый - ради интереса портанул под DOS - всё летает, но это слишком просто. Хочется самому плату развести и с регистрами поиграться.... :smile3046: На счёт эмулятора CPS1,2: Кстати, на счет плавучки в звуке: она там на моменте инициализации таблиц. Далее floating point вычисления не используются. Причина тормоза - софтварный блиттер эмулятора - 4 видеоплоскости по 384x224 пикселей 16 бит 4096 цветов. Оптимизировать это - это переписывать почти весь эмулятор! Палитра теперь хардварная в FPGA, так что теперь чуть быстрее. Я тоже обратил на это внимание и так и не понял: шину данных 32 бита можно выставить или нет?
  6. Дано: 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 для звука и видео
  7. RK3288 тоже грузится с SD/MMC карты. Правда после обломов с обнаружением NAND, eMMC, SPI flash Так почему в i.MX6 шина памяти медленная?
  8. Вы имели ввиду версию с eMMC, а не с NAND-flash ? Такое отличие видел на ситаровских микро-платах: там либо вариант с eMMC, либо с NAND.
  9. Да, каюсь... был невнимателен. Нашёл всё-таки 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 раза шире. В общем я запутался!
  10. В MX6 Solo графика 2D- открыта? Выствить нужное разрешение, глубину цвета, частоту обновления смогу? Бит-блиттинг (bitblt) копирование из видеопамяти в другой участок видеопамяти с цветом прозрачности есть? Я не нашел там даташит с описанием хотя бы базовых регистров. А также как написать standalone application. Уже прикрыли: https://community.nxp.com/docs/DOC-94139 При скачивании выдает, что временно недоступно, свяжитесь с их белыми воротничками для доступности скачивания. Что за дела вообще творятся? Продают камни без документации, это самое настоящее мудачество для электронщиков... у меня нет слов!
  11. Скачал 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 решили просто на отшибись выложить дерьмо с которым поделиться не жалко...
  12. 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 БиглБоны Черные - сойдет с позиции открытости или тоже фигня?
  13. Если есть какая-то полезная информация в SDK, то это тоже рассматривается. Это даже местами лучше, так как в исходном коде программы часто освещены моменты, упущенные в документации. В те дальние времена, мне пришлось программировать видеокарты 3Dfx Voodoo2 и Voodoo3. Документация с небольшими примерами была доступна. Ради интереса её прикрепил к этому посту, вот как должно быть как минимум расписан 3D-ускоритель для того чтобы можно было ваять программы. Voodoo2.pdf Ну и пример работающей программы (целиком на ассемблере), собственно выводит движущийся тунель: V2Tunnel.txt Так есть камни с открытой документацией на графический процессор?
  14. Как у них с документацией? 1) свободно для скачивания 2) прийдётся клянчить под NDA с бюрократической волокитой 3) закрыто Мне нужно: настройка частот ядра, шины. Настройка кеша данных, инструкций, конфигурирование SPI, GPIO, DMA, Memory DMA, загрузка своего кода, видео-подсистема на уровне формирования кадра, 2D-движок (блитинг), опционально: 3D-движок (рисование полигонов с текстурой и освещением) У вышеупомянутых процессоров(в первом посте) недостаточно частоты ядра или нет аппаратной поддерки плавающей точки или низкая частота/разрядность шины (в основном для памяти). Самый лучший был ADSP BlackFin, но теперь хочется поднять частоту ядра до ГГц и выше, обязательно поддержка плавучки хотя бы на уровне Float(одинарная точность), системная шина не ниже уровня PC133.
  15. Здравствуйте. Разыскиваю отладочную плату с 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 (графический процессор) недоступна для скачивания. Нужен полностью открытый процессор. Помогите с выбором отладочной платы!
  16. Это оправдано только лишь в единичном случае. Когда приложений много, и запросы каждого уникальны, то становится очень неразумно возлагать на загрузчик SDRAM дополнительно ещё функцию загрузки части кода в L1. Использую свой загрузчик, который с SD карты считывает несколько секторов и кладёт их в SDRAM и кидает туда управление. Поиск приложения - по специальной сигнатуре в стартовом секторе карты. Оттуда же и размер приложения берется. Единственное условие - файл приложения должен быть нефрагментированным, это легко: достаточно отформатировать карту и записать файлы. Это было давно - в 2009 г. Сейчас же конечно же можно FATFs прикрутить - испытано проверено: http://elm-chan.org/fsw/ff/00index_e.html Только пришлось писать обёртку, так как порядок аргументов, возвращаемые значения и некоторые принципы - отличаются от стандартных C-функций (fopen, fread,...) Речь на этот раз идёт о вот этом девайсике: Кстати вопрос по L1, есть память для кода в BlackFin-ax. Но ведь её можно как память для данных использовать? Иначе тогда как в неё класть код? Будет ли шуршать DMA из/в этой/эту память/и ?
  17. Так это всего-лишь говорит о том, что функция располагается в данной области памяти и не более того. А ответственность за наличие кода в этой области - лежит на программисте. На практике часто приходится делать большие 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)
  18. А как он её положет, если сама программа исполняется в SDRAM с адреса 0x00000004 ? Образ программы в LDF-файле задается как ROM, но это для линковщика, на самом деле там всё RAM :rolleyes: (ох уж эти линковщики :) Или речь идёт о том, что линкер сделает стартап, который сделает копию функции из SDRAM в L1 и сформирует вызовы именно из L1 ? (это фантастика =) Ну я под этим подразумевал пустой цикл :) А если запятую убрать, то получится 75 раз NOP-ов )) Ну а на счёт выкинет, есть же volatile) Если фрагмент кода сброса находится во внешней кешируемой памяти - не поможет. Надо чтоб этот фрагмент гарантировано был закеширован, тогда отключение SDRAM не страшно. Иначе получается - программа рубит сук на котором сидит)
  19. В общем, найдёно изящное решение - сброс по сторожевому таймеру: 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 - это от лукавого (при выполнения кода из кешируемой области памяти)
  20. Сделал вот так: 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 кешированием)
  21. Если программно ресет не сделать, то прийдётся выводить на экран сообщение, чтоб пользователь нажал кнопку RESET. А хочется автоматически чтоб.... :rolleyes:
  22. Да, хотелось бы так как при сбросе нажатием кнопки. Пара ног, которые определяют с какого носителя грузиться всегда в одном состоянии и не меняются. С какого адреса у BF532 начинается загрузчик? Попробую сделать прямой переход туда.
  23. Да. Штатный загрузчик, который по двум ногам определяет, что надо скопировать код с spi-флешки AT45DB... и передать на него управление
  24. Здравствуйте! Конфигурация: ADSP Blackfin BF532, код выполняется из SDRAM, кеширование включено. Первичная загрузка - из SPI флешки 8-битной (микросхема AT45DB....), затем переход кода в SDRAM. Нужно сбросить процессор, чтобы снова подгрузилась программа из SPI-флешки. (причем именно чтобы снова повторился цикл загрузки с SPI-флешки, ттак как старый образ программы в L1 может быть уже разрушен - стеком, буферами DMA) Вот так - НЕ работает: while(1) __asm__ ("raise 1;"); Спецы, подскажите плиз как сбросить программно?
  25. Портирую очередную программу написанную на языке 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
×
×
  • Создать...