roboforum.ru

Технический форум по робототехнике.

Исполнение инструкций с SD карты

Исполнение инструкций с SD карты

Сергей Казаков » 03 июл 2016, 22:05

Такая проблема- делаю игровую приставку на avr, которая читает игры с SD карты. Как исполнить инструкции (ассемблер или машинный код) из данного файла?
Последний раз редактировалось Сергей Казаков 11 июл 2016, 17:47, всего редактировалось 1 раз.

Re: Исполнение инструкций с CD карты

Madf » 04 июл 2016, 12:39

1. зачем дублировать темы? forum2/topic16620.html?view=unread#unread
2. если "avr" имеется ввиду МК фирмы Atmel, то - никак. Если вы делаете эмулятор игровой консоли, то алгоритм строите так, что машинный код для консоли можно обрабатывать как данные, тогда их хранить можно как и где угодно.

зы: вообще в инете есть уже готовые разработки...

Re: Исполнение инструкций с CD карты

Myp » 04 июл 2016, 13:28

сложно будет сделать игру с картами, если даже не знаешь как они правильно называются.

Re: Исполнение инструкций с CD карты

Dmitry__ » 04 июл 2016, 15:06

У авр разделена память программ и память данных. Поэтому авр может выполнять команды только с внутр. флеш памяти. Но можно залить в авр загрузчик (есть открытые проекты), который будет копировать код с cd карты в память и потом исполнять его. Но лучше перейти на нормальные контроллеры типа арм :)

Re: Исполнение инструкций с CD карты

Madf » 04 июл 2016, 15:32


Re: Исполнение инструкций с CD карты

elmot » 05 июл 2016, 13:47

Топовые Cortex M7 от stm умеют прозрачно исполнять код, лежащий в SPI flash памяти - там запилен специальный кэш-контроллер под это. Поскольку sd карты до определенной степени совместимы с spi flash, то вполне возможно, что там можно и напрямую исполнять.

Добавлено спустя 21 секунду:
Щютка, если чо.

Re: Исполнение инструкций с CD карты

Madf » 05 июл 2016, 14:55

ну файловую систему они вряд ли поддерживают, а на сд, напрямую мало кто работает с данными

Re: Исполнение инструкций с CD карты

Сергей Казаков » 05 июл 2016, 15:23

Dmitry__ писал(а):У авр разделена память программ и память данных. Поэтому авр может выполнять команды только с внутр. флеш памяти. Но можно залить в авр загрузчик (есть открытые проекты), который будет копировать код с cd карты в память и потом исполнять его. Но лучше перейти на нормальные контроллеры типа арм :)

То есть я выбираю файл, затем ребутаю МК и после исполнения опять записываю изначальную прошивку?

Добавлено спустя 26 минут 32 секунды:
Dmitry__ писал(а):. Но лучше перейти на нормальные контроллеры типа арм :)

А на арм так можно?

Re: Исполнение инструкций с CD карты

Myp » 05 июл 2016, 16:05

пока не переименуете тему и не запомните как правильно называется SD карта
ничегошеньки у вас не выйдет.

Re: Исполнение инструкций с CD карты

Madf » 05 июл 2016, 17:05

Сергей Казаков писал(а):То есть я выбираю файл, затем ребутаю МК и после исполнения опять записываю изначальную прошивку?

Всё зависит от вашей фантазии (как напишите алгоритм).

зы: вообще бутовая область в авр небольшая, полноценно поддержку файловой системы на SD не получится сделать...впрочем и ОЗУ мало, даже у топовых, лучше натянуть внешнюю ОЗУ и в неё вливать данные с карты, а потом придумать аля "скриптовый" язык, который будет выполняться (пошагово) в внешней памяти. Кстати, если брать XMega серию A1, то там есть интегрированный контроллер внешней памяти (аля расширение).

Re: Исполнение инструкций с CD карты

Angel71 » 05 июл 2016, 23:20

Сергей Казаков, для начала не помешает прекратить задавать такие вопросы, а заняться изучением программирования на ассемблере и си под авр или мк с какой архитектурой захотите, изучить архитектуру и т.д. скорей всего вам это лень, раз задаёте такие вопросы, т.е. вводите в поисковике "avr game console", находите опенсорс проекты и не маетесь.

Re: Исполнение инструкций с CD карты

elmot » 06 июл 2016, 00:01

Сергей Казаков писал(а):
Dmitry__ писал(а):У авр разделена память программ и память данных. Поэтому авр может выполнять команды только с внутр. флеш памяти. Но можно залить в авр загрузчик (есть открытые проекты), который будет копировать код с cd карты в память и потом исполнять его. Но лучше перейти на нормальные контроллеры типа арм :)

То есть я выбираю файл, затем ребутаю МК и после исполнения опять записываю изначальную прошивку?


Перегружать не надо. Пишешь в отдельную область и отдаешь туда управление.

Dmitry__ писал(а):. Но лучше перейти на нормальные контроллеры типа арм :)

А на арм так можно?

Как два пальца об асфальт. АРМ - фон-неймановская архитектура, память общая. Считал в память-исполнил. Да и чипы при примерно той же цене по своим параметрам порвут avr8 как тузик грелку.

Кстати - приставка - это вывод на видео? или куда?

Re: Исполнение инструкций с CD карты

Dmitry__ » 06 июл 2016, 00:45

Ну на заданные мне вопросы тут ответили, отвечу на другие :)
Madf писал(а):зы: вообще бутовая область в авр небольшая, полноценно поддержку файловой системы на SD не получится сделать...впрочем и ОЗУ мало

1к бута в авр это просто праздник в сравнении с 2к в мсп430. В мсп430 средняя команда занимает 5-6 байт :cry: Вот где я помучился со своим загрузчиком, правда загрузчик по эфиру...
Да и можно расширять загрузчик до любых размеров, отьедая основную память, а в самом загрузчике запретить себя портить.
Для 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.html
http://we.easyelectronics.ru/AVR/zagruzchik-dlya-mikrokontrollerov-avr.html

Re: Исполнение инструкций с CD карты

Madf » 06 июл 2016, 13:00

Дим, я как бы в теме, но всё равно спасибо.)
На счет SD карты, проблема была в том, что минимально для работы с ней, нужно около 512 байт буфера, чтобы элементарно была возможность работать с её блоком/страницей, ещё нужно место под переменные + вообще память для переработки файловой системы. В общем к чему это я, что все эти наработки не работают на удобных, мелких МК типа Attiny, чтение на "лету" SD карты не встречал (без запоминания буфера).

Re: Исполнение инструкций с CD карты

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.shtml
Memory 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


cron
Rambler\'s Top100 Mail.ru counter