AN3927 Freescale USB Mass Storage Device Bootloader Application Note Rev. 0, 11/2009 (перевод)





3 Структура проекта

Нижеследующие разделы описывают исходные тексты загрузчика и примеров его применения. Исходный код, сопровождающий в данную статью, содержит загрузчик и примеры для всех трёх вариантов вычислительного ядра.


3.1 Структура каталогов проекта

Рисунок 2 показывает структуру каталогов сопровождающего статью кода.


Рисунок 2. Структура каталогов проекта
Рисунок 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. Файлы проекта описываются ниже.


Рисунок 3. Проект загрузчика для ColdFire V2
Рисунок 3. Проект загрузчика для ColdFire V2
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". Ниже следует описание включённых файлов.


Рисунок 4. Приложение с загрузчиком для ColdFire_V2
Рисунок 4. Приложение с загрузчиком для ColdFire V2
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". Ниже следует описание включённых файлов.


Рисунок 5. Проект приложения с загрузчиком для ColdFire V1
Рисунок 5. Проект приложения с загрузчиком для ColdFire V1
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. Файлы проекта описываются ниже.


Рисунок 6. Файлы проекта загрузчика для MC9S08
Рисунок 6. Файлы загрузчика для MC9S08
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". Ниже следует описание включённых файлов.


Рисунок 7. Приложение с загрузчиком для MC9S08
Рисунок 7. Приложение с загрузчиком для MC9S08
main.c
файл приложения. Содержит вектор пользователя и переадресованную таблицу прерываний приложения.
 
Project.prm
файл компоновщика. Используется для размещения загрузчика в защищённой программной памяти и целевого приложения в незащищённой. Подключает файл S19 загрузчика к коду приложения с помощью команды " HEXFILE ".
ПредпросмотрAttachmentSize
an3927_html.zip258.37 КБ