【问题标题】:Cortex M3 in privileged mode特权模式下的 Cortex M3
【发布时间】:2014-11-25 23:58:51
【问题描述】:

我想通过 SWO 输出调试信息(使用 ITM)。 Core Cortex M3 可以做到。

ITM 是一个应用程序驱动的跟踪源,支持 printf 风格的调试来跟踪 操作系统 (OS) 和应用程序事件,并发出诊断系统信息... link

为此,我必须配置 ITM 寄存器。其中一部分我只能在特权模式下写入。

ITM 跟踪特权寄存器 使用 ITM Trace Privilege Register 使操作系统能够控制用户代码可以访问哪些激励端口。 笔记: 您只能在特权模式下写入该寄存器。 see ITM Trace Privilege Register

如果已经使用了 IRQ SVC、PendSV、SysTick,那么在特权模式下切换的最佳方式是什么? (我使用 FreeRTOS)是真的吗?

【问题讨论】:

  • 既然你大概只需要写入这个寄存器一次,你就不能在操作系统启动代码中这样做,而不是稍后尝试模式切换吗?
  • 我当然可以。但我想在我的 dbg_init() 函数中初始化 ITM 寄存器。

标签: arm cortex-m3


【解决方案1】:

在启动 FreeRTOS 之前配置 ITM(考虑到 FreeRTOS 任务在非特权模式下运行)。
或者您添加对新 SVC 的支持。 FreeRTOS SVC 使用svc 0,您可以添加对新svc 的支持,我们称之为svc 1,您的SVC_Handler() 会将svc 0 重定向到FreeRTOS 或svc 1 重定向到您的ITM 配置代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    相关资源
    最近更新 更多