ВВЕДЕНИЕ 4
1. МИКРОКОНТРОЛЛЕР STM32F429ZIT6 6
1.1. Общее описание микроконтроллера 6
1.2. FLASH-память 8
1.3. SDIO-интерфейс 13
1.4. Работа с ЖК-дисплеем 17
2. АЛГОРИТМЫ ШИФРОВАНИЯ И НАХОЖДЕНИЯ КОНТРОЛЬНОЙ СУММЫ 19
2.1. AES 19
2.2. SHA 25
2.3. CRC 27
3. ПРОГРАММНЫЕ СРЕДСТВА РАЗРАБОТКИ 29
3.1. Высокоинтегрированная программная среда разработки CooCox 29
3.2. Описание используемых библиотек 31
3.2.1. Библиотека CMSIS 31
3.2.2. Библиотека SPL 32
3.2.3. Библиотеки, необходимые для работы с SD картой 33
3.2.4. Библиотеки, реализующие алгоритмы AES и SHA 35
3.2.5. Библиотека ^GUI 36
4. РЕАЛИЗАЦИЯ ЗАЩИЩЕННОГО ЗАГРУЗЧИКА ПРОГРАММНОГО КОДА 37
4.1. Разделение памяти 37
4.2. Схема работы загрузчика 37
4.3. Формирование файла «прошивки» 42
4.4. Реализация макета для отладки загрузчика 45
4.4.1. Общее описание платы STM32F429I-DISCO 45
4.4.2. Подключение карты microSD 46
5. ТЕСТИРОВАНИЕ ЗАЩИЩЕННОГО ЗАГРУЗЧИКА 48
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
Приложение
Многие современные цифровые устройства выполнены на базе микропроцессоров, причем большая функциональная нагрузка лежит не на аппаратной, а на программной составляющей. При выпуске продукции разработчики могут допускать различные ошибки, которые обнаруживаются только во время эксплуатации. Для устранения недочетов предыдущих вариантов и добавления каких-либо функций выпускаются новые версии программного обеспечения (ПО). Для самостоятельного обновления пользователями ПО существует загрузчик программного кода - бутлоадер.
Бутлоадер - небольшая программа, записанная в постоянное запоминающее устройство (ПЗУ) микроконтроллера, которая может принимать данные через любой, заранее определенный программистом интерфейс (UART, USB, SPI, SDIO). При старте микроконтроллера управление передается бутлоадеру, который проверяет наличие заранее определенных условий и, если условия не совпадают, передает управление основной программе. Если же условия совпадают, бутлоадер переходит в режим программирования.
Поставляемая в незащищенном виде «прошивка» может стать причиной взлома, нелегального копирования или кражи секретов компании- разработчика. Защищенность бутлоадера подразумевает невозможность (либо значительное удорожание) взлома кода конкурирующими организациями с целью несанкционированного получения доступа к ПО, как наиболее трудоемкой и ценной составляющей интеллектуальной собственности.
Цель работы: разработать защищенный загрузчик программного кода для микроконтроллеров STM32F4xx и отладить его работу на макете, созданном на базе отладочной платы STM32F429I-DISCO.
Поставленная цель потребовала решения следующих задач:
1) познакомиться с микроконтроллером STM32F429ZIT6 и его возможностями, а также с периферией, необходимой для реализации загрузчика (FLASH, SDIO, TFT-LCD контроллер);
2) познакомиться с программными средствами разработки: высокоинтегрированной программной средой для разработки кода микроконтроллеров архитектуры ARM CooCox и компилятором ARM GCC;
3) изучить выбранные для реализации загрузчика алгоритмы шифрования (AES, SHA) и алгоритм нахождения контрольной суммы (CRC);
4) разработать алгоритм работы загрузчика;
5) реализовать загрузчик и отладить его работу на макете, созданном на базе отладочной платы STM32F429I-DISCO.
В ходе работы:
1) изучены структура и возможности микроконтроллера STM32F429ZIT6, а также некоторые его периферийные модули, алгоритмы шифрования AES, SHA и алгоритм вычисления контрольной суммы CRC;
2) реализованы процедуры чтения и записи данных FLASH-памяти микроконтроллера;
3) реализована работа с файловой системой FAT с помощью библиотеки FatFS, а именно процедуры поиска файлов, а также чтения и записи данных в файлы на карту microSD;
4) реализована процедура шифрования и дешифрования файлов на карте microSD с помощью алгоритма AES-256 в режиме CBC;
5) с помощью библиотеки ^GUI реализован пользовательский интерфейс, позволяющий выбирать режимы работы загрузчика («прошивка», шифрование файла, переход к основной программе);
6) написаны тестовые программы, одна из которых представляет собой дополненный вариант предыдущей;
7) отлажена работа загрузчика на макете на основе отладочной платы STM32F429I-DISCO и с помощью тестовых программ проведена проверка корректности его работы.
Созданный загрузчик может быть использован в проектах, разработанных для микроконтроллеров семейства STM32F4xx, в которых необходимо периодическое обновление программного кода.
1. Cortex-M4 Processor (Описание архитектуры). [Электронный ресурс]
URL: http://www.arm.com/products/processors/cortex-m/cortex-m4-
processor.php?tab=Specifications (Дата обращения 2.06.2015)
2. Datasheet STM32F427xx/STM32F429xx [Электронный ресурс] URL: http://www.st.com/content/ccc/resource/technical/document/datasheet/03/b4/ b2/36/4c/72/49/29/DM00071990.pdf/files/DM00071990.pdf/icr:content/tran slations/en.DM00071990.pdf (Дата обращения 12.02.2016)
3. FatFS - Generic FAT File System Module. [Электронный ресурс] URL: http://elm-chan.org/fsw/ff/00index e.html (Дата обращения 25.04.2016)
4. Brad Conte. Implementation of AES in C. [Электронный ресурс] URL: http://bradconte.com/aes c (Дата обращения 21.05.2016)
5. Brad Conte. Implementation of SHA in C. [Электронный ресурс] URL: http://bradconte.com/sha256 c (Дата обращения 21.05.2016)
6. Open Source GUI module for embedded systems. [Электронный ресурс]
URL: http: //www.embeddedlightning.com/ugui/ (Дата обращения 08.06.2016)
7. Баричев С. Г., Гончаров В. В., Серов Р Е. Основы современной криптографии. - М.: Горячая линия - Телеком, 2002 - 175 с.
8. Гавриков В. Мастера графики: новое поколение STM32F4 с поддержкой
контроллера TFT. [Электронный ресурс] URL:
http://www.compel.ru/lib/ne/2013/8/6-mastera grafiki-novoepokolenie- stm32f4-s-podderzhkoykontrollera-tft/ (Дата обращения 21.05.2016)
9. Панасенко С. П. Алгоритмы шифрования. Специальный справочник. - СПБ.: БХВ-Петербург, 2009. - 576 с.
10. Уильямс, Росс. Элементарное руководство по CRC-алгоритмам обнаружения ошибок. [Электронный ресурс] URL: http://web.archive.org/web/20130407000813/http://rsdn.ru/article/files/class es/SelfCheck/crcguide.pdf (Дата обращения: 06.06.2016)