Описанный в статье бутлоадер читает двоичный (.bin) файл с карты SD/MMC и пишет его в память flash микроконтроллера AT91SAM7Xnnn (можно выбрать AT91SAM7X128, AT91SAM7X256 или AT91SAM7X512), после чего передает управление в загруженный код.
Варианты подключения карты SD/MMC к микроконтроллеру приведены в таблице ниже. Можно подключить карту либо к SPI0, либо к SPI1. Например, в макетной плате Olimex SAM7-EX256 используется вариант 1 подключения карты SD/MMC. В бутлоадере, можно выбрать любой вариант в зависимости от макроопределений (см. файл at91lib\board\board.h, макрос SELECT_TO_MMC_SPI1). Для подключения сигнала выборки ~CS существует еще больше вариантов, так как каждый из SPIn имеет по 4 аппаратных выхода выборки.
№ конт.
|
сигнал |
описание |
Вариант 1 подключения (SPI0, PIOA, периферия A) |
Вариант 2 подключения (SPI1, PIOA, периферия B) |
1 |
~CS |
выборка карты (режим DAT3 не используется) |
PA13 |
PA21 |
2 |
MOSI |
данные, приходящие на вход карты |
PA17 |
PA23 |
3 |
GND |
минус питания карты, сигнальная земля |
|
|
4 |
VCC |
плюс питания карты, от 2.7 до 3.6 вольт, самый лучший вариант 3 вольта |
|
|
5 |
SCK |
такты данных, поступающие на вход карты |
PA18 |
PA22 |
6 |
GND |
минус питания карты, сигнальная земля |
|
|
7 |
MISO |
данные, уходящие с выхода карты (DAT0) |
PA16 |
PA24 |
8 |
|
не используется (DAT1) |
|
|
9 |
|
не используется (DAT2) |
|
|
Карта SD/MMC должна иметь формат FAT16 или FAT32 (до 4 гигабайт), будет прочитан любой файл из каталога карты, имеющий расширение .bin и начинающийся на at91sam7x* (например, файл at91sam7x128_flash.bin или at91sam7x256_flash.bin или at91sam7x512_flash.bin). Если файлов несколько, то будет прочитан первый попавшийся файл AT91SA~N.BIN, где N от 1 до 9. Формат файла - обычный бинарный (не HEX). Файл пишется в память по фиксированному адресу WORK_PROGRAM_START_ADDRESS (он равен 0x110000), сразу за кодом самого бутлоадера, см. карту памяти на рисунке.
Чтобы загружаемая программа пользователя (далее просто firmware) начиналась во flash не с адреса 0x100000, как обычно, а с адреса 0x110000 (чтобы оставить место для бутлоадера), необходимо в проекте firmware отредактировать файл управления памятью flash.icf, см. [1]. Сам бутлоадер необходимо загрузить в память чипа начиная с адреса 0x100000 с помощью либо пакета SAM-BA (см. [3]), либо с помощью JTAG-отладчика.
[Ссылки]
1. IAR EWB for ARM: учимся управлять сегментами на примере добавления версии по фиксированному адресу. 2. 130916rwav-boot-public.zip - исходный код бутлоадера и готовые бинарные файлы для AT91SAM7X256 или AT91SAM7X512. 3. AT91SAM7X: бутлоадер SAM-BA от компании Atmel. 4. Макетная плата AT91SAM7X. 5. Библиотека EFSL. |