编译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才行
解压后进入其根目录。执行命令: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才行
相关文章推荐
- 求集合{1, 2, ..., n}的所有子集
- 文字转换为音频mp3的方法
- [编译原理]实现AQL Subset
- nginx的http2.0性能太逆天了,HTTPS网站性能优化
- 关于自旋锁spinlock的一些理解
- Spring框架
- LeetCode Unique Word Abbreviation
- 做项目要这样做
- 简单描述http的请求过程
- 使用命名空间、头文件和实现文件
- iOS每日一记-----------之 一个弹框View
- CentOs虚拟机NAT模式下静态IP的配置
- LVS-模式
- 分享一个自己写的串口数据分析、图形显示软件 can debugger 串口调试助手 免费,功能强大!
- ubuntu10.10配置NFS
- 监考
- Java 多线程:生产者消费者模型
- Activity被回收导致fragment的getActivity为null的解决办法
- 读写分离 双机热备 分库分表 缓存服务器 正(反)向代理
- Laravel