IAR + AT91SAM9260-EK

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Родился
Аватара пользователя
Сообщения: 5
Зарегистрирован: Пт авг 16, 2013 16:28:32

Сообщение fawkes »

Здравствуйте, коты.
Недавно стал счастливым обладателем набора разработчика в виде платы AT91SAM9260-EK, отладчика SAM-ICE и компилятора IAR последней версии. До этого работал только с AVR.
И все бы ничего, да вот по началу пришлось поплясать с бубном, чтобы это чудо враждебной техники задрыгало лапами, но это я сделал, благо литература есть, да и примеры под плату в студии имеются.
Но я рано обрадовался, как выяснилось - примеры заточены под отладку в оперативной памяти контроллера, и ни в какую не хотят запускаться из NAND памяти.
А вопрос у меня вот в чём - где можно почитать, или может кто подскажет, про настройки компилятора для создания bin файла для последующей записи в NAND память (пишу Bootloader под специфическую задачу, штатный не устроил). Подозреваю, что я что то неправильно настроил или в *.icf файле, или в *.board, или прошиваю не в ту память, возможно не правильно прописал смещения. Сейчас задача прошить bootloader не стоит, хотя он и написан, просто нужно записать программу, которая моргает лампочкой по таймеру.
В datasheet на контроллер подробно расписан процесс загрузки из памяти DATAFLASH и NAND, написано, что по адресу 0x14 лежит размер загружаемого образа (в случае с DATAFLASH), но просмотрев bin файл я никакого размера там не нашел.
Дело в том, что в примерах под плату есть два варианта компиляции - под SDRAM и под NOR память. Пробовал второй залить на FLASH, но что то не запускается.
Пробовал использовать пункт Download из меню - виснет намертво, ждал по 1.5 часа, приходится перезапускать всю студию.
Для загрузки пользуюсь SAM-BA + SAM-ICE, перемычка BMS = 1.

И еще, поправьте меня, если я не прав, память ROM контроллера вообще не прошивается?
Заранее спасибо.
Какая разница на каком языке написана программа. Язык важен для программиста, а для процессора важен алгоритм.
Главное в программе - это комментарий.
Реклама
Родился
Аватара пользователя
Сообщения: 5
Зарегистрирован: Пт авг 16, 2013 16:28:32

Сообщение fawkes »

Как я говорю ученикам - ответ кроется в вопросе. Еще раз проанализировал варианты решения проблемы, и на половину ее решил.
Значит так, я писал не в ту память, это раз, использовал не правильные настройки линковщика, это два.
Попробовал настроить память для запуска SRAM0 а память для данных - SRAM1. Записал программу напрямую в память - заработала. До этого работала только проверка в памяти SDRAM.
Потом не меняя программу записал ее в первый сектор DATAFLASH, получилось заставить контроллер грузить программу при старте, BMS=1. Как я понял - при BMS=0 по-умолчанию будет загружаться программа из DATAFLASH, а мне это не нужно.

Теперь осталось победить загрузку из NAND. Вроде как в datasheet написано что такое возможно, подозреваю что опять напутал с адресами.
Какая разница на каком языке написана программа. Язык важен для программиста, а для процессора важен алгоритм.
Главное в программе - это комментарий.
Реклама
Родился
Аватара пользователя
Сообщения: 5
Зарегистрирован: Пт авг 16, 2013 16:28:32

Сообщение fawkes »

Спасибо всем за помощь, разобрался. Правда для начала отпаял управление для DATAFLASH, чтобы не мешалась. Но уже восстановил.

Резюме:
1. Достаточно скомпилировать программу для работы в SRAM (SRAM0 для констант, SRAM1 для переменных).
2. Переда прошивкой программы нужно вызвать пункт "Erase NAND Flash" или что то типа того, в общем почистить флешку.
3. Залить программу при помощи "Send Boot File" ну или в нулевой адрес NAND.
4. Положение OSCSEL и BMS не влияют на загрузку, разве что только на очередность.

Разумеется загружаемая программа не должна превышать 4096 байт, иначе работать не будет.
Какая разница на каком языке написана программа. Язык важен для программиста, а для процессора важен алгоритм.
Главное в программе - это комментарий.
Ответить

Вернуться в «ARM»