Цитата(zltigo @ Mar 20 2008, 18:38)

Очередную проблему Вы выдумали - защита штатного загрузчика должна быть активирована ВСЕГДА. А из своего - пишите через ISP что хотите.
Понял.
Загрузчик теперь немного модифицировался. Нужно сделать еще и так.
Часть функций зашиврована и лежит в некоторой странице флешь. Потом, когда
загрузчик определит, что защита включена, он распакует содержимое флешь в область RAM.
И сразу запустит от туда обработчик команд. (компилятор IAR)
Первое решение влоб, это тупой перенос содержимого флешь в рам и использование фиксированной таблицы адресов функций, в которой будут указаны адреса со смещением, таким, что в табицу попадал адрес ее в рам, написать диспетчер, который будет прыгать по этой таблице и вызывать нужные функции, но это давольно заморочено.
Собственно думал заменить механизм инициализации __ramfunc, на собственный механизм распаковки.
Это вообще возможно?Или есть что-то лучше?
Цитата(meister @ Mar 20 2008, 21:46)

У меня в векторах прерываний стоят бранчи на сектор обновляемой части прошивки, а оттуда - куда надо.
Дело в том, что я хотел внутрипрограммно устанавливать и снимать защиту кода. Для этого надо затирать и переписывать страницу вместе с векторами прерываний, если вдруг произойдет сбой и страница не запишется, все улетит, и придется лезть по COM порту и перезаливать прошивку. И еще минус сбоя, если сделать это умышлено, то по ISP можно вычитать оставшуюся прошивку приложения.
Остановился на полном закрытии загрузчика.
Нашел еще интересную ссылку про загрузчик.
http://caxapa.ru/105173.html?hilite=scmRTOS&todo=fullТолько как в новом IAR 5.11 сделать копию векторов прерываний в область, раположенную не по адресу 0x00000000, а в 0x00003000?