linux的移植.docx

上传人:b****7 文档编号:9377086 上传时间:2023-02-04 格式:DOCX 页数:16 大小:174.55KB
下载 相关 举报
linux的移植.docx_第1页
第1页 / 共16页
linux的移植.docx_第2页
第2页 / 共16页
linux的移植.docx_第3页
第3页 / 共16页
linux的移植.docx_第4页
第4页 / 共16页
linux的移植.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

linux的移植.docx

《linux的移植.docx》由会员分享,可在线阅读,更多相关《linux的移植.docx(16页珍藏版)》请在冰豆网上搜索。

linux的移植.docx

linux的移植

linux的移植、内核、文件系统的生成与下载

一、实验目的

1.了解内核编译过程

2.了解linux移植的基本过程,掌握内核和文件系统的下载方法。

3.掌握嵌入式主机运行环境的配置。

二、实验内容

1.学习内核编译的过程

2.学习linux移植的基本过程

2.学习内核和文件系统的生成与下载方法

三、实验设备

1.PentiumII以上的PC机、EL-ARM860实验箱

四、linux的移植说明

1.内核编译

1)内核的结构

本实验系统运行的linux版本是针对linux-2.6.28进行移植的,其组成结构如下图所示:

 

图 linux-2.6.28的目录结构图

Linux内核非常庞大,包括驱动程序在内有上百兆。

如下图示其主要结构目录:

/arch子目录包含了所有与硬件体系结构相关的内核移植代码。

其中每一个目录都代表一种硬件平台,对于每种平台都应该包括:

boot:

包括启动内核所使用的部分或全部平台的相关代码。

kernel:

包括支持体系结构特有的特征代码

lib:

包括存放体系结构特有的通用函数的实现代码

mm:

包括存放体系结构特有的内存管理程序的实现

mach-xxx:

包括存放该处理器的移植代码

/Documentation子目录包含有关内核的通用解释和注释。

/drivers子目录包含内核中所有的设备驱动程序,每个不同的驱动占用一个子目录,如char、block、net、mtd、i2c等。

/fs子目录包含了所支持的文件系统的代码,如EXT、FAT、NTFS、JFFS2等。

/include子目录包含了建立内核代码时所需的大部分库文件的头文件,该模块利用其他模块重建内核。

同时,它也包括不同平台需要的库文件,被放置在include/linux子目录下。

/init子目录包含了内核的初始化代码,内核从此目录下开始工作。

/ipc子目录包含了内核的进程间通讯的代码。

