Для начинающих. С чего начать на ARM. – Часть 1

Быстрый старт для тех, кто хочет изучить 32 битные ARM микроконтроллеры. В статье подробно описываю установку среды программирования, прошивку платы, компилирование операционной системы и обращаю ваше внимание на такие детали, которые по моему значительные для начинающих.
В первую часть курса изучаем минимальный мултимедийнный компютер с операционной системой. На его основе в далнейшем соберём совершенный медиа плеер (часть 2).

Оглавление:
1, Блок-схема „минимального“ компютера и его функции
2, Основные части
3, Схема, демоплата, документация, программный пакет и всё необходимое
4, Установка среды программирования, запуск тестового образца программы для проверки работоспособности системы
5, Первая программа
6, Примеры, использование ADC, карта памяти, буззер и т.д.
7, Какую операционную систему реального времени выбираем и почему
8, Операционная система BeRTOS, Установка среды программирования, запуск демонстрационного примера программы

1, Блок-схема „минимального“ компютера и его функции
«Минималный» компютер с цветным дисплеем покажет картину, текст, выполнит вычисления и будет иметь графическое меню.
Такой компютер будет иметь три основные детали: цветной экран, микроконтроллер, клавиатура и конечно всё что нужно для их работы(осциллятор, блок питания и т.д.). Блок-схема правда сложнейшая :] и выглядит вот так.

2, Основные части
Микроконтроллер ATSAM3N4C компании Atmel.
Микроконтроллер имеет ядро ARM Cortex M3. Изучение серии M позволит гораздо легче освоить более сложные микроконтроллеры и микропроцессоры ARM.
Несложный и еффективный в использовании.
Эта модель имеет самую болшую программную память изо всех ATSAM3N-ов.
TFT цветной дисплей с SPI интерфейсом.
Результат будет более очевидным, если начать обучение с дисплея а не аудио-прибора и именно с SPI интерфейсным дисплеем потому что это простейсшиий способ вывода информации на экран. Нет необходимости в самом начале изучать принципы работы дисплеев с более сложными интерфейсами.
Клавятура, 2 кнопки любого типа

Эти детали вместе со вспомогательмыми деталямы уже установлены на учебно-демонстрационной плате под названием SAM3N-EK фирмы Atmel. Мы проводим обучение на примере этой платы, а затем соберём сами.
Плата выглядит вот так:

3, Схема, демоплата, документация, программный пакет и всё необходимое
  • SAM3N-EK демоплата (на нём уже вмонтирован программатор).
  • Схема демоплаты (определим какие детали расположены на плате)
  • Программный пакет
make-3.81.exe и arm-2010q1-188-arm-none-eabi.exe для компилирования кода C
sam-ba_2.10.exe для прошивки компилированного кода в микроконтроллер
SAM3N-EK_project.exe самораспаковывающий архив, библиотеки и пример программы

SAM3N-EK демоплату покупаем здесь.
Схему демоплаты скачиваем от сюда.
Программный пакет скачиваем одним файлом от сюда, архив содержит все четыре файла.

4, Установка среды программирования, запуск тестового образца программы для проверки работоспособности системы

Установливаем программный пакет (Работаем на 32 битном Windows XP SP3 или SP2, в других версиях могут возникнуть проблемы).

Установливаем arm-2010q1-188-arm-none-eabi.exe. При установке ничего не меняем и выбираем Typical. После загрузки появится такое окно:

Установливаем make-3.81.exe. При установке и на этот раз ничего не меняем. Появится такое окно:

Открываем Start>>Control Panel>>System>>Advanced>>Environment Variables, выбираем PATH затем Edit

В конце строки добавим: ;C:\Program Files\GnuWin32\bin дальше OK>>OK>>OK

Установливаем sam-ba_2.10.exe. При установке ничего не меняем. При окончании компютер перезагрузится.

Установливаем SAM3N-EK_project.exe При установке ничего не меняем.

открываем C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc и запускаем build.bat.
Открывается чёрное окно и через некоторое время выглядит вот так:

И так мы закомпилировали программный код в папке C:\ATSAM\SAM3N-EK_project\examples\spi_lcd по меикфайлу C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc\Makefile. Файлы main.c, spim_master_wrapper.c, image.h и библииотеки. В папке C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc\bin был создан файл spi_lcd_sam3n_ek_sam3n4-flash.bin. Эта бинарная программа, которую прошьём в микроконтроллер с помощью COM порта.

Прошиваем.


При первом запуске на дисплее появляется Qtouch демо записанная пройзводителем. Зелённый круг двигается на экране по движению пальца.



Для прошивки сначала надо стереть то что записано. Отключаем и соединяем джампер JP3, опять включаем (на этот раз на экране ничего нет) ожидаем 10 секунд. Затем выключаем и открываем джампер JP3. Программа пройзводителя стёрлась.

Присоединяем плату COM портом к компютеру и подключаем блок питания. Открываем Start>>All Programs>>ATMEL Corporation>> SAM-BA v2.10>> SAM-BA v2.10. Выбираем COM порт, которым подключена плата и at91sam3n4-ek, затем Connect.

Из выпадающего списка выбираем Enable Flash access, затем Execute вот так:

Затем выбираем файл spi_lcd_sam3n_ek_sam3n4-flash.bin и Send File

