如何建立自己生活网站,有没有做网站的电话,天津建设培训中心网站,国家企业年报申报入口官网原文#xff1a;http://myswirl.blog.163.com/blog/static/5131864220109143331356/注意#xff1a;开发Arm平台的驱动#xff0c;需要Arm平台的源码树#xff1b;注意#xff1a;ARM平台的linux内核源码需要先编译#xff0c;否则无法编译驱动#xff1b;第一种方式http://myswirl.blog.163.com/blog/static/5131864220109143331356/注意开发Arm平台的驱动需要Arm平台的源码树注意ARM平台的linux内核源码需要先编译否则无法编译驱动第一种方式编译进内核共6步第1步建立源码树解压安装Linux 内核源代码在工作目录/opt/FriendlyARM/mini2440 中执行#cd /opt/FriendlyARM/mini2440#tar xvzf /tmp/linux/linux-2.6.32.2-mini2440-20100106.tar.gz将创建生成linux-2.6.32.2 目录里面包含了完整的Linux-2.6.32.2 内核源代码说明20100106 是我们的发行更新日期标志请以光盘中实际日期尾缀为准。第2步编辑驱动源文件mini2440_hello_module.c该文件所在目录/opt/FriendlyARM/mini2440/linux-2.6.32.2/drivers/char/*********************************************************************************************#include #include static int __init mini2440_hello_module_init(void){printk(Hello, Mini2440 module is installed !\n);return 0;}static void __exit mini2440_hello_module_cleanup(void){printk(Good-bye, Mini2440 module was removed!\n);}module_init(mini2440_hello_module_init);module_exit(mini2440_hello_module_cleanup);MODULE_LICENSE(GPL);*********************************************************************************************第3步编辑配置文件linux-2.6.32.2/drivers/char/Kconfig增加如下字段如图所示保存退出这时在linux-2.6.32.2目录“/opt/FriendlyARM/mini2440/linux-2.6.32.2位置运行一下#cp config_mini2440_t35 .config ;t35后面有个空格然后有个“.”开头的config#make menuconfig就可以在Device Drivers--- Character devices 菜单中看到刚才所添加的选项了按下空格键将会选择为此意为要把该选项编译为模块方式再按下空格会变为意为要把该选项编译到内核中在此我们选择如图 第4步编辑linux-2.6.32.2/drivers/char/Makefile 通过上一步我们虽然可以在配置内核的时候进行选择但实际上此时执行编译内核还是不能把mini2440_hello_module.c 编译进去的还需要在Makefile 中把内核配置选项和真正的源代码联系起来打开 linux-2.6.32.2/drivers/char/Makefile如图添加并保存退出 第5步编译驱动模块这时回到linux-2.6.32.2 源代码根目录位置/opt/FriendlyARM/mini2440/linux-2.6.32.2#make modules就可以生成我们所需要的内核模块文件mini2440_hello_module.ko 了如图至此我们已经完成了模块驱动的编译。第6步加载驱动模块将把编译出的mini2440_hello_module.ko下载到板子中并把它移动到/lib/modules/2.6.29.4-FriendlyARM目录然后在板子中现在执行#modprobe mini2440_hello_module可以看到该模块已经被装载了(注意使用modprobe 命令加载模块不需要加“ko”尾缀)再执行以下命令可以看到该模块被卸载#rmmod mini2440_hello_module注意要能够正常卸载模块必须把模块放入开发板的/lib/modules/2.6.29.4-FriendlyARM 目录注意内核有时会升级更新如果内核版本已经改变请依照具体的内核版本重新建立一个模块存放目录在此为/lib/modules/2.6.29.4-FriendlyARM。第二种方式动态加载内核驱动模块的结构hello.c#include#includestaticinthello_init(void){printk(KERN_ALERTHello, World!\n);return0;}staticvoidhello_exit(void){printk(KERN_ALERTGoodbye, cruel world!\n);}module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE(Dual BSD/GPL);源文件hello.c同目录下一个简单的Makefile文件KERNELDIR/opt/FriendlyARM/mini2440/linux-2.6.32.2PWD:$(shell pwd)INSTALLDIR /lib/modules/2.6.29.4-FriendlyARMCROSS_COMPILEarm-linux-CC$(CROSS_COMPILE)gccobj-m:hello.o.PHONY:modules modules_install cleanmodules:$(MAKE)-C$(KERNELDIR)M$(PWD)modulesmodules_install:cp hello.ko $(INSTALLDIR)clean:rm-rf*.o*~core.depend.*.cmd*.ko*.mod.c.tmp_versions