Alex Kuznetsov
Sep 11 2009, 11:46
Доброго дня всем
Что имеем:
- плата с AT91SAM9XE512 rev. A, внешней памяти нет;
- IAR v5.4, вылеченный;
- J-Link, дрова от Segger 4.08k, вылеченные;
- простой проект для моргания светодиодом;
- загрузка и отладка в SRAM проходит на ура;
- прошивание внутренней FLASH через JFlashArm – тож все хорошо.
Основная проблема:
при прошивании внутреннй FLASH загрузчиком из под IAR-а, он подвисает и ничего не прошивает. Похоже весь процесс зависает на том, что IAR грузит flashloader во внешнюю SDRAM. Это видно по адресам в логах и регистрах проца (все значения из области 0x2000 0000).
Как загрузить FLASH из под IAR-а используя flashloader, загружаемый во внутреннюю SRAM? Или может есть другие способы?
Взять готовый пример с сайта Атмела, запустить и убедиться что работает.
Затем тщательно скопировать настройки отладчика из проекта.
Alex Kuznetsov
Sep 16 2009, 07:44
Если бы было все так просто, я пост и не создавал бы. Все примеры на атмеле и на иаре рассчитаны на демо борду AT91SAM9XE-EK (а на ней есть внешний Flash и внешний SDRAM). Если посмотреть макрос на загрузку во ВНУТРЕННЮЮ Flash, то для SAM9XE внутреннее имя файла имеет вид "SAM9XE-SDRAM.mac".
Больше похоже на то, что поскольку у остальных процов из семейства SAM9 внутренний SRAM очень маленький, то загрузка ВНЕШНИХ (поскольку внутренних у них нет) Flash-ей предусмотрена через ВНЕШНИЙ SDRAM, и для SAM9XE ничего менять не стали, т.е. тоже попользовали загрузку ВНУТРЕННЕЙ и ВНЕШНЕЙ Flash через ВНЕШНЮЮ SDRAM.
Отсюда и вопрос вырос: так как же прошить ВНУТРЕННЮЮ Flash SAM9XE через загрузчик во ВНУТРЕННЮЮ SRAM?
Alex Kuznetsov
Sep 30 2009, 06:57
Сам спросил, сам и отвечу. Проблема решилась следующим образом:
1. Берем свежий IAR версии 5.40, там поправленный flashloader, макросы для загрузки и исходник flashloader'а
2. Открываем проект с исходником flashloader'а (лежит в папке $TOOLKIT_DIR$\src\flashloader\Atmel\flash\internalFlashLoader.eww)
3. Выбираем проц AT91SAM9xe512, меняем адреса расположения в памяти в свойствах проекта:
Project -> Options -> Linker -> Config -> Edit Configuration File -> на закладке memory region меняем адреса RAM на 0x300000 и 0x307FFF (это встроенная SRAM)
4. Пересобираем исходник flashloader'а (новое файло flashloader'а теперь лежит $TOOLKIT_DIR$\src\flashloader\Atmel\flash\internalFlashSAM9XE512\Exe\internalflash-sam9xe512.out)
5. Заменяем файл $TOOLKIT_DIR$\config\flashloader\ATMEL\AT91SAM9xe512-EK\internalflash-sam9xe512.out на новый, или у кого свои настройки, то указываем путь на новый flashloader
Может конечно есть и другой способ...
Модераторам: тему прошу перенести в IAR
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.