我想通过SWO(使用ITM)输出调试信息。 Core Cortex M3可以做到这一点。
ITM是一个应用程序驱动的跟踪源,支持printf样式调试跟踪 操作系统(OS)和应用程序事件,并发出诊断系统信息...... link
为此,我必须配置ITM寄存器。其中一部分我只能在特权模式下编写。
ITM Trace Privilege Register 使用ITM跟踪权限寄存器使操作系统能够控制用户代码可以访问哪些激励端口。 注意: 您只能以特权模式写入此寄存器。 see ITM Trace Privilege Register
如果IRQs SVC,PendSV,SysTick已经使用过,那么切换特权模式的最佳方法是什么? (我使用FreeRTOS)这是真的吗?
答案 0 :(得分:0)
您可以在启动FreeRTOS之前配置ITM(考虑FreeRTOS任务在非特权模式下运行)。
或者您添加对新SVC的支持。 FreeRTOS SVC使用svc 0
,您可以添加对新svc
的支持,让我们称之为svc 1
,您的SVC_Handler()
会将svc 0
重定向到FreeRTOS或{{ 1}}到您的ITM配置代码。