![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux驱动
文章平均质量分 96
小宝是狗子啊
这个作者很懒,什么都没留下…
展开
-
S3C2440移植内核3.4
一、内核框架介绍及修改参数linux内核下载地址:https://www.kernel.org/,这里移植linux3.4.2版本u-boot是bootloader最常用的一种,对于u-boot会先将内核拷贝到内存中,设置TAG参数,然后调用函数启动内核(函数的参数:R0=0 R1=机器ID R2=TAG参数地址)内核过程根据R1,判断能否支持该机器,调用机器相关的初始化函数解析TAG参数装载驱动程序(网卡、Flash等)挂接根文件系统启动应用程序编译内核步骤tar x原创 2021-03-13 15:30:34 · 261 阅读 · 0 评论 -
S3C2440移植U-BOOT
一、移植高版本u-bootu-boot下载地址:http://www.denx.de/wiki/U-Boot/SourceCode,这里移植2012.04.01版本的u-boot,解压过程如下tar xjf u-boot-2012.04.01.tar.bz2cd u-boot-2012.04.01make smdk2410_configmake如果gcc版本过低需要在解压之前需要高版本的gcc编译器,添加在根目录后,需要环境变量添加/usr/local/arm/4.3.2/bin...原创 2021-03-11 22:35:22 · 877 阅读 · 0 评论 -
Linux3.4.2之IIC驱动
目录一、IIC驱动框架介绍二、搭建驱动框架2.1 方法一2.2 方法二2.3 方法三2.4 方法四三、完善设备驱动四、用户态直接访问一、IIC驱动框架介绍框架分为三层:app、设备驱动、总线驱动app open、read 设备驱动 例如at24cxx_open、at24cxx_read 总线驱动 提供统一的IIC操作函数 例如2440的IIC硬件操作 Atmel某个芯片的IIC硬件操作 怎么把这三层联系在一块:涉及到总.原创 2021-03-06 21:12:37 · 517 阅读 · 0 评论 -
Linux驱动之热拔插
一、hotplug/uevent机制分析字符设备驱动中可以实现自动创建设备节点也就是以下函数class_device_create(),为了让mdev(udev的简化版本)根据这些信息来创建设备节点,分析自动创建设备节点的过程,class_device_create函数最终会调用到kobject_uevent_env函数struct class_device *class_device_create(struct class *cls, struct class_device *p原创 2021-03-01 17:14:40 · 434 阅读 · 0 评论 -
Linux之字符驱动写法二
目录字符设备驱动写法二RTC驱动简介字符设备驱动写法二之前的写法参考:S3C2440之字符设备驱动详解对于之前的写法,有一个缺点,对于file_operations结构会放在chrdev数组中去,这样只能注册255个字符设备驱动static struct char_device_struct { struct char_device_struct *next; unsigned int major; unsigned int baseminor; int minorc.原创 2021-02-22 22:02:12 · 187 阅读 · 1 评论 -
Linux2.6之IIC驱动
一、IIC简介1.简单介绍通俗易懂IIC是通信协议中的一种,为一主多从的结构,对于主从,所有的数据都是从主机这边发起,从机只能接受,不能主动引起数据传输,只有两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL)对于多个IIC设备来说,每个连接到总线的器件都可以使用软件根据它的唯一地址来识别,当我们要使用一个IIC设备时,通过SDA传输地址,并等待IIC设备的回应即ACK信号而SDA上是如何实现双向传输的,在硬件上使用了开极电路,两条总线都有接上拉电阻,因此平时情况下SDA和SCL原创 2021-02-21 21:59:58 · 426 阅读 · 2 评论 -
Linux之虚拟网卡驱动
目录一、网卡驱动程序框架二、编写虚拟网卡驱动2.1 测试直接注册net_device2.2 提供发包函数2.3 添加统计信息2.4 构造假包ping通一、网卡驱动程序框架网卡驱动程序时网络驱动程序的一部分,并不是网络驱动程序,网络驱动程序分为很多层,在这里只是最底层,最终会操作到硬件,在硬件上,有硬件相关层的驱动程序,即我们要写的网卡驱动网卡驱动需要具备收发能力,使数据底层到上层,也能从上层到底层,大多驱动程序都是以面向对象的思想实现,参考真正的网卡驱动程序cs...原创 2021-02-20 21:40:10 · 1883 阅读 · 0 评论 -
块设备驱动简介与测试
目录块设备驱动的引入块设备驱动程序的框架编写块设备驱动程序编写驱动框架完善代码分配内存模拟硬盘添加打印语句分区块设备驱动的引入对于字符设备驱动,应用层read/write就会调用到底层的read/write,若对于块设备这样执行会有什么后果,例如:硬盘,一个一个盘面组成,正面为磁头0,背面磁头1,磁头0中有很多环即柱面,每个柱面中有很多扇区,假设先读0磁头的扇区0,后写2磁头的扇区0,再读0磁头扇区1,对于磁盘里的机械结构,首先要定位到0磁头的扇区0读,再跳到...原创 2021-02-17 17:14:32 · 624 阅读 · 1 评论 -
Linux之USB设备驱动分析与编程
目录一、概念介绍二、分析USB总线驱动程序三、编写USB设备驱动程序一、概念介绍例当USB设备接到PC时,右下角弹出"发现android phone",跳出一个对话框,提示安装驱动程序提出问题:既然还没有"驱动程序",为何能知道是"android phone"?答:windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone",提示安装的是"设备驱动程序" USB设备种类非常多,为什么一接入电脑,就能识别出来?答:PC和原创 2021-02-15 22:46:50 · 880 阅读 · 0 评论 -
S3C2440之触摸屏驱动
一、触摸屏驱动简介触摸屏驱动是以用输入子系统写的:输入子系统 所有触摸屏驱动程序都是以下框架:1.分配一个input_dev结构体;2.设置input_dev结构体;3.注册input_dev结构体;4.硬件相关的操作static int s3c_ts_init(void){ /* 1. 分配一个input_dev结构体 */ s3c_ts_dev = input_allocate_device(); /* 2. 设置 */ /* 2.1 能产生哪类事件 */ set_bit(E原创 2021-02-14 16:17:04 · 600 阅读 · 0 评论 -
S3C2440之LCD驱动
目录一、LCD驱动程序之层次分析二、LCD硬件操作三、编写LCD驱动程序3.1 分配一个fb_info,在framebuffer_alloc中参数一是分配额外的空间,这里不需要3.2 设置fb_info3.3 硬件相关的操作1.配置GPIO用于LCD2.根据LCD手册设置LCD控制器3.分配显存(framebuffer)并把地址告诉LCD控制器3.4 注册3.5 代码四、测试五、利用内核自带的bus总线编写LCD驱动一、LCD驱动程序之层次分...原创 2021-02-09 23:09:28 · 585 阅读 · 0 评论 -
Linux之分层分离思想
目录分层分离bus_drv_dev模型1.device硬件相关2.driver软件代码稳定简单的LED分层分离驱动测试分层分离对于输入子系统分为上下两层,分离下层为两部分,input_handler部分和input_device部分,对于buttons.c硬件相关,evdev.c纯软件稳定输入子系统参考:https://blog.csdn.net/weixin_45775710/article/details/113731018input.c向上提供统一的接口,不管.原创 2021-02-07 14:17:41 · 624 阅读 · 0 评论 -
输入子系统分析与测试
输入子系统概念介绍input子系统的作用对于自己写的驱动程序,例如直接打开"/dev/buttons",只是个人知道 缺点:没办法用在别人写的现成的应用程序上,因为别人的应用程序不会open"/dev/buttons",打开可能是其他现成的设备如/dev/tty,甚至不打开什么设备,例如直接scanf就可以获取按键的输入想写通用的驱动程序,让其他现成的应用程序无缝的移植到单板上,不需要修改别人的应用程序,使用现成的驱动,内核里面现成的驱动程序把自己的东西融合进去,现成的驱动程序即输入子系统(原创 2021-02-06 23:53:44 · 345 阅读 · 0 评论 -
S3C2440之字符设备驱动详解
一、概念介绍C库实现open,read,write 调用之后会进到内核 open,read,write的实现实际上是实现了一条swi val指令,这条指令会产生一个异常,相当于发生中断一样,然后进到内核的异常处理函数里面 内核系统调用接口 System Call interaface 根据发生异常的原因,调用不同处理函数sys_open sys_read sys_write sys_open、sys_read、sys_write被VFS:virtual File System 处理打开不同文件来.原创 2021-02-04 00:09:51 · 1504 阅读 · 2 评论