IT8528E,該芯片內(nèi)部集成多個(gè)外設(shè)模塊,內(nèi)核為8032,使用8051指令集。
因此這顆 MCU“內(nèi)核”為51核。
可以簡(jiǎn)單地認(rèn)為這是一個(gè)外設(shè)資源更豐富的8051單片機(jī),框圖如下:
IT8528相關(guān)儲(chǔ)存器主要有三個(gè)部分:
iRAM : 8032內(nèi)部 256Byte 的 RAM,這部分屬于8032內(nèi)核。
XRAM : 內(nèi)核外部 4K 的 RAM,這部分在 IT8528 芯片內(nèi)部。
XROM : 外接 Flash ROM,大小不確定,一般為64K--128K,通過(guò)SPI連接。
內(nèi)部RAM
它屬于8032內(nèi)核部分,訪問(wèn)速度快,容量很小。邏輯地址和 SFR 寄存器復(fù)用。
低128字節(jié)的數(shù)據(jù)存儲(chǔ)器既可以直接尋址也可以間接尋址。
高128字節(jié)RAM與特殊功能寄存器區(qū)共用相同的地址范圍,都使用0x80—0xFF地址空間。
地址空間重疊,但是物理上是獨(dú)立的,使用時(shí)通過(guò)不同的尋址方式加以區(qū)別。高128字節(jié)只能間接尋址,特殊功能寄存器區(qū)只可以直接尋址。
低128字節(jié)RAM也稱通用RAM區(qū)。工作寄存器組從0x00—0x1F共32字節(jié),分為4組每組8個(gè)寄存器,標(biāo)記為R0—R7,他們屬于不同的物理空間。使用寄存器組可以提高運(yùn)算速度。程序狀態(tài)字PSW寄存器中的RS1和RS0組合決定當(dāng)前使用的寄存器組。
可位尋址從0x20—0x2F共16字節(jié),它既可以向普通字節(jié)一樣按字節(jié)尋址,也可以按位尋址。按位尋址共128bit,位尋址范圍是0x00—0x7F,這里要注意,看起來(lái)它和RAM低128字節(jié)尋址范圍一樣,但是二者有著本質(zhì)的區(qū)別。位地址指向一個(gè)位,而字節(jié)地址指向一個(gè)字節(jié),在程序中使用不同的指令區(qū)分。
內(nèi)部RAM采用8bit數(shù)據(jù)總線尋址范圍256Byte,內(nèi)部RAM操作指令:MOV。
外部RAM
它雖然位于IT8528內(nèi)部,但相對(duì)于8032內(nèi)核來(lái)說(shuō)是外部數(shù)據(jù)存儲(chǔ)器,也稱 XRAM。
--地址空間
內(nèi)核可以訪問(wèn)的RAM地址范圍就是地址空間。這個(gè)范圍由數(shù)據(jù)總線決定,8051核對(duì)于外部數(shù)據(jù)存儲(chǔ)器采用16bit數(shù)據(jù)總線,即他可以訪問(wèn)的RAM范圍是0—64K。
內(nèi)核可以訪問(wèn)的范圍是這個(gè)范圍,但是實(shí)際中外接RAM的物理大小可能沒(méi)有64Kbyte,或者可供用戶程序使用的大小沒(méi)有64KByte。
RAM 地址空間有 64K,實(shí)際芯片設(shè)計(jì)中,分別會(huì)映射不同的“物理存儲(chǔ)”。
--映射模塊寄存器
IT8528內(nèi)部眾多外設(shè)模塊使用時(shí),每個(gè)模塊都需要Data、Status、Control寄存器,這些寄存器映射在特定的RAM地址上,在軟件中定義后即可訪問(wèn)。
這部分范圍是0x1000—0x3000,實(shí)際的物理位置在各模塊內(nèi)。映射的物理空間,用戶是無(wú)法改作他用。
--映射外部存儲(chǔ)器
0x0000—0x0FFF(4K)。這部分空間映射的“物理存儲(chǔ)”是8032的外部數(shù)據(jù)存儲(chǔ)器XRAM。
該段地址空間,在IT8528中稱之為Scratch RAM,也可以映射外部ROM存儲(chǔ)器。
即內(nèi)核執(zhí)行指令,可以從外部ROM取,也可以從外部RAM取。
IT8528內(nèi)部的4K RAM存儲(chǔ)器,用于存儲(chǔ)臨時(shí)變量、全局變量等數(shù)據(jù)。
如下圖,左邊是64K的邏輯地址空間,右邊是映射的“物理存儲(chǔ)”。
簡(jiǎn)單地說(shuō),邏輯地址空間是0—64K,物理上可能沒(méi)有相應(yīng)的“物理存儲(chǔ)”與之映射,或者映射的“物理存儲(chǔ)”已經(jīng)被其他部件作為寄存器使用,用戶程序無(wú)法自定義使用。
外部RAM采用16bit數(shù)據(jù)總線尋址范圍64K,外部RAM的操作指令:MOVX。
外部ROM
外部ROM,也叫外部 SPI Flash,用于存儲(chǔ)程序指令,它通過(guò)SPI總線和IT8528相連。對(duì)于8032來(lái)說(shuō),沒(méi)有內(nèi)部ROM,支持外接Flash 。
同樣的,8032內(nèi)核采用16bit地址總線,16bit 程序計(jì)數(shù)器,程序指令可尋址范圍是
0—64KByte。也就是說(shuō)程序地址空間也是0—64KByte。
實(shí)際上IT8528支持外接最大 16M 的 Flash,那么這里出現(xiàn)了一個(gè)問(wèn)題,8032內(nèi)核的地址總線是16bit,無(wú)法訪問(wèn)大于64K的地址。應(yīng)該如何解決?
對(duì)于51內(nèi)核的 MCU 來(lái)說(shuō),設(shè)計(jì)了一種分 BANK的存儲(chǔ)組織方式,以支持大于64K的ROM 存儲(chǔ)器。
對(duì)于64K的程序地址空間劃分方法如下:(Flash和 8032 代碼空間的映射)
程序地址空間0x0000—0x7FFF,屬于Common Bank,映射了“物理存儲(chǔ)”,即Flash 的0x0000—0x7FFF區(qū)間。
程序地址空間0x8000—0xFFFF,屬于Bank(0—3),四個(gè)Bank占用相同的程序地址空間,但是在 Flash中的物理區(qū)間不同。
CommonBank+Bank_x 的地址范圍恰好是64K,因此8032在訪問(wèn)外部地址空間的時(shí)候,同一時(shí)間只能訪問(wèn)某一個(gè)Bank區(qū)間。如果編譯的函數(shù)處于其他Bank,當(dāng)發(fā)生跨Bank的函數(shù)調(diào)用時(shí),就會(huì)自動(dòng)切換Bank。實(shí)際上切Bank是Keil編譯器生成的一段代碼完成的。
IT8528切Bank相關(guān)的寄存器可以參考其 Datasheet。
通過(guò)鏈接文件,可以指定某個(gè)函數(shù)代碼或者某段數(shù)據(jù)放在某個(gè)指定的Bank內(nèi)。
外部ROM采用16bit地址總線尋址范圍64K,外部ROM中的數(shù)據(jù)操作指令:MOVC。
IT8528固件更新原理
由上文可知,IT8528內(nèi)核執(zhí)行的每一條指令都是從外部SPI Flash實(shí)時(shí)讀取的。
當(dāng)需要更新 SPI Flash時(shí)就會(huì)出現(xiàn)沖突。
此時(shí)可以將 XRAM 存儲(chǔ)器映射至代碼地址空間,如此 8032 內(nèi)核在取指令時(shí)就只會(huì)訪問(wèn) XRAM,而不是訪問(wèn)SPI Flash 了。
IT8528內(nèi)部的 XRAM存儲(chǔ)器(Scratch RAM)一共4K,分別編號(hào)0--4,每一塊的大小如下圖所示。
4K的XRAM總是映射到數(shù)據(jù)空間。當(dāng)需要時(shí),配置代碼空間映射寄存器使能,XRAM會(huì)映射到代碼空間。
也就是同一時(shí)間,Scratch SRAM可能既映射到數(shù)據(jù)空間又映射到代碼空間,映射至數(shù)據(jù)空間稱之為Scratch RAM,映射至代碼空間稱之為Scratch ROM。
如下圖,每一塊映射至代碼空間的位置由 SCARxH/M/L三個(gè)寄存器配置。
如下就是代碼空間映射XRAM和 SPI Flash 的示意圖。
為了兼容設(shè)計(jì) IT8528 增加了一個(gè)寄存器FBCFG,以便完成一個(gè)快速映射。
即快速把 Scratch SRAM-0 映射至代碼空間的 F800--FFFF位置。
有了上述映射關(guān)系,就解決了更新SPI Flash和8032取指令沖突的問(wèn)題。
如下圖,IT8528設(shè)計(jì)了一個(gè)SMFI模塊,以便8032訪問(wèn)外接SPI Flash。
通過(guò) Host端訪問(wèn)IT8528外掛的SPI Flash原理如下圖。
更新固件流程
第一步,把更新SPI Flash的控制函數(shù)(限制在256個(gè)字節(jié))copy至SRAM指定位置。
為何要把更新函數(shù)copy至SRAM 0x600位置?
由FBCFG寄存器可知,置位BIT7即可把Scratch SRAM-0映射至 0xF800--0xFFFF。
即把 XRAM 的 0x000--0x800的部分映射至代碼空間的 0xF800--0xFFFF。
因此 XRAM 的 0x600--0x6FF 映射至代碼空間的0xFE00--0xFEFF。
通過(guò)鏈接腳本把更新函數(shù)強(qiáng)制放置在0xFE00,當(dāng)調(diào)用該函數(shù)時(shí)取指令位置就是
0xFE00。
由于代碼空間0xFE00--0xFEFF映射了 XRAM 的0x600--0x6FF。
因此只需把更新函數(shù)copy至 XRAM 的0x600--0x6FF 即可。
注意:更新函數(shù)的代碼不能超過(guò)256Byte。
第二步,配置 FBCFG 寄存器,把Scratch SRAM-0 映射至代碼空間。
第三步,跳轉(zhuǎn)至更新函數(shù)中。
第四步,在更新函數(shù)中循環(huán)處理 6266 或者 686C 接口的數(shù)據(jù)和指令,控制SMFI模塊訪問(wèn) SPI Flash。
上述步驟均由 UEFI 或者 OS 下的 UpdateTool 控制完成。
對(duì)于IT8987來(lái)說(shuō),有內(nèi)部 Flash。其實(shí)對(duì)于8032內(nèi)核來(lái)說(shuō)仍然屬于外部Flash。所謂的內(nèi)部Flash,只是芯片內(nèi)部“合封”而已。
另外對(duì)于IT557x系列的芯片來(lái)說(shuō),內(nèi)部單獨(dú)設(shè)計(jì)了一段存儲(chǔ)空間(大約1K),用于內(nèi)核8032臨時(shí)取指令使用,可以不采用上述 copy 更新函數(shù)至 XRAM 的方法。
而是采用DMA方式將更新函數(shù)copy至“隱藏存儲(chǔ)空間”,然后轉(zhuǎn)去執(zhí)行。
-
芯片
+關(guān)注
關(guān)注
456文章
51283瀏覽量
427797 -
單片機(jī)
+關(guān)注
關(guān)注
6044文章
44628瀏覽量
638990 -
mcu
+關(guān)注
關(guān)注
146文章
17358瀏覽量
352808 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7530瀏覽量
164412 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1384瀏覽量
40442
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
DMA直接存儲(chǔ)器訪問(wèn)與配置流程簡(jiǎn)介
單片機(jī)中的存儲(chǔ)器介紹
存儲(chǔ)器的分類及原理
![<b class='flag-5'>存儲(chǔ)器</b>的分類及原理](https://file.elecfans.com/web2/M00/48/7B/pYYBAGKhtAmAfL6EAAB1YdKpo8g518.jpg)
linux存儲(chǔ)器管理
MCP存儲(chǔ)器,MCP存儲(chǔ)器結(jié)構(gòu)原理
存儲(chǔ)器卡,存儲(chǔ)器卡是什么意思
彩電存儲(chǔ)器數(shù)據(jù)
半導(dǎo)體存儲(chǔ)器的學(xué)習(xí)課件資料說(shuō)明
![半導(dǎo)體<b class='flag-5'>存儲(chǔ)器</b>的<b class='flag-5'>學(xué)習(xí)</b>課件資料說(shuō)明](https://file.elecfans.com/web1/M00/BC/29/pIYBAF61A1yAYotCAAQkujeUg-4717.png)
MCS-51的存儲(chǔ)器結(jié)構(gòu)——單片機(jī)原理學(xué)習(xí)筆記(三)
![MCS-51的<b class='flag-5'>存儲(chǔ)器</b>結(jié)構(gòu)——單片機(jī)原理<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(三)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32學(xué)習(xí)筆記(7)——DMA直接存儲(chǔ)器訪問(wèn)
![STM32<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(7)——DMA直接<b class='flag-5'>存儲(chǔ)器</b>訪問(wèn)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
嵌入式開發(fā)學(xué)習(xí)筆記4-了解單片機(jī)中的存儲(chǔ)器
![嵌入式開發(fā)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>4-了解單片機(jī)中的<b class='flag-5'>存儲(chǔ)器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
[筆記]|[stm32]|[寄存器存儲(chǔ)器區(qū)別]|[PWM]|[串口]|[Timer]stm32f103筆記
![[<b class='flag-5'>筆記</b>]|[stm32]|[寄存<b class='flag-5'>器</b><b class='flag-5'>存儲(chǔ)器</b>區(qū)別]|[PWM]|[串口]|[Timer]stm32f103<b class='flag-5'>筆記</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
MCU片內(nèi)非易失性存儲(chǔ)器操作應(yīng)用筆記
![MCU片內(nèi)非易失性<b class='flag-5'>存儲(chǔ)器</b>操作應(yīng)用<b class='flag-5'>筆記</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論