AM335x U-Boot User's Guide 中文手册

AM335x U-Boot User's Guide

 

/******************************************************************

*      author:       卢浩

*      time:          2012.09.11

*      environment:   ubuntu10.04LTS +TI AM3359

*      kernel version:  linux-3.2

*      QQ Group For Technology Exchange122879839

******************************************************************/

 

U-boot

AM335x的ROM代码作为第一阶段引导加载程序。第二和第三阶段引导加载程序是基于
U-BOOT[1]。在本文档的其余部分时参照的二进制文件,二进制文件的第二阶段被称为
SPL和简单的U-Boot的二进制文件的第三阶段。 SPL是一个非交互的加载器和一个特制的U-Boot的版本。同时它是建立在构建U-Boot的。ROM代码可以从任何下列设备加载SPL镜像。

•存储设备非XIP(NAND/ SDMMC)

两个阶段的uboot设计

搭建uboot开发环境

进入官方提供的SDK包的uboot目录

$ cd ./AM335x-LINUX-PSP-MM.mm.pp.bb/src/u-boot/u-boot-MM.mm.pp.bb

编译口令

$ [ -d ./am335x ]&& rm -rf ./am335x

$ make O=am335xCROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm am335x_evm

编译完成将会生成可执行性文件MLO和u-boot.img。

 

主机配置:

用串口线把主机和EVM板连接起来,设置超级终端参数如下:

*Baud rate:115,200

*Data bits: 8

*Parity: None

*Stop bits: 1

*Flow control: None

 

开发板配置:

设置启动方式:


请注意,红色位置为off,绿色位置为on

Nand启动,请设置拨码开关如下:


 

 

 

SPI启动,请设置拨码开关如下:

 

UART启动,请设置拨码开关如下:


SD启动,请设置拨码开关如下:


CPSW启动,请设置拨码开关如下:


注意,从CPSW启动这样设置是因为EVM板用的是RGMIImode。

 

 

 

烧写:

利用超级终端从串口烧写:

拨码开关设置为串口启动模式

这里我们将用到spl/u-boot-spl.bin,MLO和u-boot.img文件,文件已经在光盘中提供。

1.      连接串口,给开发板上电,看到超级终端输出cccc的时候,选择发送,在文件里面选择u-boot-spl.bin,用x-modem传输文件,当传输完毕,会打印出关于TI spl的信息。

2.      再次选择发送,在文件里面选择u-boot.img,用y-modem传输文件,当传输完毕,uboot将会启动,此时按任意键进入控制台。

3.      烧写uboot到nand中

烧写MLO到nand:

U-Boot# loadb 0x82000000

在超级终端选择发送文件,MLO,用Kermit协议传输文件,等待发送完成,然后在控制台进行如下操作

   U-Boot# nand erase 0x0 0x20000

U-Boot# nandecc hw 2

U-Boot# nand write.i 0x82000000 0x0 0x20000

 

烧写uboot到nand中:

U-Boot# loadb 0x82000000

在超级终端选择发送文件,u-boot.img,用Kermit协议传输文件,等待发送完成,然后在控制台进行如下操作:

U-Boot# nand erase 0x80000 0x40000

U-Boot# nandecc hw 2

U-Boot# nand write.i 0x82000000 0x800000x40000

 

 

 

4. 从SD卡启动

拨码开关设置为SD启动模式

这里我们将用到MLO,u-boot.img,uImage这三个文件。

首先制作给SD卡分区

 

制作脚本:

创建新文件,将以下内容复制到文件中,并将文件命名为mk3PartSDCard.sh:

#! /bin/sh

# mk3PartSDCard.sh v0.3

# Licensed under terms of GPLv2

DRIVE=$1

dd if=/dev/zero of=$DRIVE bs=1024count=1024

SIZE=`fdisk -l $DRIVE | grep Disk | awk'{print $5}'`

echo DISK SIZE - $SIZE bytes

CYLINDERS=`echo $SIZE/255/63/512 | bc`

sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE<< EOF

,9,0x0C,*

10,115,,-

126,,,-

EOF

mkfs.vfat -F 32 -n "boot"${DRIVE}1

umount ${DRIVE}1

mkfs.ext3-L "rootfs" ${DRIVE}2

umount${DRIVE}2

mkfs.ext3-L "START_HERE" ${DRIVE}3

保存,打开终端,输入:

host$ chmod755 mk3PartSDCard.sh

 

然后把SD卡插入电脑,连接至ubuntu,并且识别到

 

之后ubuntu中会显示出该SD卡。打开终端,输入:

$ df –hT

将看到类似如下信息:

FilesystemType Size Used Avail Use% Mounted on

/dev/sda1ext4 19G 16G 2.5G87% /

nonedevtmpfs 245M 308K 245M 1% /dev

none tmpfs 249M 192K 249M 1% /dev/shm

none tmpfs 249M 340K 249M 1% /var/run

none tmpfs 249M 0 249M 0% /var/lock

none tmpfs 249M 0 249M 0% /lib/init/rw

/dev/sdb1vfat 1.9G 4.0K 1.9G 1% /media/00F8-E7F0

在以上信息中,/dev/sdb1 是我的SD卡设备,也许你正在使用的SD卡设备名称不太一样,所以请记住你的SD卡设备名称,接下来会用到。

 

 

运行脚本

打开终端,输入:

$ umount/dev/sdb1(换成你的SD卡设备名)

$ sudo./mk3PartSDCard /dev/sdb

等待脚本执行完毕后,输入:

$ umount/dev/sdb1

$ umount/dev/sdb2

$ umount/dev/sdb3

拔出 USB读卡器,再次插入电脑,在终端输入:

$ df –hT

将显示以下内容:

FilesystemType Size Used Avail Use% Mounted on

/dev/sda1ext4 19G 16G 2.5G87% /

nonedevtmpfs 245M 308K 245M 1% /dev

none tmpfs 249M 192K 249M 1% /dev/shm

none tmpfs 249M 340K 249M 1% /var/run

none tmpfs 249M 0 249M 0% /var/lock

none tmpfs 249M 0 249M 0% /lib/init/rw

/dev/sdb1vfat 70M 512 70M 1% /media/boot

/dev/sdb2ext3 888M 18M 826M3% /media/rootfs

/dev/sdb3ext3 881M 17M 819M3% /media/START_HERE

至此,SD 卡分区完成

拷贝 MLO, U-Boot,Kernel,Filesystem

将之前编译好的MLO,u-boot.img,uImage文件拷贝至SD卡boot分区。

拷贝 Filesystem:

打开终端,输入:

$ sudo cp -rv~/ti-sdk-am335x-evm-05.03.02.00/targetNFS/* /media/rootfs

执行完毕后FilesSystem拷贝完毕。

 

此时将SD卡插入板子上SD插槽,上电,linux系统就可以起来了,串口也能看到打印信息。


 

 

板载LCD上会显示如下

 

至此,完成AM3359上linux系统的启动。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章