此 32 位處理器采用同一套總線來讀取指令和加載/存儲數據。指令代碼和數據都位于相同的存儲器地址空間,但在不同的地址范圍。程序存儲器,數據存儲器,寄存器和 IO 端口都在同一個線性的 4GB 的地址空間之內。這是 32 位處理器的地址范圍,因為它的地址總線寬度是 32 位。此外,為了降低不同客戶在相同應用時的軟件復雜度,存儲映射是按 32 位處理器提供的規則預先定義的。在存儲器映射表中, 一部分地址空間由 32 位處理器的系統外設所占用,且不可更改。此外,其余部分地址空間可由芯片供應商定義使用。CIU32M010、CIU32M030 器件的存儲器映射表顯示了 CIU32M010、CIU32M030 器件的存儲器映射,包括代碼、SRAM、外設和其他預先定義的區域。簡化了每個外設的地址譯碼。
片上 SRAM
芯片內置 8K 字節的 SRAM。它可以按字節(8 位)、半字(16 位)或字(32 位)進行訪問。 SRAM 起始地址為 0x2000_0000。
片上 FLASH 概述
閃存存儲器有兩個不同存儲區域
• 主閃存存儲塊,它包括應用程序和用戶數據區(若需要時)
• 副閃存存儲塊,也叫信息塊,其包含兩個部分
– 選項字節(Option bytes)-內含硬件及存儲保護用戶配置選項。
– 系統存儲器(System memory) - 閃存接口基于 AHB 協議執行指令和數據存取。
引導配置
芯片復位后,通過客戶自己在副閃存的配置,選擇 SWDCLK 默認工作是上拉還是下拉。正常啟動后, CPU 從地址 0x0000_0000 獲取堆棧頂的地址,并從存儲器0x0000_0004 位置指示的地址開始執行代碼。
位帶操作
為了減少“讀-改-寫”操作的次數,32 位 RISC 處理器提供了一個可以執行單原子比特操作的位帶功能。存儲器映射包含了兩個支持位帶操作的區域。其中一個是 SRAM 區的 1MB 范圍,第二個是片內外設區的1MB 范圍。這兩個區域中的地址除了普通應用外,還有自己的“位帶別名區”。位帶別名區把每個比特擴展成一個 32 位的字。當用戶訪問位帶別名區時,就可以達到訪問原始比特的目的。
下面的公式表明了位帶別名區中的每個字如何對應位帶區的相應比特或目標比特。
bit_word_addr =bit_band_base +(byte_offset×32)+(bit_number×4)
其中:
• bit_word_addr 指的是位帶區目標比特對應在位帶別名區的地址;
• bit_band_base 指的是位帶別名區的起始地址;
• byte_offset 指的是位帶區目標比特所在的字節的字節地址偏移量;
• bit_number 指的是目標比特在對應字節中的位置(0-7)。
例如,要想訪問 0x2000 0200 地址的第 7 位, 可訪問的位帶別名區地址是:
bit_word_addr = 0x2200 0000 + (0x200 * 32)+ (7 * 4)= 0x2200 401C
如果對 0x2200 401C 進行寫操作,那么 0x2000 0200 的第 7 位將會相應變化;如果對 0x2200 401C進行讀操作,那么視 0x2000 0200 的第 7 位狀態而返回 0x01 或 0x00。
沈陽芯碩科技有限公司是華大電子專業代理商,有技術問題可咨詢我們