- 博客(5)
- 收藏
- 关注
原创 什么是GPIO控制器
7.echo 18 > /sys/class/gpio/unexport //取消导出引脚,取消选中在内核空间用GPIO子系统来控制引脚:(platform平台)1.echo 18 > /sys/class/gpio/export //导出一个GPIO引脚(假设引脚编号为18),选中。2.echo out > /sys/class/gpio/gpio18/direction //设置为输出。5.echo 0 > /sys/class/gpio/gpio18/value //设置为低电平。
2024-08-02 09:14:52
776
原创 什么是设备树,匹配驱动的方法
设备树文件(.dts),是一个单独的文件,用于保存硬件信息,还有.dtsi文件是.dts文件所包含的头文件,因为可能存在一个soc被用到多种电路板上,大部分的公共部分信息被存在dtsi文件中,特殊的一些信息保存在dts文件中。static struct platform_driver demo_led_driver = {//定义了平台驱动结构,包括probe和remove函数,以及驱动的名称和设备树匹配表。可以看出,使用设备树之后的硬件信息是独立在内核之外的,这就解决了上述问题。
2024-07-29 17:31:44
312
原创 Linux驱动开发流程—probe函数
在这个函数中,通过向设备的某个寄存器写入配置数据来完成设备的初始化。当内核检测到一个设备时,它会调用驱动程序的probe函数,以便驱动程序可以初始化设备、分配资源、设置寄存器等。当内核检测到一个设备时,它会尝试找到合适的驱动程序,并调用该驱动程序的probe函数来初始化设备。在总线匹配设备和驱动的时候,会调用probe函数然后再调用驱动自己的probe函数,又发现,probe又是调用的my_device_init()函数来初始化。__devinit: 标记设备初始化函数,主要用于特定设备的初始化。
2024-07-26 16:18:35
756
原创 Linux设备驱动模型 流程和原理
* shutdown函数指针,在系统关机或重启时调用,通常用于执行设备的安全关闭操作 *//* 资源使用的GPIO配置,引用“gpio1”控制器的第10号引脚 *//* 资源使用的GPIO配置,引用“gpio1”控制器的第11号引脚 *//* 定义设备节点,名字为“xiaolaoshu”,地址为“666666” *//* GPIO配置,引用下文定义的“gpio1”控制器,使用其第10号引脚 *//* 兼容性字符串,用于描述这个设备树的类型,驱动程序可以通过它来匹配设备树 */
2024-07-26 09:04:21
985
原创 什么是Linux字符设备
有人这样写: void cdev_init(struct cdev *cdev, struct file_operations *fops);//struct cdev *p - 被注册的cdev对象。有人这样写: cdev_add(struct cdev *dev, dev_t num, unsigned int count);3.向内核里添加一个驱动 int cdev_add(struct cdev *p, dev_t dev, unsigned count);
2024-07-24 14:20:14
346
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人