您的位置:首页 > 其它

编译6410内核文件+编译驱动为模块

2016-03-03 12:22 344 查看
拷贝6410光盘文件A下Linux文件夹中的linux-2.6.38-20111205.tgz(与开发板所用内核版本相同)文件到ubuntu的/root文件夹下并解压到此文件夹

解压后进入其根目录。执行命令:cp config_mini6410_a70 .config ;注意: a70后面有个空格,然后有个“.”开头的config(a70为开发板的触摸屏型号)

#make zImage 开始编译内核,也可以直接使用 make 命令

编译结束后,会在 arch/arm/boot 目录下生成 linux 内核映象文件 zImage

编写驱动程序

其Makefile文件模版如下:

ifneq ($(KERNELRELEASE),)

obj-m:=zl.o

else

KERNELDIR:= /root/linux-2.6.38

PWD:=$(shellpwd)

default:

$(MAKE)-C $(KERNELDIR) M=$(PWD) modules

clean:

rm-f *.ko *.o *.mod.o *.mod.c *.symvers *.order

endif

目录文件不能含中文

需要注意的是:makefile文件的格式对齐问题,不然容易出错。obj-m后的XX.o为生成的驱动名字要与驱动程序文件名相同。KERNELDIR为内核所在目录。有的makefile里此变量值为: /lib/modules/`uname -r`/build 表示的是ubuntu内核所在的目录,因ubuntu与arm板的内核版本不同,所以编写arm板的驱动程序时该值必须为与arm内核相同的内核源文件所在的根目录。

(make moudles_install将生成的驱动模块拷贝到内核文件夹中,本文并不需要这样做)

进入驱动程序所在目录执行make 指令,会在目录下生成.ko文件,将该文件拷贝到开发板/lib/modules/2.6.38-FriendlyARM下,执行insmod XX.ko即可将模块加载到内核中去,卸载命令为rmmod XX

加载完成后lsmod即可看到自己加载的驱动,此时/dev下并没有设备名,要添加一句命令mknod /dev/** c ** 0才行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: