2440第一个驱动

以前只是在PC上写了些模块驱动,也在44b0上运行过简单的字符驱动模块,但是44b0上是直接把模块编到内核的,真正作为模块在开发板上运行,这次还真是头一次。

 

简单介绍下我的环境。开发板是Mini2440,在NAND Flash里装的的是Linux;PC机器有两台,一台Windows操作系统,另一台是Linux系统。两台电脑和开发板的网线都通过一个交换机相连,交换机再连到Cable Medom。Windows PC的USB口通过一个USB转串口线与开发板相连,另外Windows PC与开发板还有根USB相连。

 

0、建立文件夹memdev

     要开发代码,自然在Linux环境下开发比较好。所以,在Linux PC上的某路径下,建立一个文件夹memdev。    

 

1、模块代码

     在文件夹memdev下编写模块文件memdev.h和memdev.c。这部分就不详细叙述了,随便找个内核模块或者字符设备驱动的教程看看就知道了。

 

2、Makefile

     Makefile要制定编译的环境的路径。

     1)要准备路径,所以首先要将mini2440的内核代码解压到Linux的PC机上。我解压到了/usr/src/linux-2.6.32.2

     2)然后根据mini2440手册的步骤,将内核编译。(首先cp config_mini2440_t35 .config, 然后make menuconfig, 最后make zImage)。

     3)在文件夹memdev下编写Makefle如下:

ifneq ($(KERNELRELEASE),)

obj-m := memdev.o

else
 
KDIR := /usr/src/linux-2.6.32.2
all:
 make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-
clean:
 rm -f *.ko *.o *.mod.o *.mod.c *.symvers

endif

 

注意:标红部分是需要改动的部分。其实这个Makefile可以当做模板,每次写内核模块的Makefile的时候都拿来用,然后根据实际情况,修改红色部分就可以了。

 

 3、执行make

      成功的话,会生成memdev.ko

 

 4、编写应用程序调用刚才的模块

      生成应用程序mapl

 

 5、拷贝到实机上。

      这个步骤确实费了不少力气。

      首先想通过串口的rz命令把文件从Windows PC上传到开发板上,结果发现串口一传文件,PC机就蓝屏。哎,可能是我电脑没有串口,我用的USB转串口的缘故吧。

      然后就试下用U盘。原来我的SD卡读卡器在开发板上很好用的,可惜在公司被大家用的多了,把我的读卡器用坏了,哎,真是可惜啊,我心爱的读卡器。我只能用mp3当做U盘来拷。可惜mp3插到开发板上,很快被识别了,然后又被remove了。哎,又是没办法。试了两个mp3,一个手机,都不行。

      最后,只能用ftp了。通过ifconfig eth0 60.63.10.99 netmask 255.255.252.0设置开发板的ip与我的Linux PC的IP设为同一网段。然后通过ftp命令传送memdev.ko和mapl到开发板的/home/plg/目录。

 

6、添加模块

     既然模块文件memdev.ko和应用程序mapl都已经拷贝到了开发板的目录/home/plg下,那么下一步就可以添加模块了。

     在开发板上用insmod memdev.ko添加模块,也遇到了不少问题。

     首先说我编译的模块和开发板上的内核不匹配。哦,确实是。开发板上的内核,是我之前编译的,编译的时候我改了很多东西。解决办法嘛,当时是把刚才2-2) 步编译出来的zImage重新烧到flash中了。

 

     换了新的内核,接着insmod memdev.ko吧。结果还是不行。哎,左想右想,估计是模块的设备号已经被占用了。所以重新再Linux PC上修改memdev.h,改用动态申请设备号,重新编译出memdev.ko再拷到开发板上。这时候再insmod memdev.ko,就成功了。

 

7、添加设备节点。

    通过lsmod,发现memdev模块已经添加到内核了。那就可以执行应用程序了吗?不是的,还少一步:添加设备节点。不添加设备节点,应用程序无法找到这个模块对应的设备。

 

    1)查看设备号

    要添加设备节点,首先要知道我们的设备的设备号。(因为设备号是动态申请的,我们预先不知道。)

    使用命令 cat /proc/devices查看我们的设备的设备号为253

    2)添加

    通过命令 mknod memdev0 c 253 0添加设备节点

 

    这时,在/dev/下面会看到我们添加的设备节点memdev0

 

8、运行应用程序

    在应用程序所在的目录运行命令 ./mapl,查看下结果,果然和自己希望的一样!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值