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系統的啓動。


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