目录
1. zephyr驱动模型
1. 1 设备模型几要要素
- driver name
- driver init函数
- driver各种操作函数driver_api
- driver配置信息driver_cfg
- driver的数据信息driver_data
从驱动使用层面上来说,因为初始化是编译期已经固定好 运行期会自动初始化,所以只用关注各种操作函数也就是driver_api
1.2 驱动实现步骤
- 1.找到驱动头文件,理解驱动提供操作API的作用和参数含义
- 2. 在驱动头文件中,对应操作API和driver_api内操作函数指针
- 3. 在驱动代码中实现driver_api函数指针的函数,添加driver_data和driver_cfg
- 4: 实现driver初始化函数
- 5: 使用DEVICE_AND_API_INIT注册初始化函数,和实现好的driver_api
2.zephyr 传感器示例
找到驱动头文件include/sensor.h,理解驱动提供的API作用和参数含义,Zephyr为sensor驱动定义了下面4种方法:
1. __syscall int sensor_channel_get(struct device *dev,
enum sensor_channel chan,
struct sensor_value *val); // 读取传感器数据
2. __syscall int sensor_sample_fetch_chan(struct device *dev,
enum sensor_channel type); //fetch sensor 数据,并且存储内部buffer
3.__syscall int sensor_sample_fetch(struct device *dev); // 获取所有传感器 数据
4. __syscall int sensor_attr_set(struct device *dev,
enum sensor_channel chan,
enum sensor_attribute attr,
cons