Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: выполнение кода не из flash
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
TarasG
Вопрос скорее теоретический, т.к. не относится к какой-то конкретной задаче. Просто мне интересно, реально ли на AVR сделать что-то вроде микрокомпьютера, чтоб можно было выполнять программы, записанные, скажем, во внешней EEPROM. Я знаю о возможности самопрограммирования, когда можно загружать программы с любого носителя в flash-память, а потом выполнять. Но меня смущает ограниченность циклов перезаписи - всего 1000. Ни у кого нет мыслей по этому поводу?
Kuzmi4
2 TarasG - одна мысля - для отладки вам 1000 вроде бы хватит или 2е возьмёте , а потом то всё равно пустите изделие, а считывать EEPROM можно много раз wink.gif
vmp
Я знаю как минимум два способа.
1. Взять FPSLIC (атмеловский чип с AVR+FPGA в одном флаконе, программа лежит в ОЗУ) или ещё какой-то камень для USB (не помню название) с внешней памятью.
2. Написать интерпретатор и выполнять программу интерпретатором.
GDI
Это смахивает на контроллеры для автоматизации, у них подобное(или оно самое) реализовано через целевую платформу которая работает в контроллере, а пользовательские программы располагаются в еепром и оттуда выполняются, не вижу невозможности это реализовать и в АВР.
Есть же BASCOM, да и джава вроде для АВР тоже есть.
Палыч
Выполнять программу из внешней памяти в AVR - нельзя. Но, её (программу) можно переписать из внешней памяти во flash, и уже потом выполнять. Ограничение на 1000 циклов - не такое уж и маленькое, ведь программа во внешней памяти, наверное, не часто будет обновляться. При смене программы 1 раз каждый день (что крайне редко встречается на практике) - ресурса хватит на 3 года. Можно проверять, что она (программа) уже записана во flash, и повторную запись не производить, таким образом ресурс будет тратиться только при смене программы во внешней памяти.
Igor26
Цитата
Ограничение на 1000 циклов

Если я не ошибаюсь, в нынешних ревизиях чипов, количество циклов записи во Flash - 10 000
GDI
Кстати у атмела есть апноут на хранение неких изменяющихся данных во flash, т.е. некое превращение внутреннего flash в еепром.
TarasG
Вариант с виртуальной машиной, конечно, интересный. Но есть у него один существенный недостаток - потеря быстродействия sad.gif
Даже 10000 циклов - мало, если предположить, что пользователь сам быдет устанавливать и запускать программы. Т.е. это может быть 100 запусков программ в день, т.е. всего 100 дней будет жить чип sad.gif
FPSLIC - очень интересное решение. Я так понял, это at94 серия? Только вот интересно, сколько такое решение может стоить?

Цитата(vmp @ Jun 5 2008, 14:27) *
или ещё какой-то камень для USB (не помню название) с внешней памятью.

Кстати, это наиболее интересный вариант. Т.е. всё-таки есть AVRы, поддерживающие запуск программы из ОЗУ? Жаль, что названия не помните...
vmp
Цитата(TarasG @ Jun 5 2008, 17:56) *
Вариант с виртуальной машиной, конечно, интересный. Но есть у него один существенный недостаток - потеря быстродействия sad.gif
Зависит от задачи и от набора команд виртуальной машины. Если например нужно в основном считать плавающую арифметику, то потеря будет весьма незначительной. А если надо шевелить ножками - тогда да. Можете ещё почитать про Форт.
Цитата(TarasG @ Jun 5 2008, 17:56) *
FPSLIC - очень интересное решение. Я так понял, это at94 серия? Только вот интересно, сколько такое решение может стоить?
От 12 долларов. http://www.efo.ru/doc/Atmel/price.pl

Цитата(TarasG @ Jun 5 2008, 17:56) *
Т.е. всё-таки есть AVRы, поддерживающие запуск программы из ОЗУ? Жаль, что названия не помните...

