===== 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~~