关闭

网卡驱动之虚拟网卡驱动编写

我们来实现这么一个目的 我ping 3.3.3.4的时候,按理说如果是真实网卡的话,我们3.3.3.3的机器,和3.3.3.4的机器。ping 3.3.3.4的时候3.3.3.3的机器会把包发给3.3.3.4,3.3.3.4收到包之后又会把包发给3.3.3.3 在驱动程序中用netif_rx用这个函数上报包 它就可以ping得通了。但是我们是虚拟网卡,并没有真正的网线,也没有3.3.3.4 ...
阅读(517) 评论(0)

网卡驱动程序框架

我们这里说的是网卡驱动程序,不是网络驱动程序,网络有七层,我们写的只是最底层的东西,网络这么多层,但是最终你还是要操作硬件啊 所以上面肯定有个硬件相关层,我们要写的就是硬件相关的驱动程序这一小块。 网卡你不需要打开什么设备,你只需要socket编程就行了 怎么写 1、分配某个结构体 2、设置 3、注册 4、硬件相关的操作 然而这个重点在设置这里 首先你得提供发包函数 提供...
阅读(408) 评论(0)

nandflash驱动之简单编写

参考内核中 driver/mtd/nand/s3c2410.c或者driver/mtd/nand/atmel_nand.c 先把头文件包含进去 我们来看看nand_scan_ident这里面做了什么事情 设置位数,因为我们的数据线只有8位所以这里选八位 设置默认函数 看看这个怎么设置的 如果没设置就用默认的,看看这个...
阅读(216) 评论(0)

nandflash驱动框架

nandflash驱动框架 最上层肯定是应用程 —————————— app: open read write ________________ 文件系统:文件系统是将对文件的读写转换为对块设备的读写 ————————— 块设备驱动 块设备 : 知道怎么优化 —————— nandflash协议层 :知道发什么来读写,擦除,识别 —————— 硬件相关...
阅读(165) 评论(0)

nandflash原理及硬件操作

我们先看下nandflash的布线 有data0 到data7 八根数据线 nandflash是个存储芯片,那我提出请求:读地址a的数据,把数据b写到a地址上去 那么我们看原理图只看到data0-data7,没有看到地址引脚,那怎么把地址传给我们的开发板 复用,这几个引脚即传数据也传地址 怎么分别是数据还是地址呢,有个ALE信号,当ALE是高电平时,传输的是地址 但是它...
阅读(563) 评论(0)

编写块设备驱动之内存模拟磁盘

可以参考一下内核里面的文件 在内核里面收索blk_init_queue 然后就会发现xd.c和Z2ram.c 大概看一眼,看一个去驱动程序从入口开始看, 这里有个register_blkdev注册块设备驱动,跟我们字符设备相比少了一个fops,注册块设备已经退化了,它只不过是cat /prok/device 可以看到一些信息。或者前面XT_DISK_MAJOR写为0的时候可以返回一个主设备...
阅读(89) 评论(0)

块设备驱动程序的框架

我们大概来猜一下它的框架是怎么样的 应用程序  open read write一个普通的文件“1.txt” 1.txt最终肯定要操作硬件啊,比如硬盘啊 flash等等 然后中间是块设备驱动程序,对普通文件的读写肯定要转换成对块设备文件的读写,你要读写哪一个扇区,那谁来把文件的读写来转换成对扇区的读写呢??? 中间就引入了文件系统 ll_rw_block是通用的入口  这ll_rw...
阅读(441) 评论(0)

块设备驱动的引入

块设备只能以快为单位接收输入和返回输出。 假设我应用程序也是open read write,块设备里面也是给它提供open read write函数,然后来操作硬件 我们举例来验证 1.硬盘 硬盘的格式像光盘一样一个一个盘面 然后这一面上有一个一个的环像跑到一样的东西,这一环一环一样的东西称为柱面 跑道上面有一个一个的块称为扇区,分别是扇区0,扇区1。 我们假设有这么...
阅读(84) 评论(0)

USB驱动程序之鼠标用做键盘

我们还是接着来看看我们的例子程序 usbmouse.c 这里它接着判断了他是不是鼠标, 得到它的usb_host_interface,interface=intf->cur_alsetting就是当前接口的设置...
阅读(148) 评论(1)

usb驱动程序初步编写

今天我们的目标是将USB鼠标用做按键 比如说左键按下就相当于字母L 右键按下就相当于字母S 滚轮按下就相当于回车 相当于一个输入子系统,怎么做呢?? 1.分配一个input_device结构体 2.设置它能够产生按键类事件,能够产生这三个按键 3.注册 4.硬件相关的操作 使用USB总线下路的收发函数来读写数据 我们今天写的驱动程序和以前写的驱动程序有什么差别,差别就是...
阅读(261) 评论(0)

USB驱动程序之USB总线驱动程序

USB主机控制器分为三种,一种是UHCI  OHCI  EHCI UHCI规范:intel阵营  告诉你怎么做USB这些东西 适用于低速和全速USB设备  低速一般称为USB1.1 全速一般称为USB2.0 inter做硬件比较牛 所以他的硬件比较复杂点,软件比较简单点  OHCI规范:microsoft阵营做出来的东西 适用于低速和全速 微软软件牛逼点,所以它的软件复杂点,硬件简单点  ...
阅读(264) 评论(0)

USB驱动程序之概念介绍

在windows下,当你拿一个新的PC设备,把他接到PC上面,它会出现发现新硬件,跳出一个框说要你安装驱动程序 假设我们USB连的手机,他会提示你发现android phone,然后弹出对话框,提示你安装驱动程序。 但是为什么没有驱动程序,它知道是android phone呢???这些信息应该在我们USB驱动程序读出来才对啊,为什么还没读出来就知道它是什么设备。 因为这个windows里面已...
阅读(100) 评论(0)

触摸屏驱动之编写驱动程序

我们打开我们的核心板原理图可以看到这四根引脚分别接在xadcAIN2,3,4,5上面 搜索发现不需要配置什么寄存器 我们看一看芯片手册上的触摸屏那一章,我们的工作就是阅读那一章然后弄清楚那里面的东西就可以了 先来看一看内核自带的触摸屏驱动做了什么事情 ts.clock = clk_get(dev, "adc"); if (IS_ERR(ts.clock)) { dev_err(...
阅读(74) 评论(0)

触摸屏驱动之概念介绍

触摸屏其实我们也是用输入子系统做的,回过头来看看我们输入子系统, 触摸屏跟输入子系统一样的,右边的handler用的是edev.c,左边的device我们分配,设置,注册,和硬件操作 开发板厂商一般提供了触摸屏驱动,我们在内核代码里面搜索 s3c2410_ts.c 我们大概浏览一遍,然后自己来写 static int __init s3c2410ts_init(void) { retu...
阅读(174) 评论(0)

LCD驱动程序(四)测试

我们先把内核里面的LCD驱动程序给去掉 步骤 1.make menuconfig 2.找到里面的Graphics support(图形支持) linux内核配置: Device Drivers  ---> Graphics support  ---> Support for frame buffer devices  --->      │       S3C F...
阅读(90) 评论(0)

LCD驱动程序(3)显存与调色板

我们设置好了LCD控制器,它就会自动的从显存里面取出一个像素的值,然后发送到LCD上去,然后再取出第二个......取到最后面之后有返回到第一个,周而复始。 显存必须物理地址连续,LCD没那么聪明,你这个显存必须是连续的。怎么分配呢,我们就不能有kmalloc这种函数了。就要用专用的函数来分配这块内存。来看一看内核自带的一些驱动是怎么来分配这块内存的。 我们参考我们内核里面的S3c...
阅读(146) 评论(0)

LCD驱动程序(1)初步编写LCD驱动程序

先参考内核里面自带的驱动程序,我们只是参考它的头文件而已  /*1.分配一个fb_info结构体*/  30     s5p_lcd=framebuffer_alloc(sizeof(struct s5p_lcd), &pdev->dev);  31     //这里为什么需要一个大小,内核里面有个经常有个取巧的办法,分配一个结构体     ,本来这个结构体只有这么大,它会额外分配...
阅读(65) 评论(0)

LCD硬件操作

我们的CPU里面有一个LCD控制器, 可以把LCD理解成一行有很多个像素,有很多行。然后LCD后面有个电子抢,有个喷嘴,把颜色打到这个屏幕上,打完一个像素之后移动到下一个像素,然后喷射出来 它怎么知道怎么移动呢,它怎么知道要移动到下一个像素呢。这个就是我们的vclk决定的,每来一个时钟,就移动一个像素。然后打出颜色,颜色的数据从VD0-VD23 V就是video 视频 D就是data数据 V...
阅读(105) 评论(0)

LCD驱动程序层次分析

我们内核里面自带的触摸屏驱动是fbmem.c 它肯定不止一个,根据我们驱动的分层思想,它肯定会把共性的东西抽出来 我们来看这个驱动的入口函数 static int __init fbmem_init(void) { proc_create("fb", 0, NULL, &fb_proc_fops); if (register_chrdev(FB_MAJOR,"fb",&fb_...
阅读(115) 评论(0)

平台总线模型

平台总线模型主要分为3个部分,1.driver 2.device 3.bus device主要放硬件相关的东西 driver里面主要存放的比较稳定的代码 我们依然可以查看gpio_keys.c这个代码来学习 平台总线是一种虚拟的总线 driver这个结构体会通过调用platform_driver_register这个函数 platform_driver_re...
阅读(116) 评论(0)
25条 共2页1 2 下一页 尾页
    个人资料
    • 访问:10071次
    • 积分:931
    • 等级:
    • 排名:千里之外
    • 原创:85篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    最新评论