linux开发环境建立内核的裁剪编译下载.docx

上传人:b****6 文档编号:7120975 上传时间:2023-01-20 格式:DOCX 页数:30 大小:1.81MB
下载 相关 举报
linux开发环境建立内核的裁剪编译下载.docx_第1页
第1页 / 共30页
linux开发环境建立内核的裁剪编译下载.docx_第2页
第2页 / 共30页
linux开发环境建立内核的裁剪编译下载.docx_第3页
第3页 / 共30页
linux开发环境建立内核的裁剪编译下载.docx_第4页
第4页 / 共30页
linux开发环境建立内核的裁剪编译下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

linux开发环境建立内核的裁剪编译下载.docx

《linux开发环境建立内核的裁剪编译下载.docx》由会员分享,可在线阅读,更多相关《linux开发环境建立内核的裁剪编译下载.docx(30页珍藏版)》请在冰豆网上搜索。

linux开发环境建立内核的裁剪编译下载.docx

linux开发环境建立内核的裁剪编译下载

第一章嵌入式开发环境的建立

嵌入式Linux开发环境一般由如下几部分构成:

Linux服务器(宿主机)、个

人PC机、嵌入式目标板和将它们连接在一起的网络环境,其具体结构如图1-1所示:

图1-1linux开发环境的结构

如图1-1所示的嵌入式Linux开发环境中,Linux服务器作为嵌入式Linux内核

编译、应用程序编译的公共平台,一般由单独的一台PC机充当,安装常用的桌面

标准Linux操作系统,如RedHatLinux等。

工作站即为普通的局域网络计算机,可以是一台或多台,以支持小组项目开发,

工作站一般安装常用的Windows操作系统,仍然可以完成各种日常工作,当需要使

用Linux服务器资源时,可从工作站远程登录到Linux服务器,以完成各项需要的

操作。

※注意:

本手册的环境是WindowsXP+VMware的形式,在XP下安装VMware,并在

VMware下虚拟安装RH9,两系统通过VMwareTools提供的共享目录交换文件。

这样

即方便又快捷。

第1节Linux安装

1、在VM启动画面下按F2,进入Boot,选择光盘启动;

2、在VM的Setting里选择光驱,并将其指向Linux的ISO;

3、顺序安装完毕即可。

4、

 

 

在接下来的选项中,选择,定制,建议进入每个菜单,完全选择。

 

 

第2节VMTools安装

 

1、启动Linux;

2、在VM的Setting里选择InstallVMwareTools;

3、在Linux控制台中执行以下命令Mount/dev/cdrom

Mkdir/arm

cp/mnt/cdrom/VMwareTools-6.0.4-93057.tar.gz/arm/VMwareTools-6.0.4-93057.tar.gz

umount/dev/cdrom

cd/arm

ls

tarzxfVMwareTools-6.0.4-93057.tar.gz

ls

cdvmware-tools-distrib

ls

./vmware-install.pl(注意前面的点)

然后一直回车。

重启。

4、在Setting./option里选择共享文件夹;

设置好共享即可实现LINUX与Windows下的文件共享。

第三节交叉编译环境安装

嵌入式Linux开发是宿主机—目标机(HOST-TARGET)交叉开发,这样您的

系统编译工具要换成交叉编译工具,对于这个,您只需要指明它的路径即可,需要

交叉开发环境,并且建立交叉编译环境:

您可以在我们的光盘中得到预先编译的交叉编译工具

cross-2.95.3.tar.bz2。

交叉编译工具一般由专门的机构负责维护,可以从网站

http:

//www.arm.linux.org.uk上免费下载,当然得需要编译,网站上一般提供原码。

以下描述已经编译好的交叉编译环境的建立过程:

首先以Root身份在Linux服务器上新建一个用于嵌入式Linux开发的工作目

录:

/home/work,以后所有的开发工作都在这个目录下进行。

编译工具以压缩包的形式,由恒颐提供,文件名为:

cross-2.95.3.tar.bz2,包括

linux-arm-gcc编译器和一些实用程序,位于光盘的目录:

\Software\Arm-Linux\Tools,

我们要把交叉编译工具安装在Linux服务器的/usr/local/目录下。

