打印
[产品应用]

芯源MCU的RAM 存储器操作

[复制链接]
899|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

用户可执行的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其实主要是操作其涉及数据读写、地址映射及特殊功能管理

使用特权

评论回复
5
wamed| | 2025-5-6 19:48 | 只看该作者
RAM是程序运行时的临时数据存储区域,用于存放局部变量、函数栈帧、动态分配的内存等。其读写速度远高于非易失性存储器(如Flash),但断电后数据会丢失。

使用特权

评论回复
6
nqty| | 2025-5-6 22:15 | 只看该作者
一般来说,RAM通常映射到MCU的内存地址空间中,地址范围由芯片手册定义。例如,某些MCU的RAM起始地址可能为0x20000000,大小根据型号不同可能为几KB到几百KB。

使用特权

评论回复
7
gongqijuns| | 2025-5-7 08:35 | 只看该作者
特殊区域,堆(Heap):用于动态内存分配(如malloc)。栈(Stack):用于函数调用和局部变量存储,地址从高到低递减。BSS段:存放未初始化的全局变量,启动时清零。数据段(Data):存放已初始化的全局变量。

使用特权

评论回复
8
twinkhahale| | 2025-5-7 12:11 | 只看该作者
直接访问:通过指针或变量名直接操作RAM中的数据

使用特权

评论回复
9
yuliangren| | 2025-5-7 13:16 | 只看该作者
寄存器间接访问,某些MCU支持通过特殊功能寄存器(SFR)间接访问RAM,例如通过DMA控制器批量传输数据。

使用特权

评论回复
10
gra22ce| | 2025-5-7 14:51 | 只看该作者
绝对地址访问,通过指定内存地址直接读写RAM。相对地址访问,结合基地址偏移量访问RAM中的特定区域。

使用特权

评论回复
11
eleg34ance| | 2025-5-7 16:09 | 只看该作者
某些高端MCU的RAM可能包含缓存(Cache),需要手动配置缓存一致性。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2432

帖子

6

粉丝