一TCM是什么?
隨著單片機(MCU)在各種應用中的使用越來越廣泛,對其性能和響應速度的要求也越來越高。為了滿足這種需求,MCU的主時鐘頻率往往會不斷提高,以提升系統的處理能力和性能。然而,隨著主時鐘頻率的增加,訪問外部存儲器(如閃存、RAM)所需的訪問時間也要求相應減少,這可能會成為系統性能的瓶頸之一。在這種情況下,使用TCM(Tightly-Coupled Memory)成為了一種解決方案。
Tightly Coupled Memory(TCM)緊耦合內存是通過專用的接口直接連接到處理器的存儲器區域,它提供單周期訪問,避免其他存儲器可能存在的仲裁延時和延遲。
RA8x1 Cortex-M85內核有2種TCM類型:Instruction TCM (ITCM) 指令TCM和Data TCM (DTCM) 數據TCM。
RA8x1有64KB ITCM和64KB DTCM。
ECC保護(代碼生成和糾正邏輯)。
RA8x1支持ITCM和DTCM ECC功能,可以通過OFS2.INITECCEN設置來啟用和禁用。
RA8x1 CPU方框圖
TCM具有以下優點:
低延遲訪問:TCM與處理器核心之間的直接連接消除了訪問延遲,使得數據和指令能夠更快速地被處理器訪問,從而提高了系統的響應速度。
高帶寬:TCM通常具有更高的帶寬,可以支持處理器對數據和指令的高速讀寫,提升了系統的整體性能。
節省功耗:由于TCM與處理器核心直接連接,不需要通過總線進行數據傳輸,因此可以降低功耗。此外,由于訪問延遲較低,處理器可以更快地完成任務并進入休眠模式,進一步降低功耗。
提高實時性能:對于需要實時響應的應用程序,TCM的低延遲和高帶寬特性使得處理器能夠更快地訪問關鍵數據和指令,從而提高了系統的實時性能。
增強安全性:TCM可以用于存儲敏感數據和關鍵代碼,通過與處理器核心的緊密耦合,可以降低數據泄露和惡意攻擊的風險,提高系統的安全性。
減少對外部存儲器的依賴:TCM可以用于存儲頻繁訪問的數據和指令,減少了對外部存儲器的訪問次數,降低了總體的訪問延遲和功耗。這對于一些資源有限的嵌入式系統尤為重要。
增強可靠性:TCM的直接連接和高速訪問特性可以提高系統的可靠性,減少因外部存儲器或總線故障而導致的系統性能下降或故障。
因此,TCM適用于許多不同的應用和場景,特別是對于需要高性能、低延遲和實時響應的應用,其優勢更加突出。以下是一些適合使用TCM的應用和場景:
實時控制系統:對于需要快速響應的實時控制系統,如工業機器人、航空航天控制系統、醫療設備等,TCM可以提供所需的低延遲和高帶寬,確保系統能夠及時、準確地響應各種控制指令。
信號處理應用:TCM對于需要大量數據處理和信號處理的應用非常適用,例如無線通信系統、雷達系統、圖像處理系統等。通過將頻繁訪問的數據和指令存儲在TCM中,可以提高系統的處理速度和效率。
物聯網設備:隨著物聯網設備的普及,對于需要在資源有限的設備上實現高性能和實時響應的應用,TCM可以幫助提高系統的性能和能效,同時減少對外部存儲器和網絡帶寬的依賴。
高性能計算:在需要進行復雜計算和大規模數據處理的高性能計算應用中,TCM可以提供更快速和可靠的數據訪問,從而提高系統的計算性能和吞吐量。
二RA8x1系列MCU如何將通過FSP將代碼/數據放置到TCM中?
瑞薩電子靈活配置軟件包(FSP)是用于嵌入式系統設計的高質量增強型軟件包,支持瑞薩電子RA產品家族ARM微控制器,提供用戶友好的界面且可靈活擴展,確保從入門級到高性能的整個RA微控制器的軟件兼容性。FSP包括高性能、低內存占用的業界一流的HAL驅動程序。還包含集成了Azure RTOS和FreeRTOS的中間件協議棧,能夠簡化通信和安全等復雜模塊的實現。e2 studio IDE提供了對圖形化配置工具和智能代碼生成器的支持,從而使編程和調試變得更加輕松快捷。
瑞薩FSP鏈接腳本提供TCM內存區域段定義
memory_region.ld中的內存大小定義:
點擊可查看大圖
內存區域定義:
點擊可查看大圖
如下原型定義可用于將用戶代碼/數據放置到TCM中。在啟動過程中,.itcm_data和.dtcm_data區域將通過閃存中存儲的初始化代碼進行數據初始化。.dtcm_bss區域已初始化為零。
點擊可查看大圖
FSP中的ITCM段定義:
點擊可查看大圖
FSP中的DTCM段定義:
點擊可查看大圖
三TCM例子分析
下圖是一個RA8x1 MCU實際使用TCM的例子,它使用了ITCM和DTCM。圖片中的右邊為RA8x1 MCU的系統地址空間。
點擊可查看大圖
具體分析過程為:
1紫色的代碼“uint16_t i;”全局變量,它運行的時候,分配的地址是在從0x2200_0000開始的On-chip SRAM中。
2紅色的代碼“BSP_PLACE_IN_SECTION(“.dtcm_data”)uint8x16_t rega_8, regb_8, regc_8, regd_8;”,全局變量,但是由于這些變量前面添加了BSP_PLACE_IN_SECTION(“.dtcm_data”),這表示將這些變量放置到DTCM中,它運行的時候,分配的地址是在從0x2000_0000開始的DTCM中。
3青色的代碼“void hal_entry(void)”,它是函數,運行的時候,分配的地址是在從0x0200_0000開始的On-chip flash中。
4深綠色的代碼“void helium_test(void)”,它是函數,但是由于這些變量前面添加了BSP_PLACE_IN_SECTION(“.itcm_data”),這意味著,該代碼運行的時候,分配的地址是從0x0000_0000開始的ITCM中。
下圖是上面描述的代碼在e2 studio中使用了LLVM工具鏈編譯并仿真運行的截圖,可以發現右邊表達式窗口中的i,rega_8, regb_8, regc_8, regd_8,helium_test,hal_entry這些代碼或者變量的地址和剛剛分析的結果是相符的。
點擊可查看大圖
需要技術支持?
如您在使用瑞薩MCU/MPU產品中有任何問題,進入瑞薩技術論壇尋找答案或獲取在線技術支持。
-
處理器
+關注
關注
68文章
19349瀏覽量
230300 -
單片機
+關注
關注
6039文章
44583瀏覽量
636526 -
mcu
+關注
關注
146文章
17185瀏覽量
351735 -
TCM
+關注
關注
0文章
32瀏覽量
12815
原文標題:RA8x1 TCM使用指南
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論