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

 
 
> Вектора прерываний в .ASM STM8 IAR, Создание обработчика прерывания на ASM
AShurick
сообщение May 27 2011, 15:22
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 4-10-09
Из: Киев Украина
Пользователь №: 52 743



Суть проблемы: Есть обработчик прерывания написанный на ассемблере. Как прописать вектор прерывания на обработчик в ASM файле? В IAR трансляторе ассемблера для AVR можно было сделать так:
Код
        NAME IntTable
        extern switch_int
        COMMON INTVEC(1)
        ORG TIMER0_OVF_vect
        JMP switch_int
        ENDMOD


А вот под STM8 вектора прерывания вставляются перед векторами размещенными С компилятором по коду:
Код
        section   .intvec:CODE
;-------------------------------------------------------------------------------
        DS32    1;RESET
        DS32    1;TRAP
        DS32    1;NMI
        DC32    $82000000 + switch_int
       .........................


Или вектора прерываний затираются векторами определенными в С программе
Код
        section   .intvec:CODE:NOROOT(2)
;-------------------------------------------------------------------------------
        DS32    1;RESET
        DS32    1;TRAP
        DS32    1;NMI
        DC32    $82000000 + switch_int


Сразу поясняю что нужно мне именно на ассемблере, т.к. это процедура переключения контентов в своей кооперативной ОС.

Сообщение отредактировал IgorKossak - May 27 2011, 20:05
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение May 27 2011, 20:18
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Если я правильно понял, у IAR/STM8 таблицы векторов изначально заполнена weak-метками вида _interrupt_1
Достаточно в исходнике объявить метку с таким именем и линкер вместо адреса weak-затычки из библиотеки поставит адрес этой метки.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
AShurick
сообщение May 28 2011, 06:28
Сообщение #3





Группа: Участник
Сообщений: 5
Регистрация: 4-10-09
Из: Киев Украина
Пользователь №: 52 743



Цитата(ReAl @ May 27 2011, 23:18) *
Если я правильно понял, у IAR/STM8 таблицы векторов изначально заполнена weak-метками вида _interrupt_1
Достаточно в исходнике объявить метку с таким именем и линкер вместо адреса weak-затычки из библиотеки поставит адрес этой метки.

Пробовал в ASM вставлять метки типа _interrupt_3: или как на C AWU_vector: - результат полный игнор. Линкер вставляет в вектора прерываний заглушки, т.е. затирает таблицу векторами определенными в C файле.
Go to the top of the page
 
+Quote Post



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

 


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


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