Skip to content

porting_sam7_ru

Serge Vakulenko edited this page Aug 26, 2015 · 1 revision

Микроконтроллеры Atmel AT91SAM

Описана последовательность работ по адаптации системы uOS к микроконтроллерам семейства Atmel AT91SAM.

Процессоры SAM имеют архитектуру ARM, которая уже поддерживается операционной системой uOS. Необходимо только реализовать работу с периферийными устройствами: инициализацию, таймер, UART и т.д.

1. Создаём каталог целевой платформы

Создаем каталог uos/examples/arm-at91sam7. Помещаем туда файлы, необходимые для компиляции.

mkdir uos/examples/arm-at91sam7
cd uos/examples/arm-at91sam7
cp ../arm-s3c4530/Makefile .
cp ../arm-s3c4530/target.cfg .
cp ../arm-s3c4530/ldscript.x .

В файле target.cfg изменяем значения переменных:

  • CFLAGS - задаем тип платформы -DARM_AT91SAM и модель конкретного микроконтроллера -DARM_AT91SAM7X256.
  • MODULES - необходимо убрать s3c4530 и добавить at91sam --- имя каталога, в котором будут находиться драйверы для новой платформы.

В файле ldscript.x в блоке MEMORY изменяем адреса и длины сегментов памяти:

  • Для text устанавливаем ORIGIN = 0, LENGTH = 1M
  • Для data устанавливаем ORIGIN = 0x200000, LENGTH = 1M

2. Создаем файлы заголовков для AT91SAM

Добавляем файлы заголовков для всех моделей семейства SAM: от at91sam7a3.h до at91sam9xe512.h. Эти файлы можно переписать из каталога "C:\Program Files\AT91-ISP v1.9\SAM-BA v2.5\monitors" после установки пакета "Install AT91-ISP v1.9.exe". Размещаем их в каталоге uos/sources/runtime/arm/. Для удобства переименовываем строчными буквами.

Создаем файл uos/sources/runtime/arm/io-at91sam.h:

#ifdef ARM_AT91SAM7A3
#include <runtime/arm/at91sam7a3.h>
#endif
#ifdef ARM_AT91SAM7S128
#include <runtime/arm/at91sam7s128.h>
#endif
... и так далее ...

В файле uos/sources/runtime/arm/io.h добавляем строки:

#ifdef ARM_AT91SAM
#include <runtime/arm/io-at91sam.h>
#endif

3. Инициализируем начальное состояние микроконтроллера

В файле uos/sources/runtime/arm/init.c в функции _init_() добавляем код инициализации начального состояния регистров микроконтроллера. Заключаем его в #ifdef ARM_AT91SAM ... #endif.

4. Делаем функции отладочной выдачи на консоль

В файле uos/sources/runtime/arm/debug.c добавляем функции отладочной выдачи на консоль: debug_putchar(), debug_getchar(), debug_peekchar(). Заключаем их в #ifdef ARM_AT91SAM ... #endif.

5. Добавляем обработку прерываний

В файле uos/sources/kernel/arm/machdep.c в функциях _irq_handler_() и arm_intr_allow() добавляем работу с регистрами контроллера прерываний. Заключаем его в #ifdef ARM_AT91SAM ... #endif.

6. Обрабатываем таймер

В файле uos/sources/timer/timer.c добавляем инициализацию регистров таймера.

You can’t perform that action at this time.