VVT (02.01.2006 21:24, просмотров: 3873)
Как бы сделать красиво программу - пользовательский загрузчик, запускаемую из RAM на С? Хочется сделать программу, имеющую возможность обновить свою версию. Стандартный bootloader использовать не хочется - во-первых, неодходима коммутация ножек, во-вторых - скорость загрузки всего 9600. По идее нужно написать программу, которая будет при перезагрузки кода переписывать часть себя в RAM и оттуда загружать код через USART и записывать его во флеш. Вроде как самый простой вариант - написать программу на ассемблере, бинарник положить где-то в код "большой программы" в виде массива данных, при необходимости загрузки сгружать этот бинарник в ОЗУ и запускать на выполнение оттуда.
Но хотелось бы как-то все это покрасивее сделать, желательно на С. Вот и прошу общество подсказать - как заставить компилятор - тот же ИАР или гнутый С сделать кусок кода перемещаемым, как красивее назначить новый стек, определить адрес в ОЗУ, закачать туда программу? Может, кто уже делал что-то такое и не стоит изобретать велосипед? Или я прошу ключ от квартиры, где деньги лежат? Или использовать самый очевидный путь и не заморачиваться?