Skip to content

board_starterkit_sam9_s3e_ru

Serge Vakulenko edited this page Aug 26, 2015 · 2 revisions

Компания Starterkit.ru предлагает отладочную плату SK-AT91SAM9XE512-S3E с процессором AT91SAM9260 (в будущем AT91SAM9XE512). На плате имеется:

  • 8 килобайт внутренней памяти данных (в будущем 64 килобайта)
  • (в будущем) 256 килобайт внутренней памяти команд
  • 64 мегабайта внешней памяти данных
  • 256 мегабайт внешней памяти команд
  • 4 мегабайта внешней последовательной памяти данных
  • Порт Ethernet 100Base-T
  • Порт USB 2.0 хост (12 Мбит/сек)
  • Порт USB 2.0 устройство (12 Мбит/сек)
  • Слот для карты SD/MMC
  • Отладочный порт RS-232 (сигналы TXD, RXD)
  • Отладочный порт JTAG
  • ПЛИС Xilinx Spartan3E-500
  • 512 килобайт статической памяти, подсоединённой к ПЛИС

На плату также можно установить GSM/GPS-модем SIM508 и видеовход ADV7108. Плата поставляется с установленной операционной системой Linux. Протокол загрузки можно посмотреть здесь.

Документация:

Программное обеспечение:

Раскладка сигналов процессора и ПЛИС описана на отдельной странице.

Расположение элементов на плате приведено здесь.

Пример компиляции и загрузки ПЛИС Xilinx приведён отдельно.

Начальная загрузка

После сброса процессор стартует с адреса 0. На этот адрес может быть назначена одна из трёх областей памяти, в зависимости от параметров BMS и REMAP. При сбросе REMAP=0. Подробнее смотрите таблицу 8-1 описания микроконтроллера.

BMS (J16) REMAP Память по адресу 0x0000 0000
1 (снят) 0 ROM - встроенный загрузчик
0 (установлен) 0 NCS0 - внешняя память (через ПЛИС)
x 1 SRAM 4k - внутренняя память

Встроенный загрузчик считывает программу из внешней памяти команд, в следующей последовательности:

  • Последовательная SPI flash-память, выбираемая сигналом SPI_NPCS0 - микросхема DD2.
  • Последовательная SPI flash-память, выбираемая сигналом SPI_NPCS1 - на данной плате отсутствует.
  • Параллельная flash-память - микросхема DD6.

Если ни в одной памяти не обнаружен корректный код, запускается загрузчик SAM-BA, позволяющий прошить новый образ через порт USB или RS-232.

Встроенный загрузчик проверяет корректность кода по восьми первым 32-битным словам. Слова 0-4 и 6-7 должны содержать команды "B" или "LDR". Слово 5 рассматривается как длина загружаемой программы. Код помещается во внутреннюю память SRAM 4k. Затем память переназначается на адрес 0 (REMAP=1) и управление передаётся на 0.

Первичный загрузчик AT91Bootstrap

Размер программы, которую может загрузить встроенный загрузчик, ограничен 4 килобайтами - объёмом внутренней памяти SRAM0. Atmel рекомендует использовать первичный загрузчик AT91Bootstrap, который помещается в 4 килобайта памяти и выполняет следующие действия:

  • Устанавливает требуемую частоту процессора и других синхросигналов.
  • Включает кэш.
  • Инициализирует периферийные регистры: порты ввода-вывода, внешнюю память, SPI и т.д.
  • Считывает программу пользователя из внешней flash-памяти: DataFlash, NAND Flash, Parallel Flash и т.п.
  • Поддерживает файловые системы, например JFFS2 или FAT.
  • Распаковывает и дешифрует образ программы, при необходимости.
  • Запускает программу на выполнение.

Код первичного загрузчика обычно поставляется производителем конкретного устройства. Например, плата Starterkit SAM9-S3E содержит в памяти DataFlash DD2 версию AT91Bootstrap 1.6, имеющую следующие отличия:

  • Частота процессора устанавливается равной 200 МГц
  • Системная частота MCLK равна 100 МГц
  • PLLB настроена на 96 МГц
  • Загружаемая программа извлекается из DataFlash DD2 с адреса 0x8000 размером 0x30000 (192 килобайта).
  • Загружаемая программа помещается в ОЗУ по адресу 0x21D00000.
  • Временная диаграмма внешней памяти SDRAM настроена под параметры используемых микросхем.

Программатор

Программный код можно загружать в плату через порт USB, используя утилиту SAM-BA:

  • Версия для Windows имеется на сайте Atmel
  • Версия для Linux доступна на сайте проекта Linux4SAM.
  • Существует открытая утилита samba-script, на базе которой можно разработать версию простого программатора для SAM.

Для установки под Linux скачайте версию SAM-BA CDC-2.8. Распакуйте её и установите утилиту sam-ba в каталог /usr/local/bin:

unzip sam-ba_cdc_2.8.linux_01.zip -d /usr/local/lib
ln -s ../lib/sam-ba_cdc_2.8.linux_01/sam-ba_cdc_2.8.linux_01 /usr/local/bin/sam-ba
chmod +x /usr/local/bin/sam-ba

Для работы sam-ba требуется загрузить драйвер usbserial:

sudo rmmod usbserial
sudo modprobe usbserial vendor=0x03eb product=0x6124

Чтобы добавить в SAM-BA поддержку платы Starterkit SAM9260, скачайте архив SAMBA-Starterkit-9260.zip и распакуйте его в каталог библотеки SAMBA. Для Линукса это /usr/local/lib/sam-ba_cdc_2.8.linux_01/lib/.

Последовательность прошивки:

  1. Отключить питание.
  2. Снять джамперы J7 и J23 (проверьте, что джампер J16 также снят).
  3. Подать питание.
  4. Установить джампер J7 для прошивки последовательной flash-памяти DD2, или J23 для NAND flash-памяти DD6.
  5. Запустить SAM-BA и прошить нужный файл.
  6. Дать сброс кнопкой SW1.

Для загрузки новой прошивки в диалоговом режиме вызовите sam-prog.exe (Windows) или sam-ba (Linux). Если плата подключена, в поле статуса появится "Active Connection: 1". Выберите файл и нажмите кнопку "Write Flash". По завершении должен быть статус "Success: 1". Нажмите кнопку RESET и новая прошивка запустится.

Для прошивки в неинтерактивном режиме (в Линуксе) я пользуюсь следующим вызовом:

sam-ba /dev/ttyUSB? AT91SAM9260-SK load-flash.tcl test.bin

Здесь test.bin - загружаемый бинарный образ программы. Скрипт load-flash.tcl содержит директивы для записи файла в последовательную внешнюю flash-память с адреса 8000h.

DATAFLASH::SelectDataflash AT91C_SPI0_CS0
send_file "DataFlash AT45DB/DCB" [lindex $::argv 3] 0x8000 0

Примеры uOS

В каталоге examples/arm-sam9-s3e находятся примеры сборки uOS для Starterkit SAM9-S3E.

Тест Описание
test_debug.c Проверка runtime-библиотеки и отладочной печати. Микроядро отсутствует.
test_task.c Проверка переключения задач. Одна задача пользователя.
test_timer.c Проверка драйвера таймера. Одна задача пользователя.
test_uart.c Проверка драйвера UART. Две задачи: программа пользователя и драйвер UART.
You can’t perform that action at this time.