реклама на сайте
подробности

 
 
> FreeRTOS and CPP, компиляция прокета на CPP с FreeRTOS
k155la3
сообщение Dec 15 2015, 13:25
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Есть проект, писаный на CPP (IAR/MSP430).
Как правильно прикрутить проект к FreeRTOS ?

По-сути, прокт ++ не использует, только структуры и расширения синтаксиса.
В таком случае может следует переписать все с CPP на C ?

Сообщение отредактировал k155la3 - Dec 15 2015, 13:26
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
haker_fox
сообщение Dec 16 2015, 00:26
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (k155la3 @ Dec 15 2015, 21:25) *
В таком случае может следует переписать все с CPP на C ?

Переписывать ничего не нужно.
Сначала полезные статьи Курниц А. Операционная система FreeRTOS, а здесь про FreeRTOS и Си++.

Моё видение следующее: добавить директорию с ОС к проекту. В настройках компилятора указать компиляцию по расширению файлов. Таким образом ОС компилируется сишным, а всё остальное си++-ным компилятором. Возможно, что можно и всё компилировать под Си++. Но у меня валится пара ошибок, разбираться не хочется. Далее. Вы создаёте задачи, и которых вызвыаете Си++ код. В этом коде можете вызывать сервисы ОС. Единственное, что при вызове кода Си++ из Си могут возникать проблемы, тогда нужно делать как-то так
CODE
В хидере
extern "C" int cSysClockWrapper( TSysClockType source );

В c++ коде
int cSysClockWrapper( TSysClockType source )
{
    return CSysClock::init( source );
}


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 16 2015, 01:49
Сообщение #3


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Ах, да.. забыл... нужно что-то решать с динамическим выделением памяти, если оно используется в проекте на си++. Яимею в виду new и delete. Т.к. менеджер кучи у FreeRTOS свой. Кстати, сразу рекомендую найти менеджер кучи, любезно выложенный zltigo. Над стандартным (я имею в виду из ОСи) он имеет некоторые преимущества.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
den_po
сообщение Dec 16 2015, 04:30
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(haker_fox @ Dec 16 2015, 04:49) *
Ах, да.. забыл... нужно что-то решать с динамическим выделением памяти, если оно используется в проекте на си++. Яимею в виду new и delete.

а что там, собственно, решать?
Код
void* operator new(size_t sz)
{
    return pvPortMalloc(sz);
}
void* operator new[](size_t sz)
{
    return pvPortMalloc(sz);
}
void operator delete(void* p)
{
    vPortFree(p);
}
void operator delete[](void* p)
{
    vPortFree(p);
}
void* operator new(size_t size, void* p)
{
    (void)size;
    return p;
}
void* operator new[](size_t size, void* p)
{
    (void)size;
    return p;
}
void operator delete(void*, void*)
{
}
void operator delete[](void*, void*)
{
}
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 16 2015, 05:36
Сообщение #5


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (den_po @ Dec 16 2015, 12:30) *
а что там, собственно, решать?

На данном этапе я этого не знал. Но приведённый вами код - скорее всего решение всех проблем, в том числе и моих (сам занимаюсь этим вопросом).


Сомневаюсь, что только конструкторы объектов будут выполняться.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
den_po
сообщение Dec 16 2015, 06:49
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Будут
Go to the top of the page
 
+Quote Post
k155la3
сообщение Dec 17 2015, 07:02
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



haker_fox, den_po спасибо за инф. и ссылки.
Курница док читаю, хорошо расписано, только мало.
Будем попробовать.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 17 2015, 09:54
Сообщение #8


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (k155la3 @ Dec 17 2015, 15:02) *
haker_fox, den_po спасибо за инф. и ссылки.
Курница док читаю, хорошо расписано, только мало.
Будем попробовать.

Пожалуйста! rolleyes.gif Если не сложно, отпишитесь, пожалуйста, о результатах. Ибо сейчас на этом пути сам. Опыт добываю. Может быть что-то полезное для себя узнаю.

Но в целом у Курница объёмная статья. Самый полный и свежий материал только на офсайте rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Dec 18 2015, 05:18
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



haker_fox, о результатах чего? Если freertos + c++ - все хорошо, полет нормальный. Собственно иное было бы странно, с и с++ без проблем уживаются вместе sm.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 19 2015, 15:15
Сообщение #10


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Непомнящий Евгений @ Dec 18 2015, 13:18) *
haker_fox, о результатах чего? Если freertos + c++ - все хорошо, полет нормальный. Собственно иное было бы странно, с и с++ без проблем уживаются вместе sm.gif

Я в этом не сомневался!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Dec 20 2015, 09:42
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(haker_fox @ Dec 16 2015, 09:36) *
На данном этапе я этого не знал. Но приведённый вами код - скорее всего решение всех проблем, в том числе и моих (сам занимаюсь этим вопросом).


Сомневаюсь, что только конструкторы объектов будут выполняться.


Сомнения, до определенной степени, крайне полезны.
Проверить отработку конструкторов можно "оттрасировав" через дебагер стартап-код, который для CPP.
В (IAR) опциях проекта/дебагера надо заменить стандартную метку (которая соотв-ет main), на метку стартап-кода.
Но это занятие для интелектуалов - вызовы конструкторов (насколько я понял) идут косвено-таблично-списком sm.gif

По результатам оперативно не отчитаюсь, тк. сейчас надо выгонять функциональную-прикладную часть проекта ( на С)

Цитата(Непомнящий Евгений)
(Непомнящий Евгений @ Dec 18 2015, 13:18)
haker_fox, о результатах чего? Если freertos + c++ - все хорошо, полет нормальный. Собственно иное было бы странно, с и с++ без проблем уживаются вместе

В общем-то, ДА.

Судя по включениям в h-файлы freeRTOS
Код
#ifdef __cplusplus
extern "C" {
#endif











Go to the top of the page
 
+Quote Post
den_po
сообщение Dec 20 2015, 09:55
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(k155la3 @ Dec 20 2015, 12:42) *
Сомнения, до определенной степени, крайне полезны.
Проверить отработку конструкторов можно "оттрасировав" через дебагер стартап-код, который для CPP.

Это если речь о конструкторах глобальных объектов или статических членов классов. А выше разговор шёл об использовании new.

Цитата(k155la3 @ Dec 20 2015, 12:42) *
В (IAR) опциях проекта/дебагера надо заменить стандартную метку (которая соотв-ет main), на метку стартап-кода.

Обычно достаточно снять галочку возле "main"
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 21 2015, 03:03
Сообщение #13


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (den_po @ Dec 20 2015, 17:55) *
Обычно достаточно снять галочку возле "main"

Или в конструктор вставить printf, т.к. у меня нет дебаггера, если имеется в виду железный rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 12:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01448 секунд с 7
ELECTRONIX ©2004-2016