本期開發(fā)筆記由費神編寫主要會為大家介紹HPM6000系列的各類片上SRAM并結(jié)合Segger Embedded Studio的linker文件介紹,提供了如何使用這些SRAM的建議,趕快來了解吧~
簡介
在HPM6000系列微控制器上,集成了大容量的SRAM,可供用戶存放代碼,數(shù)據(jù)等,滿足各類應(yīng)用的需要。其中片上SRAM有多種分類,包括RISC-V CPU的指令和數(shù)據(jù)本地存儲器ILM,DLM,通用內(nèi)存AXI SRAM,AHB SRAM等,還包括AHB SRAM,APB SRAM等。這些SRAM的最高訪問頻率不同,數(shù)據(jù)保持的條件也不同,恰當?shù)厥褂盟麄儯梢詷O大的提升用戶應(yīng)用的效率。
片上SRAM介紹
HPM6000系列高性能MCU均集成了大容量片上SRAM,總結(jié)如下:
HPM6000系列片上SRAM總結(jié)2.1 RISC-V CPU的本地存儲器ILM和DLM
HPM6000系列高性能微控制器的RISC-V CPU都包含有指令和本地存儲器,分別稱為ILM(Instruction Local Memory,指令本地存儲器)和DLM(Data Local Memory,數(shù)據(jù)本地存儲器)。如下圖所示,RISC-V CPU的ILM和DLM各自對應(yīng)了內(nèi)存映射表(Memory Map)中的2塊地址映射區(qū)域。HPM6700系列ILM/DLM示意圖ILM的映射有:
ILM,以HPM6700系列為例,容量256 KB,地址范圍為0x00000000 ~ 0x0003FFFF。該地址區(qū)域只有RISC-V CPU可以通過自身的ILM接口訪問,RISC-V CPU從ILM取指時,可以實現(xiàn)零等待周期,即ILM的訪問時鐘頻率,與RISC-V CPU主頻一致,并且RISC-V CPU的一級高速指令緩存I-Cache-L1對ILM無效。CPUx_ILM_SLV,以HPM6700系列的CPU0 ILM為例,容量256 KB,地址范圍為0x01000000 ~ 0x0103FFFF。該地址區(qū)域也稱為ILM0鏡像,該地址區(qū)域可以供總線上所有的主設(shè)備訪問,如DMA等,包括RISC-V CPU自身,也可以通過CPUx_ILM_SLV訪問ILM。如圖所示,CPUx_ILM_SLV是AXI系統(tǒng)總線的從接口,其訪問時鐘頻率與總線時鐘頻率一致。RISC-V CPU訪問CPUx_ILM_SLV時,一級高速指令緩存I-Cache-L1是有效的。
DLM的映射有:DLM,以HPM6700系列為例,容量256 KB,地址范圍為0x00080000 ~ 0x000BFFFF。該地址區(qū)域只有RISC-V CPU可以通過自身的DLM接口訪問,RISC-V CPU從DLM讀寫數(shù)據(jù)時,可以實現(xiàn)零等待周期,即DLM的訪問時鐘頻率,與RISC-V CPU主頻一致,并且RISC-V CPU的一級高速指令緩存D-Cache-L1對DLM無效。CPUx_DLM_SLV,以HPM6700系列的CPU0 DLM為例,容量256 KB,地址范圍為0x01040000 ~ 0x0107FFFF。該地址區(qū)域也稱為ILM0鏡像,該地址區(qū)域可以供總線上所有的主設(shè)備訪問,如DMA等,包括RISC-V CPU自身,也可以通過CPUx_DLM_SLV訪問ILM。如圖所示,CPUx_DLM_SLV是AXI系統(tǒng)總線的從接口,其訪問時鐘頻率于總線時鐘頻率一致。RISC-V CPU訪問CPUx_DM_SLV時,一級高速指令緩存D-Cache-L1是有效的。
2.1.1HPM6700系列
HPM6700系列微控制器上,指令/數(shù)據(jù)本地存儲器的2塊地址映射xLM和CPUx_xLM_SLV雖然地址不同,但訪問的是同一塊物理內(nèi)存,RISC-V CPU可以通過xLM訪問自身的指令/數(shù)據(jù)本地存儲器,而其他總線主設(shè)備,比如DMA,需要通過CPUx_xLM_SLV來訪問CPUx的指令/數(shù)據(jù)本地存儲器。注意,RISC-V CPU本身,也可以通過CPUx_xLM_SLV訪問自己的指令/數(shù)據(jù)本地存儲器。
HPM6700系列支持雙核RISC-V CPU,CPU從xLM地址映射總是訪問到自身指令/數(shù)據(jù)本地存儲器,而從CPUx_xLM_SLV可以訪問到自身或者另一個CPU的指令/數(shù)據(jù)本地存儲器。
以HPM6700系列RISC-V CPU0為例,從0x00000000和0x01000000讀取到的,是CPU0指令本地存儲器ILM0的首地址。從0x01180000讀到的,是CPU1指令本地存儲器ILM1的首地址。
以RISC-V CPU1為例,從0x00000000和0x01180000讀取到的,是CPU1指令本地存儲器ILM1的首地址。從0x01000000讀到的,是CPU0指令本地存儲器ILM0的首地址。
2.1.2HPM6300系列
HPM6300系列為單核RISC-V CPU,RISC-V CPU和其他總線主設(shè)備都可以通過xLM地址映射訪問CPU的指令/數(shù)據(jù)本地存儲器,其中RISC-V CPU仍然可以通過自身的xLM接口對xLM實現(xiàn)零等待周期訪問,即xLM的讀寫時鐘頻率與CPU的時鐘同頻。而其他總線主設(shè)備,需要以AXI系統(tǒng)總線的時鐘頻率訪問xLM。
同時,xLM的鏡像,CPUx_xLM_SLV映射仍然有效,包括RISC-V CPU在內(nèi)的所有總線主設(shè)備,訪問CPUx_xLM_SLV與訪問xLM效果相同,訪問的是同一塊物理內(nèi)存。注意RISC-V CPU通過CPUx_xLM_SLV訪問自身的xLM時,會和其他總線主設(shè)備一樣,讀寫時鐘頻率與AXI系統(tǒng)總線時鐘頻率一致,不再支持零周期等待,但是CPU的高速一級緩存會生效。
比如,RISC-V CPU和DMA,從0x00000000讀取到的,是CPU0指令本地存儲器ILM0的首地址。從0x01000000讀取到的,也是CPU0指令本地存儲器ILM0的首地址。注意RISC-V CPU從0x01000000取值后,如果高速緩存打開,其數(shù)據(jù)會被存入緩存。
2.2AXI總線SRAM
HPM6000系列高性能MCU支持通用的片上SRAM,稱為AXI SRAM,可以用來存放數(shù)據(jù)或者代碼。
HPM6700系列AXI?SRAM示意圖上圖以HPM6700系列MCU為例,展示了AXI SRAM在系統(tǒng)中的位置。顧名思義,AXI SRAM連接到AXI系統(tǒng)總線的從接口,它的讀寫時鐘頻率就是AXI系統(tǒng)總線的時鐘頻率。所有的AXI系統(tǒng)總線主設(shè)備都可以訪問AXI SRAM。
注意:系統(tǒng)內(nèi)存映射表上,AXI SRAM的地址映射與RISC-V CPU的ILM/DLM鏡像映射CPUx_xLM_SLV在地址上是連續(xù)的。因此可以把AXI SRAM和RISC-V CPU的本地存儲器當作一塊聯(lián)系的大內(nèi)存使用。詳情請參考后文的SRAM使用建議。
2.3AHB總線SRAM
HPM6000系列高性能MCU包含掛載在外設(shè)總線AHB的片上SRAM,稱為AHB SRAM,如下圖所示,AHB SRAM連接到AHB外設(shè)總線的從設(shè)備接口。
AHB SRAM的讀寫時鐘頻率為AHB外設(shè)總線的時鐘頻率。注意,包括RISC-V CPU在內(nèi)的總線主設(shè)備需要通過AXI系統(tǒng)總線,來訪問AHB外設(shè)總線下的各個外設(shè)寄存器。而外設(shè)總線AHB上的主設(shè)備,比如HDMA,可以直接通過AHB總線訪問外設(shè)寄存器,以及AHB SRAM。因此AHB SRAM比其他類型的片上SRAM更適合用作寄存器和SRAM之間的數(shù)據(jù)搬運?;谕瑯拥睦碛?,HDMA也比XDMA更適合用作AHB SRAM和寄存器之間的數(shù)據(jù)搬運。
因此,當使用HDMA用作通訊接口,如UART,SPI的數(shù)據(jù)收發(fā)時,推薦使用AHB SRAM作為數(shù)據(jù)的緩沖區(qū)。HPM6700系列AHB?SRAM和APB?SRAM示意圖
2.4APB總線SRAM
HPM6000系列高性能MCU的部分型號支持APB SRAM。上圖以HPM6700系列MCU為例,展示了APB SRAM在系統(tǒng)中的位置。
APB SRAM位于電源管理域,由VPMC引腳供電。當MCU處于低功耗模式時,有可能通過關(guān)閉系統(tǒng)電源域的電源,使得VDD_SOC掉電。此時,APB SRAM可以作為片上的備份SRAM,保存必要的數(shù)據(jù)。
注意,對于不支持APB SRAM的型號,可以使用電源管理域通用寄存器PGPR,保存一定的備份數(shù)據(jù)。
在電池模式(VBAT Only Mode)下,VPMC也掉電,HPM6000系列MCU僅VBAT保持供電。此時,電池備份域通用寄存器BGPR,可以用來保存一定的備份數(shù)據(jù)。
-
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351212
發(fā)布評論請先 登錄
相關(guān)推薦
評論