subj.
если сделать jmp far на некоторый адрес, будет софтварная перезагрузка.
соответственно возникает резонное желание залить несколько скетчей подряд, и переделать загрузчик так чтобы он джампал на нужный адрес. порчи памяти не будет если не вылазить из своей области флеша. а ram общая на всех (но в конкретный момент работает только один)
А ты жёстко бухаешь. Завязывай, завтра понедельник.
Недавно была тема, энтузиазма у народа не вызвала
https://forum.arduino.ru/t/multi-boot-na-arduino-mega/11837
Если не с практической точки зрения, а чисто познавательной, у меня, как у начинающего вопрос, а как
?
Ведь компоновщику надо это объяснить
Скажем зальём несколько независимых HEX ов.
Но как в этих HEX -ах сдвинуть адреса ?
P.S
Получается, проще писать одну общую программу, и в ней уже выбирать , что в данный момент загружать?
P.P.S Хотя, если каждую программу писать с определённого, заранее просчитанного CSEG…
В словаре Ожегова слово “портативный” определяется как: “Удобный для ношения при себе, для переноски”. Вы пробовали носить при себе “бинарный код ардуино”? Удобно? Если не пробовали, попробуйте и нам расскажете.
Ну, если возникает, так сделайте и, опять же, нам расскажете.
Ну это как раз-таки на изичах, у меня есть некоторый опыт в написании всяких текстовых конвертерах. .hex это текст - двоеточия и потом цифры. читаешь, парсишь, правишь, пишешь. Ызи.
А в журнале “ксакеп” и русскоязычных ресурсах по информационной безопасности, отладке, защите от отладки, на форумах по языкам верхнего уровня и ассемблеру, по системному программированию, словосочетание “портативный код” употребляется именно с целью показать характерную особенность такого кода, в котором переходы, указатели и всякое такое используют именно относительные адреса, то есть сам код может занимать любое место в памяти, и это не влияет на его работоспособность (код сохраняет её, будучи перемещённым с адреса 0000:0000 на 0001:0700 и т п).
Расширяйте кругозор.
UPD. FYI, слово “портативный” употребляется чаще чем “портируемый”.
BOOM, не пью вообще.
Гляжу, у админов мозги вообще набекрень. Это комплимент.)
Да, мне уже поздно.
Но Вы вправе выражаться с любым, комфортным для Вас, уровнем безграмотности, кто я такой, чтобы запрещать Вам это?
Нет, “это думать никому не рано и никогда не поздно”!
Что ж, век живи, век учись
Но ведь несколько хексов в памяти не имеют смысла, так как вместо усложнения одной программы, придётся дорабатывать и компилятор, и компановщик и чёрти знает что ещё, идя по ни кем неизведанной тропинке(а точней, не нужной никому тропинке).
Лучше бы пил (с)
ЗЫ: У тебя раньше посты хотя б смешные были. Дичь, но веселая, а этот - реально за гранью. Тут или вещества всякие или хуже… уж прости.
ЗЗЫ: портативный бывает “внутрижопный жужжатель”, а код перемещаемый.
WladDrakula, может я просто злой. Вообще всех ненавижу. (side-эффект от одиночества)
Веществами принципиально не пользуюсь, считаю что это для унтерменшей.
Ну я фиг знает почему они слово “портативный” используют, мне то что. Все так пишут и я пишу. Хз.
Короче, хотите переместить в ЧЧ - го.
Вся эта тема больше смахивает на…
“Мечтают ли андроиды об электроовцах?”
Главная проблема в AVR в том что вектора прерываний по умолчанию все в нулевых адресах.
ну если уже упарываться до конца, мб можно что бы вектор прерываний всегда ссылался на одну и ту же программу (очередной .hex в представлении ТСа) а оттуда уже каким то образом мапить и разруливать , вызывать функкцию “работающей” сейчас программы ¯_(ツ)_/¯
типа
IV.hex IVRouter.hex FW1.hex FW2.hex
|--------|---------------------|---------------------------------------|----------------------------------------------|
0 100h 500h 900h E00h
в IVRouter.hex знать Program Counter, до момента исполнения прерывания, и вызвать прерывание либо в FW1.hex , либо в FW2.hex … a рутины исполнения прерываний могут быть по фиксированным адресам.