ELDK中文开发手册.docx

上传人:b****6 文档编号:8600607 上传时间:2023-02-01 格式:DOCX 页数:17 大小:26.26KB
下载 相关 举报
ELDK中文开发手册.docx_第1页
第1页 / 共17页
ELDK中文开发手册.docx_第2页
第2页 / 共17页
ELDK中文开发手册.docx_第3页
第3页 / 共17页
ELDK中文开发手册.docx_第4页
第4页 / 共17页
ELDK中文开发手册.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

ELDK中文开发手册.docx

《ELDK中文开发手册.docx》由会员分享,可在线阅读,更多相关《ELDK中文开发手册.docx(17页珍藏版)》请在冰豆网上搜索。

ELDK中文开发手册.docx

ELDK中文开发手册

ELDK中文开发手册

1.概要

这是嵌入式PowerPC,ARM和MIPS系统中使用DENXU-Boot和Linux的指导手册。

文档中描述了如何在嵌入式PowerPC,ARM和MIPS系统上配置、编译、使用DasU-Boot(常常缩写为“U-Boot”)和Linux操作系统。

文档中涵盖了所有你可能需要的用于配置、编译、运行U-Boot和Linux的工具。

2.绪论

首先,我们介绍如何安装交叉编译开发工具EmbeddedLinuxDevelopmentKit(ELDK),这个开发套件你很有可能会用到——至少当你在标准的x86PC上使用Linux或者SunSolaris系统作为开发环境的时候,你会需要它的。

然后,我们会阐述通过串口与你的目标板连接:

你需要配置一个终端控制程序,如cu或者kermit。

你常常需要通过网线把映像文件下载到你的目标板上。

为了实现这个目的,你需要TFTP和DHCP/BOOTP服务器。

文档中提供了简要的相关配置说明。

接下来则是描述如何配置和编译U-Boot使之适用于某个特定的平台,以及如何安装和在该硬件平台上运行。

下一步的工作是配置、建立和安装Linux。

我们使用SELF(SimpleEmbeddedLinuxFramework)来展示如何建立一个开发环境(包括通过NFS挂载的根文件系统)和一个嵌入式目标板配置(从基于busybox的ramdisk映像文件中运行)。

本文档不会给出如何把U-Boot或者Linux移植到一个新的硬件平台,而是默认你的开发板已经被U-Boot和Linux所支持。

本手册各种文档格式的最新版本可以从以下网址获取:

·HTML

http:

//www.denx.de/wiki/publish/DULG/DULG-canyonlands.html

·plainASCIItext

http:

//www.denx.de/wiki/publish/DULG/DULG-canyonlands.txt

·PostScriptEuropeanA4format

http:

//www.denx.de/wiki/publish/DULG/DULG-canyonlands.ps

·PDFEuropeanA4formathttp:

//www.denx.de/wiki/publish/DULG/DULG-canyonlands.pdf

3.嵌入式Linux开发工具套件

嵌入式Linux开发工具套件(ELDK)包括GNU交叉开发工具,如编译器、binutils、gdb等工具,和一些已经编译好的目标工具以及负责提供在目标平台上函数调用的库文件。

还免费提供了所有的源代码,包括全部补丁、扩展文件、以及用于编译开发工具使用的程序和脚本。

安装包都是基于RPM包管理器。

3.1获取ELDK

可以通过以下方式获得ELDK。

·DENX计算机系统光盘

·从以下服务器中下载

FTP方式

ftp:

//mirror.switch.ch/mirror/eldk/eldk/

ftp:

//sunsite.utk.edu/pub/linux/eldk/

ftp:

//ftp.sunet.se/pub/Linux/distributions/eldk/

ftp:

//ftp.leo.org/pub/eldk/

HTTP方式

http:

//mirror.switch.ch/ftp/mirror/eldk/eldk/

http:

//ftp.sunet.se/pub/Linux/distributions/eldk/

http:

//archiv.leo.org/pub/comp/os/unix/linux/eldk/

3.2初始安装

初始安装可以使用放在ELDK目录树根目录下的安装工具。

安装工具使用语法如下;

$./install[-d

][][]…

-d

确定ELDK安装在哪个目录。

如果省略ELDK会安装在当前目录。

确定目标平台的CPU。

如果此项设置了一项以上的参数,则会将这些CPU的支持都安装。

如果省略将会安装所有CPU的支持。

你也可以把ELDK安装到任何空目录下,这么做的唯一条件是你有那个目录的写和执行权限。

