1. gzyueqian
      18529173453

      嵌入式開(kāi)發(fā):使用ITM提高調(diào)試效率

      更新時(shí)間: 2022-06-01 09:31:28來(lái)源: 粵嵌教育瀏覽量:8955

        無(wú)論我們的調(diào)試工具變得多么復(fù)雜,老舊的printf語(yǔ)句總會(huì)有一席之地。printf往往是高效的,并且會(huì)極大地影響系統(tǒng)的實(shí)時(shí)性能。對(duì)于使用Arm Cortex?-M3或更高版本的嵌入式開(kāi)發(fā)人員,可以將printf重新映射到Instrumentation Trace Macrocell (ITM),這不僅可以使用printf,還可以顯著提高其效率并消除任何實(shí)時(shí)性能損失。讓我們來(lái)看看如何使用ITM。

        在我們深入細(xì)節(jié)之前,重要的是要注意ITM比通過(guò)UART或其他外圍設(shè)備使用我們的普通printf更快、更高效。ITM速度更快有幾個(gè)原因,例如:

        它旨在通過(guò)硬件傳輸printf樣式的消息

        它使用專用引腳SWO來(lái)傳輸消息

        波特率基于內(nèi)部時(shí)鐘頻率,可以使其非???/span>

        它有多個(gè)刺激端口,可以輕松分離數(shù)據(jù)和跟蹤消息

        基本上,開(kāi)發(fā)人員只需將一個(gè)字符放入ITM緩沖區(qū),硬件添加時(shí)間戳和相關(guān)數(shù)據(jù)并自行傳輸,無(wú)需任何額外的軟件交互。消息通過(guò)微控制器上的串行線輸出 (SWO)引腳直接傳輸?shù)秸{(diào)試器。然后調(diào)試器可以在IDE控制臺(tái)中記錄和顯示消息。

        ITM包含32個(gè)獨(dú)立的激勵(lì)端口,可用于將不同的消息傳輸?shù)介_(kāi)發(fā)環(huán)境,例如調(diào)試、數(shù)據(jù)和跟蹤信息。通常,端口0用于printf消息,而端口31用于RTOS事件消息。除此之外,端口1到30可用于嵌入式開(kāi)發(fā)人員想要傳輸?shù)娜魏胃郊有畔ⅰ_@可能包括狀態(tài)機(jī)狀態(tài)、傳感器讀數(shù)或任何其他有助于調(diào)試系統(tǒng)的信息。每個(gè)激勵(lì)端口還可以在同一ITM消息中傳輸多達(dá)10個(gè)字節(jié)。

        






        使用ITM傳輸 printf 消息很簡(jiǎn)單 Arm在ITM的Arm CMSIS標(biāo)準(zhǔn)中包含了三個(gè)不同的輔助函數(shù)。這些包括:

        ITM_SendChar

        ITM_ReceiveChar

        ITM_CheckChar

        通過(guò)這些API,開(kāi)發(fā)人員可以發(fā)送、接收和檢查單個(gè)字符。默認(rèn)情況下,這些API假定端口0刺激端口,這意味著如果要使用另一個(gè)端口或多個(gè)端口,開(kāi)發(fā)人員將需要自己編寫(xiě)這些函數(shù)。使用API很簡(jiǎn)單。要傳輸一個(gè)字符,開(kāi)發(fā)人員可以簡(jiǎn)單地編寫(xiě):

        ITM_SendChar(Character);

        如果我們想傳輸單個(gè)字符,這很有幫助,但如果我們想重定向printf語(yǔ)句,我們需要對(duì)printf的工作方式進(jìn)行一些更改。修改將取決于所使用的開(kāi)發(fā)環(huán)境和編譯器。對(duì)于使用GCC的基于Eclipse的IDE,嵌入式開(kāi)發(fā)人員可以修改write函數(shù)而不是更改printf。包含printf 的nanolib庫(kù)使用具有以下原型的write函數(shù)將printf重定向到開(kāi)發(fā)人員可能想要使用的任何源:

        int _write(int file, char *ptr, int len);

        默認(rèn)情況下通常不實(shí)現(xiàn)此功能。 正如您從原型中看到的那樣,所需要做的就是利用指向字符緩沖區(qū)的指針并使用定義緩沖區(qū)中字符數(shù)的長(zhǎng)度。有了這些信息,開(kāi)發(fā)人員可以創(chuàng)建一個(gè)使用ITM的寫(xiě)入函數(shù),如下所示:

        






        對(duì)于正在尋找一種快速有效的方法來(lái)使用printf語(yǔ)句的開(kāi)發(fā)人員來(lái)說(shuō),ITM是一個(gè)非常寶貴的工具。 我們已經(jīng)大致了解了ITM以及一些在軟件中啟動(dòng)和運(yùn)行它的技巧。請(qǐng)注意,為了成功接收消息,嵌入式開(kāi)發(fā)人員需要啟用所使用的ITM激勵(lì)端口,并且可能需要修改調(diào)試配置以用于串行線查看(SWV)以及微控制器時(shí)鐘速率。 除此之外,享受快速確定性的printf消息!

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲综合一区二区三区 | 亚洲国产一级精品视频二区 | 亚洲欧美日韩在线综合第一页 | 亚洲4444在线观看 | 亚洲第一在线综合网站 | 亚洲国产欧美一区二区三区深喉 |