eric2013 发表于 2021-12-27 03:28:38

RTX5的任务运行在非特权级模式不可以在使用Event Recorder调试组件

记录下问题

DWT也是不可以在非特权级模式下访问的。



sl3340 发表于 2021-12-27 13:24:00

之前为了用这个非特权模式花了不少精力,除了知道点内核的知识以外,感觉并没有什么卵用。

sl3340 发表于 2021-12-27 13:26:34


#ifdef RTOS
#define IS_RUN_IN_UNPRIVILEGED_MODE ((OS_PRIVILEGE_MODE == 0) ? 1 : 0)
#else
#define IS_RUN_IN_UNPRIVILEGED_MODE 0
#endif

#if IS_RUN_IN_UNPRIVILEGED_MODE
void HSPI_GLOBAL_INT_CTRL(uint32_t is_enable);

__svc(1) void SVC_HSPI_GLOBAL_INT_CTRL(uint32_t is_enable);
#else

#define SVC_HSPI_GLOBAL_INT_CTRL HSPI_GLOBAL_INT_CTRL
#endif

void HSPI_GLOBAL_INT_CTRL(uint32_t is_enable)
{
    if (is_enable) {
      NVIC_SetPriority(SPI1_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 2, 0));
      NVIC_EnableIRQ(SPI1_IRQn);
      NVIC_SetPriority(DMA1_Channel2_3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 2, 0));
      NVIC_EnableIRQ(DMA1_Channel2_3_IRQn);
    } else {
      NVIC_DisableIRQ(SPI1_IRQn);
      NVIC_DisableIRQ(DMA1_Channel2_3_IRQn);
    }
}

eric2013 发表于 2021-12-27 15:48:19

sl3340 发表于 2021-12-27 13:26


还行,配合下自己的异常访问机制不错。

sl3340 发表于 2021-12-28 09:29:15

#if IS_RUN_IN_UNPRIVILEGED_MODE

void* const osRtxUserSVC[] = {
    (void*)1,
    HSPI_GLOBAL_INT_CTRL,
};
#endif
页: [1]
查看完整版本: RTX5的任务运行在非特权级模式不可以在使用Event Recorder调试组件