А если JTAG недоступен (fuse пережжен)? Получается что только BSL. Стоит ли тогда овчинка выделки? А вообще ИМХО такое.
BSL успешно работает и на 38400. Гляньте MSPFET Programmer Kurt-а здесь на сайте в проектах. BSL успешно выполняет все те функции, которые вам требуются. Техника программирования через BSL описана - просто напишите свою программу-загрузчик с оболочкой GUI, если вам так этого хочется.
Если же все-таки хочется писать свой собственный загрузчик, то в основной программе помещайте написанный загрузчик в секцию _low_level_init (это для IAR EW430). Пускай после ресета он инициализирует требуемую для загрузки периферию и ждет, допустим, 5сек и если нет активности по связи, то верифицирует firmware во Flash и при валидности передает ей управление. Допускать переписывание firmware в теле основной программы это ненужно, вредно и опасно.
Загрузчик должен выполнять только одну функцию загрузка - каким-либо способом собственно блока программы обновления firmware (загрузчик загрузчика). Patch-и для BSL именно так и работают. При этом можно сделать какую-нибудь защиту - шифрование или идентификацию загрузчика или что-то еще подобное.
Чтобы сократить до минимума вероятность порчи загрузчика, его нужно размещать в том же сегменте, что и вектора прерываний и не стирать при обновлении firmware. Поскольку сами вектора прерываний при изменении софта приходится переписывать, то нужно сделать их перемещаемыми и обработчики прерываний располагать в другом сегменте Flash или в ОЗУ. Где-то на форуме electronix.ru я встречал пример программы для MSP430 как раз c перемещением векторов прерываний в ОЗУ.
Все это имеет смысл, если действительно имеется реальная потребность время от времени обновлять firmware, а в используемом кристалле имеются ресурсы для этого. Для совсем мелких кристаллов MSP430 никакого смысла в подобном усложнении софта нет - используйте имеющийся BSL и не чудите ;-)
-
- Я начинал делать но передумали vz(339 знак., 10.01.2006 15:17, )