移植案例与原理 - HDF驱动框架-OSAL

为了提升驱动代码在不同内核子系统间的可复用能力,OpenHarmony HDF(Hardware Driver Foundation)驱动框架提供了OSAL(Operating System Abstraction Layer)操作系统抽象层接口。OSAL为驱动程序提供了任务、定时器、互斥锁、信号量等基础库相关接口,使驱动相关的实现不再依赖于具体的内核或POSIX接口,是实现驱动可迁移的基石。OpenHarmony HDF驱动框架已经在LiteOS-M,LiteOS-A,Linux内核完成适配,可直接使用。

本文主要分析下驱动适配代码仓中的OSAL的相关接口,主要以适配LiteOS-M内核的OSAL接口为例。OSAL在HDF驱动框架中的位置,见HDF架构图。

1、OSAL头文件

在文件夹drivers/framework/include/osal中定义了OSAL的头文件,对这些头文件的说明如下。

头文件 头文件描述
osal_atomic.h 原子变量相关接口
osal_cdev.h 字符设备相关接口
osal_file.h 文件相关接口
osal_firmware.h 固件文件相关接口
osal_io.h I/O操作类接口
osal_irq.h 中断相关接口
osal_mem.h 内存申请释放接口
osal_mutex.h 互斥锁相关接口
osal_sem.h 信号量相关接口
osal_spinlock.h 自旋锁相关接口
osal_thread.h 线程相关接口
osal_time.h 时间相关接口
osal_timer.h 定时器相关接口

2、原子变量相关接口

在头文件drivers\framework\include\osal\osal_atomic.h中定义了原子变量相关接口。对于LiteOS-M内核,接口实现程序定义在文件drivers\adapter\khdf\liteos_m\osal\include\osal_atomic_def.h中。

接口 接口描述
OsalAtomicRead(v) 读取原子类型的计数变量值
OsalAtomicSet(v, counter) 设置原子类型的计数变量值
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值