Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Возможно ли такое run code from SD with Atmega?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
adruha
Полазил не нашел ответа на свой вопрос, хотелось бы писать код программы и записывать его на SD а выполнять а Mege. Возможно ли такое, ткните пожалуйста пальцем где почитать?
aaarrr
Нет.
ArtemKAD
Можно загрузить во внутреннюю память программ с SD, а там уже выполнять.
ЗЫ. А иначе все равно не бывает.
ЗЗЫ. Можно еще запустить на Меге виртуальную машину, а уже на SD хранить код виртуальной машины.
aaarrr
Цитата(ArtemKAD @ Apr 30 2011, 23:45) *
Можно загрузить во внутреннюю память программ с SD, а там уже выполнять.

Можно. Хоть и не один раз, но все равно недолго.

Цитата(ArtemKAD @ Apr 30 2011, 23:45) *
ЗЗЫ. Можно еще запустить на Меге виртуальную машину, а уже на SD хранить код виртуальной машины.

Тогда уж проще взять другой процессор.
OKF
Смотря какой "код программы". В меге можно иметь программу, которая будет интерпретировать "код программы" на SD. Ищите Basic на меге, если такое устраивает.
ArtemKAD
Цитата
Тогда уж проще взять другой процессор.

Насколько я знаю нет других процессоров способных выполнять код в SD. Обычно все его куда-то сперва загружают (во флешь или оперативку).
aaarrr
Цитата(ArtemKAD @ May 1 2011, 00:01) *
Насколько я знаю нет других процессоров способных выполнять код в SD. Обычно все его куда-то сперва загружают (во флешь или оперативку).

Естественно. Просто вариант с загрузкой кода во флеш я бы вообще рассматривать всерьез не стал (если только он не загружается десяток-другой раз за все время жизни изделия).
ArtemKAD
Цитата
Просто вариант с загрузкой кода во флеш я бы вообще рассматривать всерьез не стал (если только он не загружается десяток-другой раз за все время жизни изделия).

Почему? Гарантированный ресурс записи во флешь - более 10тыс. раз. Почему нельзя в серьез рассматривать?
aaarrr
Цитата(ArtemKAD @ May 1 2011, 00:12) *
Почему? Гарантированный ресурс записи во флешь - более 10тыс. раз. Почему нельзя в серьез рассматривать?

Ну, если бы ресурс был 100K-1M, то еще можно было бы думать в этом направлении. А так он выбирается десятком записей в день за 2,5 года.
ArtemKAD
Цитата
А так он выбирается десятком записей в день за 2,5 года.

10 раз каждый день заливать из SD-карты в МК новое ПО? Держателю SD-карты раньше плохо не станет?
aaarrr
Цитата(ArtemKAD @ May 1 2011, 01:38) *
10 раз каждый день заливать из SD-карты в МК новое ПО? Держателю SD-карты раньше плохо не станет?

Так речь же идет не о том, чтобы заливать новое ПО (это как раз и делается десяток-другой раз за всю жизнь), а о подгрузке оверлеев. В таком разрезе AVR неприменим.
Впрочем, не совсем понятно, что именно нужно ТС - обычный загрузчик, или произвольное выполнение чего-то с карты.

Цитата(ArtemKAD @ May 1 2011, 01:38) *
Держателю SD-карты раньше плохо не станет?

Нормальный держатель, кстати, держит те же 10K циклов sm.gif
adruha
Цитата(aaarrr @ May 1 2011, 00:47) *
Так речь же идет не о том, чтобы заливать новое ПО (это как раз и делается десяток-другой раз за всю жизнь), а о подгрузке оверлеев. В таком разрезе AVR неприменим.
Впрочем, не совсем понятно, что именно нужно ТС - обычный загрузчик, или произвольное выполнение чего-то с карты.


Нормальный держатель, кстати, держит те же 10K циклов sm.gif



Мне нужно произвольное выполнение чего-то с карты
aaarrr
Цитата(adruha @ May 1 2011, 19:53) *
Мне нужно произвольное выполнение чего-то с карты

Тогда нужен не AVR8.
501-q
Цитата(adruha @ May 1 2011, 00:16) *
Полазил не нашел ответа на свой вопрос, хотелось бы писать код программы и записывать его на SD а выполнять а Mege. Возможно ли такое, ткните пожалуйста пальцем где почитать?


На AVR'е виртульная машина, на карточке -- её код. Форт в этом смысле, пожалуй, наилучшее решение. Говорят, у SUN'овских компьютеров так БИОС сделан.

Илья
SasaVitebsk
Цитата(501-q @ May 17 2011, 13:15) *
На AVR'е виртульная машина, на карточке -- её код. Форт в этом смысле, пожалуй, наилучшее решение. Говорят, у SUN'овских компьютеров так БИОС сделан.

Илья