/kernel子目录是内核的最核心部分,包含了进程调度、定时器等,而和平台相关的一部分代码放在arch/*/kernel目录下。

/lib子目录包含了通用的库函数代码等。

/mm子目录包含了内核的内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。

/net子目录包含了内核的网络相关的代码,实现了各种常见的网络协议。

/scripts子目录包含了配置内核的一些脚本文件。

/security主要是一个SELinux的模块。

/sound:

ALSA、OSS音频设备的驱动核心代码和常用设备驱动。

/usr:

实现了用于打包和压缩的cpio等。

一般在每个目录下,都有一个.depend文件和一个Makefile文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件这间的联系和依托关系很有帮助;而且,在有的目录下还有Readme文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解。

因此,移植工作的重点就是移植arch目录下的文件。

从内核的目录结构看出,Linux内核主要由5个子系统组成:

●进程调度(SCHED)子系统

●进程间通讯(IPC)子系统

●内存管理(MM)子系统

●虚拟文件系统(VFS)子系统

●网络接口(NET)子系统

2)linux内核的编译

Linux内核是指linux源代码经过编译和链接生成的映像文件(Image),它存在压缩和非压缩两种形式。

本质上映像文件是一个可执行程序,由bootloader加载运行。

Linux内核从配置到安装大致有如下步骤:

1)进入内核源码,使用命令makedistclean、makeclean、makemrproper。

2)配置内核,最常见的命令为makemenuconfig。

3)建立依赖关系,最常见的命令为makedep。

4)编译内核,最常见的命令为make或makezImage。

5)如果需要编译内核模块,最常见的命令为makemodules。

6)如果需要安装内核模块,最常见的命令为makemodules_install。

7)安装内核,最常见的命令为makeinstall。

操作:

找到光盘中的Linux-2.6.28-omap.tar.bz2,复制到linux下的/home目录下,在终端下进入/home目录,输入:

tarxvzfLinux-2.6.28-omap.tar.bz2进行解压。

编译步骤为:

在虚拟机里面打开终端,进入/home/Linux-2.6.28-omap目录,在终端下输入命令:

makeomap3_techv35xx_defconfig

有可能存在交叉编译器的路径设置,使用默认的配置编译,如果需要选择编译选项,使用下面的命令:

makeuImage

等待编译结束,编译结束后会在arch/arm/boot目录下生成uImage。

3)内核的配置

linux内核的配置系统由三个部分组成,分别是:

Makefile:

分布在Linux内核源代码中的Makefile,定义linux内核的编译规则;配置文件(config.h):

给用户提供配置选择功能;配置工具:

包括命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面和图形界面)。

这些配置工具都是使用脚本语言,如Tcl/TK、Perl等编写。

配置linux内核是创建一个能够运行于目标系统上的内核的第一步。

配置内核有很多种方法,在配置内核过程中有很多选项需要选择。

不管用哪种方法或选择配置内核,内核都会在配置完后生成一个.config文件,还会产生大量的符号连接和头文件,这些在其余的创建过程中会用到。

.config文件中保存了根据在menuconfig中选择定义的相应变量,在Linux内核目录下的Makefile文件中将会包含这个文件。

内核的配置选项很多,需要根据目标机的实际情况进行选择。

然而,并不是所有的选项都需要设置,某些选项对嵌入式Linux系统没有太大的意义,其中比较重要的内核选项包括:

1)codematurityleveloptions(内核成熟级别选项)

2)loadablemodulesupport(可加载模块支持)

3)generalsetup(通用设置)

4)memorytechnologydevices(内存技术设备)

5)blockdevices(块设备)

6)networkdevicesupport(网络设备支持)

7)characterdevices(字符设备)

8)filesystem(文件系统)

9)consoledrivers(控制台驱动)

可以参考配置界面中的说明来确定每个选项的含义,不需要的功能都可以去掉,这样可以有效减小内核的尺寸。

说明:

出厂内核源码中提供有默认配置文件:

Linux-2.6.28-omap/arch/arm/configs/omap3_techv35xx_defconfig用户可在其基础上进行系统定制。

在终端输入如下命令:

cdlinux-2.6.28-omap

cparch/arm/configs/omap3_techv35xx_defconfig.config

makemenuconfig

进入这个界面后,可以选择要编译的驱动或者模块。

选择完成后,保存配置,执行以下命令重新编译内核:

MakeuImage

执行完以上操作后,arch/arm/boot目录下生成新的内核映像uImage,重新把uImage烧写进35xx板。

2.文件系统建立

文件系统是文件存放在磁盘等存储设备上的组织方法,主要作用体现在对文件和目录的组织上。

目录提供了管理文件的一个方便而有效的途径。

本身linux内核的运行是不依赖于文件系统的,但是文件系统可以让嵌入式Linux操作系统拥用很多与PC相似的强大功能。

ubifs是新一代的flash文件系统,其设计以及性能都优越于YAFFS2,特别是工作在大页MLCNANDFLASH上面,同时读写速度也比yaffs2高出很多,ubifs文件系统的写入速度约为1.66M/s,读出速度约为2.27M/s.同时ubhifs系统的高压缩率也为生产安装提高效率。

操作:

在/home目录下创建一个目录命名为ubi,找到光盘内的rootfs.tar.bz2,mkfs.ubifs,ubinize,ubinize.cfg这四个文件复制到ubi目录下。

创建步骤:

在虚拟机里面打开终端,进入/home/ubi目录,在终端输入下面的命令:

#tarxvzfrootfs.tar.bz2

#./mkfs.ubifs–rrootfs–m2048–e129024–c812–oubifs.img

#./ubinize–oubi.img–m2048–p128KiB–s512ubinize.cfg

等一会儿,会建立好名为ubifs.img的文件系统。

3、linux的内核、文件系统下载

1)实验系统开关

S4:

拨码开关,ARMCPU的bank选择;DSPCPU的IO空间选择

码位

功能

1-----ON

CS0为ON片选为NGCS0

2-----ON

CS1为ON片选为NGCS1

3-----ON

CS2为ON片选为NGCS2

4-----ON

CS3为ON片选为NGCS3

5-----ON

DCS0有效:

0000H~1FFFH(DSPI/O空间)

6-----ON

DCS1有效:

2000H~3FFFH(DSPI/O空间)

7-----ON

DCS2有效:

4000H~7FFFH(DSPI/O空间)

8-----ON

DCS3有效:

8000H~7FFFH(DSP数据空间)

SW4:

拨码开关,ARM和DSPCPU板选择

第一位DSP1

第二位DSP2

功能

OFF

OFF

选择5XXX系列DSPCPU

ON

OFF

选择6XXX系列DSPCPU

OFF

ON

保留

ON

ON

保留

第三位ARM1

第四位ARM2

功能

OFF

OFF

选择ARM9CPU

ON

OFF

选择ARM10CPU

OFF

ON

选择OMAP35XXCPU

ON

ON

保留

2)主机通讯环境的配置

用交叉网线把主机和实验系统连接。

在linux操作系统终端下输入minicom-s,配置minicom为波特率为115200,无奇偶校验,8bit。

之后,在minicom下,给系统上电,系统正常起来后,利用ifconfigeth0xxx.xxx.xxx.xxx来改变实验系统的IP地址,让该地址的前三段和主机的前三段一致,最后的一段,可以选择和主机不重复的小于255的任意值。

例如,主机是192.168.0.1,则实验系统配置为ifconfigeth0192.168.0.5,之后,利用ping命令,在实验系统上ping192.168.0.1,看看实验系统能否和主机连上。

当连通后,利用mount命令,挂载主机的nfs系统下的共享目录。

要mount成功,首先,利用命令chmod777/home/nfs改变/home/nfs文件夹的属性,让其变为可读可写,如果/home目录下没有nfs文件夹,建议创建此文件夹,以后需要挂载的用于调试的驱动模块以及应用程序均放在该文件夹内。

之后,在终端中,输入mount–onolock192.168.0.1:

/home/nfs/tmp回车,即可完成把主机上的/home/nfs下的文件挂载到实验系统的/tmp目录下。

操作:

1)“管理”-“网络”-双击-“静态设置的IP地址”-192.168.1.147

255.255.255.0

192.168.1.1-“确定”-“激活”

2)“管理”-“服务器设置”-“服务”

服务配置

后台服务:

networkmanager

Nfs

分别重启

按需服务:

tftp

“保存”

3)按板子上的复位键-空格键或切断一下电源

Ping192.168.1.147

#root

#cd/

#ifconfigeth0192.168.1.16

下载(Downloading)模式:

在这种模式下,目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:

下载内核映像和根文件系统映像等。

从主机下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被BootLoader写到目标机上的FLASH类固态存储设备中。

BootLoader的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用BootLoader的这种工作模式。

工作于这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。

象Blob或U-Boot等这样功能强大的BootLoader通常同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。

比如,Blob在启动时处于正常的启动加载模式,但是它会延时10秒等待终端用户按下任意键而将blob切换到下载模式。

如果在10秒内没有用户按键,则blob继续启动Linux内核。

最常见的情况就是,目标机上的BootLoader通过串口与主机之间进行文件传输,传输协议通常是xmodem/ymodem/zmodem协议中的一种。

但是,串口传输的速度是有限的,因此通过以太网连接并借助TFTP协议来下载文件是个更好的选择。

此外,在WINDOWS下论及这个话题时,主机方所用的软件也要考虑。

比如,在通过以太网连接和TFTP协议来下载文件时,主机方必须有一个软件用来的提供TFTP服务。

●在WINDOWS下启动超级终端,设置其(115200,8位数据,1位停止位,无奇偶校验);用交叉网线连接pc机和cpu网口

●用串口线连接实验系统的P9口和PC机的串口。

系统上电,在超级终端下进入uboot界面(在出现如下界面时按空格键)

 

设置板子的参数:

在超级终端下依次输入下面的指令

setenvipaddr192.168.3.157(板子IP,根据实际情况设)

setenvserverip192.168.3.166(虚拟机的IP,根据实际情况设)

setenvnetmask255.255.255.0

setenvbootdelay3

setenvethaddr00:

50:

c2:

7e:

8A:

1D

setenvgatewayip192.168.3.1(网关,根据实际情况设)

setenvbootargsconsole=ttyS2,115200n8ubi.mtd=4root=ubi0:

rootfsrootfstype=ubifsvideo=omapfb:

mode:

8inch_LCD

setenvbootcmdnandread.i80300000280000210000\;bootm80300000

saveenv(保存设置好的参数)

将WINDOWS的网络连接配置改为UBOOT上所设置的SERVERIP,网关及子网掩码值。

然后下载安装TFTP服务器端应用软件,并打开出现如下图所示界面,出现了所设置的SERVERIP值说明连接成功。

在PC机上打开虚拟机,运行。

把需要烧写的x-load.bin.ift,u-boot.bin,uImage,ubi.img拷贝到WINDOWS下建立的/tftpboot目录下。

在TFTP服务器端应用软件设置共享目录,如图所示。

 

注:

烧写x-load,从FLASH启动u-boot需要这个文件,所以如果是新板子必须烧写;现板子出厂时已烧写过,不要再重新烧写。

可通过以下来更新u-boot,更新u-boot,是指原来已经烧写过u-boot,现在需要把修改过的u-boot烧写进去的过程。

要求,板子还可以从FLASH启动,否则需要按照1.1介绍的方法进行烧写。

步骤:

设置omap3530CPU小板上的拨码开关SW1为:

SW1.1

SW1.2

SW1.3

SW1.4

SW1.5

SW1.6

ON

OFF

ON

OFF

ON

OFF

使用串口线一头连接板子的P9另一头连接PC机的串口2(串口号可以根据实际情况来更改)。

使用一根交叉网线连接好板子和PC的网口;

打开超级终端,选择端口(和板子的P9端口相连的串口端口号,在这里是com2)

设置相应的参数如下,点确定打开:

给板子上电,板子自动启动。

按键盘使得板子进入u-boot的命令行,如下图:

设置板子的参数:

在超级终端下依次输入下面的指令

setenvipaddr192.168.3.157(板子IP,根据实际情况设)

setenvserverip192.168.3.166(虚拟机的IP,根据实际情况设)

setenvnetmask255.255.255.0

setenvbootdelay3

setenvethaddr00:

50:

c2:

7e:

8A:

1D

setenvgatewayip192.168.3.1(网关,根据实际情况设)

setenvbootargsconsole=ttyS2,115200n8ubi.mtd=4root=ubi0:

rootfsrootfstype=ubifsvideo=omapfb:

mode:

8inch_LCD

setenvbootcmdnandread.i80300000280000210000\;bootm80300000

saveenv(保存设置好的参数)

在超级终端下依次输入下面的指令

Tftpboot0x81600000u-boot.bin

Nandunlock

Nanderase80000160000

Nandeccsw

Nandwrite.i8160000080000$(filesize)

等待烧定完成,断电。

内核烧写

步骤:

1、同(1.2更新u-boot)的步骤1

2、同(1.2更新u-boot)的步骤2

3、同(1.2更新u-boot)的步骤3

4、同(1.2更新u-boot)的步骤4

5、同(1.2更新u-boot)的步骤5

6、在超级终端下依次输入下面的指令

tftpboot0x81600000uImage

如出现如下画面说明烧写成功。

nandunlock

nanderase280000210000

nandeccsw

nandwrite.i81600000280000$(filesize)

等待烧写完成,断电。

文件系统烧写

步骤:

1、同(1.2更新u-boot)的步骤1

2、同(1.2更新u-boot)的步骤2

3、同(1.2更新u-boot)的步骤3

4、同(1.2更新u-boot)的步骤4

5、同(1.2更新u-boot)的步骤5

6、在超级终端下依次输入下面的指令

tftpboot0x81000000ubi.img

nandunlock

nanderase680000

nandeccsw

nandwrite.i81000000680000$(filesize)

等待烧写完成,断电。

 

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

当前位置:首页 > 医药卫生 > 中医中药

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

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