Цитата(Зайцев Иван @ Aug 29 2008, 07:33)

Проверь инициализацию SDRAM
Не понял логики. Может упустил чего.
При старте процессора если BMS=1, пограмма в ROM пытается загрузить данные из DataFlash во внутреннюю SRAM.
SDRAM не принимает в этом участие.
Происходит следующее (насколько я понимаю процесс):
1. После ресета программа из ROM (внутренний загрузчик) пытается несколько раз прочитать байт статуса DataFlash (этот процесс занимает примерно 10-30 мс).
2. После того как байт статуса успешно прочитан, начинается чтение последовательности байт из DataFlash, считываются первые 8 векторов, проверяется их валидность, интерпретируется размер образа и геометрия флэшки; если все в норме, то продолжает считывать весь образ из DataFlash в SRAM. Этот процесс длится примерно 0,75мкс*КолвоБайт.
3. После чтение происходит ремап и передача прыжок на нулевой адрес, должно начаться выполнение программы закачанной в SRAM.
Но этого не происходит если размер образа >2.5-4 кБайт, управление передается в DBGU (в терминал передается CCCC....).
Да, SDRAM используется при записи образа в DataFlash ромбутом, но ведь я успешно читаю образ из флэшки, образ не поврежден.
Если бы образ был поврежден, то либо первые 8 векторов были бы считаны не правильно (что не позволило бы загрузить данные из DataFlash), либо при передаче управления битой программе процессор вошел бы в клинч.
Я ведь упростил по макисмуму програмку.
B InitReset ; reset
undefvec
B InitReset ; Undefined Instruction
swivec
B InitReset ; Software Interrupt
pabtvec
B InitReset ; Prefetch Abort
dabtvec
B InitReset ; Data Abort
rsvdvec
B InitReset ; reserved
irqvec
B InitReset
fiqvec
B InitReset ; FIQ
InitReset
; зажигаем лампочку
mov r0,#0x80
mov r1,#0
STR r0,[r1,#-0xa00]
STR r0,[r1,#-0x9f0]
STR r0,[r1,#-0x9cc]
dloop
B dloop ; бесконечный цикл
B InitReset
B InitReset
B InitReset
B InitReset
B InitReset
B InitReset
B InitReset
B InitReset
B InitReset
B InitReset
B InitReset
...
Если дописать "B InitReset" в конец программы так, чтобы было более 2.5-4кБайт, то образ считывается полностью из флэшки, но лампочка не загорается, а управление передается DBGU, а не считанной в SRAM программе.
Если образ оставить <2.5кБ, то после загрузки из флэшки в SRAM лампочка успешно загорается.