Ну естественно так можно и с любым процом, но только интерпретация минимум в 5-10 раз уменьшит производительность. При том, что любой проц с ядром ARM сможет это делать и без интерпретации, при этом за те же деньги. Так вот вопрос, зачем обязательно брится топором?
501-q
Цитата(SasaVitebsk @ May 18 2011, 01:45) *
Ну естественно так можно и с любым процом, но только интерпретация минимум в 5-10 раз уменьшит производительность. При том, что любой проц с ядром ARM сможет это делать и без интерпретации, при этом за те же деньги.


Человек хотел на меге. ARM -- это мега?!

Цитата(SasaVitebsk @ May 18 2011, 01:45) *
Так вот вопрос, зачем обязательно брится топором?


Ну, бриться не пробовал, а вот ногти в походах, бывало, топором срезал (ага, брать ножницы в поход всё как-то не соображу). Вопрос в заточке топора.

Илья
zombi
Цитата(ArtemKAD @ Apr 30 2011, 22:45) *
ЗЗЫ. Можно еще запустить на Меге виртуальную машину, а уже на SD хранить код виртуальной машины.

Именно так и работаем!
ArtemKAD
Цитата
Ну естественно так можно и с любым процом, но только интерпретация минимум в 5-10 раз уменьшит производительность. При том, что любой проц с ядром ARM сможет это делать и без интерпретации, при этом за те же деньги. Так вот вопрос, зачем обязательно брится топором?

Это какой такой "любой проц с ядром ARM" умеет исполнять код во внешней SD-карте? От того, что он умеет содержимое загрузить в оперативку (из которой еще и прога для своих нужд кусок отхавает) и там исполнить, это совсем не означает, что ARM научился "это делать и без интерпретации, при этом за те же деньги".
aaarrr
Цитата(ArtemKAD @ May 22 2011, 01:54) *
Это какой такой "любой проц с ядром ARM" умеет исполнять код во внешней SD-карте? От того, что он умеет содержимое загрузить в оперативку (из которой еще и прога для своих нужд кусок отхавает) и там исполнить, это совсем не означает, что ARM научился "это делать и без интерпретации, при этом за те же деньги".

Господи, далось вам это "исполнение во внешней SD-карте"! Вы же не требуете от PC исполнения программы непосредственно на HDD?
А вот загрузить и выполнить без интерпретации - да, какой-нибудь ARM или MSP может, а AVR8 - нет.
EugenyAM
Цитата(aaarrr @ May 22 2011, 05:32) *
Господи, далось вам это "исполнение во внешней SD-карте"! Вы же не требуете от PC исполнения программы непосредственно на HDD?
А вот загрузить и выполнить без интерпретации - да, какой-нибудь ARM или MSP может, а AVR8 - нет.


Из 8-битников STM8 умеют исполнять код в ОЗУ. Единое адресное пространство кода и данных - сильная вещь.
EEPROM, кстати тоже в нем находится. Периферия будет даже в чем-то помощнее, чем у меги.
ArtemKAD
Цитата
Единое адресное пространство кода и данных - сильная вещь. EEPROM, кстати тоже в нем находится.

Куда уж сильнее - размер почти каждого адреса(в т.ч. и EEPROM) становится 16 (а то и 24) битным... В результате разбухает как адресация так и коды операций многие из которых гораздо больше 2 байт(хотя есть несколько 1 байтовых которые по факту требуют предварительно команд загрузки). Результат - гораздо больший код, что приводит к тому, что программа которая реально помещается в 4кБ AVR никак не может влезть в 4кБ STM8. В лучшем случае - полуторократное увеличение размера кода...
Цитата
Периферия будет даже в чем-то помощнее, чем у меги.

Осталось придумать в чем...
EugenyAM
Цитата(ArtemKAD @ May 22 2011, 15:25) *
Куда уж сильнее - размер почти каждого адреса(в т.ч. и EEPROM) становится 16 (а то и 24) битным...

Обращение к EEPROM в этом случае происходит напрямую, что экономит как код, так и такты. На 16 МГц дополнительные такты ожидания не нужны. Просто объявляем переменную по адресу EEPROM и работаем стандартными средствами.

Цитата(ArtemKAD @ May 22 2011, 15:25) *
Результат - гораздо больший код, что приводит к тому, что программа которая реально помещается в 4кБ AVR никак не может влезть в 4кБ STM8. В лучшем случае - полуторократное увеличение размера кода...

Цена STM8 при одинаковом объеме Flash ниже AVR раза в 3. т.е. можно поставить камень с большим объемом Flash без увеличения цены. Внутри семейства полная Pin-to-pin совместимость одинаковых корпусов)

Цитата(ArtemKAD @ May 22 2011, 15:25) *
Осталось придумать в чем...

