LTIB(七) 一个实例

 本节将以MPC8308RDB开发板为基础,展示一个开发实例。

7.1目标配置

本节开始前,先看下图,下图是MPC8308RDB目标板系统启动后,由boot loader映射的系统内存。

Range Start             Range End             Definition                               Size
0x0000_0000         0x07ff_ffff                    DDR                                   128M
0xa000_0000         0xafff_ffff                     PCI Express 1 Mem             256M
0xb000_0000         0xb0ff_ffff                    PCI Express 1 Config       16M
0xb100_0000         0xb17f_ffff                   PCI Express 1 IO             8M
0xe000_0000         0xe00f_ffff                   IMMR                                     1M
0xe060_0000          0xe060_7fff                NAND Flash (CS1)             32K
0xfe00_0000           0xfe7f_ffff                   NOR Flash (CS0)                   8M

8MNor flash开始地址为0xFE00_0000,如下图所示:

 

Range Start              Range End              Definition
0xfe00_0000              0xfe05_ffff              U-Boot
0xfe0a_0000              0xfe2f_ffff              Kernel
0xfe30_0000              0xfe7e_ffff              Ramdisk file system
0xfe7f_0000              0xfe7f_3fff              DTB
0xfe7f_e000              0xfe7f_ffff              Vitesse

有了上面的全局概念,接下来进行目标板的设置。

独立模式设置

1、通过MPC8308E RDB开发板上的Etsec 1端口连接到网络。

2、用RS-232线缆连接MPC8308E RDB开发板的串口到主机。

3、设置主机的超级终端,波特率设为115200bps8位,无奇偶校验,1位停止位。

4、验证所有的开关和跳线是否正确设置为默认值。默认频率为400/133MHz(CPU/相干系统总线)MPC8308E RDB默认开关设置:

S1:板子修正和引导Flash选择开关。

S2:复位配置字源选择开关。

5、将板子连接到支持的电源。

6、为板子加电。

7.2目标部署(可部署到flash中)

本节描述怎样部署U-BootLinux内核和文件系统到目标板上。默认情况下,当开发板加电后,它将显示信息并且停在U-Boot的命令提示符。

按如下方法进行配置,完成目标文件的部署。

主机设置

1、    tftp能工作,关闭防火墙。# iptables –F或在命令行键入setup

2、    安装tftp-server

3、    MPC8308ERDB创建tftpboot目录和它的子目录。

# mkdir /tftpboot

# mkdir/tftpboot/mpc8308

4、    拷贝kernelbootloaderDTBVitesse和文件系统镜像到/tftp/mpc8308目录。

# cp <install_path>//ltib-mpc8308erdb-xx /rootfs/boot/*  /tftpboot/mpc8308

# cp <install_path>/ltib-mpc8308erdb-xx /rootfs.ext2.gz.uboot  /tftpboot/mpc8308

或者

# cp /mnt/cdrom/Images/*  /tftpboot/mpc8308

5、    连接开发板到网络

6、    通过串口连接目标和主机

7、    运行minicom 并设置。

- Serial Setup: Select correct serial device; Hardware & Software Flow control =

No; Bps=115200

- Modem & dialing: Delete text for the following: Init String, Reset String, Hang-up

String, No flow control

8、    为开发板加电并显示命令提示符。

烧写U-Boot

Flash 范围从0xFE00_00000xFE7F_FFFFU-Boot镜像必须被编程进Flash,且开始地址为0xFE00_0000,可以通过CodeWarrior for PPC version 8.8 PowerTAP Pro or USB TAP

另外一种方法是使用U-Boot命令来编程,它的前提是在Flash上已经存在一个固化的可工作的U-Boot程序。

=>tftp 2000000 u-boot.bin

u-boot下载到0x0200_0000开始的内存(DDR)中。

=>protect off all

=>erase fe000000 fe0fffff

擦出flash地址空间0xFE00_0000 0xFE0F_FFFF

=>cp.b 2000000 fe000000 $filesize

将内存中0x0200_0000开始的filesize大小的内容拷贝到flash0xFE00_0000开始的地址空间。

完成之后复位开发板重新引导。

   配置U-Boot

LTIB生成的镜像允许您执行ramdisk部署。在执行ramdisk部署之前,需要先配置U-Boot参数。

U-Boot命令提示符,设置u-boot环境如下:

=>setenv ipaddr <board_ipaddress>

=>setenv serverip <tftp_serverip>

=>setenv gatewayip <your_gatewayip>

=>setenv tftp_path mpc8308

=>setenv ramdiskaddr 2400000

=>setenv loadaddr 2000000

=>setenv kernaddr 2000000

=>setenv fdtaddr 1f00000

=>setenv ramdisksize 90000

=>setenv dtbname mpc8308erdb.dtb

=>setenv hostname PowerQUICC

=>setenv flashkernaddr fe0a0000

=>setenv flashkernend fe2fffff

=>setenv flashramdiskaddr fe300000

=>setenv flashramdiskend fe7effff

=>setenv flashfdtaddr fe7f0000

=>setenv flashfdtend fe7f3fff

=>setenv fdtsize 3000

=>setenv vscfwaddr fe7fe000

=>setenv vscfwend fe7fffff

=>setenv setargs 'setenv bootfile $tftp_path/uImage;setenv

fdtfile $tftp_path/$dtbname;setenv ramdiskfile

$tftp_path/rootfs.ext2.gz.uboot'

=>setenv setramargs 'setenv bootargs root=/dev/ram

ramdisk_size=$ramdisksize rw

ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off

console=$consoledev,$baudrate $othbootargs'

=>setenv upvscfw 'tftp $loadaddr $tftp_path/vsc2bin; erase

$vscfwaddr $vscfwend; cp.b $loadaddr $vscfwaddr $filesize'

