Thursday, November 08, 2012

Beagleboard/Beaglebone AM335X SDK

Beagleboard/Beaglebone AM335X linux SDK [ original page ]

■仮想環境
基本は、Ubuntu 10.04だけをサポートするが、他のバージョンも使用出来る事を確認した。(SDKのOSバージョンチェックのシェルを書き換えればOk)。仮想マシーンの構築はこのページを参照。

■SDKのインストール
このページから"ti-sdk-am335x-evm-x.x.x.x-Linux-x86-Install"ファイルをダウンロード。
実行すると、インストール先を聞いてくるので、下記Dirを指定
$HOME/ti-sdk-am335x-evm-...-linux-x86 (以降 $TI_SDK_PATH とする)
これで、SDKファイルが展開される。続いては、SDKのセットアップは下記の順番で行う
  • ホストPCのUbuntuバージョンチェック
  • ホストPCに必要なパッケージのインストール
  • ターゲットファイル・システムインストール
  • NFS設定
  • TFTP設定
  • Minicom設定
  • U-boot設定
  • ロードブードスクリプト作成
●1.SDK設定シェルの実行
$ cd $TI_SDK_PATH; ./setup.sh
ここでもし、Ubuntu 10.04を使用しなければエラーが出る。別のバージョンのubuntuにインストールしたい場合は、シェールスクリプトのOSバージョンチェックを書き換える必要がある。

2.ホストPCに必要なパッケージインストール
下記のパッケージがホストPCになければ、自動的にインストールされる
  • telnet
  • menuconfig, kernel configuration tool
  • mounting filesystem via nfs
  • tftp
  • minicom
  • rebuild u-boot
手動でパッケージを事前にインストールしたい場合は下記を実行
$ sudo apt-get install xinetd tftpd nfs-kernel-server minicom build-essential libncurses5-dev uboot-mkimage autoconf automake
3.ターゲットファイルシステムのインストールターゲットファイル・システムはデフォルトで下記の場所に作成される
$TI_SDK_PATH/targetNFS
4.tftp設定
tftpの設定で、ホストPCのルートDirに "/tfptboot"が作成され、tftpの設定は"/etc/xinetd.d/tftp"に保存される

5.minicom設定
Usb-to-Serialケーブルを使用する場合は、"/dev/ttyUSBx"、そうでない場合は"/dev/ttyS0"を指定する

6.uboot設定
  • ホストのIPアドレス確認
  • カーネルロケーションの指定
    -TFTPを選択する場合は、"/tftpboot"のDirを適切に指定
    -SD cardを選択する場合は、SDカードの最初のパーティション("boot"という名前)になる
  • ファイル・システムの指定

■ PowerVR SGX SDKインストール [ページ1、ページ2]
BeagleBoneのハードウェア

  • SOC : AM335x
  • SGX Core : SGX530
  • SGX Core rev. : 1.2.5
  • SDK folder suffix : es8.x
  • Max SGX Core Freq : 200 Mhz
●Graphic SDKのインストール:
SDKのインストール時、展開されたパッケージの中に既に"Graphic_SDK_setuplinux_[version].bin"が入っているので、これを実行すれば、Graphic SDKをインストールできる。

また、ウェブからGraphic SDKをダウンロードしてインストールする場合はこのページから"Graphics_SDK_setuplinux_4_08_00_01.bin"をダウンロードしてくる。

ターゲットボードに入れる必要があるのは、
  • Kernel Modules
  • Graphic SDK (examples, headers, lib ...)

■U-bootビルド

$ cd $TI_SDK_PATH
$ make u-boot-spl O=am335x

O=am335xを指定すると、"$TI_SDK_PATH/board-support/u-boot-[version]/am335x"が作成され、make結果がここに格納される(推奨方法)

上の実行結果で、"u-boot.img"と"MLO"という2つのファイルが作成される($TI_SDK_PATH/board-support/u-boot-[version]/am335xの中)、SDカードからブートする場合は、これらのファイルをSDカードに入れる必要がある。UART経由でロードしたい場合は、spl/u-boot-spl.binを利用する。

■SDカードのフォーマット
SDカードの作成で、ブート用のFat32、ファイル・システムのext3を作成する。作成方法は難しくないので省略(参考ページのre-partition SD cardの部分)


■Master Makefile
linux_install:
 @echo ===================================
 @echo     Installing the Linux Kernel
 @echo ===================================
 install -d $(DESTDIR)/boot
 install $(LINUXKERNEL_INSTALL_DIR)/arch/arm/boot/uImage $(DESTDIR)/boot
 install $(LINUXKERNEL_INSTALL_DIR)/vmlinux $(DESTDIR)/boot
 install $(LINUXKERNEL_INSTALL_DIR)/System.map $(DESTDIR)/boot
 $(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) INSTALL_MOD_PATH=$(DESTDIR) modules_install

