===== OSA : Проект =====
===== Создание проекта =====
Для использования OSA в своем приложении нужно:
- Создать проект, используя IDE оболочку. В него, помимо файлов самой программы, включить файл osa.c (он содержит определения всех системных переменных и системных функций).
- В папке с файлами программы создать файл системной конфигурации ##[[osa:ref:appendix:configuration|osacfg.h]]##, где задать параметры использования системы (в самом простом случае этот файл может быть пустым). Подробнее об этом файле см. [[osa:ref:appendix:configuration|Конфигурация OSAcfg.h]]. Этот файл можно создать с помощью утилиты [[osa:ref:download:intro|OSAcfg_Tool]].
- Во все файлы, где есть вызовы сервисов OSA, включить файл osa.h.
- В параметрах проекта указать пути "Include Search Path":
* путь к файлу ##[[osa:ref:appendix:configuration|osacfg.h]]## текущего проекта;
* путь к файлу osa.h.
- В самом начале программы (в фукнции main()) вызвать фукнцию инициализации системы ##[[osa:ref:allservices:OS_Init|OS_Init]]()##, а в самом конце - вызвать сервис ##[[osa:ref:allservices:OS_Run|OS_Run]]()##.
===== Примечания для различных IDE и платформ =====
==== MPLAB ====
* файл osa.c добавляется правым щелчком мышки в окне проекта (открывается через меню "View/Project")
* Include-пути задаются в параметрах проекта: меню "Project/Build options/Project...", вкладка "Directories".
==== MPLAB и HT-PICC ====
* Ранние версии плагинов HTPICC длч MPLAB'а не позволяли вводить относительные пути, а только абсолютные (т.е. не "..\..\", а "c:\osa")
* **для PRO-версии компилятора**: Чтобы компилятор правильно строил дерево вызовов функций, все создаваемые задачи должны быть объявлены в main() сервисом ##[[osa:ref:allservices:OS_Task_Define|OS_Task_Define]]##()
void main (void)
{
OS_Init();
...
OS_Task_Define(Task_Buttons);
OS_Task_Define(Task_LEDs);
OS_Task_Define(Task_LCD);
...
OS_Task_Create(Task_Buttons);
OS_Task_Create(Task_LEDs);
OS_Task_Create(Task_LCD);
}
==== MPLAB и Mplab C18 ====
* Требуется указать путь к библиотекам: меню "Project/Build options/Progect...", вкладка "Directories", пункт "Library Search Path". Там ввести путь для MCC18 (например, c:\mcc18\lib).
* там же в параметрах проекта выбрать вкладку "MPLAB C18", категория "Optimization" и снять галочку (если стоит) напротив пункта "Procedural absraction"
* Не забыть добавить файл скрипта для линкера: правой кнопкой на папке "Linker Script" в окне "Project" и выбрать скрипт для требуемого контроллера из папки "MCC18\lkr". (Для работы в extended-режиме имя файла скрипта должно иметь суффикс 'e')
==== MPLAB и Mplab C30 ====
* в параметрах проекта выбрать вкладку "MPLAB C30", категория "Optimization" и снять галочку (если стоит) напротив пункта "Procedural absraction"
==== CCS ====
* файл osa.c в проект включать **не нужно!**
* Чтобы компилятор правильно строил дерево вызовов функций, все создаваемые задачи должны быть объявлены в main() сервисом ##[[osa:ref:allservices:OS_Task_Define|OS_Task_Define]]##()
void main (void)
{
OS_Init();
...
OS_Task_Define(Task_Buttons);
OS_Task_Define(Task_LEDs);
OS_Task_Define(Task_LCD);
...
OS_Task_Create(Task_Buttons);
OS_Task_Create(Task_LEDs);
OS_Task_Create(Task_LCD);
}
==== mikroC PRO IDE ====
* Файл osa.c добавляется в проект через меню "Project/Add File To Project..."
* Include-пути задаются через меню "Project/Edit Search Paths...". В открывшемся окне есть два списка путей: Source Files и Header Files. нам нужен список Header Files. Над ним есть кнопка с зеленым плюсиком, давим ее и добавляем нужные пути.
* Линкер должен быть проинформирован о том, что функции, которые предполагается использовать как задачи, будут вызываться не напрямую, а через указатель:
#pragma funcall main Task_Buttons // Говорим компилятору, что Task_Button будет
// вызываться через указатель
void Task_Buttons (void)
{
...
}
==== AVR Studio и WinAVR ====
* Пункт меню "Project/New Project":
- Выбираем Project type: AVR GCC
- выбираем путь и имя проекта, давим Next
- в следующем окне выбираем контроллер и тип отладочного средства (Debug Platform), давим Finish
* в окне проекта (AVR GCC) правой кнопкой мышки нажимаем на папке "Source Files" и выбираем пункт "Add Existing Source File(s)..." и добавляем файл osa.c
* include-пути задаются через меню "Project/Configuration options", вкладка "Include Directories"
==== IAR ====
* Создаем проект C (меню "Project/Create New Project...")
* файл osa.c добавляется через меню "Project/Add files..."
* include-пути задаются в параметрах проекта: меню "Project/Options", категория "C/C++ compiler", вкладка "preprocessor", в поле "Additional include directories"
* там же в параметрах проекта во вкладке "Optimization" убрать галочку с пункта "Cross call"
==== IAR STM8 ====
* В добавок ко всем требованиям, описанным выше в пункте "IAR", к проекту дорбавить файл "osa\port\stm8\osa_stm_iar.s"
==== STVD и STM8 ====
* проект создается через меню "File/New Workspace".
- В открывшемся окне выбрать "Create workspace and Porject"
- далее задаем имя рабочего пространства (workspace) и путь
- в следующем окне задаем имя проекта, путь, и выбираем компилятор: Raiconance или Cosmic
- выбираем контроллера
* нажимаем правую кнопку мышки на папке Source в окне Workspace, выбираем пункт "Add Files To Folder..." и выбираем файл osa.c
* include-пути задаются в параметрах проекта: меню "Project/Settings", вкладка "C compiler", категория "Preprocessor", пункт "Additional include directories"
==== Raisonance и STM8 ====
* создаем новый проект через меню "Project/New project"
* файл osa.c добавляется через меню "Project/Add Item..."
* include-пути задаются в параметрах проекта: меню "Projetc/properties", пункт "Application Optios", подпункт "Directories". К имеющимся в списке добавить два: путь к osa.h и путь к ##[[osa:ref:appendix:configuration|osacfg.h]]##
~~UP~~