STM8S
Например 16-битный таймер с расширенными возможностями. Аналогов у AVR не имеет.
Прерывания может вырабатывать любой пин любого порта по изменению уровня. Каждый порт имеет свой вектор. Аналог PCINT у AVR только на некоторых портах и не на всех кристаллах.
Приоритетная система вложенных прерываний. Отсутствует у AVR.
АЦП может иметь до 16 входов (зависит от корпуса).
У АЦП есть функции автоматического преобразования группы нескольких входов с прерыванием по последнему и функция мультивыборки по одному входу - полезна для измерений с усреднением.
Есть регистры верхнего и нижнего порога с выдачей прерывания при выходе значения за границы.
Аналоговый Watchdog при выходе значения за границы.
Подсистема тактирования позволяет переключать источники на лету, есть режим автоматического перехода на RC-генератор при отказе кварца.
Все фьюзы можно настроить из программы после разблокировки записи.
EEPROM также имеет блокировку записи.
UART поддерживает протоколы LIN, IrDA.
Встроенный BootLoader через UART (SPI, CAN)
Аппаратный бипер. В AVR для аналогичной функции требуется выделение целого таймера.
Таймеры AWU и Window Watchdog. Пока не использовал, но в определенных ситуациях могут быть полезными.
Есть уникальный 96-битный серийный номер процессора.
Все команды ядра CPU доступны во всех камнях без ограничений (включая умножение и деление).
(-) Нет аналогового компаратора (есть почти во всех AVR)
(-) Нет дифференциальных входов АЦП (ATMega16,32,64,128)
(-) Нет интерфейса внешней памяти (ATMega8515, ATMega128)
ну и если отвлечься от периферии...
(-) Нет библиотеки, аналога V-USB sm.gif
(-) Нет компилятора GCC (для кого-то это может стать препятствием к освоению, а для кого-то отсутствие компилятора CodeVision sm.gif )
(-) Нет корпусов DIP sm.gif

STM8L - вся периферия STM8S, плюс
Часы реального времени с отдельным батарейным питанием,
4 канала DMA.
АЦП имеет разрядность 12 бит.
Есть один канал ЦАП тоже 12 бит.
2 аналоговых компаратора (у AVR - один)
IrDA модулятор.
Модуль шифрования AES.
ArtemKAD
Цитата
Обращение к EEPROM в этом случае происходит напрямую, что экономит как код, так и такты. На 16 МГц дополнительные такты ожидания не нужны. Просто объявляем переменную по адресу EEPROM и работаем стандартными средствами.

Даже так? :D
Тогда открой даташит на любой STM8 и посмотри сколько времени пишется одна ячейка EEPROM. Почти до 7 мс. Скажи, что станет с другими ячейками если в них попытаться записать не дождавшись окончания записи предыдущей?!
Так что там не нужно ждать?!
ЗЫ. Для справки - EEPROM переменная в Си всегда "Просто объявляем переменную по адресу EEPROM и работаем стандартными средствами". Но в реализации процедуры всегда в начале идет ожидание завершения предыдущей операции этим модулем. Т.к. модуль физически один и он работает медленнее чем возможны к нему обращения особенно при высокой тактовой.
Цитата
Цена STM8 при одинаковом объеме Flash ниже AVR раза в 3. т.е. можно поставить камень с большим объемом Flash без увеличения цены.

Думаешь? Берем мои любимые Atmega48 с сегодняшней ценой в 0,9$. Вы можете предложить STM8 с 4кБ за 0,3$ ? Или все-же приходится брать "аналог" STM8 за 1,2$ ?
Цитата
Например 16-битный таймер с расширенными возможностями. Аналогов у AVR не имеет.

В смысле? Стандартный 16 битный таймер чем не аналог? Не говоря уже о 16 битных таймерах xMega...
Цитата
Приоритетная система вложенных прерываний. Отсутствует у AVR.

Присутствует в старших AVR.
Цитата
АЦП может иметь до 16 входов (зависит от корпуса).

??? Смысл? АЦП все равно один (в старших AVR - могут быть два).
Цитата
У АЦП есть функции автоматического преобразования группы нескольких входов с прерыванием по последнему и функция
.....
Встроенный BootLoader через UART (SPI, CAN)

В старших AVR практически все есть.
Цитата
Аппаратный бипер. В AVR для аналогичной функции требуется выделение целого таймера.

Дык когда Beep-ер не нужен он стоит без дела. А вот таймер в хозяйстве вещь полезная всегда. Кроме того пищалка на 3 тона - сегодня это не смешно. Проще поставить таки биппер!
Цитата
STM8L - вся периферия STM8S, плюс
Часы реального времени с отдельным батарейным питанием,
4 канала DMA.
АЦП имеет разрядность 12 бит.
Есть один канал ЦАП тоже 12 бит.
2 аналоговых компаратора (у AVR - один)
IrDA модулятор.
Модуль шифрования AES.

Сравни с xMega....
IgorKossak
Давайте внимательно прочтём название темы и перестанем уклоняться в холивар.
Модератор.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.