Можно ли увеличить память под прошивку?
Например, имеется ATMega8, прошивка "раздулась" до 32 кВ. Можно ли поставить какую нибудь дополнительную память которая бы "приплюсовалась" к уже имеющимся в меге 8 кВ ?
Нельзя всё знать, достаточно понимать.
- Реклама
На сколько мне известно, нет у AVRок нет такой возможности.
Ставим плюсы: )
Понятно. Спасибо. Жаль...ibiza11 писал(а):На сколько мне известно, нет у AVRок нет такой возможности.
Нельзя всё знать, достаточно понимать.
Однако можно в контроллере написать прошивку так, чтобы та выполняла команды уже из внешней памяти, хоть с MMC. Правда я не очень хорошо представляю как, но мне это кажется вполне себе возможным.
Усложнять просто. Упрощать сложно.
- Реклама
Поверьте мне, это Вам только кажется. Для МК такой подход не реален.но мне это кажется вполне себе возможным.
есть вариант:
берем мегу48 пишем, разраслось - переходим на мегу88, разраслось еще - на мегу168, полная совместимость снизу-вверх
вот только чего можно было накидать на 32к
может стоит ревизию программы сделать, да обрезание лишнего сделать? глядишь и в мегу8 все влезет.
берем мегу48 пишем, разраслось - переходим на мегу88, разраслось еще - на мегу168, полная совместимость снизу-вверх
вот только чего можно было накидать на 32к
может стоит ревизию программы сделать, да обрезание лишнего сделать? глядишь и в мегу8 все влезет.
Это я только в качестве примера привел. Переборщил немногоGP1 писал(а): ...вот только чего можно было накидать на 32к![]()
Нельзя всё знать, достаточно понимать.
Хе, с внешней памяти выполнять... Типа, оверлейного подхода, как в ДОСе, что-ли?
Когда надо - прошиваем нужный участок ФЛЭШа и переходим туда.
Мнда, только ФЛЭШ так долго не протянет.
А память внешнюю к АВРкам можно прицепить, только не "программную" а для данных.
У некоторых 100-ногих мег есть выделенные ноги дли подключения внешней памяти.
Например, к 640 меге можно прицепить до 64Кб статической памяти и она будет на прямую адресуема из программы. Ну за вычетом собственной памяти меги.
Когда надо - прошиваем нужный участок ФЛЭШа и переходим туда.
Мнда, только ФЛЭШ так долго не протянет.
А память внешнюю к АВРкам можно прицепить, только не "программную" а для данных.
У некоторых 100-ногих мег есть выделенные ноги дли подключения внешней памяти.
Например, к 640 меге можно прицепить до 64Кб статической памяти и она будет на прямую адресуема из программы. Ну за вычетом собственной памяти меги.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Это только на первый взгляд, если решать задачу "в лоб". Можно написать интерпретатор, зашить его в МК, а саму исполняемую программу держать на внешней SD - MMC, считывая ее как данные и потом покомандно интерпретируя. Как Basic для БК-010-01. Тогда смена программы сведется к простой замене карточки.Rimsky писал(а):Поверьте мне, это Вам только кажется. Для МК такой подход не реален.но мне это кажется вполне себе возможным.
Но чтобы это сделать, надо иметь определенный уровень выше среднего. Кто это может сделать - делает, и уже в форум такого вопроса не задает
Где то я уже такое говно видел. По моему в мастерките. Типа модульный конструктор с интерпретатором типа языка бейсика для начинающих. Я думаю те ребята, которые серьезно занимаются электроникой и делаю вещи, а не тратят время на всякую херню типа интерпретаторов, даже о этом и не подумают.Можно написать интерпретатор, зашить его в МК, а саму исполняемую программу держать на внешней SD - MMC
такая возможность есть только если код выполняется из памяти (RAM), а не из флеша так что берите ARM и флешку на несколько гигабайт - подгружаете код в RAM и будет вам щастье, а до кучи можно ещё и сжатие сделать чтоб больше кода вместилось в флеш, ну по мойму 51е тоже так могут если память не изменяет, интерпретаторы не слишком эффективный метод особенно по скорости, да и вообще 8 битки использовать для ресурсоёмких задач это изврат, когда есть быстрые и дешовые ARMы от NXP или если уж так полюбились AVR есть Xmega (8/16бит) как минимум и AVR32 (но по цене они проигрывают филлипсовским ARMмам).mr_smit писал(а):Например, имеется ATMega8, прошивка "раздулась" до 32 кВ. Можно ли поставить какую нибудь дополнительную память которая бы "приплюсовалась" к уже имеющимся в меге 8 кВ ?
Ну зачем так категорично, не говоря уж об - грубо? Все зависит от конкретной задачи, условий эксплуатации - я имею в виду, если чел не просто лепит что-то для себя, а делает серьезную вещь именно для промышленного применения ( хоть форум и любительский, но неужели никто тут не делал серьезных вещей?)Rimsky писал(а):Я думаю те ребята, которые серьезно занимаются электроникой и делаю вещи, а не тратят время на всякую херню типа интерпретаторов, даже о этом и не подумают.Можно написать интерпретатор, зашить его в МК, а саму исполняемую программу держать на внешней SD - MMC
Я в далеких 80-х делал такую систему, причем не для микроконтроллеров, а на миниЭВМ СМ-4. Хоть там архитектура фон-Неймановская, и на первый взгляд, такой подход мало применим к Гарвардской архитектуре микроконтроллеров, но это если не вдумываться.
У нас в системе был транслятор, преобразовывавший исходный текст программы контроля в компактный псевдокод, который уже и исполнялся собственно интерпретатором. А в чем преимущество - спросите? Огромное! Пользователи системы, простые инженеры, не знающие азов программирования, ЖЕНЩИНЫ - писали работоспособные программы контроля РЭА! - потому что на языке, близком к естественному. Кстати о быстродействии. Поскольку интерпретатору не нужно тратить время каждый раз на анализ текста, достаточно в 3-5 команд принять параметры и уже затем исполнять их с максимально возможной скоростью - быстродействие было просто изумительным. Во всяком случае, компьютер не тормозил процесс, большая часть времени уходила на ожидание завершения процессов измерения.
Мне, напрмер, вполне вероятным представляется контроллер, управляющий какой-нибудь линией. При смене технологии не нужно тащить МК на перепрошивку - достаточно сменить карточку с псевдокодом, который может быть сделан кросс-компилятором на ПК.
Кажется, я про это уже рассказывал, только не помню -- где и кому
Хотя каждый имеет право на свое мнение. Только вот мнение, что "то, чего я не понимаю - гуано" - ошибочно всегда.
Делал я такое правда осталось только часть исходников
Код: Выделить всё
unsigned int cmd_api=0,adress_cmd;
unsigned int prog[]=
{
1,0,1,4,
2,0,1,8,
0,0,500,12,
2,0,0,16,
0,0,500,20,
3,0,0,4
};
/***command,data,addr***/
void command(unsigned int adress_){
switch(prog[adress_]){
case 0: delay_ms(prog[cmd_api+2]); //delay //delay
cmd_api=prog[cmd_api+3];break; //set addr
case 1: set_ddr(prog[cmd_api+1] , prog[cmd_api+2]); //DDR
cmd_api=prog[cmd_api+3];break; //set addr
case 2: set_port(prog[cmd_api+1] , prog[cmd_api+2]); //PORT
cmd_api=prog[cmd_api+3];break; //set addr
case 3: //reset
cmd_api=prog[cmd_api+3];break; //set addr
};
}
void delay_ms(unsigned int ms){
unsigned int zaehler;
while (ms) {
zaehler = F_CPU / 5000;
while (zaehler) {
asm volatile("nop");
zaehler--;
}
ms--;
}
}
void set_ddr (char cmd_1,char cmd_2){
switch(cmd_1){
case 0: DDRA=cmd_2;break;
case 1: DDRB=cmd_2;break;
case 2: DDRC=cmd_2;break;
case 3: DDRD=cmd_2;break;
};
}
void set_port(char cmd_1,char cmd_2){
switch(cmd_1){
case 0: PORTA=cmd_2;break;
case 1: PORTB=cmd_2;break;
case 2: PORTC=cmd_2;break;
case 3: PORTD=cmd_2;break;
};
}
Мое высказывания отражает лишь мое мнение по поводу интерпретаторов и всяческой такой фиговины. Я не переходил на личности, ни кому не грубил и т.д. То что эта вещь для промышленного применения и чел, как Вы говорите не лепит, то почему он совершенно не знает элементарного , а точнее архитектуры того МК который он использует?Ну зачем так категорично, не говоря уж об - грубо? Все зависит от конкретной задачи, условий эксплуатации - я имею в виду, если чел не просто лепит что-то для себя, а делает серьезную вещь именно для промышленного применения ( хоть форум и любительский, но неужели никто тут не делал серьезных вещей?)
Сколько сарказма и самолюбования! Теперь я понимаю, кто Е.Петросяну тексты пишет. Я в лагере не сидел и блатной слэнг "вату катать" до меня не дошел.Rimsky писал(а): Вам напомню, что Вы забыли перфокарты посоветовать..По поводу второго, на форуме много умных и уважаемых людей, но они не задают идиотских вопросом и вату не катают.
Прощайте, Римский, насегда - в этом мире, надеюсь, не встретимся.
Пока, пока. Батьке привет!Прощайте, Римский, насегда - в этом мире, надеюсь, не встретимся.
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
А все-таки интерпретатор это не всегда говно... Все зависит от ситуации. И это не смотря на то, что я, признаться, косо смотрю даже на java... Если надо впихнуть в МК AVR с 8Кб памяти гораздо больший объем кода, и нет возможности перейти на другой МК (что, конечно, самое разумное решение), выход только один - интерпретатор. Но, конечно, высокопроизводительной работы в этом случае ждать не приходится. Хотя, с другой стороны, все операции, критичные к ресурсам, можно реализовать в родном коде в виде команд... Короче, все зависит от конкретной ситуации.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Не только можно - нужно! Никто не станет спорить : Бейсик, к примеру, в смысле быстродействия - полный отстой. Но когда нам понадобилось быстро собрать систему програмирования - взяли его, бо там готовая работа с файлами, форматные преобразования, библиотека функций. А критичные по времени выполнения блоки написали на асме, благо сам Бесик поставлялся в дистрибутивах и позволял смастерить систему на свой вкус, включая функции пользователя. Как говорил Маменко, "публика неистовствовала" - простота Бейсика в сочетании с быстродействием на уровне машинных команд.YS писал(а): Хотя, с другой стороны, все операции, критичные к ресурсам, можно реализовать в родном коде в виде команд... Короче, все зависит от конкретной ситуации.
Если решение соответствует заданным критериям, то уже третьестепенной важности - на чем оно, да хоть на Коболе.
YS писал(а):Если надо впихнуть в МК AVR с 8Кб памяти гораздо больший объем кода, и нет возможности перейти на другой МК (что, конечно, самое разумное решение)
ПоддерживаюYS писал(а):(что, конечно, самое разумное решение)
С самого начала читаю ветку и до сих пор понять не могу.
Есть рабочий проект, допустим на мега8, точнее не проект, а рабочее устройство. Нужно изменить программу, добавить новые функции и программа уже не помещается. И что мы просто подцепляем флешку, переписываем программу с нуля. Программу ладно, а где уверенность, что флешку есть куда подцепить. Т.е. еще и переделываем плату.
Так где логика держатся за мега8 ?
Объясните пожалуйста.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"



