标签:linux驱动程序
最近由于要做TQ2440(ARM9)开发板上的驱动实验,所以要在主机(ubuntu13.10)上针对前面的目标板上的系统内核进行交叉编译。
一,内核的交叉编译:
1.准备2.6.30.4版本的内核源码包,这个我使用的是天嵌公司提供的内核源码包linux-2.6.30.4_20121214.tar.bz2。
2.打开终端输入指令:tar vxjf linux-2.6.30.4_20121214.tar.bz2 解压内核源码包得到一个名字为opt的文件夹,然后输入指令:sudo mv opt /usr/local/ 将源码剪切至usr/local下,当然这个你可以选择移动到其他你喜欢的文件夹下。
3.输入指令:cd /usr/local/opt/EmbedSky/linux-2.6.30.4 进入到内核源码的目录,然后输入指令:ls 查看文件,找到一个名字为config_EmbedSky_W43(我的触摸屏是4.3寸的,所以选择这个),然后在当前目录下输入指令:cp config_EmbedSky_W43 .config,复制一份把他的名字修改为 .config。
4.登录root,输入指令:make menuconfig,然后弹出linux配置的界面--Linux Kernel Configuration,选择最后一项--Save an Alternate Configuration File,然后选择ok保存配置。
5.输入指令:make 进行编译即可(root权限)。什么交叉编译路径的配置和支持平台的配置,人家天嵌公司在源码里面的Makefile文件里早就给你配置好了,这个无需担心。等待编译结束后,进入内核的源码文件夹下vmlinux,交叉编译成功!
二,驱动程序的移植:
当顺利完成内核的交叉编译工作后,接下来就可以着手把驱动程序移植到目标板的系统内核中了,你只需要注意Makefile文件的编写,把2.6.30.4内核的路径和交叉编译工具链arm-linux-gcc加进去,然后接下来直接输入make指令,便编译出了可以加载进TQ2440目标板系统内核的驱动模块了。
具体Makefile的源码如下(假设我要编译的驱动程序的名字为mybeep):
obj-m:=mybeep.o CC=arm-linux-gcc KERNELDIR=/usr/local/opt/EmbedSky/linux-2.6.30.4 PWD:=$(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules clean: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
本文出自 “止不住的思考” 博客,请务必保留此出处http://9110091.blog.51cto.com/9100091/1546954
针对TQ2440开发板上linux2.6.30.4内核的交叉编译和驱动程序的移植
标签:linux驱动程序
原文地址:http://9110091.blog.51cto.com/9100091/1546954