5.2.5.用开发板来调试模块
摘要:set gatewapip 192.168.1.1 tftp下载zImage set bootcmd 'tftp 0x30008000 zImage;bootm 0x30008000' nfs方式挂载rootfs setenv bootargs root=/dev/nfs nfsroot=192.1
阅读全文
posted @
2018-07-01 15:27
Ocean&Star
阅读(226)
推荐(0)
5.2.4.最简单的模块源码分析3
摘要:1. printk:printk内核态,printf用户态(没什么用) 打印级别内核把级别比命令行低的所有消息显示在终端(console)上。但是所有信息都会记录在printk的“ring buffer”中。 cat /proc/sys/kernel/printk(4 4 1 7)(比4小的能显示)
阅读全文
posted @
2018-07-01 15:25
Ocean&Star
阅读(169)
推荐(0)
5.2.3.最简单的模块源码分析2
摘要:本节主要讲解了模块的卸载过程、MODULE_LICENSE等信息添加宏和__init、__exit宏。 1. static 声明函数,全局变量,则它们不能被其它文件函数调用 声明静态局部变量,具有记忆功能。它与其他普通局部变量区别:static局部变量只被初始化一次,下一次的运算依据上一次的结果值。
阅读全文
posted @
2018-07-01 15:17
Ocean&Star
阅读(147)
推荐(0)
5.2.2.最简单的模块源码分析1
摘要:本节主要讲解模块安装和过程,及其和module_init宏的关联,并且重点讲解了模块安装时的安全性兼容性校验问题。 5.2.2.1、常用的模块操作命令 lsmod(list module):打印当前内核中已经安装的模块 aston@ubuntu:~$ lsmodModule Size Used by
阅读全文
posted @
2018-07-01 15:14
Ocean&Star
阅读(93)
推荐(0)
5.2.1.开启驱动开发之路
摘要:本节主要是讲述并且实践示范驱动开发的环境搭建、构建内核源码树、常用模块安装卸载命令等 5.2.1.1、驱动开发的准备工作 正常运行linux系统的开发板。要求开发板中的linux的zImage必须是自己编译的,不能是别人编译的。 经过配置编译的内核源码树 nfs挂载的rootfs 主机ubuntu中
阅读全文
posted @
2018-07-01 15:09
Ocean&Star
阅读(185)
推荐(0)
总线,设备,驱动的关系
摘要:转载:https://blog.csdn.net/tangtang_yue/article/details/51036598 kobject,kset是设备模型的基本结构体,设备模型使用这两个结构体来过程设备的层次关系,但在实际的设备驱动编写中,我们基本用不到kobject,kset这些结构体,是因
阅读全文
posted @
2018-07-01 15:04
Ocean&Star
阅读(1398)
推荐(0)
字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
摘要:1、设备驱动 https://blog.csdn.net/fivedoumi/article/details/50913615 linux设备驱动分3种,包括字符设备驱动,块设备驱动和网络设备驱动。 字符设备驱动智能按字节流先后顺序访问设备内存,不能随机访问。鼠标,触摸屏,LCD等实时字符设备的代表
阅读全文
posted @
2018-07-01 14:05
Ocean&Star
阅读(511)
推荐(0)
6. ioremap() 函数解析
摘要:1、基础概念 几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器,状态寄存器和数据寄存器三大类。外设的寄存器通常被连续的编址。根据CPU体系结构的不同,CPU对IO端口的编制方式有两种。 I/O映射方式(I/O mapped) 典型的,如x86处理器为外设专门实现了一个单独的地址空
阅读全文
posted @
2018-07-01 13:42
Ocean&Star
阅读(1170)
推荐(0)
5. ioctl() 函数解析
摘要:解析完 open、close、read、write 四个函数后,终于到我们的 ioctl() 函数了一、 什么是ioctl ioctl是设备驱动程序中对设备的IO通道进行管理的函数。所谓对IO通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率,马达的转速等。 函数名: ioctl 功
阅读全文
posted @
2018-07-01 13:27
Ocean&Star
阅读(611)
推荐(1)
4. read()、write() 相关函数解析
摘要:我们在前面讲到了file_operations,其是一个函数指针的集合,用于存放我们定义的用于操作设备的函数的指针,如果我们不定义,它默认保留为NULL。其中有最重要的几个函数,分别是open()、read()、write()、ioctl(),下面分别对其进行解析 一、 打开和关闭设备函数a 打开设
阅读全文
posted @
2018-07-01 13:19
Ocean&Star
阅读(615)
推荐(0)
3. file、inode结构体及chardevs数组等相关知识解析
摘要:https://blog.csdn.net/zqixiao_09/article/details/50850004 下图描述了linux中虚拟文件系统,一般的设备文件与设备驱动程序间的函数调用关系 上图展现了一个应用程序调用字符设备驱动的过程,在设备驱动程序的设计中,一般而言,会关心 file 和
阅读全文
posted @
2018-07-01 13:03
Ocean&Star
阅读(442)
推荐(0)
2. 自动创建设备节点
摘要:https://blog.csdn.net/zqixiao_09/article/details/50849735 上一篇我们介绍到创建设备文件的方法,利用cat /proc/devices查看申请到的设备名,设备号。第一种是使用mknod手工创建:mknod filename type major
阅读全文
posted @
2018-06-29 22:26
Ocean&Star
阅读(730)
推荐(0)
1. cdev 结构体、设备号相关知识解析
摘要:https://blog.csdn.net/zqixiao_09/article/details/50839042 1、字符设备基础知识 1.1、设备驱动分类linux系统将设备分为3类:字符设备,块设备,网络设备。使用驱动程序: 》什么是字符设备: 》》是指只能一个字节一个字节读写的设备 》》不能
阅读全文
posted @
2018-06-29 21:59
Ocean&Star
阅读(1111)
推荐(0)
3.6.2.阻塞式IO的困境
摘要:本节通过实例代码运行结果,让大家看到在并发式IO访问时非阻塞IO遭遇的困境,由此引入非阻塞式IO。 3.6.2.1、程序中读取键盘 include include include int main(void) { // 读取键盘 // 键盘就是标准输入,stdin char buf[100]; me
阅读全文
posted @
2018-06-29 21:09
Ocean&Star
阅读(204)
推荐(0)
5.7.1.framebuffer介绍
摘要:本节介绍framebuffer的概念和来源、设计思想,fb设备的应用层接口等,为下节使用framebuffer应用编程打基础。 5.7.1.1、什么是framebuffer (1).裸机中如何操作LCD Soc里面有CPU,LCD控制器;外部有LCD的驱动器,驱动器后面带着屏幕,驱动器和控制器之间使
阅读全文
posted @
2018-06-29 20:31
Ocean&Star
阅读(233)
推荐(0)
5.4.17.将驱动添加到内核中
摘要:5.4.17.1、驱动的存在形式 (1)野生,优势是方便调试开发,所以在开发阶段都是这种 (2)家养,优势可以在内核配置时make menuconfig决定内核怎么编译,方便集成 5.4.17.2、驱动开发的一般步骤 (1)以模块的形式在外部编写、调试 (2)将调试好的驱动代码集成到kernel中
阅读全文
posted @
2018-06-29 20:11
Ocean&Star
阅读(229)
推荐(0)
5.4.13、从驱动框架角度再来分析一下gpiolib
摘要:5.4.13.2、从驱动框架角度再来分析一下gpiolib (1)之前的分析已经告一段落,截至目前我们已经搞清楚了gpiolib的建立工程。但是这只是整个gpiolib建立的一部分,是厂商驱动工程师负责的那一部分;还有另一部分是内核开发者提供的驱动框架的那一部分,就是我们后面要去分析的第2条主线。
阅读全文
posted @
2018-06-29 20:09
Ocean&Star
阅读(321)
推荐(0)
5.4.10.linux内核的gpiolib学习2
摘要:总结:先分析杂碎:struct s3c_gpio_chip,s5pv210_gpio_4bit 5.4.10.1、struct s3c_gpio_chip gpiolib库的初始化实质就是对这个结构体数组进行赋值 (1)这个结构体是一个GPIO端口的抽象,这个结构体的一个变量就可以完全的描述一个IO
阅读全文
posted @
2018-06-29 19:49
Ocean&Star
阅读(299)
推荐(0)
5.4.9.linux内核的gpiolib学习1
摘要:1. gpiolib学习重点 (1)gpiolib的建立过程 (2)gpiolib的使用方法:申请、使用、释放 (3)gpiolib的架构:涉及哪些目录的哪些文件 2. gpiolib的学习方法 可跳过 3.什么是gpiolib,为什么要有gpiolib? linux中从2.6.35以后就开始有gp
阅读全文
posted @
2018-06-29 10:01
Ocean&Star
阅读(265)
推荐(0)