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

 
 
> Не переопределяется функция в CrossWorks, .weak irq_handler
Andrei....
сообщение Nov 28 2006, 18:42
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Не переопределяется функция irq_handler в CrossWorks, точнее будет сказать из этого файла не видится другая функция с таким именем. тест примерно такой:
...
ldr pc, [pc, #irq_handler_address - . - 8]
...
irq_handler_address:
.word irq_handler

irq_handler:
b irq_handler

.weak irq_handler

в другом файле:
void irq_handler(void) __attribute__ ((interrupt ("IRQ")));
void irq_handler(void)
{
...
}

что бы могло быть???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
etoja
сообщение Nov 29 2006, 09:49
Сообщение #2


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

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Попробуй в ассемблерном тексте написать так:

.extern __irq_handler
или
.word __irq_handler
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Nov 29 2006, 10:01
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



пробовал, не видит из асембленого файла идентификатор __irq_handler, собственно в этом то и проблема, если бы видел внешний идентификатор, то и irq_handler бы переопределился.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Nov 29 2006, 10:14
Сообщение #4


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



сейчас выяснил, что если файл в котором описана ф-ия irq_handler компилировать как си, то всё нормально, а если как с++, то внешняя ф-ия irq_handler не видится. не понятно почему?
Go to the top of the page
 
+Quote Post
etoja
сообщение Nov 29 2006, 10:26
Сообщение #5


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

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



У меня твой пример корректно компилируется. Тебе следует поставить патч на компилятор.
Посмотри обсуждение некорректной обработки прерывания IRQ в присоединённом документе.

http://electronix.ru/forum/lofiversion/index.php/t21799.html
Прикрепленные файлы
Прикрепленный файл  _____________IRQ.doc ( 104.5 килобайт ) Кол-во скачиваний: 248
 
Go to the top of the page
 
+Quote Post
Alex03
сообщение Nov 29 2006, 11:11
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(Andrei.... @ Nov 29 2006, 12:14) *
сейчас выяснил, что если файл в котором описана ф-ия irq_handler компилировать как си, то всё нормально, а если как с++, то внешняя ф-ия irq_handler не видится. не понятно почему?


extern "C" попробуй для irq_handler-а.
Go to the top of the page
 
+Quote Post
Alexey Bishletov
сообщение Nov 29 2006, 11:45
Сообщение #7


Частый гость
**

Группа: Новичок
Сообщений: 121
Регистрация: 15-08-06
Пользователь №: 19 557



Цитата(Andrei.... @ Nov 29 2006, 10:14) *
сейчас выяснил, что если файл в котором описана ф-ия irq_handler компилировать как си, то всё нормально, а если как с++, то внешняя ф-ия irq_handler не видится. не понятно почему?

Для С и С++ используются разные способы превращения имен функций и переменных из исходного текста в ассемблерный текст. Для С это превращение как-то прогнозируемо (т.е. добавляется _ в начале имени или совсем не изменяется), а для С++ полный бардак.
Go to the top of the page
 
+Quote Post
Andrei....
сообщение Nov 29 2006, 13:12
Сообщение #8


Частый гость
**

Группа: Новичок
Сообщений: 104
Регистрация: 20-03-06
Пользователь №: 15 402



Цитата(Alexey Bishletov @ Nov 29 2006, 11:45) *
Для С и С++ используются разные способы превращения имен функций и переменных из исходного текста в ассемблерный текст. Для С это превращение как-то прогнозируемо (т.е. добавляется _ в начале имени или совсем не изменяется), а для С++ полный бардак.

Да, спасибо, extern "C" помогло.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:37
Рейтинг@Mail.ru


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