ChumbyへのSSHログイン

ChumbySSHログインする方法を作業手順として記載

1.Chumby側の操作

http://ja.chumby.wikia.com/wiki/%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AETips

Chumbyssh コンソールにログインする」を参考

つまり、Chumby内のSSHデーモンを起動

2.PC側の操作
 ・SSHを立ち上げて、ChumbyIPアドレスを入力。
 ・ユーザ名を尋ねられるので、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が到着

見た目、かわいい!の一言
Chumbyに同胞されているストラップや小物の袋に家族ではしゃぐ

必要な設定
無線LAN環境を持っていなかったため、無線LANルータを購入して
モデムと接続。

モデム->無線LANルータ->Chumbyとなる。ついでにWii無線LAN
ネットワークに接続

Chumbyの初期設定は説明書に書いてあるのでその通りに設定

明日は、SSHログインについて記載

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のスタート)

今後
 ・NandFlashの書き換えと、書き換えた後の復旧
 ・TOPPERSの配置
 ・デバッグ方法

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のボード設定記事あり)

日々の記録開設

TOPPERS教育WGの企画のために、
苦労の跡を残します!


TOPPERS ASPのARM対応版(AT91SAM7A、AT91SAM7S)はARM7ベース
・ARM926EJ-S プロセッサはARM9ベース

今回はARM926EJ-SベースのボードにTOPPERS ASPを移植予定

<今後の作業に備えての参考文書(随時更新)>
・ARM926EJ-S テクニカルリファレンスマニュアル
・μITRON準拠TOPPERSの実践活用
TOPPERS ASPコード

<開発環境>
 今後更新

<開発ステップ>
 今後更新