Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конструкторы глобальных объектов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
AlexBoy
Кто-нибудь сталкивался с траблом, что конструкторы глобальных объектов не выполняются?
Пишу в ADS 1.2. Может дело в startup файле?
Собственно тот кусок, который уходит на инициализацию такой:
IMPORT __main
ldr r0, =__main
mov lr, pc
bx r0
Master
Цитата(AlexBoy @ Aug 28 2006, 20:43) *
Кто-нибудь сталкивался с траблом, что конструкторы глобальных объектов не выполняются?

Вообще поиск ведь существует и работает twak.gif smile.gif
Хотя по большей части ответы по IAR, но в ADS может оказаться схожее решение.
Почитайте здесь (про IAR). А если короче, то нужно в переходе сменить толи с bx main на bx ?main, то ли наоборот...
sergeeff
main() – первая вызываемая функция прикладной программы. Так что глобальные конструкторы должны вызываться до main (соответственно в startup модуле перед main). В разных компиляторах это сделано по-разному. Например MSVC имеет специальную функцию void _cinit(void). Или же придется самому эту операцию инициализации прописать на ассемблере.
AlexBoy
Цитата(sergeeff @ Sep 2 2006, 14:04) *
main() – первая вызываемая функция прикладной программы. Так что глобальные конструкторы должны вызываться до main (соответственно в startup модуле перед main). В разных компиляторах это сделано по-разному. Например MSVC имеет специальную функцию void _cinit(void). Или же придется самому эту операцию инициализации прописать на ассемблере.


там стоит переход на __main, это функция инициализации библиотек, которая затем переходит на main(), я проверял пошагово. Возможно еще что-то вызвать нужно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.