当拿到压缩文件后,在Linux服务器的/usr/local目录新建子目录arm:

#cd/usr/local

#mkdirarm;建立ARM目录

从PC机上通过FTP方式或VMware的共享目录的方式,将光盘中的文件

cross-2.95.3.tar.bz2传输到Linux服务器的/usr/local/arm目录,然后在Linux服务器

上进行将其解压缩:

#tarjxvfcross-2.95.3.tar.bz2

当以上的工作完成以后,就会在当前目录生成一个名为2.95.3的子目录,表明交

叉编译器已经成功安装到了/usr/local/arm下。

进入/usr/local/arm/2.95.3子目录,列表

查看目录所包含的内容。

#cd/usr/local/arm/2.95.3

#ls

arm-linuxbinincludeinfolibmansharetest-if-write

嵌入式编译工具就安装在这个目录中,可以完成源代码的编译。

这样您的开发环境已经建立在/usr/local/arm/2.95.3/bin下面,当然您需要使用的

时候,应该指出编译器的位置。

然后修改修改PATH变量:

为了可以方便使用arm-linux-gcc编译器系统,把arm-linux工具链目录加入到环境变量PATH中:

修改/etc/profile文件,添加pathmunge/usr/local/arm/2.95.3/bin即可。

#Pathmanipulation

if[`id-u`=0];then

pathmunge/sbin

pathmunge/usr/sbin

pathmunge/usr/local/sbin

pathmunge/usr/local/arm/2.95.3/bin

fi

pathmunge/usr/X11R6/binafter

设置环境变量后,最好是重启或注销一下,这样设置的环境变量才能生效。

 

第二章编译Uboot

我们提供给用户Uboot的源代码,共包含三个压缩格式的文件,位于光盘:

Software\uboot\source目录下,当用户需要对Uboot进行修改和编译时,可以按照如

下的操作步骤进行:

1、编译LOADER

将文件AT91RM9200-Loader.tar.gz拷贝到Linux服务器的某个目录,执行如下命

令解压文件:

#tarxzvfAT91RM9200-Loader.tar.gz

当文件解压完成以后,会自动生成AT91RM9200-Loader目录,进入该目录进行编译,

命令如下:

#cdAT91RM9200-Loader

#makeclean

#make

执行完上述命令以后,就会在当前目录下生成新的loader.bin文件。

2、编译BOOT

将文件AT91RM9200-Boot.tar.gz拷贝到Linux服务器的某个目录,执行如下命

令解压:

#tarxzvfAT91RM9200-Boot.tar.gz

当文件解压完成以后,会自动生成AT91RM9200-Boot目录,进入该目录进行编译,

命令如下:

#cdAT91RM9200-Boot

#makeclean

#make

执行完上述命令以后,就会在当前目录下生成新的boot.bin文件。

3、编译UBOOT

将文件u-boot-1.0.0.tar.gz拷贝到Linux服务器的某个目录,执行如下命令解压:

#tarxzvfu-boot-1.0.0.tar.gz

当文件解压完成以后,会自动生成u-boot-1.0.0目录,进入该目录进行编译,命令如

下:

#cdu-boot-1.0.0

#makeclean

#makeall

执行完上述命令以后,就会在当前目录下生成新的uboot.bin文件,执行如下命

令对uboot.bin进行压缩:

#gzip-cu-boot.bin>u-boot.gz

※注意:

以上的操作可能需要超级用户权限。

压缩完成以后,在当前目录下生成u-boot.gz,接下来该怎么做您都知道了吧?

对,就是按照第三章已经描述过的步骤,将生成的各个文件烧写到Flash里就可以

了。

第三章嵌入式Linux内核的配置与编译

Linux之所以能成为一种流行的嵌入式操作系统,除具有功能强大、高性能、稳

定性好以及源代码开发等优势以外,其最大的特点是Linux内核具有非常良好的结

构,可由用户根据特定的系统需求,对内核进行配置或裁减,而这一特点恰恰满足

了嵌入式应用的差异性需求。

嵌入式系统最大的特征是差异性,几乎每一个嵌入式应用都是唯一的,这种差

异性体现在硬件方面,就表现为系统可以采用不同的微处理器架构,如X86、ARM、

