97
КОМПОНЕНТЫ И ТЕХНОЛОГИИ •
№ 4 '2011
www.kite.ru
компоненты
микроконтроллеры
быть выполнены из интерпретатора команд Windows (
cmd.exe). В ка-
честве альтернативы можно использовать бесплатный эмулятор ОС
DOS под названием DOSBox, который позволит выполнять примеры
не только из-под Windows, но и из-под UNIX-подобных (FreeBSD,
Fedora, Gentoo Linux) и некоторых других ОС [2].
Загрузить последнюю версию пакета Open Watcom можно с офици-
ального сайта [2]. На момент написания статьи это версия 1.9. Файл для
скачивания:
open-watcom-c-win32-1.9.exe. Во время инсталляции пакета
следует включить в установку 16-разрядный компилятор для DOS и до-
бавить DOS в список целевых ОС (рис. 1 и 2).
После установки пакета Open Watcom нужно выполнить переза-
грузку рабочей станции. Далее можно проверить работу компиля-
тора, открыв демонстрационный проект, входящий в дистрибутив
FreeRTOS. Проект располагается в
C:/FreeRTOSV6.1.0/Demo/PC/ (в слу-
чае установки FreeRTOS на диск
C:/). Далее следует открыть файл про-
екта Open Watcom, который называется
rtosdemo.wpj, и выполнить
сборку проекта, выбрав пункт меню
Targets -> Make. Сборка должна
пройти без ошибок (рис. 3).
При этом в директории демонстрационного проекта появится ис-
полнимый файл
rtosdemo.exe, запустив который можно наблюдать
результаты работы демонстрационного проекта в окне интерпретато-
ра команд Windows (рис. 4).
В демонстрационный проект включена демонстрация всех воз-
можностей FreeRTOS. Для наших целей, чтобы продолжить изучение
задач, не вникая в остальные возможности FreeRTOS, необходимо
исключить из проекта все исходные и заголовочные файлы, кроме
файлов
ядра FreeRTOS и файла main.c (рис. 5).
Кроме этого, необходимо произвести настройку ядра, отредакти-
ровав заголовочный файл FreeRTOSConfig.h:
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include
#include
#define configUSE_PREEMPTION
1
#define configUSE_IDLE_HOOK
0
#define configUSE_TICK_HOOK
0
#define configTICK_RATE_HZ
( ( portTickType ) 1000 )
#define configMINIMAL_STACK_SIZE
( ( unsigned short ) 256 )
/* This can be made smaller if required. */
#define configTOTAL_HEAP_SIZE
( ( size_t ) ( 32 * 1024 ) )
#define configMAX_TASK_NAME_LEN
( 16 )
#define configUSE_TRACE_FACILITY
1
#define configUSE_16_BIT_TICKS
1
#define configIDLE_SHOULD_YIELD
1
#define configUSE_CO_ROUTINES
0
#define configUSE_MUTEXES
1
#define configUSE_COUNTING_SEMAPHORES
1
#define configUSE_ALTERNATIVE_API
1
#define configUSE_RECURSIVE_MUTEXES
1
#define configCHECK_FOR_STACK_OVERFLOW
0 /* Do not use this option on the PC port. */
#define configUSE_APPLICATION_TASK_TAG
1
#define configQUEUE_REGISTRY_SIZE
0
#define configMAX_PRIORITIES
( ( unsigned portBASE_TYPE ) 10 )
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */
#define INCLUDE_vTaskPrioritySet
1
#define INCLUDE_uxTaskPriorityGet
1
#define INCLUDE_vTaskDelete
1
#define INCLUDE_vTaskCleanUpResources
1
#define INCLUDE_vTaskSuspend
1
#define INCLUDE_vTaskDelayUntil
1
#define INCLUDE_vTaskDelay
1
#define INCLUDE_uxTaskGetStackHighWaterMark 0 /* Do not use this option on the PC port. */
#endif /* FREERTOS_CONFIG_H */
Достарыңызбен бөлісу: