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) { } }

典型使用场景

注意事项

操作期间会关闭中断,应避免在高实时性场景频繁调用。
地址必须合法,否则可能导致系统异常。

相关推荐