PowerPC、MIPS等,同时,即使采用同一种微处理器架构,不同生产商生产的微处

理器也会有不小的差异,运行在这些嵌入式微处理器上的操作系统也会有所相同,

因此,如何得到一个适合在某个特定的嵌入式系统上运行的Linux内核,是我们首先

要解决的问题。

我们提供可以稳定运行在H9200F的嵌入式Linux内核包,位于光盘目录:

Software\Arm-Linux\Source\Kernel。

将该Linux内核源代码包linux-2.4.27-xxxxxx-AT91RM9200.tar.bz2和

stand_config拷贝到Linux服务器上我们约定的工作目录:

/home/work,然后执行如

下命令解压:

#tarjxvflinux-2.4.27-xxxxxx-AT91RM9200.tar.bz2

该命令执行完毕后,生成目录linux-2.4.27-xxxxxx-AT91RM9200。

然后将stand_config拷入此目录,并进行如下操作替换配置文件:

#rm–f.config;删除原有配置文件

#mvstand_config.config;将新配置文件改名为.config

注意文件名中的“xxxxxx”为文件生成的时间,我们会定期更新Linux内核的版

本。

Linux内核的配置(或裁剪)是与嵌入式系统的应用需求相适应的。

尽管Linux

内核功能强大,支持的设备众多,但对于一个特定的嵌入式应用来说,可能只会使

用到其中的部分功能,而对于其它不使用的部分,如果让它驻留在系统中,不但耗

费系统资源,同时还会增加系统安全隐患,因此,内核配置的目的,就是保留系统

需要的功能,去掉不必要的部分,使操作系统以最精简、最优化的状态运行。

Linux内核支持三种配置方式,第一种方式是基于命令行的问答方式,针对每一

个内核配置选项会有一个提问,回答“y”包含该项功能,回答“n”则不包含该项功能。

通过执行makeconfig可以开始第一种方式。

第二种是菜单式的,用户可以在Linux服务器或网络中的某个工作站进行操作,

执行makemenuconfig命令以后,会出现一个配置菜单,通过该菜单可以很方便的进

行内核的配置。

第三种方法也是采用菜单方式进行配置的,但必须在Linux服务器上执行。

通过

执行makexconfig可以开始第三种方式。

显然,三种方式的实质是相同的,我们通常使用第二种方式进行配置,这种方

式简单明了,受条件制约小。

执行如下命令:

#makemenuconfig

※注意:

该命令可能需要超级用户权限。

系统出现图4-2所示的内核配置界面:

图4-2嵌入式Linux内核的配置界面

用户也许对配置选项的意义不是完全明白,可以先不用管他,我们已经对内核

做了比较合理的配置,建议在开始接触时不要做修改。

当用户在根据自己的系统需求配置好内核,退出配置菜单时,需要保存修改后

的内核配置,如图4-3所示。

图4-3嵌入式Linux内核配置保存界面

※注意:

更换配置文件后第一次进入内核配置界面并退出是必须保存,以生成配置头

文件。

若用户选择不保存,则进行的所有配置操作无效,内核配置仍然为原来的状态,

若选择保存,系统会在当前目录下生成一个.config文件,其后要进行的内核编译就

是根据这个.config文件来进行条件编译以生成相应的可执行文件的。

当完成对Linux内核的配置以后,内核仍然以源代码的方式存在,不能直接下载

到嵌入式系统运行,因此,需要对内核进行编译,生成最终可以在嵌入式系统上运

行的可执行代码。

依次执行如下命令,对Linux内核进行编译:

#makeclean;该命令用于清除旧的编译文件

#makedep;该命令用于生成系统相应的依赖文件

#./automake

当您以极大的耐心执行完以上的步骤,如果运气不错的话,会在当前目录下生

成内核压缩映象文件uImage,好啦,停下来喘口气吧!

 

第4章NFS(网络文件系统)建立与配置方法

网络文件系统(NFS,NetworkFileSystem)是一种将远程主机上的分区(目录)

经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地

系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。

在嵌入式Linux的开发过程中,开发者需要在Linux服务器上进行所有的软件

开发,交叉编译后,通用FTP方式将可执行文件下载到嵌入式系统运行,但这种方

式不但效率低下,且无法实现在线的调试。

因此,可以通过建立NFS,把Linux服务器上的特定分区共享到待调试的嵌入

式目标系统上,就可以直接在嵌入式目标系统上操作Linux服务器,同时可以在线

对程序进行调试和修改,大大的方便了软件的开发。

因此,NFS的是嵌入式Linux开

发的一个重要的组成部分,本部分内容将详细说明如何配置嵌入式Linux的NFS开

发环境。

嵌入式Linux的NFS开发环境的实现包括两个方面:

一是Linux服务器端的

NFS服务器支持;二是嵌入式目标系统的NFS客户端的支持。

因此,NFS开发环

境的建立需要配置Linux服务器端和嵌入式目标系统端。

1.Linux服务器端NFS服务器的配置

以root身份登陆Linux服务器,编辑/etc目录下的共享目录配置文件exports,

指定共享目录及权限等。

执行如下命令编辑文件/etc/exports:

#vi/etc/exports

在该文件里添加如下内容:

/home/work192.168.0*(rw,sync,no_root_squash)

然后保存退出。

添加的内容表示:

允许ip地址范围在192.168.0.*的计算机以读写的权限来访问

/home/work目录。

/home/work也称为服务器输出共享目录。

括号内的参数意义描述如下:

◆rw:

读/写权限,只读权限的参数为ro;

◆sync:

数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于

内存中,而不立即写入硬盘。

◆no_root_squash:

NFS服务器共享目录用户的属性,如果用户是root,那

么对于这个共享目录来说就具有root的权限。

接着执行如下命令,启动端口映射:

#/etc/rc.d/init.d/portmapstart

最后执行如下命令启动NFS服务,此时NFS会激活守护进程,然后就开始监

听Client端的请求:

#/etc/rc.d/init.d/nfsstart

用户也可以重新启动Linux服务器,自动启动NFS服务。

在NFS服务器启动后,还需要检查Linux服务器的防火墙等设置(一般需要关

闭防火墙服务),确保没有屏蔽掉NFS使用的端口和允许通信的主机,主要是检查

Linux服务器iptables,ipchains等选项的设置,以及/etc/hosts.deny,/etc/hosts.allow

文件。

首先在Linux服务器上进行NFS服务器的回环测试,验证共享目录是否能够被

访问。

在Linux服务器上运行如下命令:

#mount–tnfs192.168.0.20:

/home/work/mnt

#ls/mnt

命令将Linux服务器的NFS输出共享目录挂载到/mnt目录下,因此,如果NFS

正常工作,应该能够在/mnt目录看到/home/work共享目录中的内容。

※注意:

我们Linux服务器IP地址是192.168.0.20,用户如有不同,请对命令中的IP

地址进行相应的修改。

2.嵌入式目标系统NFS客户端的配置

在Linux服务器设置好后,接下来还需要对客户端进行相关配置。

我们已在目标系统所提供给用户的Linux内核进行了相应的配置,用户可以省

略这一步的相关操作。

在嵌入式目标系统的LinuxShell下,执行如下命令来进行NFS共享目录挂载:

#mount–tnfs192.168.0.20:

/home/work/mnt/nfs–onolock

#cd/mnt/nfs

#ls

此时,嵌入式目标系统端所显示的内容即为Linux服务器的输出目录的内容,

即Linux服务器的输出目录/home/work通过NFS映射到了嵌入式目标系统的

/mnt/nfs目录。

用户可以用增/删/修改文件的方式来验证实际效果。

mount命令中的192.168.0.20为Linux服务器的IP地址,/home/work为Linux

服务器端所配置的共享输出目录,/mnt/nfs为嵌入式设备上的本地目录。

由于很多

嵌入式设备的根文件系统中不带portmap,所以一般都使用-onolock选项,不需要使用

NFS文件锁来避免使用portmap。

 

第五章uboot和linux的烧写

第一节UBOOT的烧写

当系统系统因误擦除了FLASH或因其他原因不能启动时,就需要运行

AT91RM9200片内ROM的程序,重新烧写UBOOT。

在以下的操作过程中,会使

用到4个文件:

boot.bin、loader.bin、u-boot.bin和u-boot.gz,这4个文件位于CD:

