linux驱动学习
文章平均质量分 79
最美的愿望一定最疯狂
总有人间一两风,填我十万八千梦
展开
-
linux驱动之LED驱动体验
LED驱动算是简单的驱动,第一次真正意义上的动手做驱动。硬件平台是mini2440.用的到的命令:1、tftp下载命令:tftp -r led.ko -g 192.168.0.1032、模块安装:首先,insmod led.ko 由于初学,不知道安装命令后面打印的是什么,所以先暂时忽略。如图然后通过cat /proc/devices查看设备号,如图最后通过设备号原创 2016-07-11 22:57:14 · 319 阅读 · 0 评论 -
input子系统
触摸屏驱动分为两部分:1、输入子系统;TP。 数据通过内核上报到app的方式:1、copy_to_user2、input 3、uevent 按键、触摸屏、鼠标等输入型设备都可以用input函数来实现设备驱动。 输入子系统由驱动层、输入子系统核心、事件处理层三部分组成。一个输入事件,如鼠标移动、键盘按下等通过Driver->inputcore->Event handler -原创 2016-09-22 22:22:23 · 552 阅读 · 0 评论 -
在嵌入式linux下搭建java运行环境
交叉编译环境:arm-none-linux-gnueabi-运行java的虚拟机是jamvm 它需要配合classpath共同使用。GNU Classpath下载 http://www.gnu.org/software/classpath/downloads/downloads.html在/usr文件夹下面新建文件夹classpath和jamvm(为了方面移植)配置:原创 2017-04-20 11:43:54 · 10116 阅读 · 5 评论 -
摄像头驱动
摄像头要点:1、 摄像头是怎么把数据传给2440通过IO接口->BCCB(串行摄像控制总线)传给2440 的。2、 硬件是以什么样的形式采集数据的OV9650数据输出标准:1、数据一次性输出10bit 2、每次输出8bit3、 摄像头采集数据后是怎么传递给驱动程序的在驱动中申请一个内存块,如fb(帧缓冲)。读写方式为IO或者mmp4、 摄像头输出数据格式Yuv或RG原创 2016-09-22 22:33:08 · 304 阅读 · 0 评论 -
DM9000网卡驱动
Linux 网络子系统 网络接口层:网络接口层把数据链路层和物理层合并在了一起,提供访问物理设备的驱动程序,对应的网络协议主要是以太网协议。网络层:协议管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确地到达目的机器。重要的网络层协议包括ARP(地址解析协议)、ICMP(Internet控制消息协议)和IP协议(网际协议)等。传输层:原创 2016-09-22 22:31:38 · 319 阅读 · 0 评论 -
内存管理
Linux系统提供了4GB虚拟地址。在linux系统中不使用物理地址,使用的是虚拟地址,所以物理地址需要映射成虚拟地址。 0-3G为用户空间,3-4G为内核空间。在内核空间中,0-896M为物理内存映射区(直接映射区),映射方式简单,他们与物理地址只有一个固定的偏移量。32位的虚拟地址与物理地址的转换如图:1、cr3寄存器中的基地址加上虚拟地址的高10位得到页目录中页表的基原创 2016-09-22 22:29:14 · 304 阅读 · 0 评论 -
触摸屏驱动
触摸屏在LCD上层。 S3C2440 的触摸屏接口模式1. 普通转换模式单转换模式是最合适的通用ADC 转换。此模式可以通过设置 ADCCON(ADC 控制寄存器)初始化并且通过读写ADCDAT0(ADC 数据寄存器 0)就能够完成。2. 分离的 X/Y 方向转换模式触摸屏控制器可以工作在两个转换模式之一。方向转换模式如下方法操作。X 方向模式写 X 方向转换数据到原创 2016-09-22 22:27:19 · 642 阅读 · 0 评论 -
LCD驱动
LCD 帧缓冲设备(fb) fb是什么?fb是linux系统为显示设备提供的统一的接口。 LCD显示原理:fb缓存后,用户程序通过mmp内存的映射,映射一个虚拟的用户空间,将要显示的数据放进去,然后LCD显示。选用mmp的优势是读写速度快,避免延时。 驱动程序分配系统内存作为显存。fop接口:1、应用程序服务2、控制LCD的控制器。 fb的作用:fb的驱动程序会分配原创 2016-09-22 22:25:58 · 282 阅读 · 0 评论 -
板级信息
U-boot 起来后是如何选中平台的。通过Uboot中的机器码和mach-type进行选中开发板。其中 mini2440的机器码为1999,type为MINI2440。 u-boot启动后进入main.c 中。进入start_kernel。在start_kernel中setup_arch(&command_line)安装架构。传入参数command_line是从uboot中传原创 2016-09-22 22:18:28 · 386 阅读 · 0 评论 -
平台总线、设备、驱动的学习
设备和驱动的绑定是通过总线实现的。总线通过查找总线下的设备列表和驱动列表,名字相同的进行匹配。总线代码的实现:struct bus_type { constchar *name; //总线名字 structbus_attribute *bus_attrs; //总线属性 structdevice_a原创 2016-08-17 21:39:18 · 1673 阅读 · 0 评论 -
基于mini2440外部中断的按键驱动
看了好长时间的中断,终于动手写了个基于中断的按键驱动。本次驱动不是十分成功,中断都进去了,但是打印出的信息有些问题。现在还没有找到原因。这个中断编写时参照内核中的按键驱动进行编写的。关于内核的中断例程刚开始看,有许多疑问:怎么不见它配置寄存器呢?我在网上查的资料说是在request_irq中进行了底层硬件的配置?还有就是我看到网上有的6410的按键中断驱动和2440的按键中断驱动几乎一原创 2016-08-03 22:29:29 · 716 阅读 · 0 评论 -
初次动手编写驱动——LED在linux中的驱动。
今天第一次自己尝试编写驱动,看了这么长时间视频,第一次动手,编写的是简单的LED的程序。从简单到复杂一个一个来。编写驱动的顺序是先从注册函数和卸载函数起始:static int led_init(){cdev_init(&cdev, &led_fops);alloc_chrdev_region(&devno, 0, 1,"led");cdev_add(&cdev, devn原创 2016-07-12 23:20:33 · 3279 阅读 · 0 评论 -
ubuntu下nfs系统搭建
首先安装:apt-get install nfs-kernel-server配置/etc/exportsvi /etc/exports在最下面加入/home/topeet/linux/ *(rw,sync,no_root_squash)其中/home/topeet/linux/是我的共享文件夹*:代表允许所有的网络段访问;rw:是可读写权限;sync:是资料同步原创 2017-04-22 19:24:23 · 370 阅读 · 0 评论