Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Компилятор RealView пакета MDK3.40
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sonycman
В проекте uVision есть асмовый файл (startup.s) и несколько сишных .cpp.
Потребовалось передать в таблицу векторов в асм адрес функции, определённой в си.

Ну воткнул в асм IMPORT label_name перед указанием метки. Вроде всё правильно.
Все файлы компилируются, но линкер безостановочно ругается на undefined symbol "label_name" 07.gif
Твою мать. Весь вечер убил на ковыряние - оказалось, виной всему было расширение файла с функцией - .cpp. Переименование в .c решает проблему (но добавляет другие smile.gif)
Или ещё можно выкрутиться заключеним функции в обёртку extern "C" {}...

Но почему линкеру необходимы именно "чистые" си, а не плюсы для поиска внешних меток?
Что за причуда? wacko.gif
sonycman
Хм, компилирую свой проект с использованием MicroLib, проект простой, имеет всего два небольших класса.
Однако сейчас на этапе линковки стала вылетать такая ошибка:
Код
.\obj\blinky.axf: Error: L6218E: Undefined symbol __cpp_initialize__aeabi_ (referred from anon$$obj.o).

При снятии галочки с Use MicroLib в свойствах проекта - ошибка пропадает, всё собирается нормально.

Никто не сталкивался с подобным? Так ли актуальна эта microlib?

ЗЫ: вроде разобрался - это вызов библиотечного обработчика конструкторов объектов С++.
А у микролиб с этим проблемы - если есть глобальный объект с конструктором, то такая ошибка обеспечена.
Если создаём локальный объект - всё нормально 05.gif
Чёрт, а стандартная либа жрёт на 500 байт больше - это пока. Но зато никаких ограничений smile.gif
defunct
Цитата(sonycman @ Dec 30 2008, 17:08) *
Никто не сталкивался с подобным? Так ли актуальна эта microlib?

Она актуальна для мелких чипов (8-16K Flash). Если у Вас более толстый чип, можно ее не использовать.

По поводу актуальности для мелких чипов, вы уже сами ответили smile.gif.
К примеру, голый main() с microlib компилируется в ~300байт кода, без нее - ~900.
sonycman
Понятно, спасибо smile.gif

В соседней теме я высказался по поводу отсутствия хидеров с определениями регистров периферии для семейства STM32.
Поэтому приходится частично юзать библиотеку.

Но у неё, похоже, проблемы с С++ - чего стоит переопределение bool и несколько других предупреждений при компиляции - без правки исходника не обойтись 05.gif
Эта версия шла в комплекте с MDK3.40.

Надо глянуть на сайте ST, может есть исправленная версия...

ЗЫ: точно - скачал с их сайта обновлённую версию библиотеки - добавлены определения всех битов!
Но заточку под plain C так и не убирали - на плюсах приходится дорабатывать напильником пару строчек sad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.