logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-platform平台总线-platform总线架构

概念说明Platform 总线的核心结构体,内核启动时注册描述硬件资源,由设备树自动创建描述驱动能力,由我们编写并注册设备树匹配表,包含 compatible 字符串总线的匹配函数,有4种匹配方式probe()匹配成功后自动调用,用于初始化设备resource硬件资源(寄存器地址、中断号等)设备链表bus->devices,存储所有已注册的设备驱动链表bus->drivers,存储所有已注册的驱动

文章图片
泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-字符驱动设备-实现一个字符设备

/ 保存设备号(主+次)// 字符设备对象// 设备类指针: 保存设备号(主/次合成),用于内核管理和表示你的驱动。: Linux 内核的“字符设备对象”,管理和内核的关联。: 用于自动生成 /dev/ 设备节点和 sysfs 分类。

文章图片
泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-platform平台总线-驱动管理多设备

申请设备号时,主设备号我们不用管,自动分配,而我们次设备号需要设定一个起始值,这个起始值会有一个全局变量,记录下一个该申请的次设备号起始值是多少,防止次设备号重复和混乱。所有的设备用的是同一个驱动,他们呢都属于同一个类,所以只需要创建一次即可。函数会根据我们设备号(主设备号+次设备号)的不同,而注册不同的设备。函数中手动销毁,在相关的设备移除时他是会自动释放的。我们需要根据设备名称和设备号,进行拼

文章图片
泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-字符驱动设备-什么是字符设备

用户空间程序不会直接操作硬件寄存器,而是通过内核提供的统一接口访问设备。前面的章节我们讲过,就是,通常位于/dev目录下。ls -l /dev这些条目并不是普通的磁盘文件,而是“设备的访问入口”。用户空间通过对这些设备文件进行openreadwriteioctl等操作,从而间接访问实际设备。

泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-Linux内核与驱动-编写第一个驱动

在学习编程的旅程中,无论是初涉C语言还是探索其他编程语言,我们往往以一句经典的 “ Hello, World!” 作为起点,以此叩开代码世界的大门。这一简单而富有仪式感的传统,不仅象征着程序员与计算机之间的第一次对话,更承载了无数开发者对技术的热爱与追求。同样地,在驱动程序编程的领域,我们也可以延续这一传统,以 “ Hello, World!” 作为我们的首个驱动程序,开启通往底层系统开发的奇妙之

文章图片
泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-platform平台总线-platform驱动端

{ .compatible = "lckfb,mychardev" }, // 必须和设备树中的 compatible 一致{ /* 结束符 */ }.probe = my_probe, // 匹配成功后调用.remove = my_remove, // 移除时调用.name = "mychardev", // 驱动名称.of_match_table = my_of_match, // 设备树匹配

文章图片
泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-platform平台总线-什么是platform总线

总线类型对应硬件I2C 总线设备SPI 总线设备USB 总线设备伪总线(Platform 总线)Platform 总线是一种"伪总线",它不是真实的物理总线(不像 I2C、SPI 那样有具体的硬件总线协议),而是 Linux 内核虚拟出来的一种总线,专门用于管理那些无法归类到其他总线的设备。哪些设备会用到 Platform 总线?几乎所有直接挂在 SoC 芯片上的片内外设GPIO控制器UART串口

文章图片
泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-字符驱动设备-字符设备框架

是一类能像“一个字节一个字节”那样进行数据流式读写的设备,常见例子有串口、键盘、鼠标等。用户和程序通过文件操作(open、read、write、close 等)和字符设备交互。:将用户的请求从用户空间传递到内核空间的字符驱动。

文章图片
泰山派3M-RK3576-Linux内核驱动教程-Linux驱动基础-platform平台总线-platform设备端

我在下面的例子中选择获取名为dev-id的值u32 dev_id;// 读取 dev-id 属性printk(KERN_ERR "读取 dev-id 失败!\n");return 0;

泰山派3M-RK3576-Linux内核驱动教程-Linux入门篇

说明:列出目录内容(显示当前目录或指定目录下的文件和子目录列表)在 Ubuntu(或其他 Linux 发行版)的终端中,ls命令用于列出目录(文件夹)中的文件和子目录。lsLinux 下,隐藏文件(以开头的文件或目录)不会默认显示。如果需要查看所有文件(包括隐藏文件),请加上-als -a如果需要查看详细信息(包括权限、所有者、大小、修改时间等),可以加上-lls -l常用的是组合使用-a和-l以

文章图片
    共 69 条
  • 1
  • 2
  • 3
  • 7
  • 请选择