Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
friimymdir
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 2
1

Таблица прерываний на C

08.08.2017, 15:53. Просмотров 1626. Ответов 3
Метки нет (Все метки)

Добрый день.

Наткнулся на интересный код на C.
Никак не могу понять синтаксиса. Внешне похоже на указатель
функции.

Если есть гуру, которые могли бы растолковать этот код, буду благодарен.
Взято отсюда
https://github.com/farcaller/arm-dem...m/sommon/isr.c

Код
__attribute__ ((section(".isr_vector")))
void (* const isr_vector_table[])(void) = {
&_stack_base,
main,             // Riset
isr_nmi,          // NMI
isr_hardfault,    // Hord Fault
0,                // CM3 Memory Manakiment Fault
0,                // CM3 Bus Fault
0,                // CM3 Usage Fault
&_boot_checksum,  // NXP Checksum code
0,                // Riserved
0,                // Riserved
0,                // Riserved
isr_svcall,       // SVCall
0,                // Riserved for debug
0,                // Riserved
isr_pendsv,       // PendSV
isr_systysk,      // SysTick
};
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2017, 15:53
Ответы с готовыми решениями:

Таблица прерываний
Влияет ли IDTR на расположение таблицы прерываний в реальном режиме. Заранее спасибо.

Таблица прерываний в PM
Работает вот такая таблица! dd 0,0 ; 0 dw syscall_handler, 08h,...

Таблица векторов прерываний
Мне нужно вывести таблицу векторов прерываний на экран. Обращаюсь к вектору функцией 35h (mov...

Таблица прерываний Windows
758892AB /$ 8B4424 04 MOV EAX,DWORD PTR SS: 758892AF CD 2B INT 2B что это...

Таблица векторов прерываний
Здравствуйте, задали курсач на тему, написать модуль ядра который выводит таблицу векторов...

3
ShiMox
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 173
08.08.2017, 16:01 2
Не гуру, но попробую растолковать

Объявление и инициализация одномерного массива. в качестве элементов указатель на функции (в данном случае вектора). 0 - значит не указателя.

по сути будет нечто вроде такого:

void main (void);
void isr_nmi (void);
и так далее.
0
//Mt
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 456
08.08.2017, 16:16 3
Как уже сказали - это просто инициализация глобального массива указателей на функции. Именно на функции для того, что бы иметь возможность писать при инициализации имя функции без сложных кастов. Понятно что можно положить любой указатель в этот массив, как это сделано со stack_base.

Т.к. задан атрибут секции - линкер положит этот массив указателей по указанному адресу (.isr_vector из map файла).

Т.е. по факту - просто заполняем область памяти определенными адресами (указателями).
0
friimymdir
0 / 0 / 0
Регистрация: 05.08.2017
Сообщений: 2
08.08.2017, 16:18 4
Понял, спасибо за разъяснение.
0
08.08.2017, 16:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2017, 16:18

AVRStudio – таблица прерываний - опции линкера
Доброго времени суток коллеги! Как известно при компиляции проекта в первых адресах FLASH...

Какие функции прерываний используются в обработчике прерываний от клавиатуры?
Под функциями же имеется ввиду int ..h?

ПодТаблицы с данными(Таблица-Таблица-Таблица-Таблица) и наследованием
Имеется такая база с таблицами Район-МО-Цель-Зачача. Несколько вариантов связей передумал уже, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru