linux内核源码树构造,arm开发第一步.doc_第1页
linux内核源码树构造,arm开发第一步.doc_第2页
linux内核源码树构造,arm开发第一步.doc_第3页
linux内核源码树构造,arm开发第一步.doc_第4页
linux内核源码树构造,arm开发第一步.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux驱动开发环境配置(内核源码树构造) 初次接触Linux驱动程序开发,买了一本Linux设备驱动程序,第一件事当然就是构建开发环境了!它上面有一个Hello World的列子:/hello.c#include #include MODULE_LICENSE(Dual BSD/GPL);static int hello_init(void)printk(KERN_ALERT Hello, world/n);return 0;static void hello_exit(void)printk(KERN_ALERTGoodbye, cruel world/n);return 0;module_init(hello_init);module_exit(hello_exit);下面我们来看怎么让它跑起来:驱动程序和用户程序可不一样,它是作为一个模块连接到内核模块来运行的,运行在内核空间里面。所以要运行我们自己构造的模块,需要自己的系统已经配置好内核树,然后把目标模块和内核树连接起来运行!但是我们安装的Linux没有源码(至少我的是这样),更不要说已经编译好的内核树了(1)下载Linux源码:首先查看可以下载的Linux内核源码包rootjiq-desktop:#apt-cache search linux-source然后选定要下载的源码包:rootjiq-desktop:#apt-get install linux-source-2.6.22下载完成后,在/usr/src下,文件名为:linux-source-2.6.32.tar.bz2,是一个压缩包,然后用命令解压即可获得Linux内核的源代码:rootjiq-desktop:/usr/src#tar jxvf linux-source-2.6.32.tar.bz2或者把已有的源代码考到 /usr/src 然后#tar zxf linux-3.0.1.tar.gz(2)然后在Linux内核源码目录/usr/src/linux-source-2.6.32目录下面用老的方法配置好Linux内核:rootjiq-desktop:/usr/src/linux-source-2.6.32#make oldconfig(3)然后执行:rootjiq-desktop:/usr/src/linux-source-2.6.32#make bzImage这个过程大概需要一个小时左右。执行完成后会在当前目录下面生成一个文件vmlinux.o(4)然后编译模块:rootjiq-desktop:/usr/src/linux-source-2.6.32#make modules这个过程又是大概一个小时。(5)然后便可以安装模块了:rootjiq-desktop:/usr/src/linux-source-2.6.32#make modules_install这个过程大概两分钟:以上步骤完成以后,会在/lib/modules目录下面生成一个文件夹linux-2.6.32-24-generic,至此你差不多已经成了,因为你已经构造好了内核树!下面开始在自己的工程文件夹下面建立两个文件:hello.c(不用说了)Makefile(它需要能够找到内核树,然后将目标模块链接上去):obj-m := hello.oKDIR :=/lib/modules/3.0.1/buildall:make -C $(KDIR) M=$(shell pwd) modulesclean:make -C $(KDIR) M=$(shell pwd) cleanKDIR :=/lib/modules/3.0.1/build 为源码树地址 1、2、4行顶行写,3、5行使用tab缩进。 KDIR为6410开发板的内核源码路径,是编译驱动代码内核代码树,编译出来的驱动就是和linux-3.0.1内核匹配的,那么编译好的驱动文件放在3.0.1内核下是匹配的,不会出现其它错误,否则系统部分会出错。 hello.o,源文件为hello.c源文件生成hello.o文件,写hello.o Makefile文件与test.c文件放在同一个目录下,#uname -r 察看当前内核源版本下面在当前目录下面执行rootjiq-desktop:/usr/jiq/DriverProject#make生成以下文件然后利用insmod命令将模块插入到内核树 中:rootdesktop:/usr/jiq/DriverProject#insmod./hello.ko查看已加载模块 #lsmod模块装载触发hello.c的init()方法,输出hello world,如果没有的话,是因为其将输出放到/var/log/syslog中去了。打开便可以看见你的结果!卸载目标模块命令是:rootjiq-desktop:/usr/jiq/DriverProject#rmmo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论