Технический форум по робототехнике.
Сергей Казаков » 03 июл 2016, 22:05
Такая проблема- делаю игровую приставку на avr, которая читает игры с SD карты. Как исполнить инструкции (ассемблер или машинный код) из данного файла?
Последний раз редактировалось
Сергей Казаков 11 июл 2016, 17:47, всего редактировалось 1 раз.
Madf » 04 июл 2016, 12:39
1. зачем дублировать темы?
forum2/topic16620.html?view=unread#unread2. если "avr" имеется ввиду МК фирмы Atmel, то - никак. Если вы делаете эмулятор игровой консоли, то алгоритм строите так, что машинный код для консоли можно обрабатывать как данные, тогда их хранить можно как и где угодно.
зы: вообще в инете есть уже готовые разработки...
Myp » 04 июл 2016, 13:28
сложно будет сделать игру с картами, если даже не знаешь как они правильно называются.
Dmitry__ » 04 июл 2016, 15:06
У авр разделена память программ и память данных. Поэтому авр может выполнять команды только с внутр. флеш памяти. Но можно залить в авр загрузчик (есть открытые проекты), который будет копировать код с cd карты в память и потом исполнять его. Но лучше перейти на нормальные контроллеры типа арм
Madf » 04 июл 2016, 15:32
elmot » 05 июл 2016, 13:47
Топовые Cortex M7 от stm умеют прозрачно исполнять код, лежащий в SPI flash памяти - там запилен специальный кэш-контроллер под это. Поскольку sd карты до определенной степени совместимы с spi flash, то вполне возможно, что там можно и напрямую исполнять.
Добавлено спустя 21 секунду:
Щютка, если чо.
Madf » 05 июл 2016, 14:55
ну файловую систему они вряд ли поддерживают, а на сд, напрямую мало кто работает с данными
Сергей Казаков » 05 июл 2016, 15:23
Dmitry__ писал(а):У авр разделена память программ и память данных. Поэтому авр может выполнять команды только с внутр. флеш памяти. Но можно залить в авр загрузчик (есть открытые проекты), который будет копировать код с cd карты в память и потом исполнять его. Но лучше перейти на нормальные контроллеры типа арм
То есть я выбираю файл, затем ребутаю МК и после исполнения опять записываю изначальную прошивку?
Добавлено спустя 26 минут 32 секунды:Dmitry__ писал(а):. Но лучше перейти на нормальные контроллеры типа арм
А на арм так можно?
Myp » 05 июл 2016, 16:05
пока не переименуете тему и не запомните как правильно называется SD карта
ничегошеньки у вас не выйдет.
Madf » 05 июл 2016, 17:05
Сергей Казаков писал(а):То есть я выбираю файл, затем ребутаю МК и после исполнения опять записываю изначальную прошивку?
Всё зависит от вашей фантазии (как напишите алгоритм).
зы: вообще бутовая область в авр небольшая, полноценно поддержку файловой системы на SD не получится сделать...впрочем и ОЗУ мало, даже у топовых, лучше натянуть внешнюю ОЗУ и в неё вливать данные с карты, а потом придумать аля "скриптовый" язык, который будет выполняться (пошагово) в внешней памяти. Кстати, если брать XMega серию A1, то там есть интегрированный контроллер внешней памяти (аля расширение).
Angel71 » 05 июл 2016, 23:20
Сергей Казаков, для начала не помешает прекратить задавать такие вопросы, а заняться изучением программирования на ассемблере и си под авр или мк с какой архитектурой захотите, изучить архитектуру и т.д. скорей всего вам это лень, раз задаёте такие вопросы, т.е. вводите в поисковике "avr game console", находите опенсорс проекты и не маетесь.
elmot » 06 июл 2016, 00:01
Сергей Казаков писал(а):Dmitry__ писал(а):У авр разделена память программ и память данных. Поэтому авр может выполнять команды только с внутр. флеш памяти. Но можно залить в авр загрузчик (есть открытые проекты), который будет копировать код с cd карты в память и потом исполнять его. Но лучше перейти на нормальные контроллеры типа арм
То есть я выбираю файл, затем ребутаю МК и после исполнения опять записываю изначальную прошивку?
Перегружать не надо. Пишешь в отдельную область и отдаешь туда управление.
Dmitry__ писал(а):. Но лучше перейти на нормальные контроллеры типа арм
А на арм так можно?
Как два пальца об асфальт. АРМ - фон-неймановская архитектура, память общая. Считал в память-исполнил. Да и чипы при примерно той же цене по своим параметрам порвут avr8 как тузик грелку.
Кстати - приставка - это вывод на видео? или куда?
Dmitry__ » 06 июл 2016, 00:45
Ну на заданные мне вопросы тут ответили, отвечу на другие
Madf писал(а):зы: вообще бутовая область в авр небольшая, полноценно поддержку файловой системы на SD не получится сделать...впрочем и ОЗУ мало
1к бута в авр это просто праздник в сравнении с 2к в мсп430. В мсп430 средняя команда занимает 5-6 байт
Вот где я помучился со своим загрузчиком, правда загрузчик по эфиру...
Да и можно расширять загрузчик до любых размеров, отьедая основную память, а в самом загрузчике запретить себя портить.
Для sd есть очень маложрущие файловые системы от чана:
http://elm-chan.org/fsw/ff/00index_e.htmlЕсть еще миниатюрнее.
Загрузчиков под авр много, разных, хороших. Только под ардуины их наклепали штук 5. Есть с криптографией - гуглить "avr aes".
https://habrahabr.ru/post/224383/http://microsin.net/programming/AVR/avr231-aes-bootloader.htmlhttp://we.easyelectronics.ru/AVR/zagruzchik-dlya-mikrokontrollerov-avr.html
Madf » 06 июл 2016, 13:00
Дим, я как бы в теме, но всё равно спасибо.)
На счет SD карты, проблема была в том, что минимально для работы с ней, нужно около 512 байт буфера, чтобы элементарно была возможность работать с её блоком/страницей, ещё нужно место под переменные + вообще память для переработки файловой системы. В общем к чему это я, что все эти наработки не работают на удобных, мелких МК типа Attiny, чтение на "лету" SD карты не встречал (без запоминания буфера).
Dmitry__ » 06 июл 2016, 15:42
Madf писал(а):На счет SD карты, проблема была в том, что минимально для работы с ней, нужно около 512 байт буфера, чтобы элементарно была возможность работать с её блоком/страницей
Нууууу, а говоришь в теме.
Вообще не встречал такой проблемы, тем более если с карточки надо только читать.
Очень экономное использование RAM (44 байта на рабочую область + некоторое количество на стек).
Очень маленький объем программного кода (2 .. 4 килобайта).
http://microsin.net/programming/file-systems/petit-fatfs-file-system.htmlПлеер wav на тиньке:
http://ra4nal.qrz.ru/wav85.shtmlMemory Usage (R0.03)
- Код: Выделить всё • Развернуть
АVR x86
Compiler gcc(WinAVR) VC6
_WORD_ACCESS 1 1
Code (default) 2020 1589
Code (!_USE_READ) -428 -236
Code (_USE_DIR) +564 +415
Code (_USE_LSEEK) +490 +228
Code (_USE_WRITE) +516 +323
RAM (bss) 2 4
RAM (work) 42 44
http://elm-chan.org/fsw/ff/pf/appnote.htmlНа pic, компилицо в 163 байта озу со всеми проигрывателями
http://www.labkit.ru/html/autocontrol?id=455