Jump to content

    
Sign in to follow this  
one_man_show

uC/OS-II

Recommended Posts

Скажите, можно ли в проекте uC\OS под ИАРом использовать модули написанные на С++? :blink:

Если версия ОС 2.83, то можно.

По крайней мере у меня получилось с компиляторами от ИАР и портами под lpc2106 и AVR.

Share this post


Link to post
Share on other sites

Скажите, можно ли в проекте uC\OS под ИАРом использовать модули написанные на С++? :blink:

Если версия ОС 2.83, то можно.

По крайней мере у меня получилось с компиляторами от ИАР и портами под lpc2106 и AVR.

 

не поделитесь версией ОС 2.83? :)

Share this post


Link to post
Share on other sites

А как компилить проект на С++?

General Options->Library Configuration->Normal или какой другой?

С\С++ Compiler->Language->Embedded C++ или другой?

Могет еще чего надо наколдовать ?

Share this post


Link to post
Share on other sites
Если версия ОС 2.83, то можно.

А как это может завязано на версию? Ядро компилится "C" и ничему не может воспротивится. Все системные вызовы в приложении и callback естественно определяются, как "C" namespace. Все.

 

 

Могет еще чего надо наколдовать ?

Для каждого из файлов проекта А НЕ ДЛЯ ВСЕГО ПРОЕКТА либо явно указать компилятор, либо потребовать ему смотреть на расширение файла.

Share this post


Link to post
Share on other sites

Если версия ОС 2.83, то можно.

А как это может завязано на версию? Ядро компилится "C" и ничему не может воспротивится. Все системные вызовы в приложении и callback естественно определяются, как "C" namespace. Все.

С одной из предыдущих версий не получалось. Не стал вдаваться в подробности, просто поставил более новую и всё пошло.

Share this post


Link to post
Share on other sites

Вот пытался на выходных покавыряться с осью uC/OS -II v 2.83 с месного ФТП прочитал доки вроде но нифига так и не вышло

 

Вобщем конфигурация такая

модуль LPC-H2294 1 Mb ОЗУ 4 Mb ПЗУ

дисплей PG240128 с контроллером T6963

и пару кнопок

Один светодиод

 

Цель1: Попробовать помигать светодиодом

Цель 2 : попробовать что нибуть нарисовать на ЖКИ

Цкль3: Попробовать организовать реальное меню с прокрутками и всякими меседж боксами

 

что делал:

 

читал все переводы выложенные здесь пытался сделать проект IAR и собрать все в кучу

 

То есть на первом этапе сама ОС скачанная с местного ФТП и порт под ARM7 взятый с сайта вроде сделал все как в доке получил в итоге кучу около 80 ошибок и все как не бился и не мучался нифига!!!

 

так вот теперь буду клянчить

 

работал ктонеть с данной версией ОС

есть у кого нибуть нормальный собранный проект под именно этот проц с подобной конфигурацией !

нужен для изучения

 

а еще бы неплохо если бы кто неть показал примерную последовательность сборки проекта или документ где это написано а то у меня только описание что какая функция может и как они в ядре работают вкупе ! вот так всем заранее спасибо откликнувшемся

Share this post


Link to post
Share on other sites
есть у кого нибуть нормальный собранный проект под именно этот проц с подобной конфигурацией !

нужен для изучения

 

а еще бы неплохо если бы кто неть показал примерную последовательность сборки проекта или документ где это написано а то у меня только описание что какая функция может и как они в ядре работают вкупе ! вот так всем заранее спасибо откликнувшемся

 

Можно для начала попробовать запустить порт под Win32 + Visual Studio (an1032).

Этот порт сделан для 2.80, но для 2.83 править надо не много.

Нужно добавить определения OS_TMR_xxx в os_cfg.h (можно взять из сырцов 2.83 файл os_cfg_r.h и сконфигурить по аналогии),

в app.c изменить OS_IDLE_PRIO на OS_TASK_IDLE_PRIO,

