0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

IT8528存儲器學(xué)習(xí)筆記

CHANBAEK ? 來源: 吃面小哥 ? 作者: 吃面小哥 ? 2023-11-18 15:06 ? 次閱讀

IT8528E,該芯片內(nèi)部集成多個外設(shè)模塊,內(nèi)核為8032,使用8051指令集。

因此這顆 MCU“內(nèi)核”為51核。

可以簡單地認(rèn)為這是一個外設(shè)資源更豐富的8051單片機(jī),框圖如下:

IT8528相關(guān)儲存器主要有三個部分:

iRAM : 8032內(nèi)部 256Byte 的 RAM,這部分屬于8032內(nèi)核。

XRAM : 內(nèi)核外部 4K 的 RAM,這部分在 IT8528 芯片內(nèi)部。

XROM : 外接 Flash ROM,大小不確定,一般為64K--128K,通過SPI連接。

內(nèi)部RAM

它屬于8032內(nèi)核部分,訪問速度快,容量很小。邏輯地址和 SFR 寄存器復(fù)用。

圖片

低128字節(jié)的數(shù)據(jù)存儲器既可以直接尋址也可以間接尋址。

高128字節(jié)RAM與特殊功能寄存器區(qū)共用相同的地址范圍,都使用0x80—0xFF地址空間。

地址空間重疊,但是物理上是獨(dú)立的,使用時通過不同的尋址方式加以區(qū)別。高128字節(jié)只能間接尋址,特殊功能寄存器區(qū)只可以直接尋址。

圖片

低128字節(jié)RAM也稱通用RAM區(qū)。工作寄存器組從0x00—0x1F共32字節(jié),分為4組每組8個寄存器,標(biāo)記為R0—R7,他們屬于不同的物理空間。使用寄存器組可以提高運(yùn)算速度。程序狀態(tài)字PSW寄存器中的RS1和RS0組合決定當(dāng)前使用的寄存器組。

可位尋址從0x20—0x2F共16字節(jié),它既可以向普通字節(jié)一樣按字節(jié)尋址,也可以按位尋址。按位尋址共128bit,位尋址范圍是0x00—0x7F,這里要注意,看起來它和RAM低128字節(jié)尋址范圍一樣,但是二者有著本質(zhì)的區(qū)別。位地址指向一個位,而字節(jié)地址指向一個字節(jié),在程序中使用不同的指令區(qū)分。

內(nèi)部RAM采用8bit數(shù)據(jù)總線尋址范圍256Byte,內(nèi)部RAM操作指令:MOV。

外部RAM

它雖然位于IT8528內(nèi)部,但相對于8032內(nèi)核來說是外部數(shù)據(jù)存儲器,也稱 XRAM。

--地址空間

內(nèi)核可以訪問的RAM地址范圍就是地址空間。這個范圍由數(shù)據(jù)總線決定,8051核對于外部數(shù)據(jù)存儲器采用16bit數(shù)據(jù)總線,即他可以訪問的RAM范圍是0—64K。

內(nèi)核可以訪問的范圍是這個范圍,但是實(shí)際中外接RAM的物理大小可能沒有64Kbyte,或者可供用戶程序使用的大小沒有64KByte。

RAM 地址空間有 64K,實(shí)際芯片設(shè)計(jì)中,分別會映射不同的“物理存儲”。

--映射模塊寄存器

IT8528內(nèi)部眾多外設(shè)模塊使用時,每個模塊都需要Data、Status、Control寄存器,這些寄存器映射在特定的RAM地址上,在軟件中定義后即可訪問。

這部分范圍是0x1000—0x3000,實(shí)際的物理位置在各模塊內(nèi)。映射的物理空間,用戶是無法改作他用。

圖片

--映射外部存儲器

0x0000—0x0FFF(4K)。這部分空間映射的“物理存儲”是8032的外部數(shù)據(jù)存儲器XRAM。

該段地址空間,在IT8528中稱之為Scratch RAM,也可以映射外部ROM存儲器。

即內(nèi)核執(zhí)行指令,可以從外部ROM取,也可以從外部RAM取。

IT8528內(nèi)部的4K RAM存儲器,用于存儲臨時變量、全局變量等數(shù)據(jù)。

如下圖,左邊是64K的邏輯地址空間,右邊是映射的“物理存儲”。

圖片

簡單地說,邏輯地址空間是0—64K,物理上可能沒有相應(yīng)的“物理存儲”與之映射,或者映射的“物理存儲”已經(jīng)被其他部件作為寄存器使用,用戶程序無法自定義使用。

外部RAM采用16bit數(shù)據(jù)總線尋址范圍64K,外部RAM的操作指令:MOVX。

外部ROM

外部ROM,也叫外部 SPI Flash,用于存儲程序指令,它通過SPI總線和IT8528相連。對于8032來說,沒有內(nèi)部ROM,支持外接Flash 。

同樣的,8032內(nèi)核采用16bit地址總線,16bit 程序計(jì)數(shù)器,程序指令可尋址范圍是

0—64KByte。也就是說程序地址空間也是0—64KByte。

實(shí)際上IT8528支持外接最大 16M 的 Flash,那么這里出現(xiàn)了一個問題,8032內(nèi)核的地址總線是16bit,無法訪問大于64K的地址。應(yīng)該如何解決?

對于51內(nèi)核的 MCU 來說,設(shè)計(jì)了一種分 BANK的存儲組織方式,以支持大于64K的ROM 存儲器。

對于64K的程序地址空間劃分方法如下:(Flash和 8032 代碼空間的映射)

圖片

程序地址空間0x0000—0x7FFF,屬于Common Bank,映射了“物理存儲”,即Flash 的0x0000—0x7FFF區(qū)間。

程序地址空間0x8000—0xFFFF,屬于Bank(0—3),四個Bank占用相同的程序地址空間,但是在 Flash中的物理區(qū)間不同。

CommonBank+Bank_x 的地址范圍恰好是64K,因此8032在訪問外部地址空間的時候,同一時間只能訪問某一個Bank區(qū)間。如果編譯的函數(shù)處于其他Bank,當(dāng)發(fā)生跨Bank的函數(shù)調(diào)用時,就會自動切換Bank。實(shí)際上切Bank是Keil編譯器生成的一段代碼完成的。

IT8528切Bank相關(guān)的寄存器可以參考其 Datasheet。

通過鏈接文件,可以指定某個函數(shù)代碼或者某段數(shù)據(jù)放在某個指定的Bank內(nèi)。

外部ROM采用16bit地址總線尋址范圍64K,外部ROM中的數(shù)據(jù)操作指令:MOVC。

IT8528固件更新原理

由上文可知,IT8528內(nèi)核執(zhí)行的每一條指令都是從外部SPI Flash實(shí)時讀取的。

當(dāng)需要更新 SPI Flash時就會出現(xiàn)沖突。

此時可以將 XRAM 存儲器映射至代碼地址空間,如此 8032 內(nèi)核在取指令時就只會訪問 XRAM,而不是訪問SPI Flash 了。

IT8528內(nèi)部的 XRAM存儲器(Scratch RAM)一共4K,分別編號0--4,每一塊的大小如下圖所示。

4K的XRAM總是映射到數(shù)據(jù)空間。當(dāng)需要時,配置代碼空間映射寄存器使能,XRAM會映射到代碼空間。

圖片

也就是同一時間,Scratch SRAM可能既映射到數(shù)據(jù)空間又映射到代碼空間,映射至數(shù)據(jù)空間稱之為Scratch RAM,映射至代碼空間稱之為Scratch ROM。

如下圖,每一塊映射至代碼空間的位置由 SCARxH/M/L三個寄存器配置。

圖片

如下就是代碼空間映射XRAM和 SPI Flash 的示意圖。

圖片

為了兼容設(shè)計(jì) IT8528 增加了一個寄存器FBCFG,以便完成一個快速映射。

即快速把 Scratch SRAM-0 映射至代碼空間的 F800--FFFF位置。

圖片

有了上述映射關(guān)系,就解決了更新SPI Flash和8032取指令沖突的問題。

如下圖,IT8528設(shè)計(jì)了一個SMFI模塊,以便8032訪問外接SPI Flash。

圖片

通過 Host端訪問IT8528外掛的SPI Flash原理如下圖。

圖片

更新固件流程

第一步,把更新SPI Flash的控制函數(shù)(限制在256個字節(jié))copy至SRAM指定位置。

圖片

為何要把更新函數(shù)copy至SRAM 0x600位置?

由FBCFG寄存器可知,置位BIT7即可把Scratch SRAM-0映射至 0xF800--0xFFFF。

即把 XRAM 的 0x000--0x800的部分映射至代碼空間的 0xF800--0xFFFF。

因此 XRAM 的 0x600--0x6FF 映射至代碼空間的0xFE00--0xFEFF。

通過鏈接腳本把更新函數(shù)強(qiáng)制放置在0xFE00,當(dāng)調(diào)用該函數(shù)時取指令位置就是

0xFE00。

圖片

由于代碼空間0xFE00--0xFEFF映射了 XRAM 的0x600--0x6FF。

因此只需把更新函數(shù)copy至 XRAM 的0x600--0x6FF 即可。

注意:更新函數(shù)的代碼不能超過256Byte。

第二步,配置 FBCFG 寄存器,把Scratch SRAM-0 映射至代碼空間。

第三步,跳轉(zhuǎn)至更新函數(shù)中。

圖片

第四步,在更新函數(shù)中循環(huán)處理 6266 或者 686C 接口的數(shù)據(jù)和指令,控制SMFI模塊訪問 SPI Flash。

圖片

上述步驟均由 UEFI 或者 OS 下的 UpdateTool 控制完成。

對于IT8987來說,有內(nèi)部 Flash。其實(shí)對于8032內(nèi)核來說仍然屬于外部Flash。所謂的內(nèi)部Flash,只是芯片內(nèi)部“合封”而已。

另外對于IT557x系列的芯片來說,內(nèi)部單獨(dú)設(shè)計(jì)了一段存儲空間(大約1K),用于內(nèi)核8032臨時取指令使用,可以不采用上述 copy 更新函數(shù)至 XRAM 的方法。

而是采用DMA方式將更新函數(shù)copy至“隱藏存儲空間”,然后轉(zhuǎn)去執(zhí)行。

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    450

    文章

    49636

    瀏覽量

    417196
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628437
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16667

    瀏覽量

    347808
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7366

    瀏覽量

    163095
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1336

    瀏覽量

    40084
收藏 人收藏

    評論

    相關(guān)推薦

    DMA直接存儲器訪問與配置流程簡介

    STM32學(xué)習(xí)筆記(7)——DMA直接存儲器訪問一、DMA簡介二、DMA功能框圖1. DMA請求2. 通道3. 仲裁二、DMA的結(jié)構(gòu)體定義和庫函數(shù)定義1. DMA初始化結(jié)構(gòu)體2. D
    發(fā)表于 01-26 07:54

    單片機(jī)中的存儲器介紹

    嵌入式開發(fā)學(xué)習(xí)筆記4-了解單片機(jī)中的存儲器單片機(jī)的物理結(jié)構(gòu)程序存儲器(ROM)數(shù)據(jù)存儲器(RAM)工作寄存
    發(fā)表于 02-08 06:42

    存儲器的分類及原理

    存儲器的分類及原理,動態(tài)隨機(jī)存儲器,靜態(tài)隨機(jī)存儲器,只讀存儲器,其他存儲器和技術(shù).
    發(fā)表于 08-17 22:29 ?20次下載
    <b class='flag-5'>存儲器</b>的分類及原理

    linux存儲器管理

     linux存儲器管理 本章主要講解了存儲器管理的基本方式,剖析了Linux 操作系統(tǒng)對內(nèi)存的管理模式。通過對本章學(xué)習(xí),讀者應(yīng)該達(dá)到以下學(xué)習(xí)目標(biāo): 重
    發(fā)表于 04-28 15:01 ?0次下載

    MCP存儲器,MCP存儲器結(jié)構(gòu)原理

    MCP存儲器,MCP存儲器結(jié)構(gòu)原理 當(dāng)前給定的MCP的概念為:MCP是在一個塑料封裝外殼內(nèi),垂直堆疊大小不同的各類存儲器或非存儲器芯片,
    發(fā)表于 03-24 16:31 ?2298次閱讀

    存儲器卡,存儲器卡是什么意思

    存儲器卡,存儲器卡是什么意思 存儲器卡(Memory Card)是一種用電可擦除的可編程只讀存儲器(EEPROM)為核心的,能多次重復(fù)使用的IC卡。沒
    發(fā)表于 04-01 17:44 ?3710次閱讀

    彩電存儲器數(shù)據(jù)

    彩電存儲器數(shù)據(jù),很好的查詢工具,快來下載學(xué)習(xí)
    發(fā)表于 03-29 10:27 ?11次下載

    半導(dǎo)體存儲器學(xué)習(xí)課件資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是半導(dǎo)體存儲器學(xué)習(xí)課件資料說明包括了:存儲器基本概念,隨機(jī)存取存儲器(RAM),只讀存儲器(ROM),
    發(fā)表于 05-08 08:00 ?2次下載
    半導(dǎo)體<b class='flag-5'>存儲器</b>的<b class='flag-5'>學(xué)習(xí)</b>課件資料說明

    MCS-51的存儲器結(jié)構(gòu)——單片機(jī)原理學(xué)習(xí)筆記(三)

    MCS-51的存儲器不僅有ROM和RAM之分,還有片內(nèi)和片外之分。MCS-51的內(nèi)存儲器集成在芯片內(nèi)部,是MCS-51的一個組成部分;而片外存儲器是外接的專用存儲器芯片,MCS-51只
    發(fā)表于 11-24 15:36 ?6次下載
    MCS-51的<b class='flag-5'>存儲器</b>結(jié)構(gòu)——單片機(jī)原理<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(三)

    STM32學(xué)習(xí)筆記(7)——DMA直接存儲器訪問

    STM32學(xué)習(xí)筆記(7)——DMA直接存儲器訪問一、DMA簡介二、DMA功能框圖1. DMA請求2. 通道3. 仲裁二、DMA的結(jié)構(gòu)體定義和庫函數(shù)定義1. DMA初始化結(jié)構(gòu)體2. D
    發(fā)表于 12-02 14:06 ?3次下載
    STM32<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(7)——DMA直接<b class='flag-5'>存儲器</b>訪問

    嵌入式開發(fā)學(xué)習(xí)筆記4-了解單片機(jī)中的存儲器

    嵌入式開發(fā)學(xué)習(xí)筆記4-了解單片機(jī)中的存儲器單片機(jī)的物理結(jié)構(gòu)程序存儲器(ROM)數(shù)據(jù)存儲器(RAM)工作寄存
    發(fā)表于 12-05 09:21 ?7次下載
    嵌入式開發(fā)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>4-了解單片機(jī)中的<b class='flag-5'>存儲器</b>

    [筆記]|[stm32]|[寄存存儲器區(qū)別]|[PWM]|[串口]|[Timer]stm32f103筆記

    [筆記]|[stm32]|[寄存存儲器區(qū)別]|[PWM]|[串口]|[Timer]stm32f103筆記筆記為18.12.21筆者期末復(fù)
    發(fā)表于 12-06 18:51 ?10次下載
    [<b class='flag-5'>筆記</b>]|[stm32]|[寄存<b class='flag-5'>器</b><b class='flag-5'>存儲器</b>區(qū)別]|[PWM]|[串口]|[Timer]stm32f103<b class='flag-5'>筆記</b>

    MCU片內(nèi)非易失性存儲器操作應(yīng)用筆記

    電子發(fā)燒友網(wǎng)站提供《MCU片內(nèi)非易失性存儲器操作應(yīng)用筆記.zip》資料免費(fèi)下載
    發(fā)表于 09-22 10:00 ?0次下載
    MCU片內(nèi)非易失性<b class='flag-5'>存儲器</b>操作應(yīng)用<b class='flag-5'>筆記</b>

    存儲器工作原理及如何選擇存儲器品牌

    存儲器是用來存儲程序和各種數(shù)據(jù)信息的記憶部件,更通俗地說,存儲器就是用來存放數(shù)據(jù)的地方。存儲器可分為主存儲器(簡稱主存或內(nèi)存)和輔助
    的頭像 發(fā)表于 10-11 16:58 ?3427次閱讀

    PowerLab 筆記: DDR 存儲器無處不在!

    PowerLab 筆記: DDR 存儲器無處不在!
    發(fā)表于 11-07 08:07 ?0次下載
    PowerLab <b class='flag-5'>筆記</b>: DDR <b class='flag-5'>存儲器</b>無處不在!