1. 總線架構
以互聯網大容量產品為例,整體總線架構如下圖:
其中,
DCode,也即D-bus,顧名思義就是數據總線。它通過總線矩陣連接Contex-M3和閃存存儲器的數據接口,可用于常量加載(我的理解是RO DATA的訪問)和調試訪問(如何應用,尚未得知)。
ICode,指令總線,實現Contex-M3和閃存存儲器的指令接口的連接,用于程序RO CODE(.text)的讀取。
System,系統總線,實現外設總線到總線矩陣的連接。對內置SRAM就是通過系統總線訪問的。
DMA總線,連接DMA硬件的AHB主控接口到總線矩陣。
總線矩陣:DMA可以通過DMA總線訪問SRAM、閃存和外設。我們知道Contex-M3同樣可以通過DCode或者System總線訪問這些資料。為了不讓兩者沖突,需要總線矩陣邏輯進行仲裁決斷。
AHB,通過總線矩陣和系統總線相連。再加上AHB/APB橋,構成了到外設的通道。從上圖可以看出,APB分為兩種:APB1和APB2。這樣是為了適應不同速率的外設,同時兼顧性能功耗的考慮。APB1的操作頻率限于36MHz,APB2操作于全速(最高72MHz)。
2. 存儲器組織
STM32F10XXX中flash,內置SRAM,片上寄存器等一起構成一個4GB的線性地址空間。數據采用小端格式存儲,即低字節位于低地址(兩低為小端)。
下圖是片上外設寄存器的映射地址,這便是C程序中以下類型定義的來源。
#define PERIPH_BB_BASE ((u32)0x42000000)
#define SRAM_BB_BASE ((u32)0x22000000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
2.1 再來說一下bit-band的概念
它其實是8051就有的一個技術。它操作的是將某段地址區間的數據,把這些數據的每個bit映射到另外一個地址空間。這樣對映射后地址的訪問,就等同于映射之前bit的訪問。
Cortex?-M3存儲器映像包括兩個位段(bit-band)區。分別是:
0x2000_0000‐0x200F_FFFF(SRAM 區中的最低 1MB)
0x4000_0000‐0x400F_FFFF(片上外設區中的最低 1MB)
這兩個位段區將別名存儲器區中的每個字映射到位段存儲器區的一個位,在別名存儲區寫入一個字具有對位段區的目標位執行讀-改-寫(RCU)操作的相同效果。
在STM32F10xxx里,外設寄存器和SRAM都被映射到一個位段區里,這允許執行單一的位段的寫和讀操作。 下面的映射公式給出了別名區中的每個字是如何對應位帶區的相應位的:
bit_word_addr = bit_band_base + (byte_offset×32) + (bit_number×4)
其中:
所乘常數32和4是映射后的地址4字節對齊的緣故。
bit_word_addr是別名存儲器區中字的地址,它映射到某個目標位。
bit_band_base是別名區的起始地址。
byte_offset是包含目標位的字節在位段里的序號
bit_number是目標位所在位置(0-31)
采用bit-band的優勢:
1. 直接操作bit位,加大方便的GBIO口等寄存器的控制。
2. RCU是原子操作,實現資源互斥訪問。
3. 使得代碼標書更加簡潔。
可以在C語句中運用bit-band功能??梢灾苯?define映射后地址區域,如:
#define DEVICE_REG0 ((volatile unsigned long *) (0x40000000))
#define DEVICE_REG0_BIT0 ((volatile unsigned long *) (0x42000000))
#define DEVICE_REG0_BIT1 ((volatile unsigned long *) (0x42000004))
*DEVICE_REG0_BIT1 = 0x1; // 通過位帶別名地址設置 bit1
同時,在 GCC和 RealView MDK (即 Keil) 開發工具中,允許定義變量時手工指定其地址。
volatile unsigned long bbVarAry[7] __attribute__(( at(0x20003014) ));
volatile unsigned long* const pbbaVar= (void*)(0x22000000+0x3014*8*4);
pbbaVar[136]=1; //置位第 136號比特
2.2 嵌入式閃存
結構圖如下:
在STM32F10xxx里,可以通過BOOT[1:0]引腳選擇從主存儲塊,系統存儲器或者內置SRAM啟動程序運行。
上一篇:STM32學習基本 存儲器、CRC、電源
下一篇:stm32的學習之存儲器和總線架構
推薦閱讀
史海拾趣
另一家新興顯示技術公司,專注于透明顯示技術的研發。他們通過優化顯示材料的透光性和顯示效果,成功研發出了高透明度的顯示屏。這種顯示屏可以像玻璃一樣透明,同時又能顯示圖像和文字。這一技術的創新,為商業廣告、智能家居、公共交通等領域帶來了全新的視覺體驗。
在公司的快速發展中,BERNSTEIN公司逐漸將目光投向了國際市場。通過與國際知名企業的合作與交流,公司不斷引進先進的技術和管理經驗,提升了自身的競爭力。同時,BERNSTEIN公司的產品也逐漸在國際市場上贏得了廣泛的認可和好評,為公司的發展注入了新的動力。
在公司的快速發展中,BERNSTEIN公司逐漸將目光投向了國際市場。通過與國際知名企業的合作與交流,公司不斷引進先進的技術和管理經驗,提升了自身的競爭力。同時,BERNSTEIN公司的產品也逐漸在國際市場上贏得了廣泛的認可和好評,為公司的發展注入了新的動力。
EPT Connectors公司一直注重產品品質的管理和提升。公司建立了嚴格的質量管理體系,從原材料采購到產品制造、檢測等各個環節都進行嚴格把關。同時,EPT還積極引進先進的生產設備和技術,不斷提升產品的質量和性能。這些努力使得EPT的產品在市場上贏得了良好的口碑和客戶的信任。許多知名電子企業都選擇EPT作為他們的連接器供應商,這也進一步推動了EPT的發展。
深圳市固得沃克電子有限公司(GOODWORK)的故事始于2004年,當時公司正式成立,專注于半導體分立器件的研發、生產和銷售。公司總部設在深圳,并創立了自主品牌“GK”。這一時期的固得沃克,憑借對技術的執著追求和對市場的敏銳洞察,逐步在電子行業站穩腳跟。公司初期雖面臨諸多挑戰,但憑借團隊的堅持和創新精神,逐漸贏得了客戶的信賴,為后續的快速發展奠定了堅實基礎。
DAYLIGHT公司成立于XX年,由一群富有遠見卓識的電子工程師和投資者共同創立。當時,電子行業正經歷著快速的技術革新,市場對高效、可靠的電子產品需求日益增加。DAYLIGHT公司憑借其獨特的技術優勢和創新能力,成功開發出一系列高性能的電子產品,迅速在市場中立足。
本人升大三了, 現在參加了電子設計大賽, 發現我模擬電路方面真的很薄弱(我在我們組中負責寫程序的), 什么運放,橋式電路的都不明白,我以后能從事單片機這方面的工作嗎 , 令外想問做Linus嵌入式的也要會模擬電路嗎 ,本人偏軟的, 我的分數不夠沒有給分 ...… 查看全部問答∨ |
我把一個windows應用程序(VC)移植到EVC上面,編譯出現下面問題: fatal error C1083: Cannot open include file: \'Nb30.h\': No such file or directory 在windows下編譯正常,哪位高手能給我解答啊,萬分感謝… 查看全部問答∨ |
慚愧,我是新手,請問各位高手,485和232串口在物理接口上有什么區別...工控機一般有RS485串口嗎?是通過什么實現的...是加了一個轉換器嗎?串口通信編程時有什么不同...不勝感激… 查看全部問答∨ |
|
推薦一款低功耗段式液晶屏 看論壇正在做低功耗時鐘,我剛好手頭有個東西也需要低功耗顯示,向大家推薦北京青云的LCM061A段式模塊,主要是3.3V下可以工作,典型工作電流看廠家資料說是50ua(無背光),省電模式下《1ua。因為最近正在調試別的部 ...… 查看全部問答∨ |
|