в app_cfg.h добавить определение OS_TASK_TMR_PRIO.

Вроде всё.

Share this post


Link to post
Share on other sites

Меня интересует работа с ARM в часности с LPC2294

И сильно не хватает готового внятного не на вароченого проекта под этот проц чтобы разобрать что и для чего там написано !

а то имеющийся проет под LPC2124 сильно навароченый и там все кувырком ! нужен по началу ОЧЕНЬ простой проект типа как мигание светодиодом !

Share this post


Link to post
Share on other sites
Меня интересует работа с ARM в часности с LPC2294

И сильно не хватает готового внятного не на вароченого проекта под этот проц чтобы разобрать что и для чего там написано !

а то имеющийся проет под LPC2124 сильно навароченый и там все кувырком ! нужен по началу ОЧЕНЬ простой проект типа как мигание светодиодом !

 

Попробуйте для начала AN-1138 для lpc2138 (http://www.ucos-ii.com/downloads/appnotes/)

запустить.

Я обычно делаю следующим образом:

 

1. Создать проект в IAR и подключить необходимые файлы ОСи в прект (os_core.c, os_mbox.c, os_q.c,

os_sem.c, os_task.c, os_time.c), указать путь к ucos_ii.h.

2. Подключить файлы порта (os_cpu_a.asm и os_cpu_c.c).

3. Подключить bsp (bsp.c, lpc2xxx_csturtup.s79) и в линкере указать путь к (LPC2148_flash.xcl в моём случае) для вашего процессора.

4. Поправить файл os_cfg.h так как вам нужно (я обычно убираю callback таймер если 2.83, отключаю то, что не использую: флаги, мьютексы и т.д., чтобы поменьше весила). Если вы хотите включить к примеру флаги, то вам придётся добавить в проект файл os_flag.c и т.д.

5. Создайте тестовую задачу которая ничего не будет делать и попробуйте откомпилить.

 

#define APP_TASK_START_STK_SIZE 128

INT32U TaskStartStk [APP_TASK_START_STK_SIZE];

static void TaskStart (void *p_arg);

 

void main()

{

 

BSP_IntDisAll(); //запрет прерываний

OSInit(); // тнициализация uC/OS

 

OSTaskCreateExt(TaskStart, // создаётся тестовая задача с наивысшим преоритетом 0 и номером 0

(void *)0, // аргумент

(OS_STK *)&TaskStartStk[APP_TASK_START_STK_SIZE - 1],

0, // преоритет

0, // номер

(OS_STK *)&TaskStartStk[0],

APP_TASK_START_STK_SIZE,

(void *)0,

OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); // опции

 

OSStart(); // запуск ОС

 

}

 

 

static void TaskStart (void *p_arg)

{

 

p_arg = p_arg;

 

BSP_Init(); // инициализация перефирии (bsp.c)

 

for (;;) {

 

/* что-нибудь делаем */

 

OSTimeDly(100); // задержка на 100 тиков ОСи

}

}

 

Таким образом создаются все задачи ОСи.

Share this post


Link to post
Share on other sites

А в кокой части надо запускать таймер для оси и что запихивается в обработчик прерывания от таймера как вообще ось поймет что произошло прерывание от таймера

Share this post


Link to post
Share on other sites
А в кокой части надо запускать таймер для оси и что запихивается в обработчик прерывания от таймера как вообще ось поймет что произошло прерывание от таймера

 

У меня все обработчики в bsp.c, а таймер запускается при инициализации перифирии.

CPU.rar

Share this post


Link to post
Share on other sites
господа, кому не сложно, посмотрите пожалуйста мой проект для кейла, гнутый тулчейн.

немогу понять почему ругается линкер

 

Убери из проекта файл ucos_ii.с

 

У него внутри:

#include <os_core.c>
....
#include <os_time.c>

, поэтому функции определяются по два раза.

 

Потом, из старт-ап файла можно убрать блок "Relocate .data section"

И заменить "B _start" на "B main"

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this