1、ELDK中文开发手册ELDK中文开发手册1. 概要 这是嵌入式PowerPC, ARM和MIPS系统中使用DENX U-Boot和Linux的指导手册。文档中描述了如何在嵌入式PowerPC, ARM和MIPS系统上配置、编译、使用Das U-Boot(常常缩写为“U-Boot”)和Linux操作系统。文档中涵盖了所有你可能需要的用于配置、编译、运行U-Boot和Linux的工具。2. 绪论 首先,我们介绍如何安装交叉编译开发工具Embedded Linux Development Kit(ELDK),这个开发套件你很有可能会用到至少当你在标准的x86 PC上使用Linux或者Sun Sola
2、ris系统作为开发环境的时候,你会需要它的。 然后,我们会阐述通过串口与你的目标板连接:你需要配置一个终端控制程序,如cu或者kermit。 你常常需要通过网线把映像文件下载到你的目标板上。为了实现这个目的,你需要TFTP和DHCP/BOOTP服务器。文档中提供了简要的相关配置说明。 接下来则是描述如何配置和编译U-Boot使之适用于某个特定的平台,以及如何安装和在该硬件平台上运行。 下一步的工作是配置、建立和安装Linux。我们使用SELF(Simple Embedded Linux Framework)来展示如何建立一个开发环境(包括通过NFS挂载的根文件系统)和一个嵌入式目标板配置(从基
3、于busybox的ramdisk映像文件中运行)。 本文档不会给出如何把U-Boot或者Linux移植到一个新的硬件平台,而是默认你的开发板已经被U-Boot和Linux所支持。 本手册各种文档格式的最新版本可以从以下网址获取: HTML http:/www.denx.de/wiki/publish/DULG/DULG-canyonlands.html plain ASCII text http:/www.denx.de/wiki/publish/DULG/DULG-canyonlands.txt PostScriptEuropeanA4format http:/www.denx.de/wik
4、i/publish/DULG/DULG-canyonlands.ps PDF European A4 format http:/www.denx.de/wiki/publish/DULG/DULG-canyonlands.pdf3. 嵌入式Linux开发工具套件嵌入式Linux开发工具套件(ELDK)包括GNU交叉开发工具,如编译器、binutils、gdb等工具,和一些已经编译好的目标工具以及负责提供在目标平台上函数调用的库文件。还免费提供了所有的源代码,包括全部补丁、扩展文件、以及用于编译开发工具使用的程序和脚本。安装包都是基于RPM包管理器。3.1 获取ELDK 可以通过以下方式获得EL
5、DK。 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.le
6、o.org/pub/comp/os/unix/linux/eldk/3.2 初始安装 初始安装可以使用放在ELDK目录树根目录下的安装工具。安装工具使用语法如下;$ ./install -d -d 确定ELDK安装在哪个目录。如果省略ELDK会安装在当前目录。 确定目标平台的CPU。如果此项设置了一项以上的参数,则会将这些CPU的支持都安装。如果省略将会安装所有CPU的支持。你也可以把ELDK安装到任何空目录下,这么做的唯一条件是你有那个目录的写和执行权限。安装过程并不需要超级用户的特权。由安装时的参数决定安装几个目标组件集合。ELDT包是肯定会安装的。$ export CROSS_COMPI
7、LE=ppc_4xx- /加入环境变量$ PATH=$PATH:/opt/eldk/usr/bin:/opt/eldk/bin /加入PATH这样加入的话,每次重启系统后必须重新加入,一劳永逸的办法是编辑/root/.bashrc加上export CROSS_COMPILE=ppc_4xx- export PATH=$PATH:/opt/eldk/usr/bin:/opt/eldk/bin 重启系统后即可使用ELDK。4. 系统设置 在目标平台上安装和配置U-Boot和Linux需要一些工具。特别是在开发过程中,你需要和目标平台保持联系。这一节将告诉你如何配置你的主机以达到上述目的。4.1 设
8、置串口 为了更好地使用U-Boot和Linux,你需要通过串口将目标板和你的主机连接。U-Boot和Linux可以配置成自动执行而不需要任何用户的干涉。 通过串口有很多种方法来控制你的目标板,比如说使用终端服务器。不过最常见的做法是使用你本机的串口,这时,你主机需要安装一个终端程序,如cu或者kermit。4.2 配置“kermit”kermit这个名字就代表了它是连接串口和网络的通信软件。事实上在很多计算机和操作系统上使用它,能够很好地满足我们的目的。kermit在执行其它命令之前,会执行你的用户目录下的初始文件.kermrc,所以可以非常简单的通过初始化命令来定制kermit。下面是使用U
9、-Boot和Linux时推荐配置:/.kermrc: set line /dev/ttyS0set speed 115200set carrier-watch offset handshake noneset flow-control nonerobustset file type binset file name litset rec pack 1000set send pack 1000set window 5这个设置假定你使用的是主机第一个串口(/dev/ttyS0),以115200这个波特率与目标板的串口连接。然后你可以连接目标板了:$ kermit -cConnecting to /
10、dev/ttyS0, speed 115200.The escape character is Ctrl- (ASCII 28, FS)Type the escape character followed by C to get back,or followed by ? to see other options.-下载kermit这个软件时,你会发现有两个kermit包。你只需要安装ckermit。其中gkermit仅仅是实现kermit传输协议的一个命令行工具。如果你主机上的Linux系统没有安装kermit,你可以到kerimt的官方网站 http:/www.columbia.edu/k
11、ermit/ 下载。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系统中,你可以运行下面的命令来确认:$
12、rpm -q tftp-server如果没有安装,请从你的Linux安装盘或者其它媒介安装。大多数的Linux发行版都默认关闭TFTP服务。以RedHat系统为例,如果要使能TFTP服务,编辑文件/etc/xinetd.d/tftp,移除这一行:disable = yes或者注释掉它,或者修改disable = no此外,确保/tftpboot目录存在,而且有访问权限(至少应该dr-xr-xr-x)。5. Das U-Boot5.1 当前版本Das U-Boot(或者简称“U-Boot”)是针对嵌入式PowerPC, ARM, MIPS和x86处理器的开放源代码软件。U-Boot项目已经在So
13、urceforge设立,你可以访问这个官方网站:http:/www.denx.de/wiki/UBootU-Boot最新版的源代码可以在Sourcefoge通过匿名CVS得到。当要求输入匿名用户anonymous的密码时只需要直接按下回车键。$ cvs -d:pserver:anonymouswww.denx.de:/cvsroot login$ cvs -z6 -d:pserver:anonymouswww.denx.de:/cvsroot co -P u-boot官方发布的U-Boot也可以通过FTP方式获取。你可以到ftp:/ftp.denx.de/pub/u-boot/下载tar形式的
14、压缩包。或者通过git的方式获取:git clone git:/www.denx.de/git/u-boot.git u-boot/git clone http:/www.denx.de/git/u-boot.git u-boot/git clone rsync:/www.denx.de/git/u-boot.git u-boot/5.2 源代码包的解压如果你是通过CVS得到的U-Boot源代码,你可以跳过这一步,因为你得到的已经是解压后的目录树了。如果你是从FTP服务器上下载的tar压缩包,那么你需要按照以下步骤解压:$ cd /opt/eldk/usr/src$ wget ftp:/ftp
15、.denx.de/pub/u-boot/u-boot-1.3.2.tar.bz2$ rm -f u-boot$ bunzip2 u-boot-0.4.5.tar.bz2 | tar xf -$ ln -s u-boot-0.4.5 u-boot$ cd u-boot5.3 配置$ export BUILD_DIR=/opt/eldk/build /指定编译的输出目录 进入U-Boot源代码根目录后,可以先使用如下命令确保已经清除以前编译的结果:$ make distclean 下一步是为Makalu板配置U-Boot:$ make makalu_config(译者注:应该根据你自己的具体开发板
16、配置,如$ make _config,如果没有相应的开发板,应该自己照着建立相应的目录和配置文件。) 最后我们可以开始编译U-Boot了: $ make all5.4 安装5.4.1 动手之前5.4.1.1 安装所需 以下的章节假定你的开发板使用flash作为存储设备。如果不是,则以下的指令不会工作。如果你想使用U-Boot,需要换掉存储设备。5.4.1.2 开发板识别数据所有的Makalu开发板使用一个序列号加以识别。而且开发板需要分配一个以太网MAC地址。如果这些数据丢失,你可能会失去授权。在安装U-Boot或者改变开发板的配置之前,你需要搜集足够的信息。5.4.2 使用BDM/JTAG调
17、试器安装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 使用
18、U-Boot安装U-Boot.bin 如果U-Boot已经在你的板子上安装运行,你可以使用这些命令来下载新的U-Boot映像来代替当前的。 警告:在你安装新的映像之前,你必须擦除当前的u-boot.bin。如果出现什么差错,你的开发板将不能运行。因此强烈建议: 做一个能工作的U-Boot映像文件的备份; 你清楚如何在一个新的开发板上安装u-boot.bin。 过程如下:= tftp 100000 /tftpboot/uboot.binARP broadcast 1TFTP from server 10.0.0.2; our IP address is 10.0.0.100Filename ”/
19、tftpboot/uboot.bin”.Load address: 0100000Loading: #doneBytes transferred = 155376 (25ef0 hex)= protect off 40000000 4003FFFFUn-Protected 5 sectors= era 40000000 4003FFFFErase Flash from 040000000 to 04003ffff doneErased 5 sectors= cp.b 100000 40000000 $(filesize)Copy to Flash done= setenv filesize=
20、saveenvSaving Enviroment to FlashUn-Protected 1 sectorsErasing Flash. doneErased 1 sectorsWriting to Flash doneProtected 1 sectors= reset5.5 工具的安装 U-Boot加载Linux内核、Ramdisk或者其它映像时使用一种特殊的映像格式。这种格式包含了一些信息,如创建时间、操作系统、压缩格式、映像类型、映像名和CRC32校验和。 mkimage用来创建这种格式的映像文件或者显示它包含的信息。如果使用ELDK,那么mkimage这个命令已经包含在ELDK中。
21、 如果你不想使用ELDK,你应该把mkimage安装在某个能够直接执行的目录里,比如:$ cp tools/mkimage /usr/local/bin/5.6 初始化 初始化你的Makalu板上的U-Boot,你需要通过终端连接板子的串口。 Makalu板的串口默认配置是波特率为115200/8N1(115200bps,每个字符8bit,无奇偶校验,1bit停止位,无握手)。 如果你的主机是Linux操作系统,我们建议你用kermit或者cu作为终端控制程序。确定硬件和软件控制流都已经关闭。5.7 开始的步骤 在默认配置中,U-Boot运行在一种互动模式,它通过串口“UART1”提供命令行形
22、式的用户接口。 这意味着U-Boot显示一个提示符(默认是:=),等待着接受用户的输入。然后你输入一个命令,按下回车键。U-Boot将运行这个命令,然后又出现提示符等待下一条命令。 你可以使用help(或者简单地一个?)来查看所有的U-Boot命令。它将会列出在你当前配置下所有支持的命令。请注意到尽管U-Boot提供了很多配置选项,并不是所有选项都支持各种处理器和开发板,有些选项可能在你的配置中并没有被选上。= help? - alias for helpaskenv - get environment variables from stdinautoscr - run script from
23、 memorybase - print or set address offsetbdinfo - print Board Info structureboot - boot default, i.e., run bootcmdbootd - boot default, i.e., run bootcmdbootelf - Boot from an ELF image in memorybootm - boot application image from memorybootp - boot image via network using BootP/TFTP protocolbootstr
24、ap - program the I2C bootstrap EEPROMbootvx - Boot vxWorks from an ELF imagecmp - memory compareconinfo - print console devices and informationcp - memory copycrc32 - checksum calculationdate - get/set/reset date & timedhcp - invoke DHCP client to obtain IP/boot paramsdtt - Digital Thermometer and T
25、hermostatecho - echo args to consoleeeprom - EEPROM sub-systemerase - erase FLASH memoryexit - exit scriptext2load- load binary file from a Ext2 filesystemext2ls - list files in a directory (default /)fatinfo - print information about filesystemfatload - load binary file from a dos filesystemfatls -
26、 list files in a directory (default /)fdt - flattened device tree utility commandsflinfo - print FLASH memory informationgetdcr - Get an AMCC PPC 4xx DCRs valuegetidcr - Get a register value via indirect DCR addressinggo - start application at address addrhelp - print online helpicrc32 - checksum ca
27、lculationiloop - infinite loop on address rangeimd - i2c memory displayiminfo - print header information for application imageimls - list all images found in flashimm - i2c memory modify (auto-incrementing)imw - memory write (fill)imxtract- extract a part of a multi-imageinm - memory modify (constan
28、t address)iprobe - probe to discover valid I2C chip addressesirqinfo - print information about IRQsisdram - print SDRAM configuration informationitest - return true/false on integer compareloadb - load binary file over serial line (kermit mode)loads - load S-Record file over serial lineloady - load
29、binary file over serial line (ymodem mode)loop - infinite loop on address rangeloopw - infinite write loop on address rangemd - memory displaymdc - memory display cyclicmii - MII utility commandsmm - memory modify (auto-incrementing)mtest - simple RAM testmw - memory write (fill)mwc - memory write c
30、yclicnand - NAND sub-systemnboot - boot from NAND devicenfs - boot image via network using NFS protocolnm - memory modify (constant address)pci - list and access PCI Configuration Spaceping - send ICMP ECHO_REQUEST to network hostprintenv- print environment variablesprotect - enable or disable FLASH
31、 write protectionrarpboot- boot image via network using RARP/TFTP protocolreginfo - print register informationreset - Perform RESET of the CPUrun - run commands in an environment variablesaveenv - save environment variables to persistent storagesetdcr - Set an AMCC PPC 4xx DCRs valuesetenv - set environment variablesse
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1