AN3927 Freescale USB Mass Storage Device Bootloader Application Note Rev. 0, 11/2009 (перевод)
3 Структура проекта
Нижеследующие разделы описывают исходные тексты загрузчика и примеров его применения. Исходный код, сопровождающий в данную статью, содержит загрузчик и примеры для всех трёх вариантов вычислительного ядра.
3.1 Структура каталогов проекта
Рисунок 2 показывает структуру каталогов сопровождающего статью кода.
|
-
- \S08 USB Bootloader Projects
-
включает три проекта для MC9S08. "USB Bootloader S08 Standalone" - собственно загрузчик. Два дополнительных проекта - примеры, использующие загрузчик для управления двумя разными светодиодами на отладочной плате DEMOJM. Во время сборки обоих проектов образ загрузчика в формате S19 подключается командой " HEXFILE " в файле "Project.prm". Образы проектов в формате S19 могут, в свою очередь, использоваться для демонстрации возможностей загрузчика по смене целевой программы в контроллере.
- \S19 Files
-
набор образов всех предварительно скомпилированных примеров в формате S19. Включает также образы для стека USB фирмы CMX, полученные с помощью инструкций, описанных в разделе "4 Использование загрузчика". Данный набор позволяет легко проверять работу загрузчика копированием файлов в устройство.
- \Shared Source
-
набор общих для нескольких проектов исходных текстов. Подкаталог "\Common_Across_Cores" содержит код высокоуровневых процедур загрузчика, не меняющихся при смене вычислительного ядра. Специфичные для каждого ядра низкоуровневые процедуры содержатся в других каталогах.
- \V1 USB Bootloader Projects
-
включает два проекта для ColdFire V1. Этот каталог не содержит отдельного проекта собственно загрузчика. Его исходный код включён непосредственно в демонстрационные проекты. Два примера используют загрузчик для управления двумя различными светодиодами на отладочной плате DEMOJM. Предварительно скомпилированные файлы обоих проектов можно использовать для демонстрации возможностей загрузчика по смене целевой программы.
- \V2 USB Bootloader Projects
-
включает три проекта для ColdFire V2. Проект "USB Bootloader V2 Standalone" - собственно загрузчик, скомпилированный в виде библиотеки. Два других используют загрузчик для управления двумя различными светодиодами на отладочной плате M52259DEMO. Во время компоновки оба проекта используют библиотеку загрузчика. Предварительно скомпилированные файлы обоих проектов можно использовать для демонстрации возможностей загрузчика по смене целевой программы.
3.2 Структура проекта для ColdFire V2
Директория для ядра V2 имеет раздельные проекты для загрузчика и примеров. Собственно загрузчик расположен в каталоге "USB Bootloader V2 Standalone". Проект транслируется в библиотечный файл "V2_Bootloader.lib", используемый в примерах для включения загрузчика в результирующую сборку. На рисунке 3 показано окно проекта среды разработки CodeWarrior. Файлы проекта описываются ниже.
|
-
- Bootloader_V2.c
-
файл, учитывающий особенности ядра V2. Содержит стек USB, управляющий процессом опознания и работающий с USB пакетами, и код, отвечающий за запись в программную память. Файл также содержит главный цикл загрузчика, выполняющийся в режиме обновления целевой программы.
- Bootloader_V2.h
-
заголовочный файл, учитывающий особенности ядра V2. Содержит макросы для управления памятью, процедур загрузчика и подсистемы USB, а так же объявления структур для протокола USB.
- Bootloader_Headers.h
-
файл, содержащий ссылки на другие заголовочные файлы.
- FAT16.c, FAT16.h
-
код, отвечающий за имитацию таблицы размещения файлов и файловой системы.
- ParseS19.c, ParseS19.h
-
код, отвечающий за разбор формата S19. Проверяет каждую строку файла, после чего записывает содержимое поля данных по адресу, указанному в поле адреса.
- SCSI_Process.c, SCSI_Process.h
-
код, отвечающий за разбор и выполнение команд, используемых для работы с накопителями данных.
- Derivative.h
-
заголовочный файл, отвечающий за совместимость исходных текстов с особенностями кода загрузчика для ядра V2.
- mcf5xxx_bl.c
-
код обработчика исключений специфичного для ядра V2.
- mcf5225x_vectors.s
-
таблица векторов прерываний и настройки для защиты программной памяти.
- mcf5xxx.h
-
заголовочный файл, учитывающий особенности семейства.
- mcf5xxx_bl.s
-
низкоуровневая часть кода обработчика исключений, учитывающая особенности семейства.
Кроме проекта собственно загрузчика, каталог для ядра V2 содержит два примера, которые управляют двумя различными светодиодами на отладочной плате M52259DEMO. На рисунке 4 показано окно проектов среды разработки CodeWarrior для примера из каталога "\USB Bootloader V2 Blinks LED1". Ниже следует описание включённых файлов.
|
-
- Bootloader_V2.h
-
специфичный для ядра V2 заголовочный файл, содержащий макросы для управления памятью, процедур загрузчика и подсистемы USB, а также объявления структур для USB протокола.
- usr_entry_v2.c
-
код, учитывающий особенности семейства и выбирающий режим работы устройства: загрузчик или целевая программа.
- V2_Bootloader.lib
-
библиотечный файл, содержащий код загрузчика. Данный файл является выходным для проекта "\USB Bootloader V2 Standalone".
- mcf5225x_vectors.s
-
код, учитывающий особенности семейства, содержащий вектора прерываний и установки защиты программной памяти, необходимый для загрузчика.
- main.c
-
код, содержащий вектор пользователя, то есть точку перехода на целевую программу и процедуру инициализации таблицы векторов прерываний в оперативной памяти.
- mcf5xxx_lo.s
-
код начальной инициализации, специфичный для ядра V2.
- mcf5225x_lo.s
-
код начальной инициализации, специфичный для семейства.
- mcf5225x_sysinit.c
-
стартовый код для семейства.
- mcf5xxx.c
-
стартовый код для вычислительного ядра V2.
- mcf52259_bl_sram.lcf
-
файл компоновщика, используемый для размещения загрузчика и целевой программы в оперативной памяти. Не требует записи в программную память и допускает быструю отладку.
- mcf52259_bl_flash.lcf
-
файл компоновщика, используемый для размещения загрузчика в защищённой программной памяти и целевого приложения в незащищённой.
3.3 Структура проекта для ColdFire V1
Для вычислительного ядра V1 используется схема, при которой загрузчик и приложение комбинируются в единый проект. Два примера позволяют управлять различными светодиодами на отладочной плате DEMOJM. Рисунок 5 показывает окно проектов среды разработки CodeWarrior для примера из каталога "\USB Bootloader V1 Blinks PTE2". Ниже следует описание включённых файлов.
|
-
- Bootloader_V1.c
-
файл, учитывающий особенности ядра V1. Содержит стек USB, управляющий процессом опознания и работающий с USB пакетами, и код, отвечающий за запись в программную память. Файл также содержит главный цикл загрузчика, выполняющийся в режиме обновления целевой программы.
- Bootloader_V1.h
-
заголовочный файл, учитывающий особенности ядра V1. Содержит макросы для управления памятью, процедур загрузчика и подсистемы USB, а так же объявления структур для протокола USB.
- usr_entry_v1.c
-
файл, учитывающий особенности ядра V1. Содержит код, выбирающий режим работы устройства: загрузчик или целевая программа.
- Fat16.c, Fat16.h
-
код, отвечающий за имитацию таблицы размещения файлов и файловой системы.
- ParseS19.c, ParseS19.h
-
код, отвечающий за разбор формата S19. Проверяет каждую строку файла, после чего записывает содержимое поля данных строки по адресу, указанному в поле адреса.
- SCSI_Process.c, SCSI_Process.h
-
код, отвечающий за разбор и выполнение команд, используемых для работы с накопителями данных.
- Bootloader_Headers.h
-
файл, содержащий ссылки на другие заголовочные файлы.
- main.c
-
код, содержащий вектор пользователя, то есть точку перехода на целевую программу и процедуру инициализации таблицы векторов прерываний в оперативной памяти.
- Project.lcf
-
файл компоновщика, используемый для размещения загрузчика в защищённой программной памяти и целевого приложения в незащищённой.
3.4. Структура проекта для MC9S08
Директория для ядра MC9S08 имеет раздельные проекты для загрузчика и примеров. Собственно загрузчик расположен в каталоге "USB Bootloader S08 Standalone". Проект транслируется в файл S19 "S08_Bootloader.abs.s19", добавляемый в проект целевого приложения на этапе компоновки. Рисунок 6 показывает окно проекта в среде разработки CodeWarrior. Файлы проекта описываются ниже.
|
-
- Bootloader_S08.c
-
файл, учитывающий особенности ядра MC9S08. Содержит стек USB, управляющий процессом опознания и работающий с USB пакетами, и код, отвечающий за запись в программную память. Файл также содержит главный цикл загрузчика, выполняющийся в режиме обновления целевой программы.
- Bootloader_S08.h
-
заголовочный файл, учитывающий особенности ядра MC9S08. Содержит макросы для управления памятью, процедур загрузчика и подсистемы USB, а так же объявления структур для протокола USB.
- Redirect_Vectors_S08.c
-
файл, учитывающий особенности ядра MC9S08. Содержит таблицу векторов прерываний контроллера, перенаправляющую вызовы обработчиков на таблицу приложения.
- usr_entry_S08.c
-
файл, учитывающий особенности ядра MC9S08. Содержит код, выбирающий режим работы устройства: загрузчик или целевая программа.
- Fat16.c, Fat16.h
-
код, отвечающий за имитацию таблицы размещения файлов и файловой системы.
- ParseS19.c, ParseS19.h
-
код, отвечающий за разбор формата S19. Проверяет каждую строку файла, после чего записывает содержимое поля данных строки по адресу, указанному в поле адреса.
- SCSI_Process.c, SCSI_Process.h
-
код, отвечающий за разбор и выполнение команд, используемых для работы с накопителями данных.
- Bootloader_Headers.h
-
файл, содержащий ссылки на другие заголовочные файлы.
- ansiis.lib
-
библиотека, специфичная для ядра MC9S08.
- Project.prm
-
файл компоновщика, используемый для размещения загрузчика в защищённой программной памяти и целевого приложения в незащищённой.
Кроме проекта собственно загрузчика, каталог содержит два примера, которые управляют двумя различными светодиодами на отладочной плате DEMOJM. Рисунок 7 показывает окно проектов среды разработки CodeWarrior для примера из каталога "\Application with Bootloader S08 Blinks PTE2". Ниже следует описание включённых файлов.
|
-
- main.c
-
файл приложения. Содержит вектор пользователя и переадресованную таблицу прерываний приложения.
- Project.prm
- файл компоновщика. Используется для размещения загрузчика в защищённой программной памяти и целевого приложения в незащищённой. Подключает файл S19 загрузчика к коду приложения с помощью команды " HEXFILE ".
- блог пользователя teap0t
- 55603 просмотра
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика Imprecise Bus Faults в микроконтроллерах Cortex-M3/M4/M4F
- Self-powered камера
- Фоновый модулятор: беспроводная связь из ничего (перевод)
- Texas Instruments Analog Applications Journal SLYT612 "Снижение искажений в аналоговых КМОП ключах" (перевод)
- USB MSD. Часть 6. Команды SCSI (перевод)
- USB MSD. Часть 3. USB класс накопителей данных (перевод)
- Texas Instruments Application Report SBAA042 "Кодовые схемы, используемые в аналогово-цифровых преобразователях" (перевод)
- 10 принципов правильного интерфейса
- Релиз SDK на русский микропроцессор КРОЛИК
Recent comments
9 часов 2 минуты назад
1 неделя 8 часов назад
1 неделя 15 часов назад
1 неделя 15 часов назад
1 неделя 2 дня назад
1 неделя 3 дня назад
1 неделя 3 дня назад
1 неделя 4 дня назад
1 неделя 4 дня назад
1 неделя 5 дней назад