Software\uboot\bin:

1.启动片内ROM的程序

将系统串口与PC串口相连,并连接好系统的网线,将H9200F的跳线J100的2

-3短接,然后复位系统,打开超级终端设置串口为:

115200、8、无、1、无,如

图5-1:

图5-1设置超级终端

在超级终端会出现“CCCCCCCC…..”,此时AT91RM9200片内ROM的程序已

开始运行,如图5-2所示:

图5.2启动片内ROM

2.下载Uboot到SDRAM中运行

在超级终端,使用Xmodem协议,发送loader.bin文件,然后超级终端会出现下载

Uboot的提示,并继续出现“CCCCCCCCC………”如图5-3所示:

图5-3发送loader.bin文件

继续使用Xmodem协议,发送uboot.bin文件,此时uboot.bin被发送到系统的

SDRAM中,发送完毕后uboot开始运行,显示>U-Boot的提示符,如图5-4所示:

图5-4发送uboot.bin文件

3.擦除Flash

在对Flash进行烧写之前,需要将其擦除:

Uboot>protectoffall;去掉Flash的扇区写保护

Uboot>eraseall;擦除Flash的所有扇区

4.烧写Boot.bin到Flash

在Uboot提示符下键入命令:

Uboot>loadb20000000;将boot.bin发送到系统的SDRAM中

然后在超级终端使用Kermit协议,发送文件boot.bin,发送完毕后,键入以下

命令:

Uboot>cp.b20000000100000005fff;将发送到SDRAM中的数据写入Flash

Uboot>protecton1000000010005fff;对写入Flash的内容进行写保护

运行结果如图5-5所示;

图5-5烧写Boot.bin文件

5.烧写Uboot.gz到Flash

在Uboot提示符下键入命令:

装入Uboot.gz

Uboot>loadb20000000;将文件发送到系统的SDRAM中

然后在超级终端使用Kermit协议,发送文件Uboot.gz,发送完毕后,键入以下

命令:

Uboot>cp.b2000000010010000ffff;将发送到SDRAM中的数据写入Flash

Uboot>protecton100000001001ffff;对写入Flash的内容进行写保护

运行结果如图5-6所示:

图5-6烧写Uboot.gz文件

以上完成了UBOOT的烧写,然后断电,将J100跳至1-2,重新启动回进入

UBOOT。

第二节AT91RM9200的内核烧写

采用flash中启动linux的方法进行内核烧写,执行如下的步骤:

1.复位系统,然后设置u-boot的启动参数如下:

Uboot>setenvbootargsroot=/dev/mtdblock/3console=ttyS0,115200mem=32M

Uboot>setenvimagecp.b1002000021000000e0000

Uboot>setenvramdiskrun

Uboot>setenvbootbootm21000000

Uboot>setenvbootcmdrunimage\;runboot

Uboot>setenvethaddr00:

12:

34:

56:

78:

9a;可能会出现“Can'toverwrite

ethaddr”的提示,可以不管。

Uboot>setenvipaddr192.168.0.165;目标板的IP

Uboot>setenvserverip192.168.0.161;个人电脑windows的IP

Uboot>setenvbootdelay1

Uboot>saveenv

运行结果如图5-7所示:

图5-7设置Uboot启动参数

2.现在就可以将内核通过tftp下载到sdram中,然后拷贝到flash中了。

打开uImagejffs2.img所在文件夹下的TFTPSRV.EXE然后最小化,TFTPSRV.EXE所在

目录如图5-8所示:

图5-8运行TFTPSRV.EXE

Uboot>tftp21000000uImage

Uboot>cp.b2100000010020000e0000

运行状态如图5-9所示:

图5-9固化内核到flash

这可能需要一定的时间,请耐心等待,不要断电。

Uboot>tftp21100000jffs2.img

Uboot>cp.b2110000010100000260000;

※注意:

0x260000=2432KB表示的是jffs2.img的大小,可以根据实际jffs2.img

大小进行选择,注意不要小于实际大小即可。

运行结果如图5-10所示:

图5-10固化根文件系统到flash

这可能需要一定的时间,请耐心等待,不要断电。

3.拷贝完成后,复位系统

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1