现在位置: 首页 > techbulo发表的所有文章
  • 10月
  • 12日
驱动开发 ⁄ 共 2005字 向Linux内核添加驱动程序已关闭评论 ⁄ 阅读 2,598 次
一.概述: 在linux内核中增加程序需要完成以下三项工作: 1.将编写的源代码复制到Linux内核源代码的相应目录 2.在目录的Kconfig文件中增加新源代码对应项目的编译配置选项 3.在目录的Makefile文件中增加对新源代码的编译条目 二.实例 1.先把驱动代码usbtmc(文件夹)赋值到/usr/src/linux2.6.32/drivers/char下 首先你要清楚你的模块应在内核源代码树中处于何处。 1>设备驱动程序存放在内核源码树根目录drivers/的子目录下,在其内部,设备驱动文件进一步按照类别,类型等有序地组织起来。 a.字符设备存在于drivers/char/目录下 b.......
阅读全文
  • 10月
  • 11日
技术文章 ⁄ 共 2439字 RS232/RS422/RS485通信接口区别已关闭评论 ⁄ 阅读 896 次
一 串口控制    通常我们对于视频服务器、录像机、切换台等直接播出、切换控制主要使用串口进行,主要使用到RS-232、RS-422与RS-485三种接口控制。下面就串口的接口标准以及使用和外部插件和电缆进行探讨。 RS指“推荐标准”   RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。例如:视频服务器都带有多个RS422串行通讯接口,每个接口均可通过RS422通讯线由外部计算机控制实现记录与播放。 视频服务器除提供各种控制硬件接口外,还提供协议接口,如RS......
阅读全文
  • 10月
  • 07日
驱动开发 ⁄ 共 12742字 V4L2框架分析学习二已关闭评论 ⁄ 阅读 6,215 次
V4L2框架分析学习一  http://www.techbulo.com/1193.html V4L2框架分析学习二   http://www.techbulo.com/1198.html   v4l2_device v4l2_device在v4l2框架中充当所有v4l2_subdev的父设备,管理着注册在其下的子设备。以下是v4l2_device结构体原型(去掉了无关的成员): struct v4l2_device {          structlist_head subdevs;    //用链表管理注册的subdev          charname[V4L2_DEVICE_NAME_SIZE];    //device 名字          structkref ref;      //引用计数          …… } 可以看出v4l2_device......
阅读全文
  • 10月
  • 07日
驱动开发 ⁄ 共 1505字 V4L2框架分析学习一已关闭评论 ⁄ 阅读 3,627 次
V4L2框架分析学习一  http://www.techbulo.com/1193.html V4L2框架分析学习二   http://www.techbulo.com/1198.html   1、概述 Video4Linux2是Linux内核中关于视频设备的内核驱动框架,为上层的访问底层的视频设备提供了统一的接口。凡是内核中的子系统都有抽象底层硬件的差异,为上层提供统一的接口和提取出公共代码避免代码冗余等好处。就像公司的老板一般都不会直接找底层的员工谈话,而是找部门经理了解情况,一个是因为底层屌丝人数多,意见各有不同,措辞也不准,部门经理会把情况汇总后再向上汇报;二个是老板时间宝贵......
阅读全文
  • 09月
  • 22日
驱动开发 ⁄ 共 1883字 USB总线驱动已关闭评论 ⁄ 阅读 1,688 次
1、USB总线驱动程序的作用: A、识别USB设备 B、查找并安装对应的设备USB设备驱动程序 C、提供USB读写函数 2、将USB设备接入USB口观察输出信息,然后拔掉,然后再接上,观察串口打印信息 3、在内核代码driver目录下,搜索上面打印的内容: grep "xxx" * -nR 4、分析/usb/core/hub.c ,找到2657行 5、 给新设备分配编号: 把编号地址告诉USB设备: 获取设备描叙符: 初始化新设备 把device放入usb_bus_type的dev链表,从usb_bus_type的driver链表里取出usb_driver, 把usb_interface和usb_driver的id_table比较,如果能......
阅读全文
  • 09月
  • 21日
驱动开发 ⁄ 共 5322字 linux USB框架分析已关闭评论 ⁄ 阅读 1,708 次
       首先我们先来简单说一说USB的框架,之后在来具体分析源码,以便加深理解!其实USB的框架比较像“平台总线、设备、驱动”的框架,也分为总线、设备、驱动三大块。其中总线驱动是已经由内核完成的,一旦接入usb设备,总线驱动程序就会找到能处理该设备的驱动进行处理!我们进入文件系统的/sys/bus目录下可以看到很多总线目录,usb目录就在其中,我们进入usb目录,会看到devices和drivers! 下面我们来看源码: #define subsys_initcall(fn) module_init(fn) subsys_initcall(usb_init);      bus_register(&usb_bus_ty......
阅读全文
  • 09月
  • 20日
技术文章 ⁄ 共 1689字 三极管电流流向、三极管工作原理分析!精辟、透彻(三)已关闭评论 ⁄ 阅读 3,048 次
其实晶体三极管的电流放大关系与电子三极管类似。晶体三极管的基极就相当于电子三极管的栅极,基区就相当于栅网,只不过晶体管的这个栅网是动态的是不可见的。放大状态下,贯穿整个管子的电子流在通过基区时,基区与电子管的栅网作用相类似,会对电子流进行截流。如果基区做得薄,掺杂度低,基区的空穴数就会少,那么空穴对电子的截流量就小,这就相当于电子管的栅网比较疏一样。反之截流量就会大。很明显只要晶体管三极管的内部结构确定,这个截流比也就确定。所以,为了获大较大的电流放大倍数,使β值足够高,在制作三极管时往往......
阅读全文
  • 09月
  • 20日
技术文章 ⁄ 共 2311字 三极管电流流向、三极管工作原理分析!精辟、透彻(二)已关闭评论 ⁄ 阅读 2,806 次
光敏二极管工作在反偏状态,因为光照可以增加少数载流子的数量,因而光照就会导致反向漏电流的改变,人们就是利用这样的道理制作出了光敏二极管。既然此时漏电流的增加是人为的,那么漏电流的增加部分也就很容易能够实现人为地控制。 2、强调一个结论: 讲到这里,一定要重点地说明PN结正、反偏时,多数载流子和少数载流子所充当的角色及其性质。正偏时是多数载流子载流导电,反偏时是少数载流子载流导电。所以,正偏电流大,反偏电流小,PN结显示出单向电性。特别是要重点说明,反偏时少数载流子反向通过PN结是很容易的,甚至比正......
阅读全文
  • 09月
  • 20日
技术文章 ⁄ 共 2469字 三极管电流流向、三极管工作原理分析!精辟、透彻(一)已关闭评论 ⁄ 阅读 4,855 次
三极管工作原理分析,精辟、透彻,看后你就懂 随着科学技的发展,电子技术的应用几乎渗透到了人们生产生活的方方面面。晶体三极管作为电子技术中一个最为基本的常用器件,其原理对于学习电子技术的人自然应该是一个重点。三极管原理的关键是要说明以下三点: 1、集电结为何会发生反偏导通并产生Ic,这看起来与二极管原理强调的PN结单向导电性相矛盾。 2、放大状态下集电极电流Ic为什么会只受控于电流Ib而与电压无关;即:Ic与Ib之间为什么存在着一个固定的放大倍数关系。虽然基区较薄,但只要Ib为零,则Ic即为零。 3、饱和状态下,Vc......
阅读全文
  • 09月
  • 15日
技术文章 ⁄ 共 1675字 C语言结构体对齐已关闭评论 ⁄ 阅读 1,639 次
1 结构体数据对齐(没有#pragma pack()宏定义) 结构体对齐可以总结为三个基本原则 ①数据成员对齐规则: 结构体的数据成员中,第一个成员从offset为0的地址开始,以后每一个成员存储的起始位置为该成员大小的整数倍(在win32中int为32bit也即4字节对齐) ②结构体作为成员: 如果一个结构体1作为另一个结构体2的数据成员,则在结构体2中结构体1要从1内部成员最大的整数倍地址开始存储。 ③结构体的总大小(sizeof): 为该结构体内部最大基本类型的整数倍,不足的要补齐,而不是简单的所有成员的大小总和。 举例说明 struct{ short a; short ......
阅读全文
  • 09月
  • 10日
生活点滴 ⁄ 共 2字 程序猿12个人艰不拆的真相,说多了都是泪已关闭评论 ⁄ 阅读 1,353 次
   
阅读全文
  • 09月
  • 01日
技术文章 ⁄ 共 378字 makefile中的变量:延时变量VS立即变量已关闭评论 ⁄ 阅读 2,106 次
makefile 中的有两种变量: 延时变量, 立即变量. 前者在这个变量使用时才扩展, 即当真正使用时这个变量的值才确定. 后者在定义这个变量时,它的值就确定了. 延时变量用 =, ?=, 定义, 或用define 定义 如:  GCC = arm-linux- GCC ?= arm-linux- 注意 ?= 用来定义第一次出现的延时变量.  := 用来定义立即变量,前面的变量不能使用后面的变量,只能使用前面已定义好了的变量 GCC := arm-linux- makefile中的内部变量: $@ 扩展为当前规则的目标文件名;  $< 扩展为当前规则依赖文件列表中的第一个依赖文件;  $? 扩展为所有的修改日......
阅读全文
×