Является ли бинарный код Arduino скетчей портативным?

subj.
если сделать jmp far на некоторый адрес, будет софтварная перезагрузка.
соответственно возникает резонное желание залить несколько скетчей подряд, и переделать загрузчик так чтобы он джампал на нужный адрес. порчи памяти не будет если не вылазить из своей области флеша. а ram общая на всех (но в конкретный момент работает только один)

А ты жёстко бухаешь. Завязывай, завтра понедельник.

3 лайка

Недавно была тема, энтузиазма у народа не вызвала
https://forum.arduino.ru/t/multi-boot-na-arduino-mega/11837

Если не с практической точки зрения, а чисто познавательной, у меня, как у начинающего вопрос, а как

?
Ведь компоновщику надо это объяснить

Скажем зальём несколько независимых HEX ов.
Но как в этих HEX -ах сдвинуть адреса ?

P.S
Получается, проще писать одну общую программу, и в ней уже выбирать , что в данный момент загружать?

P.P.S Хотя, если каждую программу писать с определённого, заранее просчитанного CSEG…

В словаре Ожегова слово “портативный” определяется как: “Удобный для ношения при себе, для переноски”. Вы пробовали носить при себе “бинарный код ардуино”? Удобно? Если не пробовали, попробуйте и нам расскажете.

Ну, если возникает, так сделайте и, опять же, нам расскажете.

1 лайк

Ну это как раз-таки на изичах, у меня есть некоторый опыт в написании всяких текстовых конвертерах. .hex это текст - двоеточия и потом цифры. читаешь, парсишь, правишь, пишешь. Ызи.

А в журнале “ксакеп” и русскоязычных ресурсах по информационной безопасности, отладке, защите от отладки, на форумах по языкам верхнего уровня и ассемблеру, по системному программированию, словосочетание “портативный код” употребляется именно с целью показать характерную особенность такого кода, в котором переходы, указатели и всякое такое используют именно относительные адреса, то есть сам код может занимать любое место в памяти, и это не влияет на его работоспособность (код сохраняет её, будучи перемещённым с адреса 0000:0000 на 0001:0700 и т п).
Расширяйте кругозор.
UPD. FYI, слово “портативный” употребляется чаще чем “портируемый”.

BOOM, не пью вообще.

Гляжу, у админов мозги вообще набекрень. Это комплимент.)

Да, мне уже поздно.

Но Вы вправе выражаться с любым, комфортным для Вас, уровнем безграмотности, кто я такой, чтобы запрещать Вам это?

1 лайк

Нет, “это думать никому не рано и никогда не поздно”!

Что ж, век живи, век учись

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

Лучше бы пил (с) :wink:


ЗЫ: У тебя раньше посты хотя б смешные были. Дичь, но веселая, а этот - реально за гранью. Тут или вещества всякие или хуже… уж прости.

ЗЗЫ: портативный бывает “внутрижопный жужжатель”, а код перемещаемый.

WladDrakula, может я просто злой. Вообще всех ненавижу. (side-эффект от одиночества)
Веществами принципиально не пользуюсь, считаю что это для унтерменшей.

Ну я фиг знает почему они слово “портативный” используют, мне то что. Все так пишут и я пишу. Хз.

Короче, хотите переместить в ЧЧ - го.

Вся эта тема больше смахивает на…

“Мечтают ли андроиды об электроовцах?”

1 лайк

Главная проблема в AVR в том что вектора прерываний по умолчанию все в нулевых адресах.

1 лайк

ну если уже упарываться до конца, мб можно что бы вектор прерываний всегда ссылался на одну и ту же программу (очередной .hex в представлении ТСа) а оттуда уже каким то образом мапить и разруливать , вызывать функкцию “работающей” сейчас программы ¯_(ツ)_/¯

типа

   IV.hex            IVRouter.hex                     FW1.hex                               FW2.hex
|--------|---------------------|---------------------------------------|----------------------------------------------|
0       100h                 500h                                    900h                                           E00h

в IVRouter.hex знать Program Counter, до момента исполнения прерывания, и вызвать прерывание либо в FW1.hex , либо в FW2.hex … a рутины исполнения прерываний могут быть по фиксированным адресам.

1 лайк