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__

Saturday, September 29, 2012

OpenGL ES

参考文献:
1. 座標系変換(1)
2.

Sunday, September 23, 2012

Ubuntu on BeagleBone/BeagleBoard

BeagleBone/BeagleBoard

参考文献:
0. Beaglebone hardware PDF file
1. Ubuntu 12.04をBeagleboneに入れる方法
2. Beagleboard initializaiton (1)
3.
X. Quake 3 git (used for demo)
X. Quake 3 on Raspberry Pi (1)

■Ubuntu 12.04 をBeagleBone入れる
VMwareで構築したUbuntu PCマシーン+Toolchainで作業
$ mkdir Ubuntu_on_beagle
$ cd Ubuntu_on_bealge
$ wget http://rcn-ee.net/deb/rootfs/precise/ubuntu-12.04-r6-minimal-armhf-2012-09-10.tar.xz

$ tar xJf ubuntu-12.04-r6-minimal-armhf-2012-09-10.tar.xz
$ cd  ubuntu-12.04-r6-minimal-armhf-2012-09-10
$ sudo ./setup_sdcard.sh --mmc /media/usb?? --uboot bone ※??は適当にSDカードのドライブを指定

Beagleboneに電源 + USBケーブル接続し、PCからTeratermでシリアル接続(Baudrate: 115200

login: ubuntu
pass: temppwd

ログイン後の結果:

Ubuntu 12.04.1 LTS arm ttyO0

arm login: ubuntu
Password:
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.28-psp21 armv7l)

 * Documentation:  https://help.ubuntu.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

ubuntu@arm:~$


■ Lubuntuをインストール
$ sudo shutdown -h now
電源を抜いて、HDMI-Cape, HDMI-DVI変換をモニタにつないでから再度、電源を入れる

$ sudo apt-get -yV install lubuntu-core
$ sudo apt-get -yV install lubuntu-desktop
$ sudo apt-get -yV install lxde-common
$ sudo apt-get -yV install lxde-core
$ sudo apt-get -yV install lxde

これでlubuntuが無事画面に出ることを確認


Saturday, September 08, 2012

Ubuntu 12.04 on VMware

Ubuntu 12.04 on vmware

■UI変わりすぎて使いにくい。なんとか戻すことにする

sudo apt-get install gdm
sudo apt-get install gnome-shell gnome-session-fallback

テキストログイン→GUIログインにしたい場合は
sudo start gdm

これでとりあえずOK

■日本語環境
sudo add-apt-repository ppa:japaneseteam/ppa
sudo apt-get update
sudo apt-get install ubuntu-defaults-ja

なんか日本語を対応させたいが、今英語バージョンで、もう一度ここから日本語バージョンのイメージをダウンロードし直すか、英語バージョンを日本語にするかを迷う。とりあえず後者で、手順はページの説明通り

Ubuntu 12.04 LTSの場合:
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add - wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add - sudo wget https://www.ubuntulinux.jp/sources.list.d/precise.list -O /etc/apt/sources.list.d/ubuntu-ja.list sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ubuntu-defaults-ja
sudo fontconfig-voodoo --force -s ja_JP

■Google日本語入力
sudo add-apt-repository ppa:ikoinoba/ppa
sudo apt-get update
sudo apt-get install ibus-mozc
sudo reboot

■ディレクトリを日本語にする
LANG=C xdg-user-dirs-gtk-update

■GVim
sudo apt-get install vim-gnome ubuntu-restricted-extras

■ Build
sudo apt-get install build-essential
sudo apt-get install svn git ssh
sudo apt-get install cmake
sudo apt-get install freeglut3 freeglut3-dev

make a small test:
g++ test.cpp -lGL -lglut -o test ※test.cppをリンクオプションの後に置くとエラー!

■ARMクロスコンパイルビルドチェーン 参考:ここ
sudo apt-get install g++-arm-linux-gnueabi
sudo apt-get install g++-arm-linux-gnueabihf

arm-linux-gnueabi-addr2line    arm-linux-gnueabihf-gcov
arm-linux-gnueabi-ar           arm-linux-gnueabihf-gcov-4.6
arm-linux-gnueabi-as           arm-linux-gnueabihf-gprof
arm-linux-gnueabi-c++filt      arm-linux-gnueabihf-ld
arm-linux-gnueabi-cpp          arm-linux-gnueabihf-ld.bfd
arm-linux-gnueabi-cpp-4.6      arm-linux-gnueabihf-ld.gold
arm-linux-gnueabi-elfedit      arm-linux-gnueabihf-nm
arm-linux-gnueabi-g++          arm-linux-gnueabihf-objcopy
arm-linux-gnueabi-g++-4.6      arm-linux-gnueabihf-objdump
arm-linux-gnueabi-gcc          arm-linux-gnueabihf-ranlib
arm-linux-gnueabi-gcc-4.6      arm-linux-gnueabihf-readelf
arm-linux-gnueabi-gcov         arm-linux-gnueabihf-size
arm-linux-gnueabi-gcov-4.6     arm-linux-gnueabihf-strings
arm-linux-gnueabi-gprof        arm-linux-gnueabihf-strip
arm-linux-gnueabihf-addr2line  arm-linux-gnueabi-ld
arm-linux-gnueabihf-ar         arm-linux-gnueabi-ld.bfd
arm-linux-gnueabihf-as         arm-linux-gnueabi-ld.gold
arm-linux-gnueabihf-c++filt    arm-linux-gnueabi-nm
arm-linux-gnueabihf-cpp        arm-linux-gnueabi-objcopy
arm-linux-gnueabihf-cpp-4.6    arm-linux-gnueabi-objdump
arm-linux-gnueabihf-elfedit    arm-linux-gnueabi-ranlib
arm-linux-gnueabihf-g++        arm-linux-gnueabi-readelf
arm-linux-gnueabihf-g++-4.6    arm-linux-gnueabi-size
arm-linux-gnueabihf-gcc        arm-linux-gnueabi-strings
arm-linux-gnueabihf-gcc-4.6    arm-linux-gnueabi-strip


■Eclipseをインストールして、Proxy設定
Eclipseをインストールすると、設定ファイルなどはすべてrootが所有者になり、一般ユーザから設定を変更しても反映されない。Proxy設定はひとつの例。解決方法は
下記を /etc/eclipse.ini に追加すること

-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient
-Dhttp.proxyPort=8080
-Dhttp.proxyHost=XXX
-Dhttp.proxyUser=XXX
-Dhttp.proxyPassword=XXX
-Dhttp.nonProxyHosts=localhost|127.0.0.1

Friday, September 23, 2011

Java - メモ

Java - 正しい例外処理メモ

■起こらない例外の処理方法
例外処理しないのではなく、ErrorまたはRuntimeExceptionをthrowするとさらに安全

悪い例:
try{
  url = new URL("http://www.google.com");
}catch(MalformedURLException){
  // do nothing
}

良い例:
try{
  url = new URL("http://www.google.com");
}catch(MalformedURLException){
  throw new RuntimeException(e.toString());
}

■ArrayListはListインタフェースを実装したクラス(Implemented Class)

■Iterator
参考1

■正規表現
参考1