=>setenv upuboot 'setenv bootargs root=/dev/ram rw

console=$console,$baudrate;tftp $loadaddr mpc8308/uboot.

bin;protect off all;erase fe000000 fe05ffff;cp.b $loadaddr

fe000000 $filesize'

=>setenv upkernel 'run setargs;run setramargs;tftp $loadaddr

$bootfile;erase $flashkernaddr $flashkernend;cp.b $loadaddr

$flashkernaddr $filesize;tftp $loadaddr $fdtfile;erase

$flashfdtaddr $flashfdtend;cp.b $loadaddr $flashfdtaddr

$filesize'

=>setenv upramdisk 'tftp $ramdiskaddr $ramdiskfile;erase

$flashramdiskaddr $flashramdiskend;cp.b $ramdiskaddr

$flashramdiskaddr $filesize'

=>setenv tftpramboot 'run setargs;run setramargs;tftp

$ramdiskaddr $ramdiskfile;tftp $kernaddr $bootfile;tftp $fdtaddr

$fdtfile;bootm $kernaddr $ramdiskaddr $fdtaddr'

=>setenv flashramboot 'run setargs;run setramargs;cp.b

$flashfdtaddr $fdtaddr $fdtsize;bootm $flashkernaddr

$flashramdiskaddr $fdtaddr'

=>saveenv

完成后,U-Boot已经准备好执行ramdisk部署。

烧写Vitesse二进制:

Vitesse 二进制被存储在flash0xFE7FE0000xFE7F_FFFF空间。使用tftp U-Boot 命令固化该文件。如上面的描述,设置U-Boot 的环境变量。

=>run upvscfw

烧写内核和ramdisk

如上设置U-Boot的环境变量。

烧写内核和DTB

=>run upkernel

烧写 ramdisk:

=>run upramdisk

部署:

TFTP上部署Ramdisk

1、  设置U-Boot环境变量(如上面描述)。

2、  TFTP下载镜像

Tftp映像到板子上,接着进行引导:

=>tftp 2000000 mpc8308/uImage

=>tftp 2400000 mpc8308/rootfs.ext2.gz.uboot

=>tftp 1f00000 mpc8308/mpc8308erdb.dtb

3、  启动板子

=>bootm 2000000 2400000 1f00000

或者使用一个单一命令:

=>run tftpramboot

Flash上部署RamDisk

内核、DTBramdisk被固化在flash里,按下面的方法从flash部署。

=>run flashramboot

运行该命令,实质上执行了以下内容:

=>run setargs

=>run setramargs

=>cp.b FE7F_0000  01F0_0000  3000 

上面是将flash上存储的DTB拷贝到内存单元0x01f0_0000

=>bootm FE0A_0000  FE30_0000  1F00_0000

7.3 NFS引导内核(部署到内存中)

本小节描述如何引导主机上的内核文件,本节的一些路径和前两节稍有不同。

首先,主机必须按照前几节讲述那样安装NFS 的端口映射和NFS服务,并设置导出目录(本节仍将用/home/jun/ltib/rootfs)。

其次,从NFS引导必须正确的设置TFTP路径,因为在NFS挂载之前,u-boot会通过TFTP从主机tftpboot路径下载内核镜像和DTB文件到内存中,然后从内存引导内核。本处设置的tftp 目录为/tftpboot,在该目录下建有/freescale/PPC/ltib-mpc8308erdb-20100413/rootfs 的文件夹链接192.168.1.10 (这是一个链接文件名)。当MPC8308ERDB板加电进入u-boot命令行提示符后,完成以下环境变量的设置:

=>setenv  ipaddr 192.168.1.10

=>setenv  serverip 192.168.1.53

上面的命令时设置host主机的IP地址(本主机IP192.168.1.53)。可以通过ifconfig –a 查看。该地址必须和主机一致。

=>setenv gatewayip 192.168.1.1 

=>setenv  netmask 255.255.255.0

=>setenv  tftp_path 192.168.1.10/boot

192.168.1.10/boot 为映像文件路径。因为在主机的tftp配置文件中,已经设置为/tftpboot,所以192.168.1.10/boot 前面不需要加/tftpboot

设置完成后(设置内容应当按照自己主机的配置修改),保存

=>saveenv

保存后,必须复位CPU或重启,此处选择命令复位CPU

=>reset

重启后,在命令行可以执行ping命令看是否可以链接主机(必须通过以太网线将板子的以太网1链接到主机以太网端口,且该端口的IP地址必须和上述环境变量中的serverip一致)。

=>ping 192.168.1.53

如果连通,则出现:host 192.168.1.53 is alive 

否则控制台出现: ping failed; host 192.168.1.53 is not alive  

连接正常即可执行NFS启动。如下:

=>run setargs

上述命令会扩展出需要的文件的详细路径,包括uImageDTB文件、rootfs.ext2.gz.ubootramdisk)。注意,rootfs.ext2.gz.uboot文件不在rootfs/boot文件夹下,而在ltib根目录。若要使用可以将其拷贝到该目录下,或修改环境变量ramdiskfile的值。

=>run nfsboot

执行该命令后,在控制台打印下载和启动信息,如下图:

 

至此,已经完成了NFS挂载。引导启动完成后,在命令行输入用户名和密码,默认用户名为root,密码为root。可以修改。登录后,可以发现现在的根目录为主机上/home/jun/ltib/rootfs目录。这表明NFS的挂载成功了。您可以做些简单的测试,例如新建文件、删除等操作,对比目标板的根目录和主机NFS导出目录是否有同步的变化。

注意:实现NFS挂载必须要在内核编译时选择支持NFS文件系统,该选项在文件系统à网络文件系统中。

 

 

你可能感兴趣的:(部署,烧写,PowerPC,ltib)