Описанный в статье бутлоадер читает двоичный (.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. Исходный код бутлоадера и готовые бинарные файлы для AT91SAM7X256 или AT91SAM7X512. 3. AT91SAM7X: бутлоадер SAM-BA от компании Atmel. 4. Макетная плата AT91SAM7X. 5. Библиотека EFSL. |