Программирование ARM Запуск примера Olimex с альпинистом на макетной плате SAM7-EX256 Thu, March 28 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Запуск примера Olimex с альпинистом на макетной плате SAM7-EX256 Печать
Добавил(а) microsin   

Тестовый проект от Olimex отображает картинку на цветном индикаторе, озвучивает рычажок контактного "джойстика", кнопки включают и выключают подсветку. Пример предназначен для IAR версии 4.30, и на версии IAR 5.3 и более поздних он просто так не заработает, поскольку требует подключения нового кода инициализации процессора. Раньше этот код находился в файле cstartup.s, теперь - в board_cstartup_iar.s. Итак, процесс по шагам.

1. Скачал пример (см. ссылки), загрузил в IAR Embedded Workbench for ARM 5.3. При загрузке IAR предложил сконвертировать старую версию конфигурации в новую, согласился.

2. После успешной загрузки попытался сразу скомпилировать. Компилятор ругнулся на отсутствие файла в #include "ioat91sam7x256.h". Нашел этот файл в папке c:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\inc\Atmel\, скопировал в корневую папку проекта (туда же, где находится SAM7_EX256.eww, adc.h, adc.h, main.c и все другие модули  проекта). После этого компиляция прошла успешно.

3. Попытался запустить отладку, получил сообщение об ошибке "The debugging session could not be started. Either the debugger initialization failed, or else the file "...\SAM7_EX256\Debug\Exe\SAM7_EX256.out" was corrupt or of an unsupported format. There might be more information in the Debug Log window"

В логе отладки (Debug Log):
"Sun Jan 31 10:19:39 2010: Loaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\config\flashloader\Atmel\FlashAT91SAM7X.mac
Sun Jan 31 10:19:39 2010: Failed to load flash loader: C:\Program Files\IAR Systems\Embedded Workbench 5.0 Evaluation\ARM\config\flashloader\Atmel\FlashAT91SAM7X.d79"

4. Поменял в конфигурации проекта SAM7_EX256 (открыл вторую копию IAR, загрузил проект adkm и просто сравнил конфигурации):

Debugger -> Setup -> Use macro file(s) -> $PROJ_DIR$\SAM7.mac поменял на $PROJ_DIR$\at91lib\resources\flash.mac. Файл flash.mac взял из папки at91lib\resources\ проекта adkm (просто переписал папку at91lib\resources в корень проекта SAM7_EX256).

Debugger -> Download -> I Use flash loader(s) поменял ",,,,$TOOLKIT_DIR$\config\flashloader\Atmel\FlashAT91SAM7X.d79," на ",,,0x100000,(default)," с помощью кнопки "Edit...".

5. Снова запустил отладку. Чип прогрузился нормально, но отладка не запустилась с сообщением "Found active soft BP when downloading to flash. Flash download canceled.".

Поменял настройку линкера.
Linker -> Config -> Linker configuration file -> поставил галку "Override default" и поменял $TOOLKIT_DIR$\CONFIG\generic.icf на $PROJ_DIR$\at91lib\board\at91sam7x256\flash.icf (папку at91lib\board\at91sam7x256 со всем содержимым тупо переписал из того же проекта adkm).

После компиляции вывалилось сообщение "Building configuration: SAM7_EX256 - Debug
Updating build tree...
Linking
Warning[Lp012]: no sections with name FIQ_STACK included - special symbol FIQ_STACK$$Limit (referenced from cstartup.o(rt4t_al.a)) will be zero
SAM7_EX256.out
Total number of errors: 0
Total number of warnings: 1"

И отладка опять не запустилась. Причина была в том, что пока не был подключен файл инициализации процессора board_cstartup_iar.s.

6. Добавил группу at91lib, а туда группу board, а также группу at91sam7x256, по аналогии с проектом adkm. Добавил туда файлы board_cstartup_iar.s, board_lowlevel.c, board_memories.c, board_memories.h, board-pkrc-m.h, board.h, AT91SAM7X256.h.

7. Linker -> Library -> Override default program entry -> поменял адрес запуска программы, было __iar_program_start, стало resetHandler.

После этого проект нормально скомпилировался, запустилась отладка, и на индикаторе макетной платы SAM7_EX256 отобразился скалолаз. Тест-программа заработала.

SAM7_EX256-original-test-prog-IMG_0447.JPG SAM7_EX256-adkm-test-prog-IMG_0451.JPG SAM7_EX256-show-my-kitty-IMG_0449.JPG

[Ссылки]

1. Оригинальная тест-программа от Olimex со скалолазом (проект для IAR версии 4.30, SAM7_EX256.zip).
2. Та же самая тест-программа, портированная на IAR версии 5.30.
3. Автоматический датчик кода Морзе (АДКМ) - другая тест-программа для макетной платы Olimex SAM7_EX256.
4. Nokia_6100_LCD_Display_Driver.pdf - документация по использованию и системе команд LCD индикатора Nokia 6100 (на чипах Philips PCF8833 и Epson S1D15G00).

 

Комментарии  

 
0 #1 Павел 04.07.2011 00:11
Здравствуйте, осваиваю ARM на примере платы от Olimex SAM7-EX256. Возникла проблема, в IAR 5.40 в папке примеров есть пример для данной платы. На экран должны выводится время и температура. Однако после компиляции и прошивки, ничего не работает (только по кнопке SW2 отключается подсветка). С чем это может быть связанно? Может программа предназначена для LCD GE12, а у меня GE8?

microsin: действительно, на макетных платах Olimex SAM7-EX256 есть две разные версии LCD индикаторов, различающихся используемым чипом (Philips PCF8833 и Epson S1D15G00), и, соответственно, системой команд индикатора. По системам команд эти индикаторы несовместимы. Наверное, у Вас как раз код рассчитан на индикатор с другой системой команд. Узнайте, какой у Вас тип LCD-индикатора (какой чип), и найдите к нему низкоуровневую библиотеку, поддерживающую его систему команд. На моей макетной плате, если мне не изменяет память, стоял индикатор с чипом Epson S1D15G00.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page