Когда процесс записи закончится, на вопрос выбираем No.

Из списка (Enable Flash access) выбираем Boot from Flash (GPNVM1) и Execute, затем выбираем Link>> Disconnect

Нажимаем на кнопку рестарта на плате в правом верхнем углу, программа запустится и на дисплее появится изображение.

И так мы установили все нужные программы, компилировали (запуском build.bat) и прошили программу в микроконтроллере на плате с помощю SAM-BA.

5, Первая программа
Программа, которую мы компилировали, на дисплее изображала различные фигуры и картинку в правом верхнем углу (лого ATMEL). Файли исходного кода программы находятся в папке C:\ATSAM\SAM3N-EK_project\examples\spi_lcd
  • main.c главный файл программы
  • image.h картина, (лого ATMEL)
  • spim_master_wrapper.c драйвер SPI, чтобы простые команды SPI были доступны, например SPIM_Initialize(SPI);
Напишем новую программу, проще всего зажжём свотодиод. Удалим ненужные файлы spim_master_wrapper.c и mage.h. Откроем файл main.c и удалим весь текст, копируем следующее

#include «board.h»
void main ()
{
LED_Configure( 0 );
LED_Set( 0 );
}

Сохраняем.

Теперь надо удалить из меикфайла (C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc) информацию о файлах image.h и spim_master_wrapper.c. Готовый меикфайл скачиваем от сюда.

Запускаем C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc\build.bat.
Компилированный файл C:\ATSAM\SAM3N-EK_project\examples\spi_lcd\build\gcc\bin\getting_started_sam3n_ek_sam3n4-flash.bin прошиваем на плате.

После нажатия на кнопку рестарта должен загареть один светодиод.
Поясняем программу:

/* Указываем на файл board.h, чтобы использовать команды из библиотеки */
#include «board.h»

void main ()
{
/*Эта команда установливает пин светодиода на вывод. Цыфра 0 указывает на номер светодиода, их два: 0 и 1 */
LED_Configure( 0 );
/*Эта команда выводит на пин 1 и светодиод зажигается. Цыфра 0 здесь также означает номер светодиода*/
LED_Set( 0 );
}
6, Примеры, использование ADC, карта памяти, буззер и т.д.
Скачиваем файл SAM3N_softpack_1.0_for_CodeSourcery_2010q1.zip от сюда. Архив содержит:
  • Примеры кода ( встроенные устройства SAM3N4C, интерфейсы и использование компонентов расположенных на плате).
  • Библиотеки
  • Документация
  • Порт операционной системы FreeRTOS на SAM3N4C

Для пояснения используем пример буззера.
Проект находится в папке: C:\Documents and Settings\Administrator\Desktop\Atmel\sam3n\sam3n-ek\examples\pwm_buzzer. Переставим файл main.c в нашу рабочую папку C:\ATSAM\SAM3N-EK_project\examples\spi_lcd. Также переставим меикфайл от \build\gcc. Запускаем build.bat и прошиваем на плате с помощю SAM-BA.

7, Какую операционную систему реального времени выбираем и почему
Сравнительно полный список RTOS-ов (Операционных Систем Реального Времени) можно посмотреть здесь. Операционная система подходящая нашей цели, должа удовлетворять следующие требования:

1. Должна быть на открытых исходниках
2. Должна иметь многозадачный кернел со всеми необходимыми функциами
3. Низкое требование к ресурсам
4. Должна иметь систему графического интерфейса
5. Должна иметь файловую систему

Линуксоиды, даже самый маленький uClinux, довольно сложные для Cortex M3 и трудно освоить новичкам. Поэтому их исключаем.
Среди RTOS–ов, которые занимают несколько килобайтов на ROM и RAM по моему самый простой, надёжный и высокопроизводительный FreeRTOS. Но и FreeRTOS и вообще RTOS-ы этой категории имеют только кернел и больше ничего. Такие требования удовлетворяют только комерческие RTOS–ы и BeRTOS (http://www.bertos.org/). BeRTOS имеет поддержку файлсистемы FAT, один из самых стабильных и совершенных кернел, совершенный менеджмент дисплеев (манипуляция с текстурами, система окон, меню, рендер текстов, диаграмм и геометрических фигур). Вдобавок имеет упощённый SPI драивер, готовые модули различных алгоритмов, готовые комуникационные протоколы и распространяется на откритых исходниках.

8, Операционная система BeRTOS, Установка среды программирования, запуск демонстрационного примера программы
Из официалного сайта http://www.bertos.org/ или по прямой ссылке скачиваем демо версию SDK. Это гарантированный результат и вероятность допущения ошибок незначительна, во второй части объясню установку компилятора и мастера конфигурации на Eclipse.
Запускаем принятый файл и следуем за скрины:



Когда установка закончится, запускаем BeRTOS Wizard

Присвоем проекту имя, например namehere.

Выбираем версию:

Выбираем плату:

Выбираем демопроэкт:

Выбираем тулчайн:



После завершения запускается CodeLite IDE

Нажимаем на клавишу F7 и проэкт компилируется. Компилированный файл находится в папке C:\Documents and Settings\Administrator\My Documents\namehere\images\namehere.bin Прошиваем его на плате с помощью SAM-BA.
Плата запустит проэкт вот так:

15 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.