Перейти к содержанию
    

Проблема с компоновщиком Code Composer Studio 4.2.4.00033

Пытаюсь создать проект для OMAP-L138/ При сборке проекта постоянно выскакивает ошибка в консоли, что линкёр не может найти исходники конфигурационных файлов Пример сообщения:

 

'Building file: aco_modcfg.s??'

 

'Invoking: Compiler'

 

"C:/ccs4/ccsv4/tools/compiler/C6000 Code Generation Tools 6.1.20/bin/cl6x" -mv6740 -g --include_path="C:/ccs4/ccsv4/tools/compiler/C6000 Code Generation Tools 6.1.20/include" --include_path="H:/MyWorks/worcs/acoustic/other/edma3_lld_01_11_02_05/packages/ti/sdo/edma3/../../../" --include_path="H:/MyWorks/worcs/acoustic/other/pspdrivers_01_30_01/packages/ti/pspiom/../../" --include_path="H:/MyWorks/worcs/acoustic/other/edma3_lld_01_11_02_05/packages/ti/sdo/edma3" --include_path="H:/MyWorks/worcs/acoustic/other/pspdrivers_01_30_01/packages/ti/pspiom" --include_path="H:/MyWorks/worcs/acoustic/project_analog_board/soft/soft_of_acoustic_board/program 6/Debug" --include_path="C:/ccs4/bios_5_41_10_36/packages/ti/bios/include" --include_path="C:/ccs4/bios_5_41_10_36/packages/ti/rtdx/include/c6000" --diag_warning=225 --preproc_with_compile --preproc_dependency="aco_modcfg.pp" ""

 

>> ERROR: no source files, nothing to do

 

 

'Finished building: aco_modcfg.s??'

 

Все пути в опции File Searсh Path определены. Причём тоже самое повторяется при попытке сборки любых проектов, даже тех, которые входят в состав примеров PSP. Не знаю, что и думать. Если кто уже встречался с данной проблемой, и успешно решил её, прошу откликнуться. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Также мною было замечено довольно странное поведение Code Composer. Иногда проекты, представленные в качестве примеров, собираются отнюдь не с первого раза. Так один проект я пытался собрать 5 раз. При этом выскакивала ошибка, описанная мной раннее, и проект, естественно не создавался. На шестой попытке мне был выдан бинарник проекта без каких-либо нареканий со стороны программы. Неужели эта среда настолько нестабильна?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Очень кривой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переустановил CCS. Сейчас стал работать более менее, хотя и периодически возникает предыдущая проблема.

Однако теперь появилась ещё одна странная ошибка. При попытке собрать проект компилятор выводит мне в консоле следующее сообщение об ошибке:

 

undefined first referenced

symbol in file

--------- ----------------

_SpiUserInit ./aco_modcfg.obj

_Spi_localEdmaTransfer H:\MyWorks\worcs\acoustic\other\pspdrivers_01_30_01\packages\ti\pspiom\spi\lib\OMAPL138\Debug\ti.pspiom.spi_EDMA_OFF.a674<Spi.obj>

edma3init() ./main_Acoustic.obj

_mcaspUserInit ./aco_modcfg.obj

_receive_Data ./aco_modcfg.obj

 

error: unresolved symbols remain

error: errors encountered during linking; "program11.out" not built

 

>> Compilation failure

gmake: *** [program11.out] Error 1

gmake: Target `all' not remade because of errors.

Build complete for project program11

 

 

 

То есть мне сообщается, что не определяются часть функций, которые я объявил преимущественно в конфигурационном файле aco_mod.tcf. Это функции инициализации для используемых в моём проекте драйверов устройств. К примеру, вот скриншот программы Configuration Tool, где развёрнуты свойства драйвера mcasp0: post-13278-1324028956_thumb.png . Как здесь видно, в качестве функции инициализации используется mcaspUserInit. А вот часть исходного файла, где эта функция определена: post-13278-1324029313_thumb.png . Также ещё приведу часть map файла, которая вызывает у меня недоумение: post-13278-1324029570_thumb.png. Здесь видно, что компилятор создал два символа _mcaspUserInit, который не определён, и _mcaspUserInit__Fv, который, наоборот, определён. Не могу понять, по какой причине было создано два символа в карте памяти? Что означает добавление суффикса Fv к имени функции? Буду благодарен всем ответившим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что это за странное определение???:

extern void mcaspUserInit(void)

{ ... }

по-моему у компилятора от него крышу снесло :)

 

Определение функции в си или си++ (даже в си уже можно void в списке аргументов опускать в современных компилёрах):

void mcaspUserInit()

{ ... }

 

Далее, если хотите вызывать её из других файлов, то в хидере объявляете её:

void mcaspUserInit();

и вставляете include с данным хидером везде где надо (и перед определением тела функции тоже)

всё!

 

Если у вас си, то в obj-файл попадёт имя функции: _mcaspUserInit

Если C++: _mcaspUserInit__Fv (к имени добавляются спец-символы, указывающие на тип принимаемых и возвращаемых аргументов, что необходимо для механизма перегрузки функций си++).

 

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

extern "C" void mcaspUserInit();

тогда, даже если исходники компилятся в режиме си++, то всё равно в obj попадёт _mcaspUserInit , но тут никаких уж перегрузок, не обессудьте.

а ещё можно так:

extern "pascal" void mcaspUserInit();

:)

 

ЗЫ: А вообще - полезно читать pdf-ы на процессор, особенно разделы типа "Run-Time Environment".

Изменено пользователем jcxz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, спасибо за ответ. Дело было действительно в том, что я определил функцию в файле формата c++, а вызвал её из tcf файла, ориентированного на c формат. Вот со мной и сыграло злую шутку то, что c++ намеренно искажает имена функций, чтобы иметь возможность поддерживать их перегрузку . Стоило объявить функцию в виде extern "C" Void mcaspUserInit(Void) и всё стало тип топ. Вот такой я дуралей :smile3046: Вопрос закрывается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...