Устарели, не рекомендуются для новых разработок.
AT43USB320A - Full speed USB microcontroller with a 12 MIPS AVR, 3 function endpoints, an embedded 4-port Hub and a UART. http://www.atmel.com/dyn/resources/prod_do...nts/doc1443.pdf
AT43USB355 - Full-speed USB microcontroller with a 12 MIPS AVR, 3 function endpoints, a 2-port Hub and 12-channel 10-bit ADC, PWM and 24 Kbytes of program SRAM or mask ROM.
http://www.atmel.com/dyn/resources/prod_do...nts/doc2603.pdf
Можно еще тут покопаться:
http://www.atmel.com/dyn/products/devices.asp?family_id=688
Rst7
Ну если есть такое большое желание поизвращаться - посмотрите сюда www.systemsemi.com на камень под названием M3000. Есть версии (причем, те, которые в QFP) с интерфейсом к внешней памяти программ.
TarasG
Цитата(vmp @ Jun 5 2008, 17:17) *
Зависит от задачи и от набора команд виртуальной машины. Если например нужно в основном считать плавающую арифметику, то потеря будет весьма незначительной. А если надо шевелить ножками - тогда да. Можете ещё почитать про Форт.

Я имею ввиду например программную реализакию ядра AVR, позволяющую загружать и выполнять программы из внешних носителей, не перезаписывая flash. очевидно, что в таком случае производительность значительно упадёт, т.к. основная программа (эмулятор, зашитый в flash) сначала должна сначала распознать команду, и только потом выполнить её.
Цитата(vmp @ Jun 5 2008, 17:17) *
От 12 долларов. http://www.efo.ru/doc/Atmel/price.pl

Да, это в принципе не так уж и много. Только вот у себя я что-то не могу их найти. Да и покупать его чисто ради "желания поизвращаться" как-то неохота smile.gif Попробую я наверно "поизвращаться" с виртуальными машинами. Это по крайней мере не требует капиталовложений smile.gif
vmp
Цитата(TarasG @ Jun 5 2008, 19:58) *
Я имею ввиду например программную реализакию ядра AVR, позволяющую загружать и выполнять программы из внешних носителей, не перезаписывая flash. очевидно, что в таком случае производительность значительно упадёт, т.к. основная программа (эмулятор, зашитый в flash) сначала должна сначала распознать команду, и только потом выполнить её.

В случае программной реализации какая разница, на каком ядре она выполняется? Запустите ее на PC и получите скорость выше реального кристалла. Если нужно отдельное устройство - поставьте микроконтроллер уровня ARM. Тот же SAM7S например. Цена того же порядка, что и AVR. Частота - 50 МГц. Или ещё какой-нибудь.
TarasG
Собственно, вопрос то был не в смысле "как такое сделать?", а скорей "способны ли AVR на это?". И я имею ввиду не МК вообще, а именно AVR с их системой команд и главное средствами разработки.
Выводы можно сделать следующие:
1. AVR на это способны. Но только в FPSLIC исполнении.
2. AVR семейств mega, tiny и т.п. не подходят для такого рода задач.
3. Если что, смотреть надо в стороне не-AVR (например, ARM).
Спасибо за обсуждение.
Artem_Petrik
Как альтернативу FPSLIC-у с аппаратным ядром AVR внутри (12$, сложно достать) можно рассмотреть еще вариант другой (нормальной, современной) FPGA с софтовым ядром AVR. Скажем младший из третьих циклонов имеет похожую цену, при этом достать намного проще, и помимо ядра AVR туда еще много чего влезет. XILINX также имеет подходящие FPGA по схожей цене. Ядро есть готовое, бесплатное на opencores-ах (там вроде код под ксайлинкс, для альтеры править придется)

Согласен, далеко не самое простое решение, для реализации придется вплотную знакомится с FPGA, но тоже ведь вариант.
Хотя я бы выбрал архитектуру, изначально работающую с внешней памятью программ. MCS51 или ARM или чтото еще.
TarasG
Цитата(Artem_Petrik @ Jun 5 2008, 22:00) *
Хотя я бы выбрал архитектуру, изначально работающую с внешней памятью программ. MCS51 или ARM или чтото еще.