安装过程并不需要超级用户的特权。

由安装时的参数决定安装几个目标组件集合。

ELDT包是肯定会安装的。

$exportCROSS_COMPILE=ppc_4xx-//加入环境变量

$PATH=$PATH:

/opt/eldk/usr/bin:

/opt/eldk/bin//加入PATH

这样加入的话,每次重启系统后必须重新加入,一劳永逸的办法是编辑/root/.bashrc

加上

exportCROSS_COMPILE=ppc_4xx-

exportPATH=$PATH:

/opt/eldk/usr/bin:

/opt/eldk/bin

重启系统后即可使用ELDK。

4.系统设置

在目标平台上安装和配置U-Boot和Linux需要一些工具。

特别是在开发过程中,你需要和目标平台保持联系。

这一节将告诉你如何配置你的主机以达到上述目的。

4.1设置串口

为了更好地使用U-Boot和Linux,你需要通过串口将目标板和你的主机连接。

U-Boot和Linux可以配置成自动执行而不需要任何用户的干涉。

通过串口有很多种方法来控制你的目标板,比如说使用终端服务器。

不过最常见的做法是使用你本机的串口,这时,你主机需要安装一个终端程序,如cu或者kermit。

4.2配置“kermit”

kermit这个名字就代表了它是连接串口和网络的通信软件。

事实上在很多计算机和操作系统上使用它,能够很好地满足我们的目的。

kermit在执行其它命令之前,会执行你的用户目录下的初始文件.kermrc,所以可以非常简单的通过初始化命令来定制kermit。

下面是使用U-Boot和Linux时推荐配置:

~/.kermrc:

setline/dev/ttyS0

setspeed115200

setcarrier-watchoff

sethandshakenone

setflow-controlnone

robust

setfiletypebin

setfilenamelit

setrecpack1000

setsendpack1000

setwindow5

这个设置假定你使用的是主机第一个串口(/dev/ttyS0),以115200这个波特率与目标板的串口连接。

然后你可以连接目标板了:

$kermit-c

Connectingto/dev/ttyS0,speed115200.

TheescapecharacterisCtrl-\(ASCII28,FS)

TypetheescapecharacterfollowedbyCtogetback,

orfollowedby?

toseeotheroptions.

—————————————————-

下载kermit这个软件时,你会发现有两个kermit包。

你只需要安装ckermit。

其中gkermit仅仅是实现kermit传输协议的一个命令行工具。

如果你主机上的Linux系统没有安装kermit,你可以到kerimt的官方网站http:

//www.columbia.edu/kermit/下载。

4.3使用minicom

minicom是另外一种非常流行的串口通信终端。

很遗憾的是,很多用户发现在使用U-Boot和Linux时,minicom有很多问题,尤其是试图使用它来下载image的时候。

因此,不推荐大家使用minicom。

4.4配置TFTP服务器

使用U-Boot下载Linux内核或者应用程序的最快捷的方法是通过网络传输。

为了这一目的,U-Boot实现了TFTP协议(参见U-Boot中的tftpboot命令)。

为了使主机支持TFTP,你必须确保TFTP后台程序/usr/sbin/in.tftpd已经安装。

在RedHat系统中,你可以运行下面的命令来确认:

$rpm-qtftp-server

如果没有安装,请从你的Linux安装盘或者其它媒介安装。

大多数的Linux发行版都默认关闭TFTP服务。

以RedHat系统为例,如果要使能TFTP服务,编辑文件/etc/xinetd.d/tftp,移除这一行:

disable=yes

或者注释掉它,或者修改disable=no

此外,确保/tftpboot目录存在,而且有访问权限(至少应该"dr-xr-xr-x")。

5.DasU-Boot

5.1当前版本

DasU-Boot(或者简称“U-Boot”)是针对嵌入式PowerPC,ARM,MIPS和x86处理器的开放源代码软件。

U-Boot项目已经在Sourceforge设立,你可以访问这个官方网站:

http:

//www.denx.de/wiki/UBoot

U-Boot最新版的源代码可以在Sourcefoge通过匿名CVS得到。

当要求输入匿名用户anonymous的密码时只需要直接按下回车键。

$cvs-d:

pserver:

anonymous@www.denx.de:

/cvsrootlogin

$cvs-z6-d:

pserver:

anonymous@www.denx.de:

/cvsrootco-Pu-boot

