AT91SAM7X: простейший bootloader, читающий firmware с карты SD/MMC (используется EFSL) |
![]() |
Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Описанный в статье бутлоадер читает двоичный (.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 аппаратных выхода выборки.
Карта 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: учимся управлять сегментами на примере добавления версии по фиксированному адресу. |