启动redboot后向目标机烧写一个linux内核的全过程.docx

上传人:b****6 文档编号:6520642 上传时间:2023-01-07 格式:DOCX 页数:14 大小:23.77KB
下载 相关 举报
启动redboot后向目标机烧写一个linux内核的全过程.docx_第1页
第1页 / 共14页
启动redboot后向目标机烧写一个linux内核的全过程.docx_第2页
第2页 / 共14页
启动redboot后向目标机烧写一个linux内核的全过程.docx_第3页
第3页 / 共14页
启动redboot后向目标机烧写一个linux内核的全过程.docx_第4页
第4页 / 共14页
启动redboot后向目标机烧写一个linux内核的全过程.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

启动redboot后向目标机烧写一个linux内核的全过程.docx

《启动redboot后向目标机烧写一个linux内核的全过程.docx》由会员分享,可在线阅读,更多相关《启动redboot后向目标机烧写一个linux内核的全过程.docx(14页珍藏版)》请在冰豆网上搜索。

启动redboot后向目标机烧写一个linux内核的全过程.docx

启动redboot后向目标机烧写一个linux内核的全过程

启动redboot后向目标机烧写一个linux内核的全过程

 

命令说明

对一个没有内核和根文件系统的板子是不可以运转的,当通过一种方式下载了RedBoot引导程序以后,我们可以通过下面的方式下载内核和根文件系统。

在本系统中,我们对内核和根文件系统的下载是通过tftp服务完成的。

整个Flash空间是16M,它的地址范围:

0x50000000–0x50fe0000,共有128块,每一块的大小是128K。

0x50000000–0x50080000范围放的是RedBoot引导程序和各种配置,0x50080000–0x50200000范围放的是Linux内核zImage,0x50200000–0x50380000范围放的是根文件系统ramdisk,0x50380000–0x50f60000范围放的是jffs2文件格式。

剩余0x50f60000---0x50fe0000范围的512K空间放日志系统.

以下过程为启动redboot后,向目标机烧写一个linux内核的全过程

先对flash进行初始化

RedBoot>fisinit

Abouttoinitialize[format]FLASHimagesystem-continue(y/n)?

y

***InitializeFLASHImageSystem

...Unlockfrom0x50060000-0x50080000:

.

...Erasefrom0x50060000-0x50080000:

.

...Programfrom0x07fe0000-0x08000000at0x50060000:

.

...Lockfrom0x50060000-0x50080000:

.

对剩余的FLASH空间解除锁定

RedBoot>fisunlock-f0x50080000-l0xf60000

...Unlockfrom0x50080000-0x50fe0000:

.........................................

................................................................................

..然后擦除

RedBoot>fiserase-f0x50080000-l0xf60000

...Erasefrom0x50080000-0x50fe0000:

..........................................

................................................................................

.显示FLASH分区信息

RedBoot>fislist

NameFLASHaddrMemaddrLengthEntrypoint

RedBoot0x500000000x500000000x000600000x00000000

FISdirectory0x500600000x500600000x0001F0000x00000000

RedBootconfig0x5007F0000x5007F0000x000010000x00000000

下面两步把内核zImage.H5500传送到目标板上,然后将其烧到flash的0x50080000地址中

RedBoot>loadzImage.H5500-b0x2000000-r-mtftp-h192.168.9.190

Rawfileloaded0x02000000-0x0211e52b,assumedentryat0x02000000

将其烧到flash的0x50080000地址中,zImage分配的空间为0x180000K

RedBoot>loadzImage.H5500-b0x2000000-r-mtftp-h192.168.9.190

Rawfileloaded0x02000000-0x0211e52b,assumedentryat0x02000000

RedBoot>fiscreate-b0x2000000-l0x180000-f0x50080000zImage

...Erasefrom0x50080000-0x50200000:

............

...Programfrom0x02000000-0x02180000at0x50080000:

............

...Unlockfrom0x50060000-0x50080000:

.

...Erasefrom0x50060000-0x50080000:

.

...Programfrom0x07fe0000-0x08000000at0x50060000:

.

...Lockfrom0x50060000-0x50080000:

将ramdisk.gz.H5500传送到目标板上,然后将其烧到flash的0x50020000地址中

RedBoot>loadramdisk.gz.H5500-b0x800000-r-mtftp-h192.168.9.190

Rawfileloaded0x00800000-0x0098a8df,assumedentryat0x00800000

RedBoot>fiscreate-b0x800000-l0x180000-f0x50200000ramdisk

...Erasefrom0x50200000-0x50380000:

............

...Programfrom0x00800000-0x00980000at0x50200000:

............

...Unlockfrom0x50060000-0x50080000:

.

...Erasefrom0x50060000-0x50080000:

.

...Programfrom0x07fe0000-0x08000000at0x50060000:

.

...Lockfrom0x50060000-0x50080000:

.

将jffs2.rescue.img传送到目标板上,然后将其烧到flash的0x50380000地址中

RedBoot>loadjffs2.rescue.img-b0x800000-r-mtftp-h192.168.9.190

Rawfileloaded0x00800000-0x00898c6b,assumedentryat0x00800000

RedBoot>fiscreate-b0x800000-l0xbe0000-f0x50380000jffs2

...Erasefrom0x50380000-0x50f60000:

..........................................

.....................................................

...Programfrom0x00800000-0x013e0000at0x50380000:

..........................

.....................................................................

...Unlockfrom0x50060000-0x50080000:

.

...Erasefrom0x50060000-0x50080000:

.

...Programfrom0x07fe0000-0x08000000at0x50060000:

.

...Lockfrom0x50060000-0x50080000:

.

RedBoot>fislist

NameFLASHaddrMemaddrLengthEntrypoint

RedBoot0x500000000x500000000x000600000x00000000

FISdirectory0x500600000x500600000x0001F0000x00000000

RedBootconfig0x5007F0000x5007F0000x000010000x00000000

zImage0x500800000x500800000x001800000x02000000

ramdisk0x502000000x502000000x002000000x00800000

jffs20x503800000x503800000x00be00000x00200000

fconfig,此命令是配置脚本命令

RedBoot>fconfig

Runscriptatboot:

true

Bootscript:

Enterscript,terminatewithemptyline

>>fisunlock-f0x50380000-l0xbe0000

>>fisload-b0x2000000zImage

>>fisload-b0x800000ramdisk

>>exec0x2000000

>>

Bootscripttimeout(1000msresolution):

3

UseBOOTPfornetworkconfiguration:

true

DefaultserverIPaddress:

192.168.0.43

Consolebaudrate:

115200

GDBconnectionport:

9000

Forceconsoleforspecialdebugmessages:

false

Networkdebugatboottime:

false

Defaultnetworkdevice:

npe_eth0

Networkhardwareaddress[MAC]fornpe_eth0:

0x00:

0x0F:

0x0E:

0x01:

0x02:

0x03

UpdateRedBootnon-volatileconfiguration-continue(y/n)?

(出现此提示时,请输入y)

...Unlockfrom0x50060000-0x50080000:

.

...Erasefrom0x50060000-0x50080000:

.

...Programfrom0x07fe0000-0x08000000at0x50060000:

.

...Lockfrom0x50060000-0x50080000:

.

显示FLASH被擦除但位被使用的空间

RedBoot>fisfree

0x50F60000..0x50FDFFFF

到这里整个烧写过程结束。

RedBoot可以在多种不同配置下运行,但一般都是从目标平台的闪存引导区或引导ROM启动。

RedBoot设计为系统上电启动,能提供完整的处理器初始化和设备设置,使设计人员能够迅速开始与系统通信。

出现RedBoot>

后,就表明redboot已经准备好,用户可以开始输入命令。

RedBoot命令的基本格式是:

命令[-选项1][-选项2参数值]操作符

命令格式中的选项1和选项2代表可以加到某些命令中的可选参数,用于指示一些特定动作或附加信息,在选项2中还包括一个数值。

操作符定义了某些特殊命令所需的附加信息。

命令也可以缩写成最短的无歧义字符串,如dump、dum、du和d都是dump命令的有效写法。

RedBoot用load命令下载应用软件映像,映像可以用TFTP协议、X/Y调制解调器协议或直接从目标硬件下载。

RedBoot常用的几条命令:

首先是闪存映像系统(fis)命令,当硬件平台上配有闪存时,RedBoot提供fis命令作为基本文件系统,这些命令主要用来管理文件系统映像。

另一个有用的命令是基于闪存的配置和控制命令fconfig。

用fconfig命令查询的输出信息,配置命令可以设置RedBoot启动顺序。

启动配置包括是否在初始化期间运行引导脚本、是否用BOOTP协议获取IP地址等等。

RedBoot支持引导脚本,因此允许用户在上电过程完成后执行所需命令。

在产品测试阶段采用RedBoot装载应用软件映像时引导脚本很有好处,用户还可以设置超时参数,在引导脚本执行前按下Ctrl+C中断执行。

引导脚本可用fconfig命令进行设置。

RedBoot命令介绍:

引用一个别名,如为joe的别名为ThisisJoe

RedBoot>aliasjoe"ThisisJoe"

设置IP,如改变SERVERIP为192.168.1.104

RedBoot>ip_address-h192.168.1.104IP:

192.168.1.31,Defaultserver:

192.168.1.104,DNSserverIP:

192.168.1.101

Load命令:

从宿主机下载程序到目标机详细用法在flash烧写过程中举例

Version:

显示RedBoot的版本,使用平台,内存和FLASH空间大小等等信息。

RedBoot>version

RedBoot(tm)bootstrapanddebugenvironment[ROM]

RedHatcertifiedrelease,version2.02-built21:

47:

00,Jun192006

Platform:

IXDP425DevelopmentPlatform(IXP42X400MHz)BE

Copyright(C)2000,2001,2002,2003,2004RedHat,Inc.

RAM:

0x00000000-0x08000000,[0x00029808-0x07fc1000]available

FLASH:

0x50000000-0x50fe0000,127blocksof0x00020000byteseach.

mfill:

用指定的方式向向存储器中写数据。

Mfill{-blocation}{-llength}{-pvalue}[-1|-2|-4]

-b:

存储器中,被写入数据的起始地址。

-l:

被写入数据的长度。

-p:

被写入数据的内容。

RedBoot>x-b00400000-l0x40

00061A80:

FFFFFFFFFFFCFFFFBFFFEFFFEFFFDFFF|................|

00061A90:

FFEFFFFFFFBFFFFDFEFFF7FFFFFF5FFF|.............._.|

00061AA0:

FF5FFFDFFFFFFF6FFCFFBBFFBFFFD7FF|._.....o........|

00061AB0:

FFFFFFFBFFF7FFFFAFFFBEFF7FFFFEFF|................|

RedBoot>mfill-b0x00400000-l0x40-p0x98765423

RedBoot>x-b0x00400000-l0x40

00400000:

98765423987654239876542398765423|.vT#.vT#.vT#.vT#|

00400010:

98765423987654239876542398765423|.vT#.vT#.vT#.vT#|

00400020:

98765423987654239876542398765423|.vT#.vT#.vT#.vT#|

00400030:

98765423987654239876542398765423|.vT#.vT#.vT#.vT#|

FlashImageSystem(FIS)

如果在一个板子上有Flash存储器,RedBoot能够把image引导到Flash中。

运行的对象,包括一些数据还有一些简单的文件也能够存放到Flash中。

fis这个命令能够被使用运行Flash中的内容。

fisinit[-f]:

初始化(FIS),当RedBoot第一次在器件上安装的时候这个命令被运行。

-f:

Flash的所有的块全部被檫除。

RedBoot>fisinit–f

Abouttoinitialize[format]flashimagesystem-areyousure(y/n)?

n

fis[-c][-d]list:

列出FIS中一般的文件,一些能够以RedBoot的名字运行,另外一些能够被使用者执行。

-c:

image的ckecksum代替MemAddr。

-d:

image的datalenggth代替length。

RedBoot>fislist

NameflashaddrMemaddrLengthEntrypoint

RedBoot0x500000000x500000000x000600000x00000000

FISdirectory0x500600000x500600000x0001F0000x00000000

RedBootconfig0x5007F0000x5007F0000x000010000x00000000

RedBoot>fislist-c

NameflashaddrChecksumLengthEntrypoint

RedBoot0x500000000x000000000x000600000x00000000

FISdirectory0x500600000x000000000x0001F0000x00000000

RedBootconfig0x5007F0000x000000000x000010000x00000000

fisfree:

显示Flash中还有那些地址空间没有被使用,使用这个命令可以知道另外一些image下载的位置。

RedBoot>fisfree

0x50080000..0x50FDFFFF

fiscreate–b-l[-f][-e][-r][-s][-n]:

在FIS目录中创造一个image,image中的数据在拷贝之前必须存在在RAM存储器中。

(首先,使用load命令把image下载到RAM中,然后运用fiscreate命令把他写入Flash中。

name:

文件的名字,显示在FIS目录中。

-b:

在RAM中的一个位置,为了得到image,这是一个必须的参数。

-l:

image的长度。

如果image已经存在,那么它的长度被推断根据先前image被创造的时间。

特殊的情况下,它可能和原来的初始化的数据是一样的。

-f:

image在Flash中的位置。

一般情况下,位置被确定根据现在的image所在的位置,如果在Flash还没有image的存在,那么剩余的块是足够的被使用。

-e:

执行登陆的地址。

如果image的开始地址不知道或者是不需要被考虑,-e被使用。

-r:

当image通过fisload命令下载在RAM中的位置。

但是在这里要求这个image是给定的。

-s:

被写入Flash数据的真实的长度,如果不能出现,那么image的长度是假定的,-s比-l给出的数据要短一些,

-n:

仅仅更新FIS的目录,没有数据被拷贝从RAM到Flash中,这个特点能够被使用登陆FIS,如果它已经坏掉。

RedBoot>fiscreateRedBoot-f0x50000000-b0x07000000-l0x60000

Animagenamed'RedBoot'exists-continue(y/n)?

n

RedBoot>fisunlock-f0x50080000-l0x20000

...Unlockfrom0x50080000-0x500a0000:

.

RedBoot>fiserase-f0x50080000-l0x20000

...Erasefrom0x50080000-0x500a0000:

.

RedBoot>fiscreatefuck-b0x05000000-l0x20000

...Erasefrom0x50080000-0x500a0000:

.

...Programfrom0x05000000-0x05020000at0x50080000:

.

...Unlockfrom0x50060000-0x50080000:

.

...Erasefrom0x50060000-0x50080000:

.

...Programfrom0x07fe0000-0x08000000at0x50060000:

.

...Lockfrom0x50060000-0x50080000:

.

RedBoot>fislist

NameFLASHaddrMemaddrLengthEntrypoint

RedBoot0x500000000x500000000x000600000x00000000

FISdirectory0x500600000x500600000x0001F0000x00000000

RedBootconfig0x5007F0000x5007F0000x000010000x00000000

fuck0x500800000x050000000x000200000xFFFFFFFF

fisload[-b][-c][-d]name:

拷贝一个image从Flash到RAM。

一旦被下载,它可能运用go命令执行。

如果加上-b参数,image被拷贝从Flash到RAM的指定的位置,如果不加上-b参数,image被拷贝从Flash到image被创造的地址。

-name:

一个显示在FIS目录中的文件名。

-b:

存储器中,被写入数据的开始地址

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

当前位置:首页 > 表格模板 > 合同协议

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

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