proga 0 15 декабря, 2011 Опубликовано 15 декабря, 2011 · Жалоба Пытаюсь создать проект для 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. Не знаю, что и думать. Если кто уже встречался с данной проблемой, и успешно решил её, прошу откликнуться. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
proga 0 15 декабря, 2011 Опубликовано 15 декабря, 2011 · Жалоба Также мною было замечено довольно странное поведение Code Composer. Иногда проекты, представленные в качестве примеров, собираются отнюдь не с первого раза. Так один проект я пытался собрать 5 раз. При этом выскакивала ошибка, описанная мной раннее, и проект, естественно не создавался. На шестой попытке мне был выдан бинарник проекта без каких-либо нареканий со стороны программы. Неужели эта среда настолько нестабильна? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 16 декабря, 2011 Опубликовано 16 декабря, 2011 · Жалоба У меня с ним тож - проект то нормально компилится, то потом (без всяких изменений) начинают вылазить какие-то левые ошибки. Очень кривой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
proga 0 16 декабря, 2011 Опубликовано 16 декабря, 2011 · Жалоба Переустановил 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: . Как здесь видно, в качестве функции инициализации используется mcaspUserInit. А вот часть исходного файла, где эта функция определена: . Также ещё приведу часть map файла, которая вызывает у меня недоумение: . Здесь видно, что компилятор создал два символа _mcaspUserInit, который не определён, и _mcaspUserInit__Fv, который, наоборот, определён. Не могу понять, по какой причине было создано два символа в карте памяти? Что означает добавление суффикса Fv к имени функции? Буду благодарен всем ответившим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 16 декабря, 2011 Опубликовано 16 декабря, 2011 (изменено) · Жалоба А что это за странное определение???: 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". Изменено 16 декабря, 2011 пользователем jcxz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
proga 0 17 декабря, 2011 Опубликовано 17 декабря, 2011 · Жалоба Ага, спасибо за ответ. Дело было действительно в том, что я определил функцию в файле формата c++, а вызвал её из tcf файла, ориентированного на c формат. Вот со мной и сыграло злую шутку то, что c++ намеренно искажает имена функций, чтобы иметь возможность поддерживать их перегрузку . Стоило объявить функцию в виде extern "C" Void mcaspUserInit(Void) и всё стало тип топ. Вот такой я дуралей :smile3046: Вопрос закрывается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться