|
Прерывание в прерывании, Для реализации Super Simple Tasker |
|
|
|
 |
Ответов
|
Nov 17 2017, 18:04
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Знающие люди подсказали такой вариант. У них работает: CODE __attribute__ ((naked)) void SysTick_Handler(void) { /* Multi tasking, enable re-entrancy to interrupt */ arm_cortex_m_call_thread_with_context_switch(SysTick_Isr); }
/* Re-entrant function for multi-tasking: arm_cortex_m_call_thread_with_context_switch*/
__attribute__ ((naked)) void arm_cortex_m_call_thread_with_context_switch(void (* isr_routine_ptr)(void)) { #if (defined(__FPU_PRESENT) && (__FPU_PRESENT == 1)) && (defined(__FPU_USED) && (__FPU_USED == 1)) __asm volatile (" TST LR, #0x10"); __asm volatile (" IT EQ"); __asm volatile (" VMOVEQ S0, S0"); #endif __asm volatile (" PUSH {R0, R1}"); __asm volatile (" SUB SP, SP, #0x20"); __asm volatile (" ADR R0,Call_isr_routine_in_thread_mode"); __asm volatile (" STR R0,[SP, #24]"); __asm volatile (" MOV R0,#0x01000000"); __asm volatile (" STR R0,[SP, #28]"); __asm volatile (" MVNS R0,#0x6"); __asm volatile (" MOV LR, R0"); __asm volatile (" BX LR"); __asm volatile ("Call_isr_routine_in_thread_mode:"); __asm volatile (" POP {R0, R1}"); __asm volatile (" BLX R0"); __asm volatile (" ISB"); __asm volatile (" SVC #0"); __asm volatile ("Unknown_Execution:"); __asm volatile (" B Unknown_Execution"); } /* SVC Interrupt service routine to restore the context: SVC_Handler*/
__attribute__ ((naked)) void SVC_Handler(void) { #if (defined(__FPU_PRESENT) && (__FPU_PRESENT == 1)) && (defined(__FPU_USED) && (__FPU_USED == 1)) __asm volatile (" TST LR, #0x10"); __asm volatile (" IT EQ"); __asm volatile (" VMOVEQ S0, S0"); #endif __asm volatile (" TST LR, #0x4"); __asm volatile (" ITE EQ"); __asm volatile (" MRSEQ R0, MSP"); __asm volatile (" MRSNE R0, PSP"); __asm volatile (" LDR R1, [R0, #24]"); __asm volatile (" LDRB.W R0, [R1, #-2]"); __asm volatile (" CBZ R0, svc_service_0"); __asm volatile (" B Unknown_SVC_Request"); __asm volatile ("svc_service_0:"); #if (defined(__FPU_PRESENT) && (__FPU_PRESENT == 1)) && (defined(__FPU_USED) && (__FPU_USED == 1)) __asm volatile (" TST LR, #0x10"); __asm volatile (" ITE EQ"); __asm volatile (" ADDEQ SP, SP, #104"); __asm volatile (" ADDNE SP, SP, #32"); #else __asm volatile (" ADD SP, SP, #32"); #endif __asm volatile (" POP {R0, R1}"); __asm volatile (" MSR APSR_nzcvq, R0"); __asm volatile (" BX R1"); __asm volatile ("Unknown_SVC_Request:"); __asm volatile (" B Unknown_SVC_Request"); } В итоге SysTick_Isr будет самовложенной. Что скажете?
Сообщение отредактировал IgorKossak - Nov 17 2017, 20:08
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
|
|
|
|
|
Nov 17 2017, 18:56
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(syoma @ Nov 17 2017, 20:04)  Знающие люди подсказали такой вариант. У них работает:
В итоге SysTick_Isr будет самовложенной. Что скажете? Кто-то что-то наковырял в симулинке? А кто тогда покажет файл SysTickScheduler.c? Там невооруженным глазом видно, что обработчик вызывает функцию rt_OneStep в течении которой все! прерывания запрещены. Вот у них и работает. Лузеры!
|
|
|
|
Сообщений в этой теме
arhiv6 Прерывание в прерывании Nov 7 2017, 12:00 Forger Цитата(arhiv6 @ Nov 7 2017, 15:00) один и... Nov 7 2017, 13:02 Студент заборстроительного Цитата(Forger @ Nov 7 2017, 16:02) Цитата... Nov 8 2017, 16:41  Forger Цитата(Студент заборстроительного @ Nov 8 201... Nov 8 2017, 20:41   ig_z QUOTE (Forger @ Nov 8 2017, 22:41) С друг... Nov 9 2017, 20:15    Forger Цитата(ig_z @ Nov 9 2017, 23:15) в каждой... Nov 9 2017, 21:41 arhiv6 Как минимум, это интересно - попробовать разные по... Nov 7 2017, 13:17 Forger Цитата(arhiv6 @ Nov 7 2017, 16:17) А ещё ... Nov 7 2017, 13:30  DASM Цитата(Forger @ Nov 7 2017, 16:30) В мелк... Nov 7 2017, 14:28   Forger Цитата(DASM @ Nov 7 2017, 17:28) Я отказа... Nov 7 2017, 14:45   jcxz Цитата(DASM @ Nov 7 2017, 16:28) Я отказа... Nov 7 2017, 15:04 jcxz Цитата(arhiv6 @ Nov 7 2017, 15:17) Как ми... Nov 7 2017, 15:00 Obam Цитата(arhiv6 @ Nov 7 2017, 16:00) нужно ... Nov 7 2017, 13:44 AHTOXA Цитата(arhiv6 @ Nov 7 2017, 17:00) Как эт... Nov 7 2017, 14:17 ViKo Подтверждаю, RTX RTOS от Keil - весьма достойная п... Nov 7 2017, 14:52 DASM "прихожу лишь к одному выводу " - приход... Nov 7 2017, 14:53 jcxz Цитата(DASM @ Nov 7 2017, 16:53) Вы лучше... Nov 7 2017, 15:08 Forger Цитата(DASM @ Nov 7 2017, 17:53) "пр... Nov 7 2017, 15:18 scifi Гугл вводит на гитхаб. Возможно, всё украдено до н... Nov 7 2017, 15:04 DASM Так может Вы дадите совет, сколько памяти давать к... Nov 7 2017, 15:08 jcxz Цитата(DASM @ Nov 7 2017, 17:08) Так може... Nov 7 2017, 15:11  DASM Цитата(jcxz @ Nov 7 2017, 18:11) А в чём ... Nov 7 2017, 15:29   jcxz Цитата(DASM @ Nov 7 2017, 17:29) Тем, что... Nov 7 2017, 15:58 DASM Я немного преувеличил для ясности. Эти РТОС замеча... Nov 7 2017, 15:11 Forger Цитата(DASM @ Nov 7 2017, 18:11) Эти РТОС... Nov 7 2017, 15:38 DASM Да никто не хает, каждый до..ит как хочет. Просто ... Nov 7 2017, 15:39 Forger Цитата(DASM @ Nov 7 2017, 18:39) Ваши РТО... Nov 7 2017, 15:46 jcxz Цитата(DASM @ Nov 7 2017, 17:39) но навск... Nov 7 2017, 16:11  Forger Цитата(jcxz @ Nov 7 2017, 19:11) Чтобы по... Nov 7 2017, 16:13 arhiv6 Цитата(AHTOXA @ Nov 7 2017, 21:17) Здесь ... Nov 7 2017, 15:59 jcxz Цитата(arhiv6 @ Nov 7 2017, 17:59) Пожалу... Nov 7 2017, 16:16  Forger Цитата(jcxz @ Nov 7 2017, 19:16) Наверное... Nov 7 2017, 17:56 arhiv6 Смотрел я исходники ОС, но они все по похожему при... Nov 7 2017, 17:28 Forger Цитата(arhiv6 @ Nov 7 2017, 20:28) Как пр... Nov 7 2017, 18:27  arhiv6 Цитата(Forger @ Nov 8 2017, 01:27) Как бы... Nov 7 2017, 19:00 jcxz Цитата(arhiv6 @ Nov 7 2017, 19:28) Смотре... Nov 7 2017, 21:33 arhiv6 jcxz, Forger, я не знаю, как правильно сделать, по... Nov 7 2017, 18:14 DASM Меня устраивает карусель кооперативная на таймерах... Nov 7 2017, 18:50 Forger Цитата(DASM @ Nov 7 2017, 21:50) void Led... Nov 7 2017, 19:01 DASM Первое, что приходит в голову так: о как, у меня т... Nov 7 2017, 19:05 Forger Цитата(DASM @ Nov 7 2017, 22:02) Просто к... Nov 7 2017, 19:05  DASM Цитата(Forger @ Nov 7 2017, 22:05) Ну-ну,... Nov 7 2017, 19:08 arhiv6 Цитата(DASM @ Nov 8 2017, 02:05) Первое, ... Nov 7 2017, 19:08 Forger Цитата(DASM @ Nov 7 2017, 22:05) Первое, ... Nov 7 2017, 19:21 jcxz Цитата(DASM @ Nov 7 2017, 21:05) вы шину ... Nov 7 2017, 21:46 DASM Ну да , тут собственно у меня так и есть Nov 7 2017, 19:13 DASM @ Читайте матчасть по ARM Cortex.@ Ладно, спорить ... Nov 7 2017, 19:29 Forger Цитата(DASM @ Nov 7 2017, 22:29) @ Читайт... Nov 7 2017, 19:36  AlexandrY Цитата(Forger @ Nov 7 2017, 21:36) Для те... Nov 7 2017, 20:41   Forger Цитата(AlexandrY @ Nov 7 2017, 23:41) Да ... Nov 7 2017, 21:44  AVR Цитата(Forger @ Nov 7 2017, 22:36) ОК, сл... Nov 8 2017, 08:44   Forger Цитата(AVR @ Nov 8 2017, 11:44) Ради него... Nov 8 2017, 12:53  jcxz Цитата(Forger @ Nov 7 2017, 21:36) Для те... Nov 8 2017, 20:49   Forger Цитата(jcxz @ Nov 8 2017, 23:49) может ес... Nov 8 2017, 20:54 DASM А где тут DMA и что и куда оно грузит? Nov 7 2017, 21:01 AlexandrY Цитата(DASM @ Nov 7 2017, 23:01) А где ту... Nov 8 2017, 06:13 DASM Ну не знаю, у меня на Ардуино все проще, а на мали... Nov 7 2017, 22:35 DASM Да уж.. сколько чудных открытий человек недавно п... Nov 8 2017, 21:23 Forger Цитата(DASM @ Nov 9 2017, 00:23) склетон ... Nov 8 2017, 23:29 syoma Возвращаясь к оригинальной теме по поводу прерыван... Nov 17 2017, 10:45 Forger Цитата(syoma @ Nov 17 2017, 13:45) что AR... Nov 17 2017, 11:07 scifi Цитата(syoma @ Nov 17 2017, 13:45) Каково... Nov 17 2017, 11:15  Forger Цитата(scifi @ Nov 17 2017, 14:15) Всё он... Nov 17 2017, 11:37  syoma Цитата(scifi @ Nov 17 2017, 14:15) Всё он... Nov 17 2017, 12:02   Forger Цитата(syoma @ Nov 17 2017, 15:02) И мое ... Nov 17 2017, 12:17   Obam Цитата(syoma @ Nov 17 2017, 16:02) …Если ... Nov 17 2017, 13:03   AlexandrY Цитата(syoma @ Nov 17 2017, 14:02) Ну я н... Nov 17 2017, 13:42   jcxz Цитата(syoma @ Nov 17 2017, 14:02) Наскол... Nov 17 2017, 13:44 Timmy Цитата(syoma @ Nov 17 2017, 13:45) Каково... Nov 17 2017, 12:01
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|