babyos 学习记录

本文介绍了如何使用宏定义处理不同数据并存储在链表中,探讨了侵入式链表的结构和操作,如`list_add_tail`等。同时,讲述了设备驱动开发中的通用设备接口、设备名字管理和GPIO硬件接口的配置,以及如何通过Kconfig进行驱动与MCU映射和驱动实例生成。
摘要由CSDN通过智能技术生成

宏定义+头文件

将一个宏定义取不同的数据到不同的数组中;
在这里插入图片描述

侵入式链表

struct list_head
{
struct list_head *next, *prev;
};
// 添加(list_add_tail/list_add)、删除、查找
xx.h

// 定义一个用于链表管理的结构体
typedef sturct{
xxx
xxx
list head list;
}myEntry

xx.c
//模块管理整个链表的链表头
static LIST_HEAD(mylistHead);

//遍历链表
list_for_each(pList, &mylistHead)
{
//根据list head指针找到该结构体实例的指针
pmyEntry= list_entry(pList, myList, list);
}
//
list_add(&attr->list, &bHalUartListHead);

设备与驱动

参考
在这里插入图片描述

通用设备接口

将设备抽象成文件,对设备的操作就是对文件操作:open close ctl
在这里插入图片描述
在这里插入图片描述

  • 设备名字:设备的“序号”-用于遍历,
    在这里插入图片描述
    在这里插入图片描述

  • 设备序号:从当前已经支持的驱动文件中

设备代码b_drv_key.c

由Kconfg生成_config 下的b_hal_if.h文件,配置好驱动与MCU管脚的映射,注意名称 KEY

在这里插入图片描述

在对应的驱动模块中生成,对应的设备驱动实例

GPIO的通用硬件接口描述
在这里插入图片描述

设备的硬件接口表:
bDRIVER_HALIF_TABLE(bKEY_HalIf_t, DRIVER_NAME);
在这里插入图片描述

const static bKEY_HalIf_t bHalIf_KEY[] = {{B_HAL_GPIOC, B_HAL_PIN4, 0}, {B_HAL_GPIOB, B_HAL_PIN10, 0}, {B_HAL_GPIOC, B_HAL_PIN13, 0}, { B_HAL_GPIOA, B_HAL_PIN0, 0 }}

在这里插入图片描述

设备初始化时初始化硬件接口,多个硬件接口用数组的形式

在这里插入图片描述
在配置硬件接口的 通用操作方式;
在这里插入图片描述

驱动接口

在这里插入图片描述

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值