linux驱动之--led驱动

练手, 第一个字符驱动.

用模块加载方法

华清远见<嵌入式linux设备驱动开发详解>的代码拿来改的.  

编译过程发现很多错误.

最后发现 这本书带的驱动代码都是基于linux2.4的...目前我用的linux2.6, 代码部分需要做修改.

 

我的板子是 友善之臂的 2410.  vmware+ubuntu  nfs交叉编译

首先

linux2.6内核编译里面要打开loadable modules,  以及 unload 的选项也要选上 否则用不到rmmod命令 呵呵.

 

第二 (和上面第一条一样,今后写驱动都会要用到这个)

要制作linux 内核树(linux2.6必须)

在linux2.6.14.1的代码目录

make bzImage 

会生成一个新文件 vmlinux 

然后 make modules   //编译模块

       make modules install //安装模块

结束之后会在/lib/modules下生成2.6.14.1文件夹,  这个就是内核树了.  主要用到的就是里面的头文件.

第三

修改书上带的代码, 主要是改端口号, 以及部分代码基于linux2.6会不同, , 请见我提供的下载, 里面包括了 makefile, 驱动源代码, 测试程序源代码.

 注意会用到ioremap()函数,  绝对地址到虚拟地址的转换, 然后用指针来对portB的寄存器赋值

 

第四

测试..

交叉编译, 在开发板串口终端上  insmod ./led.ko   出现提示符,   rmmod led 也出现退出消息.

这个时候注意了, 要添加设备节点, 否则 test程序是打不开设备的.

mknod /dev/leds c 231 0  //创建设备节点

 

然后执行./test    ,  可以看到开发板上4个led全亮, 全黑, 轮流....说明这个驱动弄成功了. 

提供源码下载.很兴奋.

 

感谢老何.

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值