Все-таки получилось запустить небольшую программку из eeprom.
В библиотечке CDL с сайта NXP есть пример spi. Немного переделываем в файле spi_example.c этот кусочек:
Код
while (bytes > 0)
{
data = eewr_data[SPIBYTES-bytes];
eeprom_write(addr, data);
addr++;
bytes--;
}
в массив нужно записать нашу программу eewr_data
На сайте NXP есть пример "LPC3000_Serial_Boot_Example" по записи в SPI Flash, в котором есть утилитка "L3K_BOOT.EXE" , генерирующая из HEX-файла массив уже пригодный для записи в SPI. Так что небольшая программка, маргающая светодиодами вполне работает.
Мне же нужно написать(переписать) загрузчик наподобие kickstart. Сам kickstart собирается, но не работает из eeprom.
Хотя вроде бы ничего сложного: точно также загружается в iRAM загрузчиком процессора и должен работать. Но не работает.
В конфигурации линкера для сборки kickstart вообще вот что смущает:
Код
; Kickstart links code at the last 32K of IRAM. Although the code starts
; execution at address 0x00000000, it is immediately relocated to
; address 0x00038000 and then execution continues.
FLASH 0x00038000
{
; The executable region starts at the load region
ER_RO +0
{
phy3250_kickstart.o (STARTUP, +FIRST)
* (+RO)
}
При таком раскладе .hex файл генерируется не в той области и L3K_BOOT.EXE выдает: Error: address in the input file out of range!
Ну и начало этого .hex файла такое:
Код
:040000050003800074
:020000040003F7
:10800000D300A0E300F02FE1101F11EE4C209FE5FC
А в нормальном съедобном примере такое:
Код
:0400000508000000EF
:020000040800F2
:1000000018F09FE518F09FE518F09FE518F09FE5C0
Если поменять в конфигурации линкера вот так:
Код
FLASH 0x08000000
{
то L3K_BOOT.EXE hex-файл съедает...
Может быть будут какие-нибудь рекомендации по написанию загрузчика, подскажите пожалуйста где копать? уже третий день на этом застрял...

Ещё не знаю как можно отлаживать загрузчик в keil? Отладчик keil дурить начинает и всё...
В Keil есть примеры загрузчиков NOR и NAND. Они заливаются работают, но отлаживать их не получается.