Вобщем, примерно такой вывод я и сделал.
zhevak
Цитата(TarasG @ Jun 5 2008, 17:00) *
Вопрос скорее теоретический, т.к. не относится к какой-то конкретной задаче. Просто мне интересно, реально ли на AVR сделать что-то вроде микрокомпьютера, чтоб можно было выполнять программы, записанные, скажем, во внешней EEPROM.


Ностальжи по Z80 и КР580ВМ80А. Самого иногда подмывает "помечтать" в эту сторону, только на базе современных МК. Увы, друг мой, легко и непринужденно не получиться!

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

Сосвсем другое дело -- микропроцессоры! Эти универсальные "информационные мясорубки" -- они предназначены для выполнения кода, который не имеет постоянства: сейчас вы запускаете Касперского, через минуту браузер, а через полчаса компилятор. Все проги храняться отдельно, на дополнительном устройстве (на винте), и по мере необходимости вы их подгружаете в оператвную память. Проц может опереться только BIOS, который постоянно "прописан" рядом с ним и практически не меняется. Все остальное -- не постоянно и загружается из вне.

Я не очень большой спец в ассортименте современных МК и процов. Я интенсивно использую только некоторые конкретные типы, и всё! Я вполне допускаю, что должны существовать какие-нибудь универсальные контроллеры, типа легендарного Z80. Но я о них либо на слышал, либо слышал, но не отметил для себя.

Попробуйте посмотреть на AT91SAM7S256. У него внутренней оперативы достаточно много (больше, чем у других МК) для "поиграться". Если очень так хочется сделать что-то типа РК86, попробуйте разместить во флеше МК ядро (а ля-БИОС, монитор -- не важно, как оно называется -- т.е. набор подпрограмм, функций для работы с железом), а многие количества программ уж подгружайте в оперативу по мере необходимости. Таким образом, у вас будет персональный микрокомпьютер.

Да, чуть совсем не забыл, Интел-то ведь никто не отменял! Вот тут у меня под рукими лежит ПроСофтовский каталог, там предлагают микроконтроллеры фирмы RDC, говорят, что ядро x86. Попробуйте погуглить по слову "R8610" -- может быть это то, что вы ищите?
zltigo
Цитата(zhevak @ Jun 6 2008, 07:37) *
Назаначение МК и микропроцессоров -- изначально разное.

Столько много слов, а исчерпывающий ответ уже был дан выше. Причем "изначальное назначение" (не иначе, как записанное в первых скрижалях Моисея smile.gif ) здесь совсем не причем.
TarasG
Цитата(zhevak @ Jun 6 2008, 08:37) *
Самого иногда подмывает "помечтать" в эту сторону, только на базе современных МК. Увы, друг мой, легко и непринужденно не получиться!

Правильно заметили. Тема создавалась как раз для "помечтать" в эту сторону. Зато в результате я узнал про сущестоввание многих вещей.
Цитата(zhevak @ Jun 6 2008, 08:37) *
Назаначение МК и микропроцессоров -- изначально разное.

Это, пожалуй, главный ответ.
zhevak
Спасибо, TarasG!

Вы вернули меня к жизни smile.gif
Igor26
Взгляните здесь, возможно будет интересно.
http://www.mcu-cpld.narod.ru/Altera/AVR_CPU_Core.html
TarasG
Вопрос не совсем сюда (рядом есть раздел ARM), но как-то неохота создавать новую тему, тем более, что вопрос напрямую касается этой темы. Позволяет ли, скажем, AT91SAM7S32 выполнять программу не из flash? Стоит он совсем не дорого и неплохо подошел бы для "извращений" smile.gif
vmp
Цитата(TarasG @ Jun 6 2008, 18:13) *
Позволяет ли, скажем, AT91SAM7S32 выполнять программу не из flash?

