2019年8月10日
摘要: 在编写驱动过程分析中会遇到许多难找的问题,这时候调试的方法就很重要了,下面介绍的是利用打印的方法调试驱动,这种方法同样可以用在应用的调试过程中,而且很有效。 1、prink的原理 首先介绍一下打印的函数prink的原理,printk的原理是最终打印在终端上的。所以只要是能成为终端的设备均可被打印,比 阅读全文
posted @ 2019-08-10 22:38 andy_fly 阅读(975) 评论(0) 推荐(0) 编辑
摘要: 在写驱动的过程中,对于入口函数与出口函数我们会用一句话来修饰他们:module_init与module_exit,那会什么经过修饰后,内核就能狗调用我们编写的入口函数与出口函数呢?下面就来分析内核调用module_init的过程(这里暂时分析编译进内核的模块,不涉及动态加载的模块),以这个过程为例子 阅读全文
posted @ 2019-08-10 21:11 andy_fly 阅读(402) 评论(0) 推荐(0) 编辑
  2019年8月5日
摘要: uevent, user space event. 内核与用户空间的一种通信机制,基于netlink机制,主要用于设备驱动模型,例如热插拔。 1、调用/sbin/mdev的流程分析 在驱动程序中经常出现class_device_create这个函数,它用来在/dev目录下创建各个设备的设备节点,那么 阅读全文
posted @ 2019-08-05 20:48 andy_fly 阅读(1260) 评论(0) 推荐(0) 编辑
  2019年7月30日
摘要: 对于前面的使用register_chrdev函数注册字符设备驱动程序的方法其实是尚未升级到2.6内核版本的驱动代码。使用这种方式虽然理解起来简单(可以简单理解为一主设备号为下标将驱动的file_operations结构体放入名为chrdevs的数组中,而当应用层调用open函数时,会通过字符设备的主 阅读全文
posted @ 2019-07-30 21:55 andy_fly 阅读(443) 评论(0) 推荐(0) 编辑
  2019年7月28日
摘要: 一般网卡驱动程序厂商会给我们提供一份模板驱动,我们的工作就是需要根据自己的需要更改这个模板驱动 1、DM9000C的硬件连接 硬件连接图如下所示:它接在S3C2440的BANK4内存控制器上,它只占用8个字节的长度,并且是16bit的位宽。 下面介绍一下DM9000C的主要引脚的功能:SD0-SD1 阅读全文
posted @ 2019-07-28 16:44 andy_fly 阅读(1791) 评论(0) 推荐(0) 编辑
摘要: LINUX驱动程序分三大块:字符驱动程序、块设备驱动程序、网络驱动程序。其中网络驱动程序分为好多层协议层+与硬件相关的层。这篇主要介绍网络驱动中与硬件相关的层的框架:网卡驱动程序。 1、网卡驱动程序框,直接上图: 从图中可以知道,首先应用层通过socket编程调用若干的网络协议层,而这网络协议层完成 阅读全文
posted @ 2019-07-28 15:45 andy_fly 阅读(1986) 评论(0) 推荐(0) 编辑
  2019年7月26日
摘要: 1、NAND FLASH的硬件连接: 实验用的NAND FLASH芯片为K9F2G08U0C,它是三星公司的存储芯片,它的大小为256M。它的接线图如下所示: 它的每个引脚的分别为LDATA0-LDATA7为数据引脚、CLE为发送命令使能引脚、ALE为发送地址使能引脚、CE为芯片使能引脚、WE为写使 阅读全文
posted @ 2019-07-26 21:05 andy_fly 阅读(2129) 评论(0) 推荐(0) 编辑
  2019年7月25日
摘要: 所谓的块设备指的是硬盘、FLASH等的存储设备,此类设备存在一个缺点就是随机读写的时候有时候速度会变慢。下面一一介绍对于块设备驱动对于它的处理。 1、硬盘的结构 以硬盘为例,先介绍下老式磁盘的结构,因为块设备驱动的编写过程中涉及到很多老式磁盘的概念。先从磁盘片的结构说起,如图1所示,图中灰色的一圈圈 阅读全文
posted @ 2019-07-25 22:07 andy_fly 阅读(722) 评论(0) 推荐(0) 编辑
  2019年6月14日
摘要: 在AM335X的SD卡更新系统学习记录中最后更新完系统后,以后运行应用程序都会从EMMC中取出Linux系统运行。接着介绍Linux系统是怎么自己启动我们编写的应用程序的。 1、在AM335X的SD卡更新系统学习记录中已经详细介绍了整个系统的启动流程,这里在复述一下。AM335X上电后,根据Boot 阅读全文
posted @ 2019-06-14 16:38 andy_fly 阅读(772) 评论(0) 推荐(0) 编辑
  2019年6月13日
摘要: 一般利用一张SD卡就能进行系统的更新,以前一直不知是什么原理,最近了解了下,对了解到的内容做个记录。使用的是AM335X平台,系统是Linux,文件系统是EXT3: 1、首先需要一张分好分区的SD卡(分区方法这里不做详细介绍,一般可使用TI官方提供的create-sdcard.sh脚本可以进行分区) 阅读全文
posted @ 2019-06-13 16:32 andy_fly 阅读(878) 评论(0) 推荐(0) 编辑