随笔分类 -  Linux驱动

用于记录Linux内核驱动的学习笔记。
摘要:1、 阅读全文
posted @ 2021-03-26 22:38 liangliangge 阅读(60) 评论(0) 推荐(0) 编辑
摘要:1、基本概念 在Linux系统中,中断服务程序的执行是与一般的进程异步的,也就是不存在于进程上下文,要求中断服务程序的执行时间尽可能短,因此,Linux系统在中断处理中引入了顶半部和低半部的分离机制。 2、Linux中断及中断处理架构 设备中断的到来会打断Linux内核中进程的正常调度和运行,对于系 阅读全文
posted @ 2021-02-24 21:51 liangliangge 阅读(970) 评论(0) 推荐(0) 编辑
摘要:1、Linux Input子系统概述 Linux系统的Input子系统处理输入事务,输入设备的驱动程序通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能与用户空间或系统中的其它程序进行交互。整个Input子系统的实现可以看作三层,如下: 输入驱动层(input driver):针对各 阅读全文
posted @ 2021-02-17 01:01 liangliangge 阅读(655) 评论(0) 推荐(0) 编辑
摘要:1、Linux Framebuffer概述 Framebuffer驱动在Linux内核中用于子系统最重要的显示输出,以该驱动为基础,Linux设备才能向用户展现一个色彩斑斓的世界,对于PC而言,就是显卡驱动,对于嵌入式设备,就是显示控制器和LCD模组驱动。 Framebuffer设备是一个字符设备, 阅读全文
posted @ 2021-02-15 15:23 liangliangge 阅读(1001) 评论(0) 推荐(0) 编辑
摘要:1、前言 AX88772C是一款USB转以太网控制芯片,并且支持Microsoft AOAC(Always On Always Connected),可为各类应用增加低价、小封装、高效能、高集成度和即插即用的快速以太网联网特性,适用于电脑、游戏机、智能家电及任何具体标准USB端口的嵌入式系统,本文将 阅读全文
posted @ 2020-01-15 19:50 liangliangge 阅读(2470) 评论(0) 推荐(0) 编辑
摘要:1、前言 在嵌入式开发中,我们往往会遇到一些USB的相关设备调试,本文将简单总结一下在一些常见的嵌入式Linux设备下,我们如何去查看USB设备的相关信息。 2、通过lsusb命令查看 在Linux系统中,lsusb命令用于显示本设备的的USB设备列表,以及USB设备的详细信息。 (1)命令语法 该 阅读全文
posted @ 2020-01-02 19:03 liangliangge 阅读(1098) 评论(0) 推荐(0) 编辑
摘要:1、前言 Linux系统中的文件系统由两层结构进行构建:第一层为虚拟文件系统(VFS),第二层则是各种不同的具体的文件系统。VFS则是将各种具体的文件系统的公共部分抽取出来,从而形成一个抽象层,是Linux系统内核的一部分,它位于用户程序和具体的文件系统之间,对用户提供了标准的文件系统调用接口,对于 阅读全文
posted @ 2019-12-28 21:54 liangliangge 阅读(3653) 评论(0) 推荐(0) 编辑
摘要:1、前言 原子操作指的是该操作不会在执行完毕之前被任何其它任务或事件打断,它是最小的执行单位,不会有比它更小的执行单位,原子实际上使用了物理学中物质微粒的概念,在Linux内核中,原子操作需要硬件的支持,和架构相关,使用汇编语言去实现,它在Linux内核中主要应用于资源的引用计数 2、原子操作 3、 阅读全文
posted @ 2019-11-21 21:43 liangliangge 阅读(358) 评论(0) 推荐(0) 编辑
摘要:1、前言 众所周知,Linux系统是一个多任务的操作系统,当多个任务同时访问同一片内存区域的时候,这些任务可能会相互覆盖内存中数据,从而造成内存中的数据混乱,问题严重的话,还可能会导致系统崩溃。 2、相关概念 了解一下Linux内核中并发与竞态的相关概念,如下: 并发与竞争:并发指的是多个执行单元同 阅读全文
posted @ 2019-11-20 20:10 liangliangge 阅读(621) 评论(0) 推荐(0) 编辑
摘要:1、前言 在嵌入式Linux开发中,对嵌入式SoC中的GPIO进行控制非常重要,Linux内核中提供了GPIO子系统,驱动开发者在驱动代码中使用GPIO子系统提供的API函数,便可以达到对GPIO控制的效果,例如将IO口的方向设置为输入或输出,当IO口的方向为输入时,可以通过调用API函数获取相应的 阅读全文
posted @ 2019-11-19 19:20 liangliangge 阅读(4921) 评论(0) 推荐(2) 编辑
摘要:1、前言 Linux内核中的定时器是一个很常用的功能,某些需要周期性处理的工作都需要用到定时器。在Linux内核中,使用定时器功能比较简单,需要提供定时器的超时时间和超时后需要执行的处理函数。 2、常用API接口 在Linux内核中使用全局变量jiffies来记录系统从启动以来的系统节拍数,当系统内 阅读全文
posted @ 2019-11-14 21:17 liangliangge 阅读(3442) 评论(0) 推荐(0) 编辑
摘要:在Linux内核中,设备树节点中的status属性的值决定了是否开启设备,当status属性没有在设备节点中定义时,默认设备是开启的。 关于设备树节点中status属性的处理的代码位于drivers/of/base.c文件中,有两个函数,如下所示: /** * __of_device_is_avai 阅读全文
posted @ 2019-11-08 17:09 liangliangge 阅读(925) 评论(0) 推荐(0) 编辑
摘要:1、前言在嵌入式系统中,许多SoC的内部都包含了pin控制器,通过芯片内部的pin控制器,我们可以配置一个或者一组引脚的状态和功能特性,Linux内核为了统一各SoC厂商的引脚管理,提供了pinctrl子系统。 2、引脚功能分类嵌入式芯片手册往往有一个GPIO控制的章节来描述SoC的引脚如何进行配置 阅读全文
posted @ 2019-11-04 20:41 liangliangge 阅读(2964) 评论(0) 推荐(0) 编辑
摘要:1、前言 Linux内核中的设备驱动模型,是建立在sysfs设备文件系统和kobject上的,由总线(bus)、设备(device)、驱动(driver)和类(class)所组成的关系结构,在底层,Linux系统中的每个设备都有一个device结构体的实例,本文将对Linux内核的device结构体 阅读全文
posted @ 2019-09-11 16:52 liangliangge 阅读(7573) 评论(0) 推荐(2) 编辑
摘要:1、前言 在Linux内核的源码中,除了简洁的list链表外,内核还有klist链表,它是list链表的线程安全版本,在结构体中提供了整个链表的自旋锁,对链表节点查找、插入和删除等操作,都需要先获得这个自旋锁,klist的链表节点数据结构klist_node引入了引用计数器,只有当节点的的引用计数为 阅读全文
posted @ 2019-09-09 18:28 liangliangge 阅读(1900) 评论(0) 推荐(1) 编辑
摘要:1、前言 对于任何一个指针来说,必然有三种情况:一种是有效指针,一种是NULL,也就是空指针,一种是错误指针,也就是无效指针,在Linux内核中,所谓的错误指针就是指其已经到达了内核空间的最后一个page,例如,对于32bit的系统来说,内核空间最后地址为0xFFFF FFFF,那么最后一个page 阅读全文
posted @ 2019-09-04 11:52 liangliangge 阅读(2842) 评论(0) 推荐(0) 编辑
摘要:1、前言 在Linux驱动程序编写中,使用DEVICE_ATTR宏,可以定义一个struct device_attribute设备属性,并使用sysfs的API函数,便可以在设备目录下创建出属性文件,当我们在驱动程序中实现了show和store函数后,便可以使用cat和echo命令对创建出来的设备属 阅读全文
posted @ 2019-09-03 18:22 liangliangge 阅读(3170) 评论(4) 推荐(1) 编辑
摘要:1、前言 Linux内核中有大量的驱动,而这些驱动往往具有类似的结构,根据面向对象的思想,可以将共同的部分提取为父类,而这个父类就是kobject,kobject结构体中包含了大量设备的必须信息,而三大类设备驱动都需要包含这个kobject结构,运用面向对象的思想来看问题,也就是继承来自kobjec 阅读全文
posted @ 2019-08-26 18:37 liangliangge 阅读(2134) 评论(0) 推荐(0) 编辑
摘要:sysfs - _The_ filesystem for exporting kernel objects. sysfs – 用于导出内核对象(kobject)的文件系统 Patrick Mochel <mochel@osdl.org> Mike Murphy <mamurph@cs.clemson 阅读全文
posted @ 2019-08-23 14:16 liangliangge 编辑

点击右上角即可分享
微信分享提示