官方发布的U-Boot也可以通过FTP方式获取。

你可以到ftp:

//ftp.denx.de/pub/u-boot/下载tar形式的压缩包。

或者通过git的方式获取:

gitclonegit:

//www.denx.de/git/u-boot.gitu-boot/

gitclonehttp:

//www.denx.de/git/u-boot.gitu-boot/

gitclonersync:

//www.denx.de/git/u-boot.gitu-boot/

5.2源代码包的解压

如果你是通过CVS得到的U-Boot源代码,你可以跳过这一步,因为你得到的已经是解压后的目录树了。

如果你是从FTP服务器上下载的tar压缩包,那么你需要按照以下步骤解压:

$cd/opt/eldk/usr/src

$wgetftp:

//ftp.denx.de/pub/u-boot/u-boot-1.3.2.tar.bz2

$rm-fu-boot

$bunzip2

$ln-su-boot-0.4.5u-boot

$cdu-boot

5.3配置

$exportBUILD_DIR=/opt/eldk/build//指定编译的输出目录

进入U-Boot源代码根目录后,可以先使用如下命令确保已经清除以前编译的结果:

$makedistclean

下一步是为Makalu板配置U-Boot:

$makemakalu_config

(译者注:

应该根据你自己的具体开发板配置,如$make_config,如果没有相应的开发板,应该自己照着建立相应的目录和配置文件。

最后我们可以开始编译U-Boot了:

$makeall

5.4安装

5.4.1动手之前

5.4.1.1安装所需

以下的章节假定你的开发板使用flash作为存储设备。

如果不是,则以下的指令不会工作。

如果你想使用U-Boot,需要换掉存储设备。

5.4.1.2开发板识别数据

所有的Makalu开发板使用一个序列号加以识别。

而且开发板需要分配一个以太网MAC地址。

如果这些数据丢失,你可能会失去授权。

在安装U-Boot或者改变开发板的配置之前,你需要搜集足够的信息。

5.4.2使用BDM/JTAG调试器安装U-Boot.bin

把数据烧入flash中的一个简单而又快速的办法是通过BDM或者JTAG接口的调试器或者flash烧写器。

当flash中没有任何数据(比如说一块新的开发板),这种方法是唯一的选择。

我们(强烈推荐)使用Abatron公司的BDI2000(见http:

//www.abatron.ch/BDI/bdiGDB.html)。

其它的BDM/JTAG调试器也可以使用,但是如何操作它们不是本文档要讨论的范围。

如果你想使用别的工具请参照它们的说明文档。

(我没有使用BDI2000,故略去操作BDI2000的方法。

我烧写u-boot.bin就是简单地通过JTAG口。

5.4.3使用U-Boot安装U-Boot.bin

如果U-Boot已经在你的板子上安装运行,你可以使用这些命令来下载新的U-Boot映像来代替当前的。

警告:

在你安装新的映像之前,你必须擦除当前的u-boot.bin。

如果出现什么差错,你的开发板将不能运行。

因此强烈建议:

做一个能工作的U-Boot映像文件的备份;

你清楚如何在一个新的开发板上安装u-boot.bin。

过程如下:

=>tftp100000/tftpboot/uboot.bin

ARPbroadcast1

TFTPfromserver10.0.0.2;ourIPaddressis10.0.0.100

Filename””/tftpboot/uboot.bin””.

Loadaddress:

0×100000

Loading:

###############################

done

Bytestransferred=155376(25ef0hex)

=>protectoff400000004003FFFF

Un-Protected5sectors

=>era400000004003FFFF

EraseFlashfrom0×40000000to0×4003ffff

………done

Erased5sectors

=>cp.b10000040000000$(filesize)

CopytoFlash…done

=>setenvfilesize

=>saveenv

SavingEnviromenttoFlash…

Un-Protected1sectors

ErasingFlash…

..done

Erased1sectors

WritingtoFlash…done

Protected1sectors

=>reset

5.5工具的安装

U-Boot加载Linux内核、Ramdisk或者其它映像时使用一种特殊的映像格式。

这种格式包含了一些信息,如创建时间、操作系统、压缩格式、映像类型、映像名和CRC32校验和。

mkimage用来创建这种格式的映像文件或者显示它包含的信息。

如果使用ELDK,那么mkimage这个命令已经包含在ELDK中。

如果你不想使用ELDK,你应该把mkimage安装在某个能够直接执行的目录里,比如:

$cptools/mkimage/usr/local/bin/

5.6初始化

初始化你的Makalu板上的U-Boot,你需要通过终端连接板子的串口。

Makalu板的串口默认配置是波特率为115200/8N1(115200bps,每个字符8bit,无奇偶校验,1bit停止位,无握手)。

如果你的主机是Linux操作系统,我们建议你用kermit或者cu作为终端控制程序。

确定硬件和软件控制流都已经关闭。

5.7开始的步骤

在默认配置中,U-Boot运行在一种互动模式,它通过串口“UART1”提供命令行形式的用户接口。

这意味着U-Boot显示一个提示符(默认是:

=>),等待着接受用户的输入。

然后你输入一个命令,按下回车键。

U-Boot将运行这个命令,然后又出现提示符等待下一条命令。

你可以使用help(或者简单地一个?

)来查看所有的U-Boot命令。

它将会列出在你当前配置下所有支持的命令。

[请注意到尽管U-Boot提供了很多配置选项,并不是所有选项都支持各种处理器和开发板,有些选项可能在你的配置中并没有被选上。

]

=>help

?

-aliasfor‘help’

askenv-getenvironmentvariablesfromstdin

autoscr-runscriptfrommemory

base-printorsetaddressoffset

bdinfo-printBoardInfostructure

boot-bootdefault,i.e.,run‘bootcmd’

bootd-bootdefault,i.e.,run‘bootcmd’

bootelf-BootfromanELFimageinmemory

bootm-bootapplicationimagefrommemory

bootp-bootimagevianetworkusingBootP/TFTPprotocol

bootstrap-programtheI2CbootstrapEEPROM

bootvx-BootvxWorksfromanELFimage

cmp-memorycompare

coninfo-printconsoledevicesandinformation

cp-memorycopy

crc32-checksumcalculation

date-get/set/resetdate&time

dhcp-invokeDHCPclienttoobtainIP/bootparams

dtt-DigitalThermometerandThermostat

echo-echoargstoconsole

eeprom-EEPROMsub-system

erase-eraseFLASHmemory

exit-exitscript

ext2load-loadbinaryfilefromaExt2filesystem

ext2ls-listfilesinadirectory(default/)

fatinfo-printinformationaboutfilesystem

fatload-loadbinaryfilefromadosfilesystem

fatls-listfilesinadirectory(default/)

fdt-flatteneddevicetreeutilitycommands

flinfo-printFLASHmemoryinformation

getdcr-GetanAMCCPPC4xxDCR’svalue

getidcr-GetaregistervalueviaindirectDCRaddressing

go-startapplicationataddress‘addr’

help-printonlinehelp

icrc32-checksumcalculation

iloop-infinitelooponaddressrange

imd-i2cmemorydisplay

iminfo-printheaderinformationforapplicationimage

imls-listallimagesfoundinflash

imm-i2cmemorymodify(auto-incrementing)

imw-memorywrite(fill)

imxtract-extractapartofamulti-image

inm-memorymodify(constantaddress)

iprobe-probetodiscovervalidI2Cchipaddresses

irqinfo-printinformationaboutIRQs

isdram-printSDRAMconfigurationinformation

itest-returntrue/falseonintegercompare

loadb-loadbinaryfileoverserialline(kermitmode)

loads-loadS-Recordfileoverserialline

loady-loadbinaryfileoverserialline(ymodemmode)

loop-infinitelooponaddressrange

loopw-infinitewritelooponaddressrange

md-memorydisplay

mdc-memorydisplaycyclic

mii-MIIutilitycommands

mm-memorymodify(auto-incrementing)

mtest-simpleRAMtest

mw-memorywrite(fill)

mwc-memorywritecyclic

nand-NANDsub-system

nboot-bootfromNANDdevice

nfs-bootimagevianetworkusingNFSprotocol

nm-memorymodify(constantaddress)

pci-listandaccessPCIConfigurationSpace

ping-sendICMPECHO_REQUESTtonetworkhost

printenv-printenvironmentvariables

protect-enableordisableFLASHwriteprotection

rarpboot-bootimagevianetworkusingRARP/TFTPprotocol

reginfo-printregisterinformation

reset-PerformRESEToftheCPU

run-runcommandsinanenvironmentvariable

saveenv-saveenvironmentvariablestopersistentstorage

setdcr-SetanAMCCPPC4xxDCR’svalue

setenv-setenvironmentvariables

se

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

当前位置:首页 > 高等教育 > 农学

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

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