Jump to content

    
Sign in to follow this  
pyroman

stm32 запрет прерывания

Recommended Posts

1 час назад, piroman сказал:

Спасибо.
Наверное, тогда быстрее (т.к. NVIC часть ядра) и правильнее будет запретить прерывание через NVIC->ICER...

SCS-область ядра имеет атрибут памяти Strongly-ordered.

Однако, это не исключает побочных эффектов при доступе в эту область.

NVIC почти всеми своими регистрами лежит в области SCS, поэтому после записи регистра ICER нужно сделать DSB + ISB.

Только тогда можно быть уверенным, что после барьеров прерывание точно не возникнет.

Share this post


Link to post
Share on other sites

Разрешите вкоиниться со своим вопросом.

А если я на Cortex-M4 глобально запрещаю прерывания __disable_irq();

Код из CMSIS

__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)
{
  __ASM volatile ("cpsid i" : : : "memory");
}

 
DSB + ISB тоже надо делать ?

Share this post


Link to post
Share on other sites

Наверное, тогда быстрее (т.к. NVIC часть ядра) и правильнее будет запретить прерывание через NVIC->ICER...


Правильнее управлять причиной: флаги в периферии.

Share this post


Link to post
Share on other sites
ldr R1,[R0]
ldr R2,[R0,#4]
movs R3,#4
add R1,R3
add R1,R2

ldr R1,[R0]
movs R3,#4
add R1,R3
ldr R2,[R0,#4]
add R1,R2

Вот два варианта кода, делающих одно и то же, с одним набором команд, но в разной последовательности. Как вы считаете - время выполнения будет одинаковым или разным?

Edited by piroman

Share this post


Link to post
Share on other sites

 

1 час назад, piroman сказал:

Вот два варианта кода, делающих одно и то же, с одним набором команд, но в разной последовательности. Как вы считаете - время выполнения будет одинаковым или разным?

Зависит от работы конвейера. Вроде первый вариант отработает быстрее, но это не точно.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this