ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
2 июля
406736 Топик полностью
fk0, легенда (30.04.2013 17:41, просмотров: 101) ответил abivan на Как это все на сях, без асма организовать(размещение в 0-й странице), да еще чтобы загрузчик жил вместе с проектом в одной прошивке?
Без *.as в *.c? asm("blablabla...") Только так не нужно делать. Вообще дело не в асме, а в объяснению правил компоновки линкеру. Причём два раза: для загрузчика и для программы. Где-то это делается правкой *.ld (*.gld) файла (GCC). Где-то опциями командной строки (Hitech). Если хочется всё в одну "прошивку" потом (а что под ней понимать именно?), то если HEX -- всё просто, объединить два HEX'а (они ж по адресам не пересекаются). Если coff, то сложней. Для загрузчика придётся все секции переименовать (const --> boot_const, text --> boot_text и т.п.), тогда можно вместе компоновать в один coff (из *.o). Только, IMHO, это какое-то извращение и оно не нужно. Даже один HEX на всё не нужен. Скорей загрузчик будет прошиваться программатором, а остальное через UART или что там вместо него. Так же? И отлаживать (coff) нужно обычно только проект, а не проект вместе с загрузчиком. У меня вот так было сделано для AT91. В 4кБайта загрузчика умещалось: X-modem для загрузки файлов (после включения прибора загрузчик получал управление, ждал ~0.2 с получения магической строки из UART, если не получал -- передавал управление программе, иначе загружал X-modem'ом новую программу). Помимо X-modem там распечатывались регистры и стрек при возникновении исключений в программе (в UART), отмигивался диодом код ошибки и т.п. мелочи. И для C8051 аналогично делал. Прерывания, что характерно, в загрузчике вообще-то не нужны. А, ещё в нём примитивное шифрование было (загружаемой прошивки).
[ZX]