Сергей Борщ 143 2 ноября, 2007 Опубликовано 2 ноября, 2007 · Жалоба В обоих указан инклюд, в котором находится конфликтующая ф-я. Причом она инлайновая.Похоже этот заголовочник отлаживался в С++ режиме, а вы его пытаетесь в С использовать. Допишите перед определением функции static. 1 склеим все хедеры в один 2 склеим все сишники в один 3 склеим склееное в один супер сишник 4 выкинем лишнее, оставшееся от хедеров Получаем удовольствие :08: Получаем CodeVisionAVR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 2 ноября, 2007 Опубликовано 2 ноября, 2007 · Жалоба Охранные директивы в этом хедере есть. В чем проблема? А причем тут охранные директивы? Они нужны только чтобы при компиляции хидер только один раз включался, если вдруг хидер по каким-то причинам несколько раз подключен. В вашем случае имеется два тела инлайновой (это кстати не главное в данном случае) функции в разных модулях. Вот линкер и не может разобраться. Надо бы ограничить зону видимости этой функции. Наверное static поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NikolayZ 0 4 ноября, 2007 Опубликовано 4 ноября, 2007 · Жалоба Линкер выдает такую ошибку: Error[e27]: Entry "AT91F_ADC_CfgModeReg" in module BasicWEB ( ..\BasicWEB.r79 ) redefined in module SAM7_EMAC ( ..\SAM7_EMAC.r79 ) В обоих указан инклюд, в котором находится конфликтующая ф-я. Причом она инлайновая. #include <lib_AT91SAM7X256.h> С АЦП я вообще не работаю. Охранные директивы в этом хедере есть. В чем проблема? Это уже линкер обругал Ваши объектные файлы... АЦП тут вовсе непричем. Просто у Вас скорее всего в сишных файлах и/или инклюдниках есть два объявления функции AT91F_ADC_CfgModeReg, а именно в файлах BasicWEB.с ( или в асмовском) и в файле: SAM7_EMAC.c ( или в асмовском) Да Вы и сами причину написали: В обоих указан инклюд, в котором находится конфликтующая ф-я. Причом она инлайновая. вот не должно так быть... Охранные директивы - охраняют только в пределах одного *.c файла, между ними - охранные директивы не работают. Вот Вы и получили - в разных модулях - одну и ту же функцию, а линкер это обнаружил... Все правильно... Наверное static поможет. либо попробовать ее в одном из файлов как extern объявить, но если она не inline-естествоенно... мне вообще странно что inline-функция вылезла аж до линкера. Вроде бы ее тело должно просто быть подставлено в текст программы в каждой точке ее вызова и она не должна вылазить в распоряжение линкера? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Waso 1 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Видимо проблема в том что компилятор умничает и игнорирует директиву inline, и поскольку эти функции описаны внутри хедера (а не с-шного файла) то получается конфликт. Этот хедер писали сами атмеловцы и не предусмотрели почемуто отключение эвристики компилятора. Хотя они заботливо подменили через дефайн слово inline строкой __inline. Небольшое исправление этого дефайна устранило проблему: Было: #define __inline inline Стало: #define __inline _Pragma("inline = forced") ================================================ Еще маленький вопросик - как в редакторе ИАР табом сдвинуть сразу несколько строк? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Еще маленький вопросик - как в редакторе ИАР табом сдвинуть сразу несколько строк?Как и в большинстве редакторов - выделить несколько строк и нажать таб для сдвига вправо или шифт-таб для сдвига влево. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Waso 1 13 ноября, 2007 Опубликовано 13 ноября, 2007 · Жалоба Спасибо. Просто у меня после паскалевских Ctrl-Shift-K и -N (кажется) не рождается таких простых ассоциаций насчет таба. =))) Еще вопрос - можно ли в ИАР 4.40A при пользовании J-Link запускать отладку не прошивая кристалл? Тоесть прошил я один раз и отлаживаю. Смотрю по шагам прогу. День рабочий закончился или нечаянно вышел из дебаггера, если программу не менял - не хочется зря тратить ресурс флеша при новом запуске дебаггера... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 13 ноября, 2007 Опубликовано 13 ноября, 2007 · Жалоба Еще вопрос - можно ли в ИАР 4.40A при пользовании J-Link запускать отладку не прошивая кристалл?Project->Options->Debugger->Download поставить галочку Suppress Download. Автоматически выключится галочка Use flash loader. Когда захотите прошить снова и будете снимать Suppress Dowload - не забудьте поставить Use flash loader. А можно создать вде конфигурации - одну с прошивкой, другую без. Создавать проще всего в текстовом редакторе, скопровав и переименовав соответствующие секции в *.ewd и *.ewp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться