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

 
 
> Не могу скомпилить FREERTOS в IAR ARM 5.50
MALLOY2
сообщение Jun 6 2010, 09:44
Сообщение #1


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Не могу скомпилить FREERTOS в IAR ARM 5.50 если включаю "Multi-file Compilation", как только подключаю queue.h компилятор выдает кучу таких ошибок

Цитата
Error[Pe1061]: declaration of function "xQueueGenericSend" is incompatible with a declaration in another translation unit D:\Develop\xxxx\Firmware\Cortex\Source\FreeRTOS\Include\queue.h 472
the other declaration is at line 451 of "D:\Develop\xxxx\Firmware\Cortex\Source\FREERTOS\queue.c"


Уже второй день бьюсь не могу их подружить. Без "Multi-file Compilation" работает все нормально.

Как только пост создал и проблема частично решилась.

Вся беда в том что, в queue.h тип xQueueHandle обьявлен как void
Код
typedef void * xQueueHandle;


а в queue.c как структура
Код
typedef xQUEUE * xQueueHandle;


Вылечил так.

Подключил queue.h в queue.c
Определение структуры xQUEUE вынес в queue.h сюдаже и определение типа xQueueHandle. Все собралось, еще не осознал чем это грозит, да и не красиво как то, может есть еще варианты ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MALLOY2
сообщение Jun 6 2010, 10:24
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Решил более красивее сделать и на этом остановиться в файле queue.h земеняем определение
Код
typedef void * xQueueHandle;


на

Код
struct QueueDefinition;  //<-- forward declaration
typedef struct QueueDefinition* xQueueHandle;


Цитата
А оно Вам надо?


Просто это наиболее быстрый метод достижения цели как мне кажется. Есть старый проект который строился и строился. Теперь ему немного не хватает ресурсов по скорости, можно конечно поставить еще мощнее проц но это же не быстро, сильно вникать в чужие алгоритмы с целью их оптимизации тоже не то, просмотрев код увидел один геморой типа: код кочевал по разным платформам и операционкам в итоге функции обрасли трех этажными обьвертками а так как они находятся в разных модулях компилятор соответственно делает трех этажные вызовы, немного попробывал через дефайны упростить вроде лучше становится, но дефайны это еще один камень в этом огороде, вот и решил попробывать Multi-file Compilation с надеждой что он все за инлайнит.

"discard unused public" - глюк еще тот никогда не включаю.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 6 2010, 10:56
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(MALLOY2 @ Jun 6 2010, 13:24) *
вот и решил попробывать Multi-file Compilation с надеждой что он все за инлайнит.

Так Вы, вроде, за размер бьетесь? В размере, конечно, multi-file тоже чем-то поможет, но цена может показаться чрезмерной. Вообще это лучше делать по месту ручками - все это практически выливается в ключик --mfc. Вот с ним и можно поиграться объединяя некоторые файлы, а не все огульно. Ну оптимизацию для каждого из файликов подобрать свою.


Цитата(MALLOY2 @ Jun 6 2010, 13:24) *
"discard unused public" - глюк еще тот никогда не включаю.

Дык тоже, просто проектик делался с отдачей исходников с последующим сопровождением заказчиком, вот я постфактум тупо в IDE копию проекта и делал. Промахнулся с галочкой sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



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

 


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


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