[产品应用] 芯源MCU的RAM 存储器操作

[复制链接]
1144|10
 楼主| 星辰大海不退缩 发表于 2025-1-28 21:00 | 显示全部楼层 |阅读模式

用户可执行的RAM 存储器操作包括:读操作、写操作。
对RAM 的读写操作支持8bit、16bit 和32bit 三种位宽,用户程序可以通过直接访问绝对地址的方式完成读写,
但要注意读写的数据位宽必须和对应地址边界对齐,否则读写操作无效,并会导致HardFault 硬件错误异常。
6.3.1 读操作
读操作支持3 种不同位宽,可采用直接访问绝对地址方式读取,但要注意读取的数据位宽必须和对应地址边界对齐。
代码示例:
8bit 读:
tempdata = * ( ( uint8_t * ) 0x2000 0001 ) ;
16bit 读:
tempdata = * ( ( uint16_t * ) 0x2000 0002 ) ;
32bit 读:
tempdata = * ( ( uint32_t * ) 0x2000 0004 ) .
6.3.2 写操作
写操作支持3 种不同位宽,可采用直接访问绝对地址的方式写入数据,但要注意写入的数据位宽必须和对应地址
边界对齐。
代码示例:
8bit 写:
* ( ( uint8_t * ) 0x2000 0001 ) = 0x12;
16bit 写:
* ( ( uint16_t * ) 0x2000 0002 ) = 0x1234;
32bit 写:
* ( ( uint32_t * ) 0x2000 0004 ) = 0x1234 5678.

hight1light 发表于 2025-5-6 17:37 | 显示全部楼层
芯源的MCU中,RAM(随机存取存储器)作为易失性存储器,主要用于程序运行时的数据存储。
suiziq 发表于 2025-5-6 17:42 | 显示全部楼层
内存保护,支持内存保护单元(MPU)的MCU可设置RAM区域的访问权限(如只读、可写)。
miltk 发表于 2025-5-6 18:46 | 显示全部楼层
操作ram其实主要是操作其涉及数据读写、地址映射及特殊功能管理
wamed 发表于 2025-5-6 19:48 | 显示全部楼层
RAM是程序运行时的临时数据存储区域,用于存放局部变量、函数栈帧、动态分配的内存等。其读写速度远高于非易失性存储器(如Flash),但断电后数据会丢失。
nqty 发表于 2025-5-6 22:15 | 显示全部楼层
一般来说,RAM通常映射到MCU的内存地址空间中,地址范围由芯片手册定义。例如,某些MCU的RAM起始地址可能为0x20000000,大小根据型号不同可能为几KB到几百KB。
gongqijuns 发表于 2025-5-7 08:35 | 显示全部楼层
特殊区域,堆(Heap):用于动态内存分配(如malloc)。栈(Stack):用于函数调用和局部变量存储,地址从高到低递减。BSS段:存放未初始化的全局变量,启动时清零。数据段(Data):存放已初始化的全局变量。
twinkhahale 发表于 2025-5-7 12:11 | 显示全部楼层
直接访问:通过指针或变量名直接操作RAM中的数据
yuliangren 发表于 2025-5-7 13:16 | 显示全部楼层
寄存器间接访问,某些MCU支持通过特殊功能寄存器(SFR)间接访问RAM,例如通过DMA控制器批量传输数据。
gra22ce 发表于 2025-5-7 14:51 | 显示全部楼层
绝对地址访问,通过指定内存地址直接读写RAM。相对地址访问,结合基地址偏移量访问RAM中的特定区域。
eleg34ance 发表于 2025-5-7 16:09 | 显示全部楼层
某些高端MCU的RAM可能包含缓存(Cache),需要手动配置缓存一致性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

302

主题

2831

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部