2012年07月20日

KZM-A9-GTのU-Bootの機能でNORフラッシュのU-Bootを更新する

KZM-A9-GTボードのNORフラッシュに書き込みたいときに一番簡単な方法はPARTNER-Jetをつないで、そのロードコマンドを使うことですが、ここではU-Bootの機能を使ってNORフラッシュに書く手順を紹介します。



U-bootの機能を使って新しいバージョンのU-BootをNORフラッシュに焼くときの手順です。

書き込むべきu-bootのデータを実機のメモリに転送する方法は二つあります。

  1. ネットワーク経由(tftp)
  2. シリアル経由

u-bootならサイズも小さいので、サーバーの設定やネットワークのアドレス設定が必要ないので、シリアル経由での更新がお勧めです。

更新時の端末ソフトは、teratermが、ファイル送信プロトコルなどが内蔵されていて便利です。

1. ネットワーク経由(tftp)で転送

1.0 tftpサーバーの用意

以下の記事を参照してください。

Ubuntu 12.04でtftpサーバをセットアップする

1.1 IPアドレスを設定

KZM-A9-GTボードのIPアドレスを 192.168.1.162, tftpサーバのIPアドレスを192.168.1.110とすると

KZM-A9-GTのU-Bootのプロンプトで

KZM-A9-GT# set ipaddr 192.168.1.162
KZM-A9-GT# set serverip 192.168.1.110

入力した値の確認。

KZM-A9-GT# print
baudrate=115200
bootargs=root=/dev/null console=ttySC4,115200
bootdelay=3
ethact=smc911x-0
ipaddr=192.168.1.162
serverip=192.168.1.110
  ...

1.2 ネットワークの接続確認

KZM-A9-GT# ping 192.168.1.110
smc911x: detected LAN9221 controller
smc911x: autonegotiation timed out
smc911x: MAC 00:01:9b:04:04:01
Using smc911x-0 device
ping failed; host 192.168.1.110 is not alive

※ このメッセージが出たら、IPアドレスや LANケーブルの接続を再確認する

KZM-A9-GT# ping 192.168.1.110
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC 00:01:9b:04:04:01
Using smc911x-0 device
host 192.168.1.110 is alive

※ サーバーと正しく接続されている

1.3 tftp経由での u-bootの更新

1.3.1 tftpサーバーから u-boot.bin を、0x50000000 番地に取得

tftpサーバの/tftpboot ディレクトリに、u-boot.bin を置きます。

KZM-A9-GTのU-Bootのプロンプトで

KZM-A9-GT# tftp 0x50000000 u-boot.bin
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC 00:01:9b:04:04:01
Using smc911x-0 device
TFTP from server 192.168.1.110; our IP address is 192.168.1.162
Filename 'u-boot.bin'.
Load address: 0x50000000
Loading: #######################################
done
Bytes transferred = 196312 (2fed8 hex)
1.3.2 NORフラッシュの 0番地から 0x3ffff 番地までを、プロテクト解除と消去
KZM-A9-GT# protect off 0x0 0x3ffff
KZM-A9-GT# erase 0x0 0x3ffff
1.3.3 0x5000_0000番地の u-boot.binを 0番地にコピー。
KZM-A9-GT# cp.b 0x50000000 0x0 ${filesize}
Copy to Flash... done
1.3.4 0番地から 0x3ffff番地までをプロテクト
KZM-A9-GT# protect on 0x0 0x3ffff

1.4 u-bootの再起動とバージョン確認

KZM-A9-GTボードの電源をOFF/ONするか、またはresetコマンドで

KZM-A9-GT# reset
resetting ...


U-Boot 2012.04.01-14468-gc7ff0ec (Jul 20 2012 - 11:36:05)  <-- バージョンが変わっている事を確認
  ...

2. シリアル経由で転送

2.0 KZM-A9-GTと teraterm などで接続し、KZM-A9-GTの電源を入れる

2.1 u-bootでシリアルからのファイル受信モードを設定

2.1.1 loadb コマンドで、0x50000000番地にファイル受信
KZM-A9-GT# loadb 0x50000000
## Ready for binary (kermit) download to 0x50000000 at 115200 bps...

※ ここで、teratermの 「ファイル」->「転送」->「Kermit」->「送信(S)...」を

メニューを選択して、u-boot.binを指定する

(英語版では、"File" -> "Transfer" -> "Kermit" -> "Send..." を選択)

## Total Size      = 0x0002fed8 = 196312 Bytes
## Start Addr      = 0x50000000
2.2.2 NORフラッシュの 0番地から 0x3ffff 番地までを、プロテクト解除と消去
KZM-A9-GT# protect off 0x0 0x3ffff
KZM-A9-GT# erase 0x0 0x3ffff
2.2.3 0x50000000番地の u-boot.binを 0番地にコピー。
KZM-A9-GT# cp.b 0x50000000 0x0 ${filesize}
2.2.4 0番地から 0x3ffff番地までをプロテクト
KZM-A9-GT# protect on 0x0 0x3ffff

2.3 u-bootの再起動とバージョン確認

KZM-A9-GTボードの電源をOFF/ONするか、またはresetコマンドで

KZM-A9-GT# reset
resetting ...


U-Boot 2012.04.01-14468-gc7ff0ec (Jul 20 2012 - 11:36:05)  <-- バージョンが変わっている事を確認

NORフラッシュのバンク切り替え

KZM-A9-GTボードではNORフラッシュは16MBずつの4つのバンクに分かれていて、Cortex-A9 CPUからはそのうちの2つのバンクが使用可能です。ディップスイッチ SW4-1 でそれを切り替えることができます。出荷時には両方のバンクにU-Bootが焼きこまれています。書き込みの失敗に備えて片方のU-Bootは非常用にとっておいてください。

LinuxカーネルをNORフラッシュに書き込む

U-Bootはu-boot.binのファイルを0x0から0x3ffff に書き込みました。Linuxカーネルも方法は同じで、ファイル名とアドレス範囲が違うだけです。uImageのファイルを0x00080000 から0x003fffff に書くと良いでしょう。



トラックバックURL

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード