You are here

Создание нового приложения с использованием FreeRTOS

Перевод может содержать ошибки. Читайте первоисточник: Creating a New FreeRTOS Project

Назад: [Более подробно...] Вверх: [Более подробно...] Вперёд: [Более подробно...]

 

Введение

FreeRTOS спроектирована так, чтобы быть простой и лёгкой в использовании. Требуются только три исходных файла, общих для всех портов ОС и один файл, специфичный для архитектуры процессора. А при разработке API авторы старались сделать его максимально простым и интуитивно понятным.

FreeRTOS портирована на много различных архитектур микроконтроллеров, и с использованием различных компиляторов. Каждый официальный порт поставляется с официальным демонстрационным приложением, которое (как минимум на момент его создания) компилируется и выполняется на аппаратной платформе, для которой оно разрабатывалось, без необходимости каких-либо изменений.

Демонстрационные проекты предназначены для того, чтобы новые пользователи могли начать работу с FreeRTOS максимально быстро и с минимальными усилиями.

Каждая архитектура, поддерживаемая FreeRTOS, используется во многих различных микроконтроллерах, поэтому FreeRTOS может быть использована буквально с тысячами различных моделей микроконтроллеров. Умножая это число на число поддерживаемых компиляторов и на постоянно возрастающее число стартовых наборов и отладочных плат, поступающих в продажу, мы получаем огромное количество вариантов. Очевидно, что невозможно предоставить демонстрационные проекты под все возможные комбинации. Поэтому, несмотря на все наши усилия, в архиве с FreeRTOS представлена только малая часть этих комбинаций.

Всегда рекомендуется создавать новый проект с FreeRTOS, начиная с одного из демонстрационных проектов, адаптируя его под свои нужды. Это гарантирует, что новый проект будет содержать все необходимые исходные и заголовочные файлы, и все необходимые обработчики прерываний будут установлены. И всё это - без дополнительных усилий со стороны разработчика.

Но некоторые пользователи FreeRTOS также хотят знать, как создать проект с FreeRTOS иначе, нежели адаптируя существующий проект. Данная процедура описана далее.

 

Анатомия проекта с FreeRTOS

Приложение с FreeRTOS будет запускаться и выполняться также, как и приложение без ОСРВ, до тех пор, пока не будет вызвана функция vTaskStartScheduler(). vTaskStartScheduler() как правило вызывается из функции main() пользовательского приложения. ОСРВ контролирует последовательность выполнения только после того, как vTaskStartScheduler() будет вызвана.

Настоятельно рекомендуется убедиться, что код приложения корректно выполняется на целевом устройстве. Т.е. верно задана стартовая инициализация, указаны подходящие настройки компоновщика (линкера) и т.д.. И только после этого можно использовать функциональность ОСРВ.

 

Исходные файлы

FereeRTOS поставляется в виде стандартных исходных файлов *.с, которые компилируются совместно со всеми остальными файлами c.* в вашем проекте. Все исходные файлы FreeRTOS предоставляются в виде *.zip файла. На странице "Организация текстов исходных кодов" описана структура файлов внутри *.zip файла.

Минимально необходимый список исходных файлов FrerRTOS, которые должны быть включены в проект:

FreeRTOS/Source/tasks.c
FreeRTOS/Source/queue.c
FreeRTOS/Source/list.c
FreeRTOS/Source/portable/[compiler]/[architecture]/port.c здесь [compiler] и [architecture] выбираются под платформу.
FreeRTOS/Source/portable/MemMang/heap_x.c здесь 'x' может быть 1, 2, 3, 4 или 5

Если каталог, содержащий файл port.c, содержит файл на языке ассемблера, этот ассемблерный файл также должен быть включён в проект.

 

Дополнительные исходные файлы

Если вам необходим функционал программных таймеров, добавьте файл FreeRTOS/Source/timers.c в ваш проект.

Если вам необходим функционал флагов (групп событий), добавьте файл FreeRTOS/Source/event_groups.c в ваш проект.

Если вам необходим функционал буферов потоков и сообщений, добавьте файл FreeRTOS/Source/stream_buffer.c в ваш проект.

Если вам необходим функционал созадач, добавьте файл FreeRTOS/Source/croutine.c в ваш проект. Обратите внимание, что созадачи считаются устаревшими, и не рекомендуются для использования в новых проектах.

 

Заголовочные файлы

Следующие подкаталоги должны быть добавлены в include path компилятора (необходимо указать компилятору, что заголовочные файлы находятся в этих каталогах:

FreeRTOS/Source/include
FreeRTOS/Source/portable/[compiler]/[architecture] здесь [compiler] и [architecture] выбираются под платформу.
Каталог, в котором лежит файл FreeRTOSConfig.h, используемый в проекте - см. параграф "Конфигурационный файл" ниже.

В зависимости от порта, может потребоваться добавление этих же путей в include path в настройках ассемблера.

 

Конфигурационный файл

Каждому проекту также требуется файл FreeRTOSConfig.h. Настройки в этом файле адаптируют ядро ОСРВ к создаваемому приложению. Следовательно он относится именно к приложению, а не к ОСРВ, поэтому и располагаться должен в каталоге приложения, а не в одном из каталогов с исходным кодом ядра ОСРВ.

Если в проект включён файл heap_1.c, heap_2.c, heap_4.c или heap_5.c, то параметр configTOTAL_HEAP_SIZE будет определять размер кучи FreeRTOS. Ваше приложение не будет компоноваться (линковаться), если значение configTOTAL_HEAP_SIZE задано слишком большим.

Настройка configMINIMAL_STACK_SIZE в файле FreeRTOSConfig.h устанавливает размер стека, используемый задачей простоя. Если это значение слишком мало, в задаче простоя будет происходить переполнение стека. Рекомендуется скопировать значение configMINIMAL_STACK_SIZE из официального демонстрационного приложения для той же процессорной архитектуры. Демонстрационные проекты находятся в каталоге FreeRTOS/Demo. Заметьте, что демонстрационное приложение может быть разработано для одной из предыдущих версий FreeRTOS, и часть настроек, используемых в текущей версии, в конфигурационном файле может отсутствовать.

 

Векторы прерываний

Если вы используете процессор с архитектурой Cortex-M, загляните на страницу ЧаВо: "Моё приложение компилируется, но не запускается".

Каждый порт ОС использует таймер (аппаратный) для выработки прерываний отсчёта квантов времени ОС. Многие порты используют дополнительные прерывания для переключения контекста. Прерывания, необходимые порту ОС, обслуживаются в предоставляемых исходных файлах порта ОС.

Метод, используемый для установки обработчиков прерываний, предоставляемых портом ОС, зависит от порта и компилятора, который используется. Обратитесь, и, по необходимости, скопируйте официальное демонстрационное приложение для порта, который вы используете. Также обратитесь к странице документации на используемое официальное демонстрационное приложение.

 

Hobby's category: