
驱动程序
文章平均质量分 86
RubyBoss
这个作者很懒,什么都没留下…
展开
-
GDB命令大全
学习使用了GDB一段时间后,发现它真的好强大!好用!GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:转载 2013-08-29 11:53:21 · 746 阅读 · 0 评论 -
块设备驱动程序分析之框架构建
这一节里实际上是将块设备驱动程序的框架给勾勒出来,并不做具体的事情,下面看代码:#include #include #include #include #include #include #include #include #include #include #include #include #include #include转载 2012-07-10 18:04:30 · 704 阅读 · 0 评论 -
USB驱动程序代码分析——检测设备插入拔出
我们先来看代码:/* * drivers\hid\usbhid\usbmouse.c */#include #include #include #include #include #include /* 关于这个结构体我们在注释1里面会有分析 */static struct usb_device_id usb_mouse_id_table [] = {转载 2012-07-10 18:01:42 · 4521 阅读 · 0 评论 -
虚拟网卡驱动(二)
下面让我们来看一下本实验的具体代码:/** 参考 drivers\net\cs89x0.c*/#include #include #include #include #include #include #include #include #include #include #include #include #includ转载 2012-07-10 18:18:48 · 1577 阅读 · 0 评论 -
linux网络驱动体系结构
在分析网卡驱动程序之前,我们先来了解一下linux网络驱动体系结构: 我们来说一下流程:当网络设备驱动加载时,首先在入口函数里面完成一些初始化工作,这主要就是对net_device结构体的设置,以及跟硬件相关的设置,其中发包和收包函数比较重要。ifconfig xxx.xxx.xxx.xxx up来配置网卡的时候,会调用net_device结构体的open函数。当发送数据包时转载 2012-07-10 18:17:27 · 729 阅读 · 0 评论 -
norflash驱动编写
首先我们来看代码:/* *参考drivers\mtd\maps\physmap.c*/#include #include #include #include #include #include #include #include #include #include #include #include static struct转载 2012-07-10 18:16:39 · 1209 阅读 · 0 评论 -
内核自带norflash的编译与实验
内核自带了一个norflash驱动程序,它就是drivers/mtd/maps/physmap.c,下面我们开始实验:1、通过配置内核支持NOR FLASH (1)make menuconfig-> Device Drivers -> Memory Technology Device (MTD) support -> Mapping drivers for ch转载 2012-07-10 18:15:04 · 1142 阅读 · 0 评论 -
norflash驱动程序——基础知识
1、我们先来看下原理图:LADDR1——LADDR20:20位地址线LDATA0——LDATA15 :16位数据线nRESET :复位引脚LnOE :输出使能引脚LnWE :写使能引脚nGCS0转载 2012-07-10 18:14:31 · 1869 阅读 · 0 评论 -
块设备驱动之nandflash——支持分区
上一节里面我们分析的驱动程序并不支持分区,它只是可以识别到nandflash而已,本节我们来完善它,下面看代码:/* 参考 * drivers\mtd\nand\s3c2410.c * drivers\mtd\nand\at91_nand.c */#include #include #include #include #include转载 2012-07-10 18:13:50 · 1112 阅读 · 0 评论 -
块设备驱动程序之nandflash——基本框架
我们先查看内核的启动信息,以搞清楚从哪个文件着手来分析:S3C24XX NAND Driver, (c) 2004 Simtec Electronicss3c2440-nand s3c2440-nand: Tacls=3, 30ns Twrph0=7 70ns, Twrph1=3 30nsNAND device: Manufacturer ID: 0xec, Chip ID: 0x转载 2012-07-10 18:08:42 · 1246 阅读 · 0 评论 -
块设备驱动程序之nandflash——基础知识
我们先来看一下原理图: 我们先来分析一下这个原理图:LDATA0——LDATA7:既传输数据,也传输地址,还传输命令。那么如何区分传输的是什么呢?不要担心,下面会说到控制引脚RnB:读写nandflash的状态标志位,0表示读写完成了,1表示还在忙。CLE:当CLE为高电平时表示传输的是命令ALE:当ALE为高电平时表示传输的是地址,当CLE和ALE都为低电平时表示转载 2012-07-10 18:07:49 · 1355 阅读 · 0 评论 -
块设备驱动之nandflash——简单程序分析
本节里面我们实现一个简单的nandflash驱动程序,我们先来看代码:/* 参考 * drivers\mtd\nand\s3c2410.c * drivers\mtd\nand\at91_nand.c */#include #include #include #include #include #include #include转载 2012-07-10 18:13:00 · 1278 阅读 · 0 评论 -
史上最简单的网卡驱动程序(一)
我们先来看代码: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include转载 2012-07-10 18:18:04 · 1616 阅读 · 0 评论 -
MC1488 MC1489
3.RS 232串行通信接口 由于制定串行接口标准早在制定TTL逻辑系列之前,因此输入输出电平不与TTL兼容。因为这个原因,连接RS232到微机系统必须经过电平转换。图9.11中使用了MC1488从TTL 转换到RS232电平,用MC1489从RS232转换到TTL电平。MC1488和MC1489集成电路芯片通常称为线路驱动器和线路接收器。最简单的RS-232C数据通信连接 3)转载 2013-06-23 12:19:33 · 6759 阅读 · 0 评论 -
Linux 下编译、安装、配置 QT
打算做嵌入式图像处理,计划方案嵌入式Linux+OpenCV+QT,昨天简单入门OpenCV今天看看QT,QT就先弄Linux下面的,回家之前争取把基本的摸通,然后能在板子上跑起来。软件环境Linux:Ubuntu 12.04 X86QT:4.8.4关于QT安装QT的早期版本和现在版本有点变化,提供的文件也不尽相同,最新的版本为5.0,我这里用的是4.8.4,一个完整的转载 2013-06-09 09:45:47 · 1209 阅读 · 0 评论 -
JAVA 串口编程
一、环境配置(1)解压复制文件解压javacomm20-win32.zip把win32com.dll复制到/jre/bin 和/bin目录下把comm.jar复制到/jre/lib/ext和/lib目录下把javax.comm.properties复制到/jre/lib和/lib目录下(2)设置环境变量CLASSPATH=/jre /lib/ext /comm.jar;转载 2013-06-08 18:40:42 · 10133 阅读 · 1 评论 -
让source insight 搜索到.S的文件 高亮AT&T ASM 文件keyword的方法 sourceinsight技巧
标签:sourceinsight office,word休闲职场用source insight看blob以及内核中的代码,发现即使全局搜索,也找不到定义中后缀为.S的函数,而明明在*.S中用汇编定义了该函数的。去网上查了一下,发现原因是*.S文件并没有添加到改工程中来。为了用source insight能搜索到.S的汇编文件,必须把该文件添加进来。 方法:转载 2013-05-25 18:44:47 · 1495 阅读 · 0 评论 -
mini2440_NFS 利用uboot启动
本文记录mini2440开发板如何利用uboot通过nfs服务来启动内核。背景:放了好久的板子,今天又得重新拿来使唤,之前换了机子,虽说除了kernel和rootfs通过nfs挂载的,但u-boot死活进不去...搞定u-boot,nfs又不好使了。...环境:1.OS:ubuntu11.10;2.串口工具:C-kermit...涉及转载 2013-05-25 01:24:11 · 983 阅读 · 0 评论 -
GNU ARM汇编--(八)s3c2440的watchdog
从单片机起,watchdog就是必不可少的.在各种应用环境中,程序很可能跑飞或死掉,这时候就需要通过watchdog来保证整个系统重新恢复到正常状态. 照旧,给出s3c2440的datasheet说明:概述: watchdog timer用于由于噪声或者系统错误引起的程序跑飞了的情况下恢复处理器的正常操作.它可以被用作一个可以请求中断服务的普通16bit的内部定时器转载 2013-05-11 21:21:55 · 802 阅读 · 0 评论 -
GNU ARM汇编--(四)中断汇编之非嵌套中断处理
在写这篇blog之前,不得不感慨一句:纸上得来终觉浅,绝知此事要躬行.作为EE出身的,虽然好久好久没用汇编写单片机的中断了,但自我感觉对中断的理解还是比较深入的,本以为在GNU ARM汇编下搞个中断会很容易,谁知道断断续续花了我几周.完全用汇编写中断和用c中的_irq写中断还是有区别的,谁用谁知道.还是那句话:深入细节是必须的,也是值得的. 这一篇blog的理论知识主要来源于:《转载 2013-05-11 21:18:07 · 748 阅读 · 0 评论 -
uboot官方FTP下载地址
ftp://ftp.denx.de/pub/u-boot/ ftp://ftp.denx.de/pub/u-boot/转载 2013-05-23 15:12:05 · 1690 阅读 · 0 评论 -
DM9000网卡驱动移植
首先需要明白下面一点:我们移植dm9000网卡驱动程序,要做的就是找出最小相异性,然后修改。这里的最小相异性是:基地址、位宽、中断引脚等信息移植过程:1、入口函数和出口函数改为:dm9000c_init和dm9000c_exit,添加修饰函数:module_init(dm9000c_init);和module_exit(dm9000c_exit);2、修改基地址:在转载 2012-07-10 18:20:07 · 1265 阅读 · 0 评论 -
虚拟网卡驱动程序(三)
/** 参考 drivers\net\cs89x0.c*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include转载 2012-07-10 18:19:31 · 2289 阅读 · 1 评论 -
快设备驱动程序之是内存模拟的磁盘支持格式化
在块设备驱动程序分析之框架构建那一节里面已经提到过 block_device_operations这样一个结构体。顾名思义,它的作用就是来进行块设备的处理,对应的就是各种函数,但是并不对应块设备的读写处理函数,这是因为对块设备的读写在别的地方完成了,具体来说就是在request函数中被完成了,对于这个函数,我们今后会来分析的,现在先放一放。在本节里面我们要完成的功能是使块设备支持分区,对块设备转载 2012-07-10 18:06:41 · 960 阅读 · 0 评论 -
块设备驱动程序分析之内存模拟磁盘
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #i转载 2012-07-10 18:06:04 · 1612 阅读 · 0 评论 -
平台总线设备驱动模型——基础知识
平台总线设备驱动程序采用了分层分离的机制,我们先简述一下其大体上的原理,然后在从具体代码出发进行分析。大体原理:在内核中存在平台设备总线,我们要把设备挂载到总线设备列表中,同时也要把驱动挂在到总线驱动列表中,但是相匹配的设备和驱动的名字要保持一致,因为总线会根据设备和驱动的名字是否一致,来决定他们是否匹配,一旦设备和驱动匹配起来,就会调用驱动程序里的probe函数进行处理。代码分析,以/d转载 2012-07-09 17:30:59 · 867 阅读 · 0 评论 -
字符设备驱动程序之按键——中断机制
要想用中断方式编写应用程序,首先需要理解中断的流程。之前我们分析过中断流程的,现在再来分析一边,以便加深印象。内核在start_kernel函数中调用trap_init、init_IRQ两个函数来设置异常的处理函数,首先我们想来看看trap_init函数,部分代码如下:void __init trap_init(void){...........................转载 2012-07-09 15:29:04 · 937 阅读 · 0 评论 -
USB驱动程序框架搭建
1.首先我们先从理论上浅谈一下USB驱动的框架app: ------------------------------------------- USB设备驱动程序 // 知道数据含义内核 -------------------------------------- USB总线驱动程序 // 1. 识别, 2.转载 2012-07-09 18:37:40 · 899 阅读 · 0 评论 -
USB协议分析(来源于国嵌等)
在具体分析之前我们先来掌握一些基础知识: 这个表格就是主控制器发送给设备的请求信息的格式 bmRequestType主要规定了下一条信息的传输方向,0表示主机发送给设备,1相反 bRequest请求的类型: wValue根据不同的请求而设置不同的值,一般就是传送参数给设备标明这是什么请求。在GET_DESCRIPTOR获取设备描述符里,它的值是00 01。在GET_转载 2012-07-09 18:36:23 · 3617 阅读 · 0 评论 -
LCD驱动程序——代码编写(二)
在编写代码之前我们先来看一看原理图 引脚说明:VCLK:发出lcd时钟信号,每来一个时钟,就会在屏幕上显示一个像素 ——GPC1 :配置为lcd引脚VLINE:发出lcd行扫描信号转载 2012-07-09 18:09:58 · 3985 阅读 · 0 评论 -
平台总线设备驱动模型——代码分析
节我们分析了平台总线的工作流程,这一节里我们来分析代码:先来看设备驱动代码:#include #include #include #include #include #include #include #include #include #include #include /*定义资源,可以在平台总线驱动程序里通过platform_get_r转载 2012-07-09 16:58:44 · 1284 阅读 · 0 评论 -
linux输入子系统——代码编写(二)
首先我们先来看一下代码,根据代码来分析:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include转载 2012-07-09 16:45:34 · 793 阅读 · 0 评论 -
字符设备驱动程序之按键——防抖动
我们按下按键的时候难免会发生抖动,因此我们意识中的一次按键按下,可能实际上是发生了好几次按键动作。那么有没有一种机制可以消除这种情况呢?答案是肯定的,我们要引入定时器的概念。先来说一下我们的大体思想吧:我们可以设置一个定时器,当按键按下时,会发生中断,在中断函数中对定时器赋初值,经定时器延时的一段时间后,再进行按键按下后的处理工作。在这段时间内,如果发生抖动的话,会再次进入中断处理函数,从新对转载 2012-07-09 16:19:43 · 814 阅读 · 0 评论 -
字符设备驱动程序之按键——同步互斥阻塞
我们知道在之前的应用程序中,如果我们同时运行两次应用程序的话,则两次都可以同时打开设备,这就是说我们的按键资源同时被两个进程使用。显然这不是我们想要的,那么下面我们就要引入互斥的概念。关于互斥其实其实现很简单,就是采用一些标志,当文件被一个进程打开后,就会设置该标志,使其他进程无法打开设备文件。下面,我们就完全靠自己去实现一个互斥,代码修改如下:首先定义一个全局变量:static转载 2012-07-09 16:06:19 · 788 阅读 · 0 评论 -
字符设备驱动程序之按键——异步通信机制
之前三节我们采用的查询方式,中断方式和poll方式都是应用程序主动去查询按键状态。那么有没有一种机制可以实现驱动程序主动提醒应用程序按键的状态?答案是肯定的!这就是异步通信机制。采用异步通信机制来编写按键驱动程序的大体思想是:当按键按下时,驱动程序将一个信号传递给应用程序,应用程序注册了接收到该信号的处理函数,当接受到该信号后,就会调用相应的处理函数进行处理。我们先来看具体的代码,然后从具转载 2012-07-09 15:41:31 · 736 阅读 · 0 评论 -
触摸屏代码分析——实现按下中断
1、工作原理首先我们要区分lcd和触摸屏,lcd是一个屏幕,触摸屏是贴在lcd上的两层膜。接下来我们说一下四线电阻触摸屏的原理:触摸屏就是上下两层膜,比如上层代表x轴(XM:负端,XP:正端),下层代表y轴(YM:负端,YP:正端)。当读取x轴坐标时,XP接3.3v,XM接地,从YM读取按下点的电压值作为模拟输入信号,再经过AD转换后就得到了x轴坐标。同理,当读取y轴坐标时,YP接3.转载 2012-07-09 18:25:02 · 2889 阅读 · 0 评论 -
USB基础知识问答
现象:把USB设备接到PC1. 右下角弹出"发现android phone"2. 跳出一个对话框,提示你安装驱动程序问1. 既然还没有"驱动程序",为何能知道是"android phone"答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone" 提示你安装的是"设备驱动程序"转载 2012-07-09 18:36:55 · 784 阅读 · 0 评论 -
块设备驱动程序框架
韦东山老师帮我们把框架搭建起来了,我们先来看一下:框架:app: open,read,write "1.txt"--------------------------------------------- 文件的读写文件系统: vfat, ext2, ext3, yaffs2, jffs2 (把文件的读写转换为扇区的读写)----------转载 2012-07-10 18:03:39 · 1120 阅读 · 0 评论 -
linux块设备基础知识(来源于国嵌)
1、块设备块设备将数据存储在固定大小的块中,每块的大小通常在521字节到32768字节之间。磁盘、SD卡都是常见的块设备。2、块设备与字符设备的区别(1)读写数据的单元不同:块设备以块为读写单元,而字符设备以字符为读写单元(2)块设备可以随机访问,而字符设备只能顺序访问3、linux块设备体系结构VFS:虚拟文件系统。VFS是对各种具体文件系统的一种封装,为转载 2012-07-10 18:03:03 · 3533 阅读 · 0 评论 -
USB驱动程序代码分析——鼠标用作键盘
首先我们贴出代码:/* * drivers\hid\usbhid\usbmouse.c */#include #include #include #include #include #include static struct input_dev *uk_dev;static char *usb_buf;static dma_ad转载 2012-07-10 18:02:19 · 2032 阅读 · 0 评论