Всем привет. Топик не совсем по теме линукса. В надежде найти хоть какую помощь в решении проблемы.
Установил RTEMS для stm32f446re. В качестве hello world, решил понажимать на кнопку и по прерыванию от этой кнопки вывести текст в консоль. Я не использую HAL, взял свой драйвер gpio и exti(проверялись, работают), немножко дописал makefile для примера hello_world_c(RTEMS) и получил следующую проблему, от которой уже башка кипит далеко уже не первый день.
Вот сам проект try_rtems. Коротко что делаю: 1. создаю задачу
rtems_task init(__attribute__((unused)) rtems_task_argument ignored)
{
rtems_id tid = 0;
rtems_task_create(
rtems_build_name('M', 'I', 'M', 'U'),
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_INTERRUPT_LEVEL(0),
RTEMS_LOCAL,
&tid);
rtems_task_start(tid, exti_event, 0);
rtems_task_delete(RTEMS_SELF);
}
Что ещё: в доке от rtems'a в C user guide указан директива rtems_interrupt_catch, про rtems_interrupt_handler_install там ни слова. Узнал про неё лишь тогда когда написал в mail list rtems community. Там мне ответил человек, что у него всё ок - он используя hal, используя rtems_interrupt_handler_install у него всё работает. А у меня уже фантазия заканчивается в чём может быть проблема. Лазал по различным заголовочным файлам, чего только не пробовал, всё едино - не работает. Посему прошу помощи знающих людей, которые работают с RTEMS - как корректно проинициализировать менеджер прерываний?
З.Ы. прошу строго не судить код в репозитории, это всё таки пример, а не рабочий проект.