创建散列读句柄 - DmaScatterCreate
函数简介
创建散列读句柄,用于批量读取多个内存地址的数据。散列读可以提高读取效率。(高级版功能,普通版无法使用)
接口名称
DmaScatterCreate
DLL调用
int64_t OLA_CALL_TYPE DmaScatterCreate(int64_t instance, int64_t deviceId, int32_t pid);
参数定义:
instance(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。deviceId(长整型数): 设备IDpid(整型数): 进程 PID
示例:
// 创建散列读句柄
int64_t scatterHandle = DmaScatterCreate(instance, deviceId, 1234);
if (scatterHandle > 0) {
printf("散列读句柄创建成功: %lld\n", scatterHandle);
// 准备多个地址
DmaScatterPrepare(instance, scatterHandle, 0x400000, 4);
DmaScatterPrepare(instance, scatterHandle, 0x400010, 4);
DmaScatterPrepare(instance, scatterHandle, 0x400020, 4);
// 执行散列读
if (DmaScatterExecute(instance, scatterHandle) == 1) {
// 读取数据
const char* data1 = DmaScatterRead(instance, scatterHandle, 0x400000, NULL, 4);
const char* data2 = DmaScatterRead(instance, scatterHandle, 0x400010, NULL, 4);
printf("数据1: %s\n", data1);
printf("数据2: %s\n", data2);
}
// 关闭句柄
DmaScatterClose(instance, scatterHandle);
} else {
printf("散列读句柄创建失败\n");
}
返回值
长整型数:
- 成功: 返回散列句柄 (>0)
- 失败: 返回 0
参数说明
散列读流程:
- 使用 DmaScatterCreate 创建句柄
- 使用 DmaScatterPrepare 准备多个地址
- 使用 DmaScatterExecute 执行读取
- 使用 DmaScatterRead 读取结果
- 使用 DmaScatterClear 清除数据(可选)
- 使用 DmaScatterClose 关闭句柄
应用场景
- 批量读取多个内存地址
- 提高内存读取效率
- 减少 DMA 操作次数
相关接口
- DmaScatterPrepare - 准备散列读地址
- DmaScatterExecute - 执行散列读
- DmaScatterRead - 从散列读结果中读取数据
- DmaScatterClose - 关闭散列读句柄
