os_xdata_data
所属模块:内存管理 | 类型:数据搬运函数
函数简介
os_xdata_data 用于从外部 xdata 存储空间读取数据,
并写入到内部 RAM 中,是 HRTOS 内存交互的重要接口之一。
该函数基于 8051 的 MOVX 指令实现,
常用于外设数据读取、缓存同步以及任务数据恢复等场景。
函数原型
void os_xdata_data(u16 addr2, u8 addr);
参数说明
| 参数 |
说明 |
| addr2 |
xdata 源地址 |
| addr |
内部 RAM 目标地址 |
核心机制解析
1. 中断保护
ie_backup = IE;
EA = 0;
在数据搬运期间关闭中断,避免被调度或中断打断,
确保操作的完整性。
2. RAM 地址设置
OS_HRTOS = addr;
__asm mov R1,OS_HRTOS
使用 R1 作为内部 RAM 间接寻址寄存器。
3. xdata 地址配置
DPH = addr2 >> 8;
DPL = addr2 & 0xff;
设置 DPTR 指向外部存储空间。
4. 数据读取
MOVX A,@DPTR
MOV @R1,A
从 xdata 读取数据到累加器,再写入内部 RAM。
使用示例
void main()
{
// 从xdata读取数据到内部RAM地址0x20
os_xdata_data(0x1000, 0x20);
while(1)
{
}
}
典型使用场景
- 外设数据读取
- 缓存区同步到内部RAM
- 任务运行数据恢复
注意事项
操作期间会关闭中断,应避免在高实时性场景频繁调用。
地址必须合法,否则可能导致系统异常。