随笔分类 -  第二期.驱动

摘要:1.小结 分配gendisk结构 分配设置队列,队列提供实际的读写函数,这个会赋值到gendisk 注册块设备驱动(对比注册字符设备驱动,并没有提供一个file_operations) 设置gendisk参数,包括先前的队列 注册这个gendisk 2.关键函数解析 register_blkdev 阅读全文
posted @ 2020-09-06 15:56 人民广场的二道贩子 阅读(184) 评论(0) 推荐(0)
摘要:1.简介 USB实现一个鼠标模拟一个键盘。左键L,右键S,中间enter USB设备驱动程序:知道数据的含义 USB总线驱动程序:1、识别USB设备;2、找到匹配的设备驱动;3、提供USB的读写函数 USB设备插入后,会在D-或D+上有电平变化,通知主机。主机通过端点口与USB设备交互,给USB分配 阅读全文
posted @ 2020-08-24 22:25 人民广场的二道贩子 阅读(242) 评论(0) 推荐(0)
摘要:1.小结 使用输入子系统来做 申请input_dev结构体 设置input_dev的成员 注册input_dev驱动设备 硬件操作 触摸屏硬件操作思路(电阻屏) 4.1、按下产生中断 4.2、在按下中断处理函数中,启用ADC转换X、Y坐标值 4.3、启动ADC不会瞬间完成,一般来说启动ADC后就不管 阅读全文
posted @ 2020-08-09 17:07 人民广场的二道贩子 阅读(200) 评论(0) 推荐(0)
摘要:1.小结 1.分配一个fb_info 2.设置 2.1固定的参数 2.2设置可变的参数 2.3设置具体的文件操作指针fb_info->fbops 2.4其他设置 3.硬件相关操作 3.1配置GPIO用于LCD 3.2根据LCD手册设置LCD控制器,如VCLK的频率等 3.3分配显存framebuff 阅读全文
posted @ 2020-08-09 15:32 人民广场的二道贩子 阅读(187) 评论(0) 推荐(0)
摘要:1.框架 platform的bus总线结构将一个硬件驱动分为device设备和driver驱动两部分。使用platform将两个联系到一起 就是把device和driver分开注册到内核中去。在根据相应的name之类的去匹配使用。 2.关键函数和结构 device_driver:device和dri 阅读全文
posted @ 2020-07-18 23:47 人民广场的二道贩子 阅读(210) 评论(0) 推荐(0)
摘要:1.框架小结 1、入口input_init:注册类,注册驱动 class_create(&input_class); register_chrdev(INPUT_MAJOR, "input", &input_fops); 2、打开驱动,将真正的file_operations引入执行open,该文件同 阅读全文
posted @ 2020-07-18 15:09 人民广场的二道贩子 阅读(163) 评论(0) 推荐(0)
摘要:1.简介 === 内核通过定时器中断来跟踪时间流。 定时器中断的中断间隔由内核根据HZ的值设定,HZ是一个与体系结构有关的常数默认HZ值范围为50~1200,而对软件仿真器的HZ值是24.大多数平台每秒有100或1000次时钟中断。 每次当时钟中断发生时,内核内部计数器的值就增加一。这个计数器的值在 阅读全文
posted @ 2020-03-16 16:37 人民广场的二道贩子 阅读(187) 评论(0) 推荐(0)
摘要:1.按键的4种控制方式对比 === 1.查询 :耗资源 | 2.中断 :没有超时机制 | APP 驱动 3.poll :加入了超时机制 | 4.异步通知 :按键发生后去通知app 驱动 APP 异步通知的注意事项 1.不是所有的设备都支持异步通知。应用程序通常假设只有套接字和终端才有异步通知能力。 阅读全文
posted @ 2020-03-14 18:26 人民广场的二道贩子 阅读(225) 评论(0) 推荐(0)
摘要:1.poll的简介 === 允许进程决定是否可对一个或多个打开的文件做非阻塞的读取或写入。它们常常用于那些要使用多个输入或输出流而又不会阻塞其中任何一个流的应用中 unsigned int ( poll) (struct file , struct poll_table_struct ); 1.在一 阅读全文
posted @ 2020-03-14 15:02 人民广场的二道贩子 阅读(295) 评论(0) 推荐(0)
摘要:1.裸机和linux中断 === 裸机中断流程 1.外部触发 2.CPU发生中断,强制跳到异常向量处 3.跳到具体函数 a.保存具体函数 b.处理具体函数 c.恢复中断现场 linux中断 ARM架构的CPU的异常向量基地址可以是0x00000000或0xffff0000这个地址并不是物理地址,是虚 阅读全文
posted @ 2020-03-13 16:44 人民广场的二道贩子 阅读(328) 评论(2) 推荐(0)
摘要:1.前言 Linux内核就是由各种驱动组成的 Linux操作系统将所有的设备都看成文件,以操作文件的方式访问设备。 应用程序不能直接操作硬件,而是通过使用统一的接口函数调用硬件驱动程序。 2.字符设备驱动程序中重要的数据结构和函数 重要的数据结构和函数 可以在glibc的fcntl.h、unistd 阅读全文
posted @ 2020-03-12 17:04 人民广场的二道贩子 阅读(375) 评论(0) 推荐(0)
摘要:1.应用程序,库,内核,驱动程序的关系 === (1).应用程序使用库提供的接口函数(open,read,write,ioctl等)函数可以打开设备文件 (2).库根据open函数传入的参数执行“swi”指令,这条指令会引起CPU异常,进入内核。 (3).内核的异常处理函数根据这些参数找到相应的驱动 阅读全文
posted @ 2020-03-09 16:33 人民广场的二道贩子 阅读(263) 评论(0) 推荐(0)