DESTDIR=$TI_SDK_PATH/targetNFS
LINUXKERNEL_INSTALL_DIR=$TI_SDK_PATH/board-support/linux-[version].sdk

下記:U-boot のprintenv

U-Boot# printenv
autoload=yes
baudrate=115200
bootargs=console=ttyO0,115200n8 root=ubi0:rootfs rw ubi.mtd=7,2048 noinitrd rootfstype=ubifs rootwait=1 ip=none
bootargs_defaults=setenv bootargs console=${console} ${optargs}
bootcmd=if mmc rescan; then echo SD/MMC found on device ${mmc_dev};if run loadbootenv; then echo Loaded environment from ${bootenv};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;if run mmc_load_uimage; then run mmc_args;bootm ${kloadaddr};fi;fi;run nand_boot;
bootdelay=3
bootenv=uEnv.txt
bootfile=uImage
console=ttyO0,115200n8
ethact=cpsw
ethaddr=00:18:31:e1:37:6a
importbootenv=echo Importing environment from mmc ...; env import -t $loadaddr $filesize
ip_method=none
kloadaddr=0x80007fc0
loadaddr=0x82000000
loadbootenv=fatload mmc ${mmc_dev} ${loadaddr} ${bootenv}
mmc_args=run bootargs_defaults;setenv bootargs ${bootargs} root=${mmc_root} rootfstype=${mmc_root_fs_type} ip=${ip_method}
mmc_boot=run mmc_args; run mmc_load_uimage; bootm ${kloadaddr}
mmc_dev=0
mmc_load_uimage=fatload mmc ${mmc_dev} ${kloadaddr} ${bootfile}
mmc_root=/dev/mmcblk0p2 rw
mmc_root_fs_type=ext3 rootwait
nand_args=run bootargs_defaults;setenv bootargs ${bootargs} root=${nand_root} noinitrd rootfstype=${nand_root_fs_type} ip=${ip_method}
nand_boot=echo Booting from nand ...; run nand_args; nandecc hw 2; nand read.i ${kloadaddr} ${nand_src_addr} ${nand_img_siz}; bootm ${kloadaddr}
nand_img_siz=0x500000
nand_root=ubi0:rootfs rw ubi.mtd=7,2048
nand_root_fs_type=ubifs rootwait=1
nand_src_addr=0x280000
net_args=run bootargs_defaults;setenv bootargs ${bootargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
net_boot=echo Booting from network ...; setenv autoload no; dhcp; tftp ${kloadaddr} ${bootfile}; run net_args; bootm ${kloadaddr}
nfsopts=nolock
nor_args=run bootargs_defaults;setenv bootargs ${bootargs} root={nor_root} rootfstype=${nor_root_fs_type} ip=${ip_method}
nor_boot=echo Booting from NOR ...; run nor_args; cp.b ${0x08080000} ${kloadaddr} ${nor_img_siz}; bootm ${kloadaddr}
nor_img_siz=0x280000
nor_root=/dev/mtdblock3 rw
nor_root_fs_type=jffs2
nor_src_addr=0x08080000
rootpath=/export/rootfs
script_addr=0x81900000
spi_args=run bootargs_defaults;setenv bootargs ${bootargs} root=${spi_root} rootfstype=${spi_root_fs_type} ip=${ip_method}
spi_boot=echo Booting from spi ...; run spi_args; sf probe ${spi_bus_no}:0; sf read ${kloadaddr} ${spi_src_addr} ${spi_img_siz}; bootm ${kloadaddr}
spi_bus_no=0
spi_img_siz=0x380000
spi_root=/dev/mtdblock4 rw
spi_root_fs_type=jffs2
spi_src_addr=0x62000
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=serial
stdin=serial
stdout=serial

Environment size: 2777/8188 bytes
U-Boot#

-----------------
■BeagleboneをXPマシーンに接続する時のTrouble shooting
USBの認識トラブルはこのページを参考にドライバをインストールする




1. Learning embedded linux system through the file system: a top-down approach [pdf]
2. Labs instructions for Enabling BeagleBone with TI SDK 5.x [pdf]
3. Introduction to BeagleBoard [pdf]
4. u-bootのマニュアル [pdf]
5. AM335x u-boot user's guide
6. AMSDK u-boot user's guide
7. Building the Arago Linux Kernel for Beaglebone

__END__