ChumbyへのSSHログイン
1.Chumby側の操作
http://ja.chumby.wikia.com/wiki/%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AETips
2.PC側の操作
・SSHを立ち上げて、ChumbyのIPアドレスを入力。
・ユーザ名を尋ねられるので、rootを入力する
・ChumbyではSSHデーモンがすでに起動されているので、ログイン
が可能
3.SSHクライアント(PC)で、Chumbyのマスコット文字が
表示されればOK
○LISTENしているポートを見る
netstat -l
○dfコマンド⇒データ領域の大きさを見る。
Filesystem Size Used Available Use% Mounted on
/dev/sda1 30.9M 0 30.9M 0% /mnt/usb
○USBのアンマウント
umount /dev/sda1
○ddコマンド⇒入力から出力へデータをコピーする
<USBメモリへChumby内のファイルを書き出す(調査中)>
USBメモリの書き出しは以下を参考にして実施する予定
http://fenrir.naruoka.org/archives/000671.html
上記アドレスにある
>ddコマンドでROMイメージ(ファイルシステムはcramfs、
>chumby.orig.imgと以下表記)をUSBメモリ等外部ストレージに吸出し、
について、
cramfs:読み出し専用ファイルシステムで、ROM/フラッシュメモリ上に
ファイルシステムを作る
(http://homepage3.nifty.com/akakabunoken/OpenSourceTop/cramfs/cramfs.html参考)
chumby.orig.img:まだ分からない
FlashROMにある内容を書き出すには、ddコマンドを使用しなければならず、
そのイメージはchumby.orig.imgということかな・・
Chumbyのブートメカニズム
ChumbyにてTOPPERSを動作させるために、Chumbyの
ブートについて調査
分かったこと
TOPPERSをNandFlash上に書き込み、
RAMへコピーして実行するのが基本
素材
-Chumbyのホームページ内のソースコード
(BootLoader)
-FreeScale社のi.MX21資料
-Chumbyの解説(Hackingと書いてあるが・・)
(http://files.chumby.com/toorcon_2006_firstpart.swf)
リセット
1.BROMの0x0000_0000から実行
- 以下、BROM実行-
1−1.
BOOT[0:3]をチェックし、0111であることから、
NandFlashブートであることを確認
1−2.
BROMのコードによって、NandFlashのデータを
2KB分、NandFlash用RAMに格納
※格納先RAMは0xDF00_3000
1−3.
0xDF00_3000へジャンプ
2.NandFlashから格納されたプログラムを
0xDF00_3000から実行(boot.s)
- 以下、boot.s-
2−1.
周波数、SDRAMの設定を実施
2−2.
次からのプログラムをSDRAM上で実施するために、
NandFlash向けRAMの0xDF003200から、
SDRAMの先頭番地0xC000_0000にプログラムを
コピーする
2−3.
コピー後、SDRAMコピーの先頭番地である
0xC000_0000へジャンプ
3.SDRAM先頭からのプログラムを実行
0xC000_0000から(bl.c)
- 以下、bl.c-
3−1.
NandFlash上からブロック毎にプログラムを
SDRAMへコピーする。
SDRAMのコピー先は0x0000_1000
NandFlashの
読み出しスタートは0x0000_0800、
読み出しエンドは0x0004_0000
3−2.
SDRAMコピー先の先頭アドレスである
0x0000_1000へジャンプ
4.SDRAMの0x0000_1000から実行(2bl.c)
- 以下、2bl.c-
4−1.
デバッグ向けUARTの初期化
4−2.
NandFlashデータのチェック
4−3.
Linuxカーネルのコピー
SDRAMコピー先は0xc050_0000
NandFlashのコピー元は0xd80000
カーネルサイズは0x400000
4−4.
0xc050_0000へジャンプ(Linuxのスタート)
AZ9360(ARM926EJ-Sコア内蔵)のTOPPERSお勉強
ちょっと分かったこと更新
1.ボード
⇒プロセッサ
⇒プロセッサアーキテクチャ
・AZ9360MBはARMプロセッサのNS9360を内蔵し、
下記をボードに搭載
フラッシュメモリ(ROM):8MB
SDRAM:32MB
周辺(Ethernet,USB、シリアル、デバッグ)、、等々
・NS9360はDigiInternational社の作ったARM926EJ-Sベース
のプロセッサ
・ARM926EJ-S プロセッサはARM9ベース、
でアーキテクチャはARMv4T
ARMv4TのTはThumb命令セット(16ビット)が追加された
という意味
・パイプランは5段
⇒プリフェッチ、デコード、実行、メモリ、書き込み
2.TOPPERSのARM対応
・TOPPERS JSPのARM対応版はAZ9360MB対応有り
・TOPPERS ASPのARM対応版(AT91SAM7A、AT91SAM7S)はARM7ベース
3.TOPPERSのボード依存部勉強
a.スタートアップについて
リセットベクタからstart.sがコール
スタートアップ後に、kernel_startへ飛ぶが、
この中で割込みハンドラの登録は行っている
(疑問点)
hardware_init_hook内で、BBUS、CS、GPIOの
設定を行っている。
中を追っていくと、CSの設定は行っていないので、
TOPPERSカーネル動作前にブートローダが動作
しているのだと思われる。
b.IRQ_Handler
割込みが入った時点で、リンクレジスタに復帰
アドレスが格納される。
多重割込み禁止ならこれでOK。
IRQモード中にIRQ割込みが発生すると、
リンクレジスタが上書きされるので、RAMに
退避が必要。
そのため、IRQモードではなく、
SVCモードに移行してRAMへレジスタの退避
およびSVCモードで割込みを処理する
(疑問)
・IRQモードでRAMへのレジスタ退避ではダメか
・SVCモードで退避中に「pcはダミー」の意味。
<開発環境>
TOPPERS-JSPの「armv4.txt」推奨の
BINUTILS:2.14
GCC-CORE:3.3
GDB:5.3
NEWLIB:1.11.0
と記載がある
が、Chumbyとはバージョンが異なるらしい
<開発ステップ>
・AZ9360MB手配
・TOPPERS-JSPのボード移植
(AZ9360MB対応があるので、開発環境を整えるのが主目的)
・TOPPERS-ASPのボード移植(ARM926EJ-S対応)
・Chumby開発(i.mx21対応)
<参考文献>
・ARM926EJ-S テクニカルリファレンスマニュアル
・μITRON準拠TOPPERSの実践活用
・TOPPERS JSP/ASPコード
・Interface 2006年11月号
(AZ9360MBのボード設定記事あり)