Да. Из внутреннего ОЗУ.
При программировании в IAR EWARM читать про __ramfunc.
На S32 не проверял, а вот на S64 и S256 проверил лично. smile.gif
zltigo
Цитата(TarasG @ Jun 6 2008, 10:32) *
Это, пожалуй, главный ответ.

Неверный smile.gif. Ни в коем случае не пользуйте AT91SAM7S32 - он рожден по Вашей логике для чего-то совсем другого smile.gif. И 51 тоже не пользуйте. Вообще НИКОГДА вообще не пользуйте неймановских контроллеров - они вообще не контроллеры! smile.gif smile.gif smile.gif - годятся только "Касперского запускать"...
SasaVitebsk
Цитата(TarasG @ Jun 6 2008, 17:13) *
Позволяет ли, скажем, AT91SAM7S32 выполнять программу не из flash? Стоит он совсем не дорого и неплохо подошел бы для "извращений" smile.gif


Если вы заглянете на сайт Atmel в соответствующий раздел, то найдёте кучу процессоров подходящих для "данных извращений", причём как раз SAM7S разрабатывался для других извращений. Кроме того есть AP7000 для данных извращений с архитектурой AVR32. Большое количество соответствующих процов у NXP, TI, Samsung, siemens, Mitsubishi и т.д.

Но идея всё равно находится в плоскости ностальжи и практического смысла не имеет. Как правило процы с внешней памятью расчитаны на современные условия и требования. То есть разрядность - 32, объём памяти - несколько мегабайт, частоты запредельные. Соответственно цокалёвка BGA, часто прямой выход на графический дисплей и даже монитор. Плата к такому изделию требует грамотной разводки. STK к такому процу стоит 300-500$. Как правило уже в STK имеется Linux.

При таких раскладах городить свой монитор, а ля синклер, - уже не катит, а делать прогу из-под линукса, типа для души - так возьми комп, за теже деньги - установи линукс и ваяй. smile.gif


Короче - ну забыть уже надо синклер. Забыть! Да уже и FlashBack вместе с DOOM2 выглядит как то угловато, я уже не говорю про AnotherWorld или KB.
smile.gif
Nick_Shl
Цитата(zhevak @ Jun 6 2008, 08:37) *
Назаначение МК и микропроцессоров -- изначально разное.
В любом МК есть микропроцессор. А так же ПЗУ, ОЗУ, переферия(если компьютерными терминами то CPU+HDD+RAM+MB)... Вобщем МК понятие шире чем микропроцессор.

А в целом про такие извращения: забыли такую штуку как самомодифицирующийся код. Например при защите могла бы пригодится...
Сергей Борщ
Цитата(Nick_Shl @ Jun 6 2008, 22:27) *
В любом МК есть микропроцессор.
Люкс! Поставьте себе в подпись lol.gif Покажите на картинке в даташите на любой AVR, PIC, ARM - где у него там внутри микропроцессор?
Цитата(Nick_Shl @ Jun 6 2008, 22:27) *
А так же ПЗУ, ОЗУ, переферия(если компьютерными терминами то CPU+HDD+RAM+MB)
Также покажите словарь, в котором ПЗУ (ROM, read-only memory) переводится как HDD (hard disk drive) == НЖМД (накопитель на жестких магнитных дисках)? Я буду этот словарь обходить подальше. Еще MB = периферия очень позабавило smile.gif
zhevak
Да это и так все понятно! Не цепляетесь к деталям.

Железка не имеет коммерческого назначения. Это как рыбок разводить в трехлитровой банке -- чисто для души. Не для выгоды, не для бизнеса.

Иногда бывает, хочется что-нибудь сделать такое-эдакое. Просто так. Просто что-нибудь забавано- бесполезное. Которое не тащит за собой груз ответственности перед заказчиком, не давит сроками. За невыполнение которого не лишат премии. Которое можно просто оставить на полпути (процесса разработки, изготовления), когда просто надоест, и за это ничего не будет. Этот бесполезный акт называется просто -- "отдушина".

