从零开始搭建Linux驱动开发环境

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

参考:

韦东山视频第10课第一节内核启动流程分析之编译体验

第11课第三节构建根文件系统之busybox

第11课第四节构建根文件系统之构建根文件系统韦东山书籍《嵌入式linux应用开发完全手册》

其他《linux设备驱动程序》第三版

平台:

JZ2440、mini2440或TQ2440

交叉网线和miniUSB

PC机(windows系统和Vmware下的ubuntu12.04)

一、交叉编译环境的选型

具体的安装交叉编译工具,网上很多资料都有,我的那篇《arm-linux-

gcc交叉环境相关知识》也有介绍,这里我只是想提示大家:构建跟文件系统中所用到的lib库一定要是本系统Ubuntu中的交叉编译环境arm-linux-

gcc中的。即如果电脑ubuntu中的交叉编译环境为arm-linux-

二、主机、开发板和虚拟机要三者互通

w

IP v2.0》一文中有详细的操作步骤,不再赘述。

linux

2.6.22.6_jz2440.patch组合而来,具体操作:

1. 解压缩内核和其补丁包

tar xjvf linux-2.6.22.6.tar.bz2 # 解压内核

tar xjvf linux-2.6.22.6_jz2440.tar.bz2 # 解压补丁

cd linux_2.6.22.6

patch –p1 < ../linux-2.6.22.6_jz2440.patch

3. 配置

在内核目录下执行make

2410_defconfig生成配置菜单,至于怎么配置,《嵌入式linux应用开发完全手册》有详细介绍。

4. 生成uImage

make uImage

四、移植busybox

在我们的根文件系统中的/bin和/sbin目录下有各种命令的应用程序,而这些程序在嵌入式系统中都是通过busybox来构建的,每一个命令实际上都是一个指向bu sybox的链接,busybox通过传入的参数来决定进行何种命令操作。

1)配置busybox

解压busybox-1.7.0,然后进入该目录,使用make

menuconfig进行配置。这里我们这配置两项

一是在编译选项选择动态库编译,当然你也可以选择静态,不过那样构建的根文件系统会比动态编译的的大。

->Busybox Settings

->Build Options

二是在性能微调选项选择tab键补全功能。

->Busybox Settings

->Busybox library Tuning

->Command line editing

->Tab completion

其他的都是一些命令配置,如果你想使你的根文件系统具备哪些命令就选择那个命令。我选择的是默认的配置,一般基本的命令都帮你选上了。

2)编译busybox

修改Makefile,修改”ARCH ?= arm” 和”CROSS_COMPILE ?= arm-linux-

“,然后使用make命令进行编译。我在编译的过程出现如下错误:

../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:44:

error: field ‘in’ has incomplete type

解决办法:

修改arm-linux 交叉编译工具链

在 usr/local/arm/4.3.2/arm-none-linux-

gnueabi/libc/usr/include/linux/netfilter.h 头文件的开头添加缺少的头文件:#includ e

3)安装busybox

这里我们先新建一个root_fs来构建根文件系统,

[root@localhost root_fs]# ls -l

total 12

drwxr-xr-x 2 root root 4096 Oct 19 05:41 bin

lrwxrwxrwx 1 root root 11 Oct 22 11:17 linuxrc -> bin/busybox

drwxr-xr-x 2 root root 4096 Oct 22 18:43 sbin

drwxr-xr-x 4 root root 4096 Oct 22 16:52 usr

进入bin目录,可以看出这些文件全部是指向busybox的链接(除了busybox本身)。

[root@localhost root_fs]# ls bin -l

total 0

lrwxrwxrwx 1 root root 7 Oct 22 11:17 addgroup -> busybox

lrwxrwxrwx 1 root root 7 Oct 22 11:17 adduser -> busybox

lrwxrwxrwx 1 root root 7 Oct 22 11:17 ash -> busybox

-rwxr-xr-x 1 root root 0 Oct 23 13:20 busybox

lrwxrwxrwx 1 root root 7 Oct 22 11:17 cat -> busybox

lrwxrwxrwx 1 root root 7 Oct 22 11:17 catv -> busybox

五、安装glibc库

在root_fs下新建lib目录,再把arm-linux-

交叉编译链下的lib文件拷贝到我们root_fs下的lib目录下。我使用

相关文档
最新文档