2014-10-01 77 views
0

我想通過SWO(使用ITM)輸出調試信息。核心Cortex M3可以做到這一點。特權模式下的Cortex M3

的ITM是支持printf型調試跟蹤 操作系統(OS)和應用程序的事件,併發出診斷系統信息的一個應用程序驅動的跟蹤源... link

對於此我必須配置ITM寄存器。其中一部分我只能在特權模式下寫入。

ITM跟蹤特權寄存器 使用ITM跟蹤特權寄存器使操作系統控制哪些激勵端口是用戶代碼訪問。 注: 您只能在特權模式下寫入該寄存器。 see ITM Trace Privilege Register

如果IRQs SVC,PendSV,SysTick已經使用,切換到特權模式的最佳方式是什麼? (我使用FreeRTOS)這是真的嗎?

+0

由於你大概只需要寫一次這個寄存器,你不能在操作系統啓動代碼中這樣做,而不是稍後嘗試模式切換嗎? – Notlikethat 2014-10-01 13:01:39

+0

當然,我可以做到。但我想在我的dbg_init()函數中初始化ITM寄存器。 – Lyrri 2014-10-01 13:09:04

回答

0

您可以在啓動FreeRTOS之前配置ITM(考慮FreeRTOS任務在非特權模式下運行)。
或者您添加對新SVC的支持。 FreeRTOS SVC使用svc 0,您可以添加對新的svc的支持,我們將其稱爲svc 1,您的SVC_Handler()會將svc 0重定向到FreeRTOS或svc 1到您的ITM配置代碼。