Почему именно аналог РК-86, Синклера? Да потому что упоминание этих вещей вызывают стойкую положительную эмоцию. Хочется повторить их на бис, но на современной базе. Разве ни у кого, из присутствующих здесь, таких бредовых желаний ни разу не появлялось? Человек в душе художник, а вы гасите его душевные порывы? Зачем? Либо помогите, либо не мешайте.

В этой жизни мало что имеет какой-нибудь смысл. Какая разница чем заниматься, когда есть время и есть возможности.
SasaVitebsk
2 zhevak.

Да мы не гасим. smile.gif Просто это действительно "заглохнет на полпути", а то и в начале.

А вот "какая разница чем заниматься" тут мы не согласны. По крайней мере я не согласен. Самое дорогое - это свободное время и свобода выбора. В определённом возрасте это особенно остро ощущаешь. Поэтому мы просто предлагаем переключиться с одной задачи для души на другую. Если есть порыв души, свободное время и желание. Но боже упаси - чисто советуем, а не настаиваем. Выбор в любом случае за автором.

А то начинает выстраиваться цепочка.
1) Так AVR не подходит. Найболее подходящий ARM7/9/11.
2) Так ARM7 с внешней памятью только в BGA + многослойка.
3) Если брать BGA, то уж лучше ARM9. Мегагерцев поболее
4) Надо как-то дисплей присобачить.
5) Так всё получилось. И Линукс работает. Не напомните зачем это всё я собирал? smile.gif

Это я шутя очерчиваю основные вехи. smile.gif
zltigo
Цитата(SasaVitebsk @ Jun 6 2008, 22:40) *
2) Так ARM7 с внешней памятью только в BGA + многослойка.

Ой. Зачем так резко. ARM7 в нормальных корпусах с их 50-72 MHz и только с памятью на внешней шине совершенно нормальны.
defunct
Цитата(Сергей Борщ @ Jun 6 2008, 23:08) *
Люкс! Поставьте себе в подпись lol.gif Покажите на картинке в даташите на любой AVR, PIC, ARM - где у него там внутри микропроцессор?

Можно я покажу? ;>
Открываем любой даташит на МК с ARM ядром, идем в раздел Block Diagram
и первое что там видим -
ARMXXXX Processor - вот он микропроцессор.
далее от него идет Local Bus к которой подрублен контроллер памяти и мост APB.
ну и т.д.

Цитата
Также покажите словарь, в котором ПЗУ (ROM, read-only memory) переводится как HDD (hard disk drive) == НЖМД (накопитель на жестких магнитных дисках)? Я буду этот словарь обходить подальше. Еще MB = периферия очень позабавило smile.gif

Дык было сказано в переносном смысле.
HDD / Flash накопители почти одно и тоже и логика работы практически одинаковая - секторная.
Флеш на МК тоже секторный (в части записи) так что не вижу никакого повода для иронии.

Сравнение на мой взгляд было удачным.
TarasG
Тут вот очень часто упоминается "ностальгия" и т.п., так вот я как раз этому не подвержен и мои побуждения несколько иные. А неподвержен наверно потому, что первый мой компьютер имел 1.4ГГц процессор и было это не так давно.
Как то так получилось, что обсуждение свелось к "какой МК самый крутой и почему всё остальное не катит". А вопрос то был в том смысле, какой минимальный (по стоимости в первую очередь) МК позволяет запускать программы без перепрошивки flash. Конечно, хотелось бы, чтоб таким МК оказался МК семейства AVR (т.к. опыт работы я имею только с ними). ARM мне кажется следующим наиболее приемлемым вариантом. Наверно, потому что Atmel smile.gif
defunct
Цитата(TarasG @ Jun 7 2008, 01:28) *
А вопрос то был в том смысле, какой минимальный (по стоимости в первую очередь) МК позволяет запускать программы без перепрошивки flash.

На сегодня это AT89S52 - меньше $1 (при сорока ногах)
по выводам совместим с mega8515/162. Правда это еще вопрос кто с кем совместим ;>
SasaVitebsk
defunct совершенно прав, хотя это семейство x51. Кроме приведенной микросхемы существуют её аналоги, например от бывшего Dallas (ныне Maxim), которые позволят работать с внешней памятью (при достаточном быстродействии) на 40МГц (ядро) с 1 тактом на команду. То есть ~40 мипсов в пике. (Правда не уверен что память обеспечит без тактов ожидания, но в любом случае это в десятки раз мощнее синклера.
Микросхемы с ядром AVR, обеспечивающие данную работу вам уже приводили. ARM - это не только Atmel и, даже, не столько Atmel.

Так например, если вас удовлетворяет работа из внутреннего озу и 64К (естественно вместе с данными) вас устроит, то есть вариант LPC2106 стоимостью 11$ c производительностью близкой к 60 мипсов 32 бита.
Другие по ссылке http://www.nxp.com/selectionguides/tables/45994.html (например 2220 с внешним интерфейсом в 144 ножном корпусе). Но в ARM-овой ветке вам скорее всего ещё более интересных предложений накидают.

Дерзайте. smile.gif
zltigo
Цитата(SasaVitebsk @ Jun 7 2008, 02:59) *
...то есть вариант LPC2106 стоимостью 11$ c производительностью близкой к 60 мипсов 32 бита.

~150 российских рублей, это пока еще не 11$ smile.gif. Ну "старенький" он,хотя 64K RAM для такого корпуса рекорд. И NXP Philips/NXP официально гордится, что ни одного ARM c производства не снял и в обозримом будующем не собиратся. А вот LPC22xx уже точно бессмысленно использовать для таких целей - LPC246x за 130 рублей.
Nick_Shl
Цитата(Сергей Борщ @ Jun 6 2008, 23:08) *
Люкс! Поставьте себе в подпись lol.gif Покажите на картинке в даташите на любой AVR, PIC, ARM - где у него там внутри микропроцессор?
А если его там нет, что же выполняет команды? Даже если микропроцессор не выделен, от там есть. В тойже m128 есть регистры, АЛУ, декодер инструкций - все это части микропроцессора.

Цитата(Сергей Борщ @ Jun 6 2008, 23:08) *
Также покажите словарь, в котором ПЗУ (ROM, read-only memory) переводится как HDD (hard disk drive) == НЖМД (накопитель на жестких магнитных дисках)? Я буду этот словарь обходить подальше.
А вы мне покажите где ПЗУ = ROM!
ПЗУ(постоянное запоминающее устройство) не равно ROM(память только для чтения).
Так что НЖМД подпадает под ПЗУ.
Сергей Борщ
Цитата(Nick_Shl @ Jun 7 2008, 09:56) *
Даже если микропроцессор не выделен, от там есть.
Почитайте букварь по выч. технике.
Цитата(Nick_Shl @ Jun 7 2008, 09:56) *
А вы мне покажите где ПЗУ = ROM!
Не поверите - в любом. Lingvo, Google, остальные ищите сами. Не вижу смысла дискутировать с человеком, который оспаривает терминологию. Ибо если вы не владеете даже терминологией... sad.gif
TarasG
Цитата(defunct @ Jun 7 2008, 01:38) *
На сегодня это AT89S52 - меньше $1 (при сорока ногах)
по выводам совместим с mega8515/162. Правда это еще вопрос кто с кем совместим ;>

Да, это очень интересный вариант. Правда, у нас он не меньше, а $1.2, но то мелочь smile.gif
TarasG
Кстати, а как насчёт XMEGA? Они поддерживают выполнение кода не из flash? И насколько они совместимы с другими AVR?
SergeiCh
Цитата(TarasG @ Jun 7 2008, 16:34) *
Да, это очень интересный вариант. Правда, у нас он не меньше, а $1.2, но то мелочь smile.gif
Посмотрите AT89S51, он должен быть еще дешевле. В букварях написано, как у MCS-51 внешнюю память данных объединить с внешней памятью программ (MOVX-ом будете иметь доступ к коду)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.