RTX5的任务运行在非特权级模式不可以在使用Event Recorder调试组件
记录下问题DWT也是不可以在非特权级模式下访问的。
之前为了用这个非特权模式花了不少精力,除了知道点内核的知识以外,感觉并没有什么卵用。
#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);
}
} sl3340 发表于 2021-12-27 13:26
还行,配合下自己的异常访问机制不错。 #if IS_RUN_IN_UNPRIVILEGED_MODE
void* const osRtxUserSVC[] = {
(void*)1,
HSPI_GLOBAL_INT_CTRL,
};
#endif
页:
[1]