реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблема с определением обработчика SVC_Handler, Не воспринимается пользовательское "сильное" определение.
KnightIgor
сообщение Apr 27 2014, 09:15
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Привет коллегам по обе стороны границы.

Пользую KEIL 5.х. Странные вещи творятся.

Есть у меня моя библиотека, в которой есть обработчик void SysTick_Handler(void). Все работает замечательно.

Замутил я тему с SVC_Handler. По-быстрому добился, чего хотел, из удобства пробуя в том же файле, где и SysTick_Handle. Затем решил перенести все, что касается SVC_Handler, в отдельный *.c файл, который, конечно, включил в проект библиотеки. После чего с удивлением обнаружил, что компоновщик не "видит" моё определение SVC_Handler и оставляет слабое. Вернул текст (copy-paste) снова в файл, с которого начинал (где SysTick_Handler определен), все снова заработало.

Я в шоке.

Идеи?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Apr 27 2014, 10:14
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



включать свою функцию в проектный файл, не в библиотеку.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Apr 27 2014, 11:14
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Genadi Zawidowski @ Apr 27 2014, 11:14) *
включать свою функцию в проектный файл, не в библиотеку.

А в чем разница? SysTick_Handler работает. SVC_Handler тоже, пока в том же файле, где и SysTick_Handler, находится. Все в библиотеке.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Apr 27 2014, 12:44
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(KnightIgor @ Apr 27 2014, 15:14) *
А в чем разница? SysTick_Handler работает. SVC_Handler тоже, пока в том же файле, где и SysTick_Handler, находится. Все в библиотеке.

Если нет возможности узнать, или повлиять на приоритеты, которые линкер использует при поиске функций среди библиотек - предлагаю сделать так, чтобы функция была не в библиотеке, а в обязательно линкуемом файле - файле проекта.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Apr 27 2014, 16:49
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Genadi Zawidowski @ Apr 27 2014, 13:44) *
Если нет возможности узнать, или повлиять на приоритеты, которые линкер использует при поиске функций среди библиотек - предлагаю сделать так, чтобы функция была не в библиотеке, а в обязательно линкуемом файле - файле проекта.

Так прикол в том, что она нормально подключается, будучи в библиотеке, но только, если остается в одном файле вместе с другой подобной функцией. Мне не нужен work around как ответ - я уже сам вынуждено применил его, сведя обе функции в один файл. Мне нужно понимание, почему иначе не работает. В этом и вопрос.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 16:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01354 секунд с 7
ELECTRONIX ©2004-2016