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

 
 
> Где сохраняется/восстанавливается uxCriticalNesting?, Порт GCC/CM3
Непомнящий Евген...
сообщение Mar 8 2013, 13:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Как я понял доку, тут должен сохраняться uxCriticalNesting. Собственно и в комментарии об этом написано. Но я что-то ссылок на uxCriticalNesting не вижу.
Я плохо разбираюсь в ассемблере, не подскажете как это организовано?
Код
313     void xPortPendSVHandler( void )
314     {
315     /* This is a naked function. */
316     
317     __asm volatile
318     (
319     " mrs r0, psp \n"
320     " \n"
321     " ldr r3, pxCurrentTCBConst \n" /* Get the location of the current TCB. */
322     " ldr r2, [r3] \n"
323     " \n"
324     " stmdb r0!, {r4-r11} \n" /* Save the remaining registers. */
325     " str r0, [r2] \n" /* Save the new top of stack into the first member of the TCB. */
326     " \n"
327     " stmdb sp!, {r3, r14} \n"
328     " mov r0, %0 \n"
329     " msr basepri, r0 \n"
330     " bl vTaskSwitchContext \n"
331     " mov r0, #0 \n"
332     " msr basepri, r0 \n"
333     " ldmia sp!, {r3, r14} \n"
334     " \n" /* Restore the context, including the critical nesting count. */
335     " ldr r1, [r3] \n"
336     " ldr r0, [r1] \n" /* The first item in pxCurrentTCB is the task top of stack. */
337     " ldmia r0!, {r4-r11} \n" /* Pop the registers. */
338     " msr psp, r0 \n"
339     " bx r14 \n"
340     " \n"
341     " .align 2 \n"
342     "pxCurrentTCBConst: .word pxCurrentTCB \n"
343     ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY)
344     );
345     }
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 03:29
Рейтинг@Mail.ru


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