ELDK中文开发手册.docx
- 文档编号:30685046
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:21
- 大小:26.18KB
ELDK中文开发手册.docx
《ELDK中文开发手册.docx》由会员分享,可在线阅读,更多相关《ELDK中文开发手册.docx(21页珍藏版)》请在冰豆网上搜索。
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所支持。
本手册各种文档格式的最新版本可以从以下网址获取:
·HTMLhttp:
//www.denx.de/wiki/publish/DULG/DULG-canyonlands.html
·plainASCIItexthttp:
//www.denx.de/wiki/publish/DULG/DULG-canyonlands.txt
·PostScriptEuropeanA4formathttp:
//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会安装在当前目录。
如果此项设置了一项以上的参数,则会将这些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 ) 最后我们可以开始编译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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ELDK 中文 开发 手册
![提示](https://static.bdocx.com/images/bang_tan.gif)