Ubunt/amd64のクロスコンパイル環境でpowerpc向けu-boot 2008.10をコンパイルしてみました。
i386版とかわらずに問題なくバイナリができあがりました。できあがったu-boot.binのサイズも全く同じようです。
2008年 11月 2(日曜日)
Ubuntu/amd64環境でu-boot 2008.10をコンパイル
準備
u-bootはクロスコンパイルで作成します。
コンパイルに使用した環境(ホスト)は以下です。
powerpcのクロスコンパイル環境は以下のエントリで作成したものを利用します。
Ubuntu/amd64でpowerpcクロスコンパイル環境の構築 - yellowback's blog
u-bootのコンパイル
u-bootには、開発版、スナップショット、リリース版があります。
リリース版は2ヶ月毎にリリースされているようです。
開発版(git)
git://www.denx.de/git/u-boot.git
スナップショット
ftp://ftp.denx.de/pub/u-boot/から取得可能
リリース版
ftp://ftp.denx.de/pub/u-boot/から取得可能
2008.9.26時点での最新のリリース版はu-boot-1.3.4
今回は最新のスナップショットである2008.10を利用する。
ソースはgitレポジトリから取得する。
スアップショットを展開します。
クロスコンパイル環境にあわせて以下のパッチをあてます。
また、以下のパッチもあてます。
- 1G Memoryを使用するため
- RTCを取得できるように
- miiコマンドを使えるように
このパッチをあてずに1GBメモリで起動すると、メモリ初期化のあたり(board_init_f()のstack pointerの設定のあたり)で落ちてしまいました。
上記パッチはメモリが256MB以上の場合、u-bootの動作に256MBしか使用しないようになるので、1GB未満のメモリでの使用でも上記パッチによる副作用はないと思います。
また、以下のパッチでmemsizeが正しく表示されるようになります。(修正前は0)
コンパイルします。
これでu-boot.binは作成されました。
u-boot.binをフラッシュへ書き込んでbootすれば完成です。
resetすると以下の起動メッセージで新たなU-bootが立ち上がります。
u-bootはクロスコンパイルで作成します。
コンパイルに使用した環境(ホスト)は以下です。
- OS(ホスト): Linux/amd64 (Ubuntu Intrepid)
powerpcのクロスコンパイル環境は以下のエントリで作成したものを利用します。
Ubuntu/amd64でpowerpcクロスコンパイル環境の構築 - yellowback's blog
u-bootのコンパイル
u-bootには、開発版、スナップショット、リリース版があります。
リリース版は2ヶ月毎にリリースされているようです。
開発版(git)
git://www.denx.de/git/u-boot.git
スナップショット
ftp://ftp.denx.de/pub/u-boot/から取得可能
リリース版
ftp://ftp.denx.de/pub/u-boot/から取得可能
2008.9.26時点での最新のリリース版はu-boot-1.3.4
今回は最新のスナップショットである2008.10を利用する。
ソースはgitレポジトリから取得する。
$ git-clone git://www.denx.de/git/u-boot.git u-boot
$ cd u-boot
$ git-pull (git-cloneした直後であれば不要)
$ git-tag -l |grep 2008
v2008.10
v2008.10-rc1
v2008.10-rc2
$ git-archive --format=tar --prefix=u-boot-2008.10/ v2008.10 | bzip2 > ../u-boot-2008.10.tar.bz2
$ cd ..
スアップショットを展開します。
$ tar jxvf u-boot-2008.10.tar.bz2
$ cd u-boot-2008.10
クロスコンパイル環境にあわせて以下のパッチをあてます。
--- u-boot-2008.10/Makefile 2008-10-19 04:30:31.000000000 +0900
+++ u-boot-2008.10/Makefile 2008-10-24 18:10:14.000000000 +0900
@@ -142,7 +142,7 @@
CROSS_COMPILE =
else
ifeq ($(ARCH),ppc)
-CROSS_COMPILE = ppc_8xx-
+CROSS_COMPILE = powerpc-linux-gnu-
endif
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
また、以下のパッチもあてます。
- 1G Memoryを使用するため
- RTCを取得できるように
- miiコマンドを使えるように
--- u-boot-2008.10/include/configs/MPC8349ITX.h 2008-10-19 04:30:31.000000000 +0900
+++ u-boot-2008.10/include/configs/MPC8349ITX.h 2008-10-24 19:24:09.000000000 +0900
@@ -98,6 +98,7 @@
#define CFG_I2C_OFFSET 0x3000
#define CFG_I2C2_OFFSET 0x3100
#define CFG_SPD_BUS_NUM 1 /* The I2C bus for SPD */
+#define CFG_RTC_BUS_NUM 1 /* The I2C bus for RTC */
#define CFG_I2C_8574_ADDR1 0x20 /* I2C1, PCF8574 */
#define CFG_I2C_8574_ADDR2 0x21 /* I2C1, PCF8574 */
@@ -158,6 +159,8 @@
#define CFG_DDR_SDRAM_CLK_CNTL (DDR_SDRAM_CLK_CNTL_SS_EN | \
DDR_SDRAM_CLK_CNTL_CLK_ADJUST_075)
+#define CONFIG_VERY_BIG_RAM
+
#ifdef CONFIG_HARD_I2C
#define CONFIG_SPD_EEPROM /* use SPD EEPROM for DDR setup*/
#endif
@@ -449,6 +452,8 @@
#define CONFIG_CMD_NET
#define CONFIG_CMD_PING
#define CONFIG_CMD_SDRAM
+#define CONFIG_CMD_MII
+//#define CONFIG_CMD_SATA
#ifdef CONFIG_COMPACT_FLASH
#define CONFIG_CMD_IDE
このパッチをあてずに1GBメモリで起動すると、メモリ初期化のあたり(board_init_f()のstack pointerの設定のあたり)で落ちてしまいました。
上記パッチはメモリが256MB以上の場合、u-bootの動作に256MBしか使用しないようになるので、1GB未満のメモリでの使用でも上記パッチによる副作用はないと思います。
また、以下のパッチでmemsizeが正しく表示されるようになります。(修正前は0)
--- u-boot-2008.10/common/cmd_bdinfo.c 2008-10-19 04:30:31.000000000 +0900
+++ u-boot-2008.10/common/cmd_bdinfo.c 2008-10-27 22:08:53.000000000 +0900
@@ -48,7 +48,7 @@
print_num ("bd address", (ulong)bd );
#endif
print_num ("memstart", bd->bi_memstart );
- print_lnum ("memsize", bd->bi_memsize );
+ print_num ("memsize", bd->bi_memsize );
print_num ("flashstart", bd->bi_flashstart );
print_num ("flashsize", bd->bi_flashsize );
print_num ("flashoffset", bd->bi_flashoffset );
コンパイルします。
$ make MPC8349ITX_config
Configuring for MPC8349ITX board...
$ make
.
.
.
powerpc-linux-gnu-objcopy -O srec u-boot u-boot.srec
powerpc-linux-gnu-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin
これでu-boot.binは作成されました。
u-boot.binをフラッシュへ書き込んでbootすれば完成です。
MPC8349E-mITX> run tftpflash
Speed: 1000, full duplex
Using TSEC0 device
TFTP from server 192.168.0.2; our IP address is 192.168.0.20
Filename 'u-boot.bin'.
Load address: 0x200000
Loading: #################
done
Bytes transferred = 249556 (3ced4 hex)
.... done
Un-Protected 4 sectors
.... done
Erased 4 sectors
Copy to Flash... done
.... done
Protected 4 sectors
Total of 249556 bytes were the same
resetすると以下の起動メッセージで新たなU-bootが立ち上がります。
U-Boot 2008.10 (Nov 2 2008 - 11:46:43) MPC83XX
Reset Status: Software Hard, External/Internal Soft, External/Internal Hard
CPU: e300c1, MPC8349EA, Rev: 3.0 at 533.333 MHz, CSB: 266.666 MHz
Board: Freescale MPC8349E-mITX
UPMA: Configured for compact flash
I2C: ready
DRAM: 1 GB (DDR1, 64-bit, ECC off, 266.666 MHz)
FLASH: 16 MB
PCI: Bus Dev VenId DevId Class Int
00 10 1095 3114 0180 00
In: serial
Out: serial
Err: serial
Board revision: 1.0 (PCF8475A)
Net: TSEC0, TSEC1
IDE: Bus 0: .** Timeout **
MPC8349E-mITX>
トラックバック
このエントリーのトラックバック URI を指定する