Доброго времени суток. Так сложилось, что до сих пор я ни разу не работал с загрузчиками - хватало разъёма JTAG. Но времена меняются, - надо делать загрузчик для своих железок (под UART). Естественно, под
gcc (раз уж я начал его изучать) - бутлоадер выступает в роли подопытного кролика

Накопал кучу бутлоадеров, выбрал наиболее понравившийся -
USB-бутлоадер, и на его основе начал параллельно изучать gcc и особенности работы с flash памятью.
Внёс в проект кучу своего "мусора", в частности из проекта at91sam7a3-getting-started с сайта Atmel взял startup код. Как-то из разных мест ещё интересные моменты подглядывал-вставлял, разобрался с makefile и в итоге сейчас проект выглядит вот так:
AT91_Bootloader.7z ( 233.2 килобайт )
Кол-во скачиваний: 102Файлы компилируются, проект собирается - но я ничего не вижу ни в терминале, ни в осциллографе (контролирую ножку LED, которая на PA20 находится) - при включении порт встаёт в "1" и ничего не делает. Отладчиком в eclipse ещё не учился пользоваться, чую скоро придётся засесть изучать

Для прошивки использую MT-Link, при работе через консоль j-link показывает, что PC крутится в районе адресов
0x0 - 0x300, после jtag-reset выдаёт сообщение:
Цитата
WARNING: PC of target system has unexpected value of 0x0000023C after reset.
Адрес в warning тоже постоянно меняется в этом же диапазоне.
Чую себя новичком

Прошиваю at91sam7a3-getting-started - всё работает, прошиваю свой проект - ничего не работает

Кто поможет разобраться? Исходники рабочего бутлоадера (если и когда он появится) обязательно выложу.
Что происходит (в теории)?
1. инициализируем стеки прерываний (flash-reset.s: Reset_Handler)
2. инициализируем раздел bss (flash-reset.s: _init_data, _init_bss)
3. переходим в наш сишный код бутлоадера (bootrom.c: Bootrom)
4. обрабатываем пакеты, пишем во флэш.
Я так понимаю, что затык идёт на 2м этапе скорее всего, чую - перемудрил с секциями. Поэтому кто решится помочь - в первую очередь прошу поглядеть, как я объявил секции (AT91-Bootloader\bootrom\prj\ldscript-flash.lds)!