0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

IT8528存储器学习笔记

CHANBAEK 来源: 吃面小哥 作者: 吃面小哥 2023-11-18 15:06 次阅读

IT8528E,该芯片内部集成多个外设模块,内核为8032,使用8051指令集。

因此这颗 MCU“内核”为51核。

可以简单地认为这是一个外设资源更丰富的8051单片机,框图如下:

IT8528相关储存器主要有三个部分:

iRAM : 8032内部 256Byte 的 RAM,这部分属于8032内核。

XRAM : 内核外部 4K 的 RAM,这部分在 IT8528 芯片内部。

XROM : 外接 Flash ROM,大小不确定,一般为64K--128K,通过SPI连接。

内部RAM

它属于8032内核部分,访问速度快,容量很小。逻辑地址和 SFR 寄存器复用。

图片

低128字节的数据存储器既可以直接寻址也可以间接寻址。

高128字节RAM与特殊功能寄存器区共用相同的地址范围,都使用0x80—0xFF地址空间。

地址空间重叠,但是物理上是独立的,使用时通过不同的寻址方式加以区别。高128字节只能间接寻址,特殊功能寄存器区只可以直接寻址。

图片

低128字节RAM也称通用RAM区。工作寄存器组从0x00—0x1F共32字节,分为4组每组8个寄存器,标记为R0—R7,他们属于不同的物理空间。使用寄存器组可以提高运算速度。程序状态字PSW寄存器中的RS1和RS0组合决定当前使用的寄存器组。

可位寻址从0x20—0x2F共16字节,它既可以向普通字节一样按字节寻址,也可以按位寻址。按位寻址共128bit,位寻址范围是0x00—0x7F,这里要注意,看起来它和RAM低128字节寻址范围一样,但是二者有着本质的区别。位地址指向一个位,而字节地址指向一个字节,在程序中使用不同的指令区分。

内部RAM采用8bit数据总线寻址范围256Byte,内部RAM操作指令:MOV。

外部RAM

它虽然位于IT8528内部,但相对于8032内核来说是外部数据存储器,也称 XRAM。

--地址空间

内核可以访问的RAM地址范围就是地址空间。这个范围由数据总线决定,8051核对于外部数据存储器采用16bit数据总线,即他可以访问的RAM范围是0—64K。

内核可以访问的范围是这个范围,但是实际中外接RAM的物理大小可能没有64Kbyte,或者可供用户程序使用的大小没有64KByte。

RAM 地址空间有 64K,实际芯片设计中,分别会映射不同的“物理存储”。

--映射模块寄存器

IT8528内部众多外设模块使用时,每个模块都需要Data、Status、Control寄存器,这些寄存器映射在特定的RAM地址上,在软件中定义后即可访问。

这部分范围是0x1000—0x3000,实际的物理位置在各模块内。映射的物理空间,用户是无法改作他用。

图片

--映射外部存储器

0x0000—0x0FFF(4K)。这部分空间映射的“物理存储”是8032的外部数据存储器XRAM。

该段地址空间,在IT8528中称之为Scratch RAM,也可以映射外部ROM存储器。

即内核执行指令,可以从外部ROM取,也可以从外部RAM取。

IT8528内部的4K RAM存储器,用于存储临时变量、全局变量等数据。

如下图,左边是64K的逻辑地址空间,右边是映射的“物理存储”。

图片

简单地说,逻辑地址空间是0—64K,物理上可能没有相应的“物理存储”与之映射,或者映射的“物理存储”已经被其他部件作为寄存器使用,用户程序无法自定义使用。

外部RAM采用16bit数据总线寻址范围64K,外部RAM的操作指令:MOVX。

外部ROM

外部ROM,也叫外部 SPI Flash,用于存储程序指令,它通过SPI总线和IT8528相连。对于8032来说,没有内部ROM,支持外接Flash 。

同样的,8032内核采用16bit地址总线,16bit 程序计数器,程序指令可寻址范围是

0—64KByte。也就是说程序地址空间也是0—64KByte。

实际上IT8528支持外接最大 16M 的 Flash,那么这里出现了一个问题,8032内核的地址总线是16bit,无法访问大于64K的地址。应该如何解决?

对于51内核的 MCU 来说,设计了一种分 BANK的存储组织方式,以支持大于64K的ROM 存储器。

对于64K的程序地址空间划分方法如下:(Flash和 8032 代码空间的映射)

图片

程序地址空间0x0000—0x7FFF,属于Common Bank,映射了“物理存储”,即Flash 的0x0000—0x7FFF区间。

程序地址空间0x8000—0xFFFF,属于Bank(0—3),四个Bank占用相同的程序地址空间,但是在 Flash中的物理区间不同。

CommonBank+Bank_x 的地址范围恰好是64K,因此8032在访问外部地址空间的时候,同一时间只能访问某一个Bank区间。如果编译的函数处于其他Bank,当发生跨Bank的函数调用时,就会自动切换Bank。实际上切Bank是Keil编译器生成的一段代码完成的。

IT8528切Bank相关的寄存器可以参考其 Datasheet。

通过链接文件,可以指定某个函数代码或者某段数据放在某个指定的Bank内。

外部ROM采用16bit地址总线寻址范围64K,外部ROM中的数据操作指令:MOVC。

IT8528固件更新原理

由上文可知,IT8528内核执行的每一条指令都是从外部SPI Flash实时读取的。

当需要更新 SPI Flash时就会出现冲突。

此时可以将 XRAM 存储器映射至代码地址空间,如此 8032 内核在取指令时就只会访问 XRAM,而不是访问SPI Flash 了。

IT8528内部的 XRAM存储器(Scratch RAM)一共4K,分别编号0--4,每一块的大小如下图所示。

4K的XRAM总是映射到数据空间。当需要时,配置代码空间映射寄存器使能,XRAM会映射到代码空间。

图片

也就是同一时间,Scratch SRAM可能既映射到数据空间又映射到代码空间,映射至数据空间称之为Scratch RAM,映射至代码空间称之为Scratch ROM。

如下图,每一块映射至代码空间的位置由 SCARxH/M/L三个寄存器配置。

图片

如下就是代码空间映射XRAM和 SPI Flash 的示意图。

图片

为了兼容设计 IT8528 增加了一个寄存器FBCFG,以便完成一个快速映射。

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

图片

有了上述映射关系,就解决了更新SPI Flash和8032取指令冲突的问题。

如下图,IT8528设计了一个SMFI模块,以便8032访问外接SPI Flash。

图片

通过 Host端访问IT8528外挂的SPI Flash原理如下图。

图片

更新固件流程

第一步,把更新SPI Flash的控制函数(限制在256个字节)copy至SRAM指定位置。

图片

为何要把更新函数copy至SRAM 0x600位置?

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

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

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

通过链接脚本把更新函数强制放置在0xFE00,当调用该函数时取指令位置就是

0xFE00。

图片

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

因此只需把更新函数copy至 XRAM 的0x600--0x6FF 即可。

注意:更新函数的代码不能超过256Byte。

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

第三步,跳转至更新函数中。

图片

第四步,在更新函数中循环处理 6266 或者 686C 接口的数据和指令,控制SMFI模块访问 SPI Flash。

图片

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

对于IT8987来说,有内部 Flash。其实对于8032内核来说仍然属于外部Flash。所谓的内部Flash,只是芯片内部“合封”而已。

另外对于IT557x系列的芯片来说,内部单独设计了一段存储空间(大约1K),用于内核8032临时取指令使用,可以不采用上述 copy 更新函数至 XRAM 的方法。

而是采用DMA方式将更新函数copy至“隐藏存储空间”,然后转去执行。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    453

    文章

    50300

    浏览量

    421385
  • 单片机
    +关注

    关注

    6030

    文章

    44506

    浏览量

    632374
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16945

    浏览量

    350099
  • 存储器
    +关注

    关注

    38

    文章

    7444

    浏览量

    163555
  • 内核
    +关注

    关注

    3

    文章

    1362

    浏览量

    40202
收藏 人收藏

    评论

    相关推荐

    DMA直接存储器访问与配置流程简介

    STM32学习笔记(7)——DMA直接存储器访问一、DMA简介二、DMA功能框图1. DMA请求2. 通道3. 仲裁二、DMA的结构体定义和库函数定义1. DMA初始化结构体2. D
    发表于 01-26 07:54

    单片机中的存储器介绍

    嵌入式开发学习笔记4-了解单片机中的存储器单片机的物理结构程序存储器(ROM)数据存储器(RAM)工作寄存
    发表于 02-08 06:42

    存储器的分类及原理

    存储器的分类及原理,动态随机存储器,静态随机存储器,只读存储器,其他存储器和技术.
    发表于 08-17 22:29 20次下载
    <b class='flag-5'>存储器</b>的分类及原理

    linux存储器管理

     linux存储器管理 本章主要讲解了存储器管理的基本方式,剖析了Linux 操作系统对内存的管理模式。通过对本章学习,读者应该达到以下学习目标: 重
    发表于 04-28 15:01 0次下载

    MCP存储器,MCP存储器结构原理

    MCP存储器,MCP存储器结构原理 当前给定的MCP的概念为:MCP是在一个塑料封装外壳内,垂直堆叠大小不同的各类存储器或非存储器芯片,
    发表于 03-24 16:31 2332次阅读

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

    存储器卡,存储器卡是什么意思 存储器卡(Memory Card)是一种用电可擦除的可编程只读存储器(EEPROM)为核心的,能多次重复使用的IC卡。没
    发表于 04-01 17:44 3734次阅读

    彩电存储器数据

    彩电存储器数据,很好的查询工具,快来下载学习
    发表于 03-29 10:27 11次下载

    半导体存储器学习课件资料说明

    本文档的主要内容详细介绍的是半导体存储器学习课件资料说明包括了:存储器基本概念,随机存取存储器(RAM),只读存储器(ROM),
    发表于 05-08 08:00 2次下载
    半导体<b class='flag-5'>存储器</b>的<b class='flag-5'>学习</b>课件资料说明

    MCS-51的存储器结构——单片机原理学习笔记(三)

    MCS-51的存储器不仅有ROM和RAM之分,还有片内和片外之分。MCS-51的内存储器集成在芯片内部,是MCS-51的一个组成部分;而片外存储器是外接的专用存储器芯片,MCS-51只
    发表于 11-24 15:36 6次下载
    MCS-51的<b class='flag-5'>存储器</b>结构——单片机原理<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(三)

    STM32学习笔记(7)——DMA直接存储器访问

    STM32学习笔记(7)——DMA直接存储器访问一、DMA简介二、DMA功能框图1. DMA请求2. 通道3. 仲裁二、DMA的结构体定义和库函数定义1. DMA初始化结构体2. D
    发表于 12-02 14:06 3次下载
    STM32<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(7)——DMA直接<b class='flag-5'>存储器</b>访问

    嵌入式开发学习笔记4-了解单片机中的存储器

    嵌入式开发学习笔记4-了解单片机中的存储器单片机的物理结构程序存储器(ROM)数据存储器(RAM)工作寄存
    发表于 12-05 09:21 7次下载
    嵌入式开发<b class='flag-5'>学习</b><b class='flag-5'>笔记</b>4-了解单片机中的<b class='flag-5'>存储器</b>

    [笔记]|[stm32]|[寄存存储器区别]|[PWM]|[串口]|[Timer]stm32f103笔记

    [笔记]|[stm32]|[寄存存储器区别]|[PWM]|[串口]|[Timer]stm32f103笔记笔记为18.12.21笔者期末复
    发表于 12-06 18:51 10次下载
    [<b class='flag-5'>笔记</b>]|[stm32]|[寄存<b class='flag-5'>器</b><b class='flag-5'>存储器</b>区别]|[PWM]|[串口]|[Timer]stm32f103<b class='flag-5'>笔记</b>

    MCU片内非易失性存储器操作应用笔记

    电子发烧友网站提供《MCU片内非易失性存储器操作应用笔记.zip》资料免费下载
    发表于 09-22 10:00 0次下载
    MCU片内非易失性<b class='flag-5'>存储器</b>操作应用<b class='flag-5'>笔记</b>

    存储器工作原理及如何选择存储器品牌

    存储器是用来存储程序和各种数据信息的记忆部件,更通俗地说,存储器就是用来存放数据的地方。存储器可分为主存储器(简称主存或内存)和辅助
    的头像 发表于 10-11 16:58 3627次阅读

    PowerLab 笔记: DDR 存储器无处不在!

    PowerLab 笔记: DDR 存储器无处不在!
    发表于 11-07 08:07 0次下载
    PowerLab <b class='flag-5'>笔记</b>: DDR <b class='flag-5'>存储器</b>无处不在!