Перевод может содержать ошибки. Читайте первоисточник: FreeRTOS
Назад: [Как работает FreeRTOS] | Вверх: [Как работает FreeRTOS] | Вперёд: [Как работает FreeRTOS] |
Вам нет необходимости читать или понимать эту страницу, если вы используете один из многих существующих портов и демонстрационных приложений!
Портирование FreeRTOS на совершенно другой и пока не поддерживаемый микроконтроллер является нетривиальной задачей. Цель этой страницы - описать house keeping предварительные требования для начала работ по созданию нового порта.
Каждый порт является в некоторой степени уникальным и сильно зависит от процессора и используемых средств разработки, поэтому эта страница не может предоставить все детали и подробности о портировании. Однако уже существует много других портов FreeRTOS, и предлагается использовать их в качестве справочных примеров.
Портирование в пределах одного и того же семейства процессоров является гораздо более простой задачей - например, с одного устройства на базе ARM7 на другое. Страница документации, подробно описывающая, как изменить существующее демонстрационное приложение, будет хорошей отправной точкой для начала работы, если ваша цель именно в таком переносе.
Исходный код ядра FreeRTOS обычно содержится в трёх исходных файлах (или в четырёх, если используются сопрограммы), которые являются общими для всех портов, и в одном или двух файлах уровня портирования, которые адаптируют ядро ОСРВ к конкретной архитектуре.
Предлагаемые шаги:
Эти три функции должны быть реализованы для вашей отладочной платы. Наличие светодиодных выходов облегчит остальную часть требуемой работы. Для примера посмотрите на многие существующие файлы ParTest.c, включённые в другие демонстрационные проекты для примера (название 'ParTest' является исторической аномалией для тестирования параллельного порта - PARallel port TEST), и страницу, описывающую, как модифицировать существующее демонстрационное приложение для получения информации о написании и тестировании функций в файле ParTest.c.
Теперь все необходимые файлы на месте, вам нужно создать проект (или makefile), который будет собирать их. Очевидно, что они содержат просто заглушки, поэтому пока не будут выполнять никаких действий. Но после успешной сборки заглушки будут постепенно заменяться рабочими функциями.
Проект должен содержать следующие файлы:
Следующие каталоги должны быть добавлены в список путей расположения заголовочных файлов - пожалуйста, используйте относительные пути относительно каталога Demo/[Process name] - а НЕ абсолютные пути:
А теперь сложная часть. Как только проект скомпилируется, заглушки на уровне портирования необходимо реализовать. Предполагается, что первой будет портирована функция pxPortInitialiseStack(). Для её реализации вы должны сначала выбрать согласно контексту вашей задачи структуру фрейма стека, которая сильно зависит от архитектуры.
Не забывайте, что стратегический партнёр FreeRTOS, компания WITTENSTEIN high integrity systems предлагает полный сервис портирования и тестирования! Правда не бесплатно - прим. переводчика.