Имею PXA270+SDRAM 128M+NORflash 4M+NANDflash 512M ...
Терзаю образец загрузчика от Colibri, отличаются размеры SDRAM, NOR (шина 16 бит).
На данный момент процессор стартует из NOR флешки, но встает после запуска своей копии из SDRAM.
Конечно, первое, что приходит в голову - неправильно сконфигурирован контроллер SDRAM, но я его уже вдоль и поперек перекрутил, должно нормально работать, более того я вставил (в теле start.S) проверку первого слова скопированного масива (хотя может и не правильно это сделал), все нормально.
Особо не понятно, как u-boot узнает адрес самого загрузчика который надо копировать.
Вот "копирующая" часть Start.S:
Код
relocate:                /* relocate U-Boot to RAM        */
    adr    r0, _start        /* r0 <- current position of code   */
    ldr    r1, _TEXT_BASE        /* test if we run from flash or RAM */
    cmp     r0, r1                  /* don't reloc during debug         */
    beq     stack_setup

    ldr    r2, _armboot_start
    ldr    r3, _bss_start
    sub    r2, r3, r2        /* r2 <- size of armboot            */
    add    r2, r0, r2        /* r2 <- source end address         */

copy_loop:
    ldmia    r0!, {r3-r10}        /* copy from source address [r0]    */
    stmia    r1!, {r3-r10}        /* copy to   target address [r1]    */
    cmp    r0, r2            /* until source end addreee [r2]    */
    ble    copy_loop
Насколько я это понимаю, из _bss_start копируется часть кода в _armboot_start, НО из MAP файла следует, что _bss_start это 0xa3f80048 а _armboot_start это 0xa3f80044 ???
Полные файлы во вложении.