linux内核源码树构造,arm开发第一步

linux内核源码树构造,arm开发第一步

ID:1537487

大小:631.50 KB

页数:0页

时间:2017-11-12

linux内核源码树构造,arm开发第一步_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《linux内核源码树构造,arm开发第一步》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux驱动开发环境配置(内核源码树构造)初次接触Linux驱动程序开发,买了一本《Linux设备驱动程序》,第一件事当然就是构建开发环境了!!!它上面有一个HelloWorld的列子://hello.c#include#includeMODULE_LICENSE("DualBSD/GPL");staticinthello_init(void){printk(KERN_ALERT"Hello,world/n");return0;}staticvoidhel

2、lo_exit(void){printk(KERN_ALERT"Goodbye,cruelworld/n");return0;}module_init(hello_init);module_exit(hello_exit);下面我们来看怎么让它跑起来:驱动程序和用户程序可不一样,它是作为一个模块连接到内核模块来运行的,运行在内核空间里面。所以要运行我们自己构造的模块,需要自己的系统已经配置好内核树,然后把目标模块和内核树连接起来运行!但是我们安装的Linux没有源码(至少我的是这样),更不要说已经编译好的内核树了~(

3、1)下载Linux源码:首先查看可以下载的Linux内核源码包root@jiq-desktop:~#apt-cachesearchlinux-source然后选定要下载的源码包:root@jiq-desktop:~#apt-getinstalllinux-source-2.6.22 下载完成后,在/usr/src下,文件名为:linux-source-2.6.32.tar.bz2,是一个压缩包,然后用命令解压即可获得Linux内核的源代码:root@jiq-desktop:/usr/src#tarjxvflinux-

4、source-2.6.32.tar.bz2或者把已有的源代码考到/usr/src然后#tarzxflinux-3.0.1.tar.gz(2)然后在Linux内核源码目录/usr/src/linux-source-2.6.32目录下面用老的方法配置好Linux内核:root@jiq-desktop:/usr/src/linux-source-2.6.32#makeoldconfig(3)然后执行:root@jiq-desktop:/usr/src/linux-source-2.6.32#makebzImage这个过程大

5、概需要一个小时左右。。。执行完成后会在当前目录下面生成一个文件vmlinux.o(4)然后编译模块:root@jiq-desktop:/usr/src/linux-source-2.6.32#makemodules这个过程又是大概一个小时。。。   (5)然后便可以安装模块了:root@jiq-desktop:/usr/src/linux-source-2.6.32#makemodules_install这个过程大概两分钟:   以上步骤完成以后,会在/lib/modules目录下面生成一个文件夹linux-2.6.

6、32-24-generic,至此你差不多已经成了,因为你已经构造好了内核树!!! 下面开始在自己的工程文件夹下面建立两个文件:hello.c(不用说了)Makefile(它需要能够找到内核树,然后将目标模块链接上去):obj-m:=hello.o KDIR:=/lib/modules/3.0.1/build all: make-C$(KDIR)M=$(shellpwd)modules clean: make-C$(KDIR)M=$(shellpwd)cleanKDIR:=/lib/modules/3.0.1/buil

7、d 为源码树地址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察看当前内核源版本 下面在当前目录下面执行root@jiq-desktop:/usr/ji

8、q/DriverProject#make生成以下文件 然后利用insmod命令将模块插入到内核树中:root@desktop:/usr/jiq/DriverProject#insmod./hello.ko查看已加载模块#lsmod模块装载触发hello.c的init()方法,输出helloworld,如果没有的话,是因为其将输出放到/var/l

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。