此 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。
沈阳芯硕科技有限公司是华大电子专业代理商,有技术问题可咨询我们