otik-vp
1

freeRTOS и C++ (IAR 6.4)

31.01.2013, 16:09. Показов 19763. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Т.к. с stm32 знаком всего 2 месяца, очень нужен совет гуру.

Сначала поясню ход мои дел:
1) прикрутил freeRTOS (на плате Stm32f4Dyscovery), каждый процесс моргает светодиодами
2) далее научился работать с дисплеем на контроллере SSD1963. Т.к. на экране много бывает разных графиков, решил запилить каждый график как класс с методами типа Refresh, AddXY , Clear и.т.д. Пришлось переключить язык проекта на C++
...
3) Теперь надо прикручивать freeRTOS и компилятор начал ругаться на каждую 10ую строку в файлах freeRTOS. Особенно где есть работа с передачей указателей от функций, памятью.

Вопрос:
Был ли у кого опыт "укрощения" freeRTOS при использовании c++?
Не уверен, что если всё в файлах RTOS обвешать extern "C", то она заработает.

Сейчас вижу три варианта решения проблемы:
1) Укрощать freeRTOS и заставить работать при Cи++
2) Написать вместо класса TGraph альтернативу на чистом Си и переключить язык обратно на Си
3) (не знаю можно ли так) Сделать как-то так, чтобы часть файлов проекта была на Cи++ , а часть на Си

Спасибо за внимание =)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2013, 16:09
Ответы с готовыми решениями:

Как скомпилировать в IAR для работы FreeRTOS в LPC1778?
Имеется код вот отсюда http://microsin.ru/content/view/1304/44/ int main( void ) { ...

freertos+CubeMX+IAR
С наступающими дорогие коллеги! Прошу просвятить если не трудно по такому вопросу ибо в сети нашел...

stm32f107vc + ethernet + freertos + IAR + lwIP
Добрый день всем. Взял я пример вот с этого сайта. catethysis.ru/stm32-lan8720-freertos-iar/ У...

STM32 + IAR + FreeRTOS, писать на C или C++
Пишу для STM32 на IAR. Всегда писал на чистом С, т.к. учился в основном на примерах в интернете, а...

Настройка FreeRTOS для STM32F207 IAR
Всем добрый день Настраиваю FreeRTOS Компилятор никаких ошибок не выдаёт. Задачи создаются делаю...

8
otik-vp
31.01.2013, 17:40 2
Дополнение:

оказывается всё таки freeRTOS должно работать с Си++, т.к. во многих файлах содержатся вставки типа
#ifdef __cplusplus
extern "C" {
...

Единственное на что сейчас ругается компилятор IARa - это на тип void*:
Error[Pe513]: a value of type "void *" cannot be assykned to an entity of type "A_BLOCK_LINK *"
0 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 96
31.01.2013, 23:44 3
3 вопрос. В опция IARa, есть возможность сделать проект смешанным - Automatic (extension based) - на основании расширения файла. Сам я никогда такой опцией не пользовался.
Переход на С++ поддерживаю.

Цитата Сообщение от otik-vp
Дополнение:
Единственное на что сейчас ругается компилятор IARa - это на тип void*:
Error[Pe513]: a value of type "void *" cannot be assykned to an entity of type "A_BLOCK_LINK *"
Да, С++ более строго типизирован.
Сделайте явное приведение типа переменной void * к типу A_BLOCK_LINK *. Желательно по плюсовому http://alenacpp.btogspot.ru/2005/08/c.html
0
otik-vp
01.02.2013, 01:54 4
tuko, спасибо!

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

Проект компилируется, единственное вываливается на моменте linking...
Error[Li005]: no defymition for "xQueueKimericReceive" и еще 5 подобных функций.
Компилятор не видит 5 функций (из файла timers.c), они находятся в queue.c, все заголовочные файлы прописаны.

Моя сонная голова уже не может понять в чем дело.
Может у кого получится:
http://yody.sk/d/97FzPANK2IEKT
Кто доделает, тот получит шаблонн-проект IAR для Stm32f4Dyscovery и freeRTOS 7.3.0 (на данный момент последняя), который мигает светодиодами, обрабатывает нажатие кнопки и шлет символы по USORT1,2 :)))
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 798
01.02.2013, 05:12 5
Две недели ебал себе мозг, как заставить работать под плюсами. Переопределние не помогает - там временами под одним войдом два разных типа скрываются. В результате забил и сказал "хер с тобой, собирай просто" и сделал в проекте папочку c++ sources, ибо автоматически по расширению файлов не работал как хотелось бы. главное, и все на самом деле просто стало - в майн.с делаешь таски и extern void prvTask(void *params), и вкладываешь хедер. в хедере вокруг прототипов ставишь extern "c". Работает. Сегодня уже не очень варит голова, если надо будет - завтра могу чуть-чуть сырцов выложить и показать, как оно у меня под lpc1768 настроено
0
otik-vp
01.02.2013, 11:13 6
Да благословит бог разработчиков IARa ! ^_^

Сейчас просто поставил в настройках проекта Language -> Auto (extension based). Все файлы проекта переименовал в *.cpp кроме файлов freeRTOS - и... заработало! Т.е. всё кроме freeRTOS откомпилировалось в C++ style.

Самое интересное, что мне даже не понадобилось вводить никаких extern "C" в main.cpp для создания задач и запуска шелдулера.
Не знаю, как она себя дальше покажет, но свой минимум она пока выполняет: одна задача выводит инфу на экран, вторая тянет через DMA информацию с GPS
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 39
12.02.2014, 15:49 7
кстати, возможно, понадобится переопределить new/delete, чтоб они выделяли/освобождали память с помощью pvPortMalloc/vPortFrii
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 798
12.02.2014, 17:50 8
возможно ты опоздал на год и 11 дней с последнего ответа
0
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 39
14.02.2014, 14:45 9
да, на год-то я и не поглядел :D
0
14.02.2014, 14:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2014, 14:45
Помогаю со студенческими работами здесь

STM32F4 - USB Host+FreeRTOS под IAR виснет
Плата F4Dyscovery. Пишу в IAR. Написал простенький MP3 плеер - читает с USB флешки MP3 файл и...

IAR Internal Error: нужна помощь по IAR и по C++
Просьба к тем, у кого есть IAR AVR версии выше, чем 5.11B/W32 (5.11.2.5): не могли бы вы...

FreeRTOS
Порт FriiRTOS для STM8 - попытки были?

вопрос по FreeRTOS
Добрый день. Вопрос простой, но ответа найти никак не могу. Есть ли в FriiRTOS callback при...

FreeRTOS, задачи
Добрый день всем. Начал изучать изучать FreeRTOS. И на толкнулся на то, что не могу создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru