реклама на сайте
подробности

 
 
> Не загружаются программы из DataFlash в RM9200, помогите пожалуйста
Alex2172
сообщение Aug 28 2008, 14:25
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Есть платка: AT91RM9200 + AT45DB321

Проблема в том что, если в DataFlash лежит образ программы меньше 2.5-4 кБайт, то она успешно загружаентся из DataFlash. Если образ программы >4..5 кБайт (например RomBoot = 11кБайт), то программа загружается из DataFlash, но ей не передается управление (это видно потому что после загрузки программы из DataFlash все равно крутится внутрянняя программа из ROM и выдает СССС..., т.е. DBGU приглашает загрузить программу через XMODEM)

Например если в DataFlash сохранен RomBoot:
Осциллограф показывает что грузятся все 11 кБайт, т.е. 0x14 вектор (размер прорграммы и конфигурация DataFlash) считался правильно, но управление ромбуту не передалось.

Читая данные DataFlash (с помощью того же RomBoot например, но загруженного через XMODEM) - видно, что образ RomBoot'а в DataFlash - не поврежден (тупо сравнивал считанные из DataFlash данные и то что содержится в RomBoot.bin).


Если в DataFlash сохранить микропрограмку, которая просто зажигает лампочку и уходит в бесконечный цикл - такая програмка загружается из DataFlash. Но! Если к этой програмке в конец приписать 5-10 кБайт NOP-ов, то она загружается из DataFlash, но ей НЕ передается управление!!!!


Менял DataFlash было AT45DB321C, поставил AT45DB321B - не помогло.
На SPI шине ни чего больше не висит.

Помогите пожалуйста разобраться, мозги уже кипят.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Зайцев Иван
сообщение Aug 29 2008, 03:33
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 23-07-08
Из: Екатеринбург
Пользователь №: 39 153



Проверь инициализацию SDRAM
Go to the top of the page
 
+Quote Post
Alex2172
сообщение Aug 29 2008, 05:26
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Цитата(Зайцев Иван @ 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 лампочка успешно загорается.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016