linux 驱动
丰满
具有创意的长相,天生给我阳光我就灿烂的性情。
展开
-
开机打开应用程序
<br />Topic:开机打开应用程序(作者:Baiduluckyboy)<br />//------------------------------------------------------------------------------------------------------------------------------<br />// Topic:开机打开应用程序(作者:Baiduluckyboy)<br />// 作者:Baiduluckyboy(wangyuluyulu@126.原创 2010-09-10 14:43:00 · 797 阅读 · 0 评论 -
s3c2440的IO静态映射的分析
内存映射分3个层次:开发板的层次(如:声卡,网卡和开发板相关的部分) 最小系统的层次(系统必需的几个,如GPIO,IRQ,MEMCTRL,UART) 其他系统的层次(不影响开机的部分,如:usb,lcd,adc)<br /> 开发板的mapio的初始化: <br /> smdk2440_map_io函数中会调用: s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); 而开发板相关的内存映射在smdk2440_iodesc,有I原创 2011-01-10 16:24:00 · 823 阅读 · 0 评论 -
Framerbuffer的应用程式
<br />今天为了测试我的LCD有没有坏点写了一个简单的刷屏程序,效果还不错,分析给大家。代码如下:<br /> #include <unistd.h><br />#include <stdio.h><br />#include <fcntl.h><br />#include <linux/fb.h><br />#include <sys/mman.h><br />#include <string.h><br />#include <stdlib.h><br />#include <unistd.h><b原创 2011-01-17 17:34:00 · 736 阅读 · 1 评论 -
详解Linux2.6内核中基于platform机制的驱动模型
<br />http://blog.csdn.net/sailor_8318/archive/2010/01/29/5267698.aspx原创 2011-02-28 17:24:00 · 1165 阅读 · 0 评论 -
下面是我写的I2C的软驱动,希望对你们有帮助
#include #include #include #include #include #include /* get the user-level API */#include #include #include #include #include #include #in原创 2011-07-18 10:29:58 · 1087 阅读 · 0 评论 -
关于AT91开发板的led的驱动
下面是我以前写的AT91开发板的了led的驱动,希望对初学者有帮助1:直接操作地址的编写方式#include #include #include #include #include #include /* get the user-level API */#include #i原创 2011-07-18 10:38:26 · 1321 阅读 · 14 评论 -
I2C的内核驱动测试代码
以上代码是通过我的测试没有问题的/*lulu wangyuluyulu@126.com */ #include #include #include #include #include原创 2011-07-18 10:41:41 · 1035 阅读 · 0 评论 -
SPI的模拟驱动
#include #include #include #include #include /* get the user-level API */#include #include #include #include #include #include #include #in原创 2011-07-18 10:46:57 · 1483 阅读 · 5 评论 -
AT91 linux开发板的驱动\CAN总线驱动
编写心得;can总线的芯片是mcp2515,利用spi进行数据的读写,spi是写在底层的驱动,对于mcp的数据读写操作放在应用层里面完成的1:spi的底层驱动代码是#include #include #include #include #include /* get the u原创 2011-07-18 11:19:49 · 2600 阅读 · 0 评论 -
Android 2.2和2.3 的wm8976的驱动解析
最近做了wm8976的驱动,现在就想说说自己了解的地方,希望对家有一点帮助在我的android的2.2里面,主要要做的事情是:1:在Mach-smdk210.c里面添加/* I2C1 */static struct i2c_board_info i2c_devs1原创 2011-07-19 09:12:49 · 2380 阅读 · 4 评论 -
linux 基础入门 C语言的宏定义技巧
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H #endif 2,原创 2011-08-08 15:56:47 · 871 阅读 · 0 评论 -
platform_device和platform_driver
platform_device和platform_driver(一)首先介绍一下注册一个驱动的步骤: 1、定义一个platform_driver结构 2、初始化这个结构,指定其probe、remove等函数,并初始化其中的driver变量 3、实现其probe、remove等函数看platform_driver结构,定义于include/linux/platform_devic转载 2011-01-05 16:07:00 · 892 阅读 · 2 评论 -
Frambuffer
<br />http://apps.hi.baidu.com/share/detail/9838268原创 2011-01-12 11:41:00 · 746 阅读 · 0 评论 -
Linux内核常用的一些宏的收集
一、中断类: 1. 中断类型: 在request_irq(irq, handler, flags, devname, dev_id)中使用 #define SA_SHIRQ 共享中断(旧版本的,2.6.19之前的内核) #define IRQF_SHARED 共享中断(新版本的) #define SA_INTERRUPT 快速中断(旧版本的) #define IRQF_DISABLED 快速中断(新版本的)转载 2011-01-10 16:27:00 · 2174 阅读 · 0 评论 -
ARM MMU工作原理剖析
<br />一、MMU的产生<br /> 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块转载 2011-01-10 16:32:00 · 96 阅读 · 0 评论 -
linux 的入门篇基础讲解
<br />Topic:linux 的入门篇基础讲解(作者:Baiduluckyboy)<br />//------------------------------------------------------------------------------------------------------------------------------<br />// Topic:linux 的入门篇基础讲解(作者:Baiduluckyboy)<br />// 作者:Baiduluckyboy(wangy原创 2010-09-11 09:54:00 · 904 阅读 · 0 评论 -
s3c2440-lcd控制器参数如何设定
<br />s3c2440-lcd控制器参数如何设定<br /> <br /> <br /> <br /> 具体设置需参照CPU文档中LCD控制器部分或显示芯片的硬件手册,我的是cpu是s3c2440,屏是三星横屏—LTV350QV-F04(带触摸屏),分辨率是320*240. 该液晶模块的显示格式为320(×3)×240。即显示屏每行具有320个像素点,共240行;每个像素点由RGB(红、绿、蓝)三种颜色组成。<br /> <br />S3C2410 LCD控制器的特性:<br />STN屏<转载 2010-09-16 13:46:00 · 1497 阅读 · 0 评论 -
如何调整Linux内核启动中的驱动初始化顺序
<br />如何调整Linux内核启动中的驱动初始化顺序<br />【问题】<br />此处我要实现的是将芯片的ID用于网卡MAC地址,网卡驱动是enc28j60_init。<br />但是,读取芯片ID的函数,在as352x_afe_init模块中,所以要先初始化as352x_afe_init。<br />此处,内核编译完之后,在生成的system.map中可以看到,<br />enc28j60_init在as352x_afe_init之前,所以,无法去读芯片ID。<br />所以我们的目标是,将as35转载 2010-09-20 10:46:00 · 700 阅读 · 0 评论 -
解决我的驱动无法卸载的问题
<br />使用友善之臂的mini2440板子<br />Image内核版本为 2.6.29.4<br />使用光盘自带内核源码编译模块<br />当我通过串口的rz命令传送一个hello.ko驱动,在/里面,insmod hello.ko 完全没有问题<br />但是当我rmmod 是 出现错误 rmmod: chdir(2.6.29.4-FriendlyARM): No such file or directory<br />原因是insmod等模块加载命令需要从lib/modules/(kernel原创 2010-09-27 17:13:00 · 1246 阅读 · 0 评论 -
宏定义的妙处
<br />最近在学习linux的C语言,在学习的过程中发现一些c语言的宏定义用的很漂亮,把自己的心得与大家分享,希望能够抛砖引玉。<br />写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。 <br />1,防止一个头文件被重复包含 <br />#ifndef COMDEF_H <br />#define COMDEF_H <br /> //头文件内容 <br />#endif <br />2,重新定义一些类型,防止原创 2010-10-13 14:14:00 · 618 阅读 · 0 评论 -
如何搭建网络文件系统
<br />nfs即网络文件系统,用户可以通过网络,将远程主机共享的文件系统,挂载到本机。双方在进行nfs通讯时,必须启动rpcbind(或者portmap)以及nfsd,moutd相关服务。本文主要内容是为实现ARM开发板挂载nfs文件系统,其PC上所需要的相关配置。<br />一、 nfs配置步骤<br />1)首先,用ifconfig将主机和开发板设置到同一网段,如主机192.168.0.1,子网掩码为255.255.255.0,开发板为192.168.0.101,子网掩码255.255.255.0,原创 2010-12-17 10:09:00 · 1002 阅读 · 1 评论 -
platform_driver平台驱动注册和注销过程
<br />platform_driver平台驱动注册和注销过程 I2C设备与驱动的关联 作者:leeoo 联系方式:neu_linuxer@hotmail.com 在Linux操作系统中,驱动程序的加载分为两种:内核启动时自动加载和用户手动加载;硬件设备也可以采用两种方式添加到系统中:在系统启动前及系统运行时的热插拨。下面,我们以arm体系结构下的at91处理器中的I2C控制器为例,介绍一下硬件设备及相关的驱动程序是如何绑定及松绑的。 1. 平台驱动注册过程 1.1 at91_i2c_init()函数 在原创 2011-01-05 15:03:00 · 934 阅读 · 0 评论 -
好文章
<br />http://blog.chinaunix.net/u3/101649/showart_2142248.html转载 2011-01-05 16:59:00 · 626 阅读 · 1 评论 -
LCD背光驱动在2440上的实例开发
<br />二、实现步骤<br />1. 硬件原理图分析。由原理图得知LCD的背光是由2440的GPG4口控制的<br />2. 编写背光驱动。文件名为my2440_backlight.c <br />#include<linux/errno.h><br />#include<linux/kernel.h><br />#include<linux/module.h><br />#include<linux/slab.h><br />#include<linux/input.h><br />#include<转载 2011-01-10 16:26:00 · 982 阅读 · 4 评论 -
按键驱动在2440上的实例开发(带去抖动)
<br />二、实现步骤<br />1. 硬件原理图分析。由原理图可知每个按键所用到的外部中断分别是EINT8、EINT11、EINT13、EINT14、EINT15、EINT19,所对应的IO口分别是GPG0、GPG3、GPG5、GPG6、GPG7、GPG11。再由按键的接口电路可知,当按键按下时按键接通,中断线上原有的VDD33V高电平被拉低,从而触发中断的产生。 2. 开始编写合适mini2440的按键驱动(含去抖动功能),文件名:my2440_buttons.c<br />1)按键驱动基本框架。这里转载 2011-01-10 16:29:00 · 1384 阅读 · 0 评论 -
设备文件系统剖析与使用
<br />一、什么是Linux设备文件系统<br /> 首先我们不看定义,定义总是太抽象很难理解,我们先看现象。当我们往开发板上移植了一个新的文件系统之后(假如各种设备驱动也移植好了),启动开发板,我们用串口工具进入开发板,查看系统/dev目录,往往里面没有或者就只有null、console等几个系统必须的设备文件在这儿外,没有任何设备文件了。那我们移植好的各种设备驱动的设备文件怎么没有啊?如果要使用这些设备,那不是要一个一个的去手动的创建这些设备的设备文件节点,这给我们使用设备带来了极为的不便原创 2011-01-10 16:35:00 · 819 阅读 · 0 评论 -
内核访问外设I/O资源的方式
<br />我们知道默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。<br />Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。<br />一、动态映射(ioremap)方式<br />动态映射方式是大家使用了比较多的,也比较简单。即直接通过内核提供的ioremap函数动态创建一段外设I/O内存资源到内核虚拟地址的映射表,从而可转载 2011-01-10 16:25:00 · 547 阅读 · 0 评论 -
linux 驱动调试时在线读写I2C寄存器的方法
调试I2C设备时经常需要修改寄存器的值,通常的方法是修改-》编译-》烧写-》重启,哪怕改一个寄存器也要这样折腾一下,很消耗时间,下面提供一种在线修改寄存器的方法,在终端中敲命令就可以写寄存器,不要上面那些步骤. 这个方法的基础是读写/proc文件系统,不熟悉这个的可以自行学习,下面分步骤说明一下这种方法,注意这只是一个框架如果相拥在自己的系统上可能还有一些细要适配。1.创建/pr转载 2015-03-27 10:27:38 · 2701 阅读 · 0 评论