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

Возможно ли такое run code from SD with Atmega?

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

 

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

 

Так вот вопрос, зачем обязательно брится топором?

 

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

 

Илья

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЗЗЫ. Можно еще запустить на Меге виртуальную машину, а уже на SD хранить код виртуальной машины.

Именно так и работаем!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Это какой такой "любой проц с ядром ARM" умеет исполнять код во внешней SD-карте? От того, что он умеет содержимое загрузить в оперативку (из которой еще и прога для своих нужд кусок отхавает) и там исполнить, это совсем не означает, что ARM научился "это делать и без интерпретации, при этом за те же деньги".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это какой такой "любой проц с ядром ARM" умеет исполнять код во внешней SD-карте? От того, что он умеет содержимое загрузить в оперативку (из которой еще и прога для своих нужд кусок отхавает) и там исполнить, это совсем не означает, что ARM научился "это делать и без интерпретации, при этом за те же деньги".

Господи, далось вам это "исполнение во внешней SD-карте"! Вы же не требуете от PC исполнения программы непосредственно на HDD?

А вот загрузить и выполнить без интерпретации - да, какой-нибудь ARM или MSP может, а AVR8 - нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господи, далось вам это "исполнение во внешней SD-карте"! Вы же не требуете от PC исполнения программы непосредственно на HDD?

А вот загрузить и выполнить без интерпретации - да, какой-нибудь ARM или MSP может, а AVR8 - нет.

 

Из 8-битников STM8 умеют исполнять код в ОЗУ. Единое адресное пространство кода и данных - сильная вещь.

EEPROM, кстати тоже в нем находится. Периферия будет даже в чем-то помощнее, чем у меги.

Изменено пользователем EugenyAM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Единое адресное пространство кода и данных - сильная вещь. EEPROM, кстати тоже в нем находится.

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

Периферия будет даже в чем-то помощнее, чем у меги.

Осталось придумать в чем...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Куда уж сильнее - размер почти каждого адреса(в т.ч. и EEPROM) становится 16 (а то и 24) битным...

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

 

Результат - гораздо больший код, что приводит к тому, что программа которая реально помещается в 4кБ AVR никак не может влезть в 4кБ STM8. В лучшем случае - полуторократное увеличение размера кода...

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

 

Осталось придумать в чем...

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 :)

(-) Нет компилятора GCC (для кого-то это может стать препятствием к освоению, а для кого-то отсутствие компилятора CodeVision :) )

(-) Нет корпусов DIP :)

 

STM8L - вся периферия STM8S, плюс

Часы реального времени с отдельным батарейным питанием,

4 канала DMA.

АЦП имеет разрядность 12 бит.

Есть один канал ЦАП тоже 12 бит.

2 аналоговых компаратора (у AVR - один)

IrDA модулятор.

Модуль шифрования AES.

Изменено пользователем EugenyAM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обращение к 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....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Давайте внимательно прочтём название темы и перестанем уклоняться в холивар.

Модератор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...