マジックナンバー0x10000004の怪
2015/12/12(土) 23:28 NetBSD はてブ情報 はてブに登録 はてブ数

このエントリはNetBSD Advent Calendar 2015の12日目です。

前回のNetBSD Advent Calendar 8日目からの続きです。

今回の結論は、前回の考察は全くの無意味で、実は何もしなくてよかった、です。

エントリは短いのですが、かなりヤクの毛を刈りましたよ

おさらい

前回のストーリはこんな感じです。
  • 移植の際、ステータスレジスタに0x10000004を入れる必要があった
  • マジックナンバーなので気になって調べた
  • NetBSD, FreeBSD, u-bootのレジスタ設定に共通点はなかった(u-bootはマジックナンバーの出元ですね)
ということで、もっぱらソースとマニュアルを紐解くという、いわば机上での調査でした。

そこで、今回は実際にあれころ動作させてみて何かわかることはないか、という実機での調査をしようと考えたわけです。

最新のソースで試してみよう

以前に試していたのはずいぶん古い環境だったので、気を取り直して新しめのソースコードで試してみよう、と思ったのが間違いの始まりでした。

NetBSD 7.0リリース版を入れて放置していたVMイメージを起動し、2012-12-11のソースを展開。クロスコンパイラをbuild.shで一発作成して、gitから取り出したLinino ONE用のパッチをあてます。パッチはきれいにあたってカーネルの作成にも成功しました。

順調です。

いざ、起動します。
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.24 (INSTALL_LININO1) #0: Sat Dec 12 02:40:05 UTC 2015
        root@n70:/export/o/20151211/evbmips/sys/arch/evbmips/compile/INSTALL_LININO1
Atheros AR9331
total memory = 65536 KB
avail memory = 56424 KB
mainbus0 (root)
cpu0 at mainbus0: 400.00MHz (hz cycles = 2000000, delay divisor = 200)
cpu0: MIPS 24K (0x19374) Rev. 116 with software emulated floating point
cpu0: 16 TLB entries, 256MB max page size
cpu0: 64KB/32B 4-way set-associative L1 instruction cache
cpu0: 32KB/32B 4-way set-associative write-back L1 data cache
wdog0 at mainbus0: 5 second period
arbus0 at mainbus0
あれ? このあと文字化けした表示が続き、まるで動きません。

このあと、パッチの当て忘れに気づいたり、あれこれ試行錯誤したのですが、結局のところシェルプロンプトを拝むことはできませんでした。

これはまずい。

昔の環境なら動くはず

以前動作させていた環境なら動くはずです。動いているところから色々変化させて挙動の変化を見るほうが良いに決まっています。初めからそうすればよかったのです。

と、いうことで以前のVMイメージを起動して、当時作ったカーネルを起動します。はい、当然のことながら起動します。

それでは、ステータスレジスタを変化させてみましょう。

ということで、ステータスレジスタを変化させて試してみますが、なんだか様子が変です。

以前は止まっていたはずなのに、なにをやっても正しく起動してきます。

おかしい。

頭から見てみよう

カーネルの作成ミスや修正のセーブし忘れなど、ケアレスミスを見つけやすくするためにカーネルの作成回数や「ここを実行したよ」というデバッグ文字を出しています。

ここをよく見るとおかしなことが。

なぜか通るべきルートを通っているはずなのに、デバッグ文字が出力されていません。

シリアル部分が詰まっているのかなぁ、と思っていたのですが、いよいよ疑わねばならない感じです。リブートではなく電源OFFからやり直してみたり、ここまででずいぶん時間を食っています。

デバッグ文字が出力されていない理由、それはその部分を実行していないだけなのです。つまり、違うルートを通っていると。

絶対通らないはずと思い込んでいたルートにデバッグ文字を入れると、きっちりそこの文字が出ました。あぁ、やっぱりか。

そのルートが問題

実行されないところを一生懸命直したりしてバカだなぁ、ということにつきるのですが、問題はそのルートです。
     89 #else
     90 	mtc0	zero, MIPS_COP_0_STATUS		# Disable interrupts
     91 	COP0_SYNC
     92 #endif
そうです、ステータスレジスタにゼロを入れて完全にクリアしています。

前回、NetBSDではステータスレジスタのBEVフィールドを保持して書き戻していると書きましたが、あれは大ウソだったということです。

それはそれでマヌケな話なのですが、それはさておき、ステータスレジスタにゼロを入れてシェルプロンプトが出るところまで動いているということはどういうことなんでしょうか?

Linino ONEを移植する際に、最初につまづいたのは「ステータスレジスタにゼロを入れて書き戻すとハングする」という事象だったはずです。

西村さんのエスパーメールにも、ステータスレジスタの全ビットを書き換えるコードの是非について言及があったので、当時もこのルートを通り、うまくうごかずu-bootをまねて0x10000004を設定して動かしたはずです。

怪奇現象

時間がたつとバグが消えるなんて話は、本当ならばうれしいですが、おかしな話です。

まぁいいです。私はマジックナンバーを設定したいのです。

以前そうしていたように0x10000004を設定してカーネルを起動します。
total memory = 65536 KB
avail memory = 56456 KB
pid 0(system): trap: cpu0, reserved instruction in kernel mode
status=0x10000003, cause=0x70008028, epc=0x8006e6f0, vaddr=0xc0001ff8
tf=0x807bbaa0 ksp=0x807bbb40 ra=0x8006e6c4 ppl=0
kernel: reserved instruction trap
Stopped in pid 0.1 (system) at  8006e6f0:       sw      s0,0(s2)
db>
あれ、死んだ。

以前と真逆の結果です。

こうなったらいろいろ試してみよう

せっかくなので、前回調べたFreeBSDの初期化を試してみたり、マジックナンバーのCU0とERLの片方だけをONにしたり、FreeBSDの設定にCU0, ERLを追加してみたりしました。
ステータスレジスタ結果
ゼロ起動する
CU0=0N起動する
ERL=ON起動しない (1)
CU0=ON && ERL=ON起動しない(2)
FreeBSDの初期化起動する
FreeBSDの初期化 + CU0=ON起動する
FreeBSDの初期化 + ERL=ON起動しない(3)
起動しないパターンの共通項はERL=ONのようです。

なお、死んだときのメッセージについては次のとおりです。

(1)ERL=ON
pid 0(system): trap: cpu0, reserved instruction in kernel mode
status=0x10000003, cause=0x70008028, epc=0x8006e6f0, vaddr=0xc0001ff8
tf=0x807bbaa0 ksp=0x807bbb40 ra=0x8006e6c4 ppl=0
kernel: reserved instruction trap
Stopped in pid 0.1 (system) at  8006e6f0:       sw      s0,0(s2)
(2)CU0=ON && ERL=ON
pid 0(system): trap: cpu0, reserved instruction in kernel mode
status=0x3, cause=0x70008028, epc=0x8006e700, vaddr=0xc0001ff8
tf=0x807bbaa0 ksp=0x807bbb40 ra=0x8006e6d4 ppl=0
kernel: reserved instruction trap
Stopped in pid 0.1 (system) at  8006e700:       sw      s0,0(s2)
(3)FreeBSDの初期化 + ERL=ON
pid 0(system): trap: cpu0, system call in kernel mode
status=0x3, cause=0x50008020, epc=0x8006e6f0, vaddr=0xc0001ff8
tf=0x807bbaa0 ksp=0x807bbb40 ra=0x8006e6c4 ppl=0
kernel: system call trap
Stopped in pid 0.1 (system) at  8006e6f0:       sw      s0,0(s2)
ほとんど同じに見えますがstatus, causeのが微妙に違っています。

まとめ

さて、いろいろと試してみましたけれど、実際に動かしてみてわかったことは、「元のコードが正しかった」ということのようです。

西村さんからもらったエスパーメールはマジックナンバーのメールだけでなく、実はそのあとにも数通いただいていたのです。

そのメールの内容は、当時はさっぱり理解できなかったのですが、いま改めて読み返してみると、テクニカルかつ示唆に富む内容だなぁと噛みしめている次第です。

個人あてメールを勝手に引用するのはマナー違反だと知りつつ、一文だけ引用させていただいて、今回のエントリーを締めたいと思います。
自分で拵えたコードは多くないはずですから、総当りして間違っていないか確認してみてはどうでしょうか?
西村さんからのメールより

蛇足

「酔った勢いでエントリー」はやめておこう!

マジックナンバー0x10000004の謎
2015/12/08(火) 23:21 NetBSD はてブ情報 はてブに登録 はてブ数

このエントリはNetBSD Advent Calendar 2015の8日目です。

結論から言うと、本件はまだ解決していません。
時間切れではなく実力不足ですいません。

きっかけ

OSC 2015 Tokyo FallにてUSBシリアル2015, NetBSD/evbmips on Linino ONEでUSBシリアルの話とLinino ONEでNetBSDを動かす話をしました。

Linino ONEという小さなMIPSマシンにNetBSDを移植した話なのですが、このなかで一番最初に実行されるlocore.Sの冒頭でダンマリになってしまう現象に悩まされていました。その際、NetBSD Developerの西村さんからヒントをいただいて、無事に先に進んだという部分があります。まさに、エスパーによるリモートデバッグといえましょう。

先に進んだのは良かったのですが、見よう見まねでステータスレジスタに設定した0x10000004は謎のままです。mips/locore.Sという一番最初のファイルにマジックナンバーを入れておくのはどうにも気持ちが悪いですし、本家にフィードバックする際に説明できないのでは困るので、まじめに調べてみようと思ったのがきっかけです。

もちろんAdvent Calendar駆動で調べ始めたのですが。

問題の個所

問題の個所はsys/arch/mips/mips/locore.sの以下の部分です。
     79 #if (defined(MIPS3_PLUS) && !defined(MIPS1)) || defined(emips)
     80 	/* keep firmware exception handler until we hook. */
     81 	mfc0	v0, MIPS_COP_0_STATUS
     82 #if defined(emips)
     83 	and	v0, MIPS_SR_TS | MIPS3_SR_RE
     84 #else
     85 	and	v0, MIPS_SR_BEV
     86 #endif
     87 	mtc0	v0, MIPS_COP_0_STATUS		# Disable interrupts
     88 	COP0_SYNC
     89 #else
     90 	mtc0	zero, MIPS_COP_0_STATUS		# Disable interrupts
     91 	COP0_SYNC
     92 #endif
if-else-endifを整理すると次の三行になります。
     81 	mfc0	v0, MIPS_COP_0_STATUS
     85 	and	v0, MIPS_SR_BEV
     87 	mtc0	v0, MIPS_COP_0_STATUS		# Disable interrupts
mfc0でステータスレジスタをv0にロードして、andでBEVフィールド以外はゼロクリアして、mtc0でステータスレジスタをストアしています。

if-else-endifを考慮すると、ステータスレジスタに対して様々なパターンで処理を行っています。
パターン処理内容
今回BEVフィールド以外をゼロクリア
emipsTSフィールドとREフィールド以外をゼロクリア
それ以外の場合すべてゼロクリア

ステータスレジスタに何をやっているのか

処理を切り替えているということは、何らかの理由があるはずです。プロセッサごとの初期化処理に違いがあるということでしょうか。

そのためにフィールドのそれぞれの意味を確認します。今回は MIPS32 24kのドキュメントをあたってみます。

先に出てきたのはBEV,TS,REです。
フィールド名意味説明
BEVboot exception vectorsエクセプションベクタの場所を制御します。0だとノーマル、1だとbootstrapです。
TSTLB shutdownTLBWI or TLBWRによってマシンチェック例外が引き起こされたことを示す。書き込めるのは0だけである
REreverse endianness in user modeプロセッサがユーザモードで実行中にリバースエンディアンメモリ参照を有効にします。サポートされていません。
なるほど。よくわかりません。こまりました。

マジックナンバーの中身を見る

気を取り直してマジックナンバー0x10000004を考えてみます。
0x10000004で立っているビットからステータスレジスタのどのフィールドなのかを確認してみると、CU0とERLです。
フィールド名意味説明
CU0Coprocessor Unit 0コプロセッサ0へのアクセスを制御する。プロセッサがカーネルモードで動作しているときは、CU0ビットの状態に関係なくコプロセッサ0を常に使うことができる。
ERLError LevelReset, Soft Reset, NMI, キャッシュエラー例外が発生した際プロセッサによってセットされる。ERLがセットされた場合、プロセッサはカーネルモードで動作する、割り込みは禁止されている、ERET命令はEPCの代わりにErrorEPCに保持された戻り先アドレスを使う、KUSEGの下位2^29バイトは未マップかつ非キャッシュ領域として扱われる。
さっぱりわかりません。カーネルモードとか何でしょうか?

オペレーティングモード

カーネルモードはMIPS32 24Kがサポートしているモードの一つだそうです。

MIPS32 24Kプロセッサは四つのモードをサポートしているようです。
  1. User mode
  2. Supervisor mode
  3. Kernel mode
  4. Debug mode
DebugモードはDebugレジスタのDMビットが1の場合、そうでない場合はステータスレジスタのKSU、EXL、ERLの値によってそれぞれのモードが判別できるようです。
モード条件
Kernel modeKSU=00 or EXL=1 or ERL=1
Supervisor modeKSU=01 and EXL=0 and ERL=0
User modeKSU=10 and EXL=0 and ERL=0
ここでKSUフィールドの説明を見てみると次のような記述があります。

フィールド名意味説明
KSUKernel Supervisor Userこのフィールドはプロセッサのベースのモードを示します。KSUフィールドのステータスにかかわらず、ERLかEXLがセットされるとプロセッサはカーネルモードになります。
したがって、マジックナンバーの0x10000004の0004についてはERLを1にしていることから、どうやらプロセッサをカーネルモードに設定しているということがわかりました。

一方で、CU0フィールドはなぜ設定しているのでしょうか? カーネルモードであればCU0フィールドの値にかかわらずCU0が使えるのに。

釈然としません。

FreeBSDはどうなの

煮詰まったので気分を変えたいと思います。

そういえばFreeBSDはどうやっているんでしょう。

そう思って確認すると../src-freebsd/sys/mips/mips/locore.Sに似たような処理があるのを見つけました。
     91 #if defined(CPU_CNMIPS)
     92 	/*
     93 	 * t1: Bits to set explicitly:
     94 	 *	Enable FPU
     95 	 */
     96 
     97 	/* Set these bits */
     98         li	t1, (MIPS_SR_COP_0_BIT | MIPS_SR_PX | MIPS_SR_KX | MIPS_SR_UX | MIPS_SR_SX | MIPS_SR_BEV)
     99 
    100 	/* Reset these bits */
    101         li	t0, ~(MIPS_SR_DE | MIPS_SR_SR | MIPS_SR_ERL | MIPS_SR_EXL | MIPS_SR_INT_IE | MIPS_SR_COP_2_BIT)
    102 #elif defined (CPU_RMI) || defined (CPU_NLM)
    103 	/* Set these bits */
    104         li	t1, (MIPS_SR_COP_2_BIT | MIPS_SR_COP_0_BIT | MIPS_SR_KX | MIPS_SR_UX)
    105 
    106 	/* Reset these bits */
    107         li	t0, ~(MIPS_SR_BEV | MIPS_SR_SR | MIPS_SR_INT_IE)
    108 #else
    109 	/*
    110 	 * t0: Bits to preserve if set:
    111 	 * 	Soft reset
    112 	 *	Boot exception vectors (firmware-provided)
    113 	 */
    114 	li	t0, (MIPS_SR_BEV | MIPS_SR_SR)
    115 	/*
    116 	 * t1: Bits to set explicitly:
    117 	 *	Enable FPU
    118 	 */
    119 	li	t1, MIPS_SR_COP_1_BIT
    120 #ifdef __mips_n64
    121 	or	t1, MIPS_SR_KX | MIPS_SR_SX | MIPS_SR_UX
    122 #endif
    123 #endif
上記はt0, t1に値をセットしているだけに見えますが、後続の処理でステータスレジスタに対してt0のANDとt1のORを取っています。

つまり、レジスタt0にクリアしたいもの、t1にセットしたいものを設定しているようです。

NetBSDと同様にステータスレジスタへの初期化処理ではif-else-endifを使って
MIPS_CNMIPS、CPU_RMI・CPU_NLM、それ以外の三つのパターン分けがされています。

セットしているものとクリアしているものを一覧表にしてみましょう。

まずは、セットしているもの。
パターンCU2CU1CU0PXKXUXSXBEV
MIPS_CNMIPS
CPU_RMI, CPU_NLM 
other 
マジックナンバーでもセットしていたCU0をセットしているのがありますね。

まず、CNMIPSはmips64なのでちょっと関係なさそうです。次に、RMI(Raza Microelectronics, Inc)とNLM(Netlogic Microsystems)はどちらもAtherosじゃないですね。うーん、AtherosでセットしていてくれればFreeBSDと同じだと安心できたのですが。

最後のotherはCU1つまりFPUを有効にしています。ただし、MIPS32 24kcのばあいFPUは存在しないので無視される、といったところでしょうか。Atherosの場合もこのルートに入るのでCU0はセットしていないようです。

つぎは、クリアしているもの。
パターンBEVDESRERLEXLIECU2
MIPS_CNMIPS
CPU_RMI, CPU_NLM 
otherBEVとSRを保持してすべてクリア
AtherosはotherのルートなのでCU0はクリアされてしうまうようです。さらにERLもクリアしちゃってます。

つまり、FreeBSDではマジックナンバーに相当するフィールドは何も同じところはなかったということになります。

整理してみよう

ステータスレジスタの状態をまとめると次のようになります。
OSステータスレジスタ結果
素のNetBSDBEV=保持, 他すべてクリアハング
マジックナンバーCU0=1, ERL=1,他すべてクリア動く
FreeBSDCU1=1, BEV=保持, SR=保持, 他すべてクリアやったことない
BEVを保持している部分に共通点は見られますが見事にバラバラです。

なお、CU1へのアクセスはFPUのないMIPS32 24Kcでは無視されます。

したがって、素のNetBSDとFreeBSDの違いは、SRを保持するか否か、といえるのではないか、という気がしてきました。FreeBSDではAR9331は健やかに動いているように見えるので、もしかしたらSRを保持すれば動くのかもしれません。

一方で、やはりu-bootのマジックナンバーだけが異彩を放っています。

まとめ

今回は時間切れでここまでしかわかりませんでした。

NetBSDでBEVとSRを保持するとどうなるか、そもそも処理に入る前のステータスレジスタの値はどうなっているのか、など追加の調査をしてみようかと思います。

当時は、カーネルをシリアル転送するだけで疲れ果てていたのですが、ネットワークブートができるようになった今では気軽に試せるようになったので、じっくり取り組んでみようかと思います。

NetBSD/evbarm on pcDuino3 Nano
2014/12/22(月) 20:40 NetBSD はてブ情報 はてブに登録 はてブ数

この記事はNetBSD Advent Calendar 2014の22日目の記事です。

Maker Faire Tokyo 2014で購入した pcDuino3 NanoでNetBSD/evbarmを動かしてみました。会場では4,500円で売られており、オマケでアクリル板のケースを付けてもらいました。

秋月電子では6,480円で売っているようなので、けっこうお得に入手したかもしれません。

pcDuino3 Nanoの基本スペック

まずはスペックです。AllwinnerのA20を積んだシングルボードコンピュータです。4,500円とは思えない豊富なインタフェースですね。
CPUAllWinner A20 SoC, 1GHz ARM Cortex A7 Dual Core
GPUOpenGL ES2.0, OpenVG 1.1, Mali 400 Dual Core
DRAM1GB
Onboard Storage4GB Flash, microSD card (TF) slot for up to 32GB
Video OutputHDMI 1.4 with HDCP support
Network interfaceEthernet 10M/100M/1Gbps
Audio out3.5mm analog audio interface
IRIR reciever
SATASATA Host socket
CameraMIPI
USB2 x USB host, 1x USB OTG
Power5V, 2000mA
Source : LinkSprite pcDuino3 Nano

シリアルコンソール

なにはなくともシリアルコンソールです。写真のようにRx, Gnd, Txが出ています。

pcduino3nanoUART.jpg

通信するためのシリアルポート設定は次のとおりです。
  • baud rate : 112500
  • data : 8bit
  • parity : none
  • stop bit : 1 bit
  • flow control : none
Explanation of headers of pcDuino3 nano -
http://learn.linksprite.com/pcduino/schematics/explanation-of-headers-of-pcduino3-nano/

ブートローダはu-boot

NetBSDカーネルを読ませるための重要な要素であるところのブートローダ。u-bootが使われています。

コマンド一覧を見てみましょう。
sunxi#help
?       - alias for 'help'
base    - print or set address offset
boot    - boot default, i.e., run 'bootcmd'
boota   - boota   - boot android bootimg from memory

bootd   - boot default, i.e., run 'bootcmd'
bootm   - boot application image from memory
cmp     - memory compare
cp      - memory copy
crc32   - checksum calculation
env     - environment handling commands
exit    - exit script
false   - do nothing, unsuccessfully
fastboot- fastboot- use USB Fastboot protocol

fatdown - download data to a dos filesystem
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
go      - start application at address 'addr'
help    - print command description/usage
key_test- Test the key value and dump key registers
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing address)
mmc     - MMC sub system
mmcinfo - display MMC info
mtest   - simple RAM read/write test
mw      - memory write (fill)
nand    - NAND sub-system
nboot   - boot from NAND device
nm      - memory modify (constant address)
printenv- print environment variables
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv  - set environment variables
showvar - print local hushshell variables
sunxi_flash- sunxi_flash sub-system
test    - minimal test like /bin/sh
true    - do nothing, successfully
version - print monitor, compiler and linker version
FATファイルシステムを読むfatload, fatlsあたりはありますね。一方で、ネットワーク経由でファイルを取ってきてメモリに展開するtftp関連のコマンドはないようです。うーん、ネットワーク経由が使えないとなると、SDHCやらUSBメモリの抜き差しが多発して面倒なんですよね。

u-bootでSDHCにアクセスできない

どうやらu-bootからSDHCが見えていないようです。
SDHCからカーネルを読んでくるという手は使えなさそうです。
sunxi#mmc list
No MMC device available
sunxi#mmc info
No MMC device available
sunxi#mmc dev 0 1
No MMC device available
sunxi#fatls mmc 0:1

** Unable to use mmc 0:1 for fatls **
sunxi#

NAND flashにはアクセスできる

幸運なことにNAND flashにはu-bootからアクセスできます。
つまり、NAND flashにNetBSDカーネルを置けば、u-bootからロードできるというわけです。
sunxi#fatls nand 0
   124256   boot_signature.axf
   344813   font24.sft
            os_show/
  6498840   uimage
   121580   boot.axf
   357443   font32.sft
   222916   drv_de.drv
   287936   sprite.axf
   232872   drv_hdmi.drv
   226316   prvt.axf
   222900   drv_de_lvds.drv
    50660   script.bin
   121984   boot_lvds.axf
            linux/
      121   boot.ini
      512   magic.bin

15 file(s), 2 dir(s)

SDHCは壊れているわけではない

SDHCがハード的に壊れているのかと思ったのですが、どうやらそうではないようです。というのも、Linuxを起動するとSDHCには問題なくアクセスできるのです。

ということで、SDHCに格納したNetBSDカーネルをNAND flashにコピーしてやれば、u-bootからNAND flashを介してNetBSDカーネルを起動できるはずです。

まず、PCなどで(買ったときそのままの)MS-DOSフォーマットされたSDHCカードを用意し、NetBSDカーネルをコピーします。この際、コピーするのはbinary形式のnetbsd.binとなります。今回は、ftp.jaist.ac.jpからダウンロードした201412190900ZなNetBSD-currentを使いました。
root@ubuntu:~# mount -t msdos /dev/nanda /mnt
root@ubuntu:~# ls /mnt
boot.axf      boot_s~1.axf  drv_hdmi.drv  linux      prvt.axf    uimage
boot.ini      drv_de.drv    font24.sft    magic.bin  script.bin
boot_l~1.axf  drv_de~1.drv  font32.sft    os_show    sprite.axf
root@ubuntu:~# mount | grep mmcblk
/dev/mmcblk0p1 on /media/3465-6634 type vfat (rw,nosuid,nodev,uid=1001,gid=1002,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
root@ubuntu:~# cp /media/3465-6634/netbsd.bin  /mnt/netbsd.bin
root@ubuntu:~# sync;sync;sync; reboot
コピーが終わったら、一旦リブートしてu-bootに戻ります。
u-boot上でNAND flashからNetBSDカーネルをロードします。
sunxi#fatls nand 0
   124256   boot_signature.axf
   344813   font24.sft
            os_show/
  6498840   uimage
   121580   boot.axf
   357443   font32.sft
   222916   drv_de.drv
   287936   sprite.axf
   232872   drv_hdmi.drv
   226316   prvt.axf
   222900   drv_de_lvds.drv
    50660   script.bin
   121984   boot_lvds.axf
            linux/
      121   boot.ini
      512   magic.bin
  5286336   netbsd.bin

15 file(s), 2 dir(s)

sunxi#fatload nand 0 0x40007800 netbsd.bin
reading netbsd.bin

5286336 bytes read
ちょっとまって! 0x40007800って何ですか? と思った人もいるかもしれません。

Allwinnerの設定ファイルevbarm/conf/std.awinを見て、ここかなー、って感じですね。
     26 makeoptions	KERNEL_BASE_PHYS="0x40007800"
     27 makeoptions	KERNEL_BASE_VIRT="0x80007800"

いよいよ起動!

ロードしたNetBSDカーネルの先頭アドレスである0x40007800から実行します。
sunxi#go 0x40007800
## Starting application at 0x40007800 ...
Early console started
awin_bootstrap: warning: cpu1 failed to hatch
[ Kernel symbol table missing! ]
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.3 (CUBIEBOARD.201412190900Z) #0: Fri Dec 19 10:33:36 UTC 2014
        builds@b47.netbsd.org:/home/builds/ab/HEAD/evbarm-earm/201412190900Z-obj/home/source/ab/HEAD/src/sys/arch/evbarm/compile/CUBIEBOARD
total memory = 1024 MB
avail memory = 1008 MB
sysctl_createv: sysctl_create(machine_arch) returned 17
mainbus0 (root)
cpu0 at mainbus0 core 0: 912 MHz Cortex-A7 r0p4 (Cortex V7A core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB/32B 2-way L1 VIPT Instruction cache
cpu0: 32KB/64B 4-way write-back-locking-C L1 PIPT Data cache
cpu0: 256KB/64B 8-way write-through L2 PIPT Unified cache
vfp0 at cpu0: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
cpu1 at mainbus0 core 1: disabled (unresponsive)
armperiph0 at mainbus0
armgic0 at armperiph0: Generic Interrupt Controller, 160 sources (151 valid)
armgic0: 32 Priorities, 128 SPIs, 7 PPIs, 16 SGIs
armgtmr0 at armperiph0: ARMv7 Generic 64-bit Timer (24000 kHz)
armgtmr0: interrupting on irq 27
awinio0 at mainbus0: A20 (0x1651)

awingpio0 at awinio0
awindma0 at awinio0: DMA
awindma0: interrupting on irq 59
awincnt0 at awinio0
com0 at awinio0 port : ns16550a, working fifo
com0: console
awindebe0 at awinio0 port 0: Display Engine Backend (BE0)
awintcon0 at awinio0 port 0: LCD/TV timing controller (TCON0)
awinhdmi0 at awinio0: HDMI 1.3
awinwdt0 at awinio0: default period is 10 seconds
awinrtc0 at awinio0: RTC
awinusb0 at awinio0 port 0
ohci0 at awinusb0: OHCI USB controller
ohci0: OHCI version 1.0
usb0 at ohci0: USB revision 1.0
ohci0: interrupting on irq 96
ehci0 at awinusb0: EHCI USB controller
ehci0: companion controller, 1 port each: ohci0
usb1 at ehci0: USB revision 2.0
ehci0: interrupting on irq 71
awinusb1 at awinio0 port 1
ohci1 at awinusb1: OHCI USB controller
ohci1: OHCI version 1.0
usb2 at ohci1: USB revision 1.0
ohci1: interrupting on irq 97
ehci1 at awinusb1: EHCI USB controller
ehci1: companion controller, 1 port each: ohci1
usb3 at ehci1: USB revision 2.0
ehci1: interrupting on irq 72
motg0 at awinio0: OTG
motg0: interrupting at irq 70
motg0: no restrict gpio found
motg0: Dynamic FIFO sizing detected, assuming 16Kbytes of FIFO RAM
usb4 at motg0: USB revision 2.0
awinmmc0 at awinio0 port 0: SD3.0 (DMA)
awinmmc0: interrupting at irq 64
ahcisata0 at awinio0: AHCI SATA controller
ahcisata0: interrupting on irq 88
ahcisata0: AHCI revision 1.10, 1 port, 32 slots, CAP 0x6724ff80<CCCS,PSC,SSC,PMD,SAM,ISS=0x2=Gen2,SCLO,SAL,SALP,SSNTF,SNCQ>
atabus0 at ahcisata0 channel 0
awiniic0 at awinio0 port 0: Marvell TWSI controller
awiniic0: interrupting on irq 39
iic0 at awiniic0: I2C bus
awge0 at awinio0: Gigabit Ethernet Controller
awge0: interrupting on irq 117
awge0: reset timed out
awinac0 at awinio0: CODEC
audio0 at awinac0: full duplex, playback, capture, mmap, independent
awinhdmiaudio0 at awinio0: HDMI 1.3
audio1 at awinhdmiaudio0: half duplex, playback, mmap
awinnand0 at awinio0
awinir0 at awinio0 port 0: IR
awinir0: interrupting on irq 37
cir0 at awinir0
gpio0 at awingpio0: 18 pins
gpio1 at awingpio0: 1 pins
gpio2 at awingpio0: 28 pins
gpio3 at awingpio0: 12 pins
gpio4 at awingpio0: 2 pins
gpio5 at awingpio0: 12 pins
gpio6 at awingpio0: 28 pins
gpio7 at awingpio0: 22 pins
sdmmc0 at awinmmc0
uhub0 at usb0: Allwinner OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1 at usb1: Allwinner EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub2 at usb2: Allwinner OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub3 at usb3: Allwinner EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub4 at usb4: Mentor Graphics MOTG root hub, class 9/0, rev 1.00/1.00, addr 1
boot device: <unknown>
root device:
use one of: awge0 ddb halt reboot
root device:
見事に起動です!

めちゃくちゃ遅い?

SDHCカードが刺しっぱなしになっていませんか? SDHCカードを取り除くとまともな速度で動くはずです。

もしSDHCカードを刺しっぱなしにしていると、次のようなログが表示され続けるはずです。
awinmmc0: timeout updating clock
sdmmc0: couldn't supply clock

マルチユーザモード

SDHCは残念な感じですが、USBデバイスは問題ありません。

ということで、USBメモリ上にルートファイルシステムを展開して、マルチユーザモードで起動してみます。USBメモリに配布物(base.tgz, etc.tgz, modules.tgzなどお好み)を展開し、デバイスファイルを作ったりfstabを書いたりと、NetBSDとしては共通のプロセスを実行します。

このあたりはfurandon_pigさんがNetBSD Advent Calendar 2014 16日目の記事に詳しく解説されているのでそちらをご参照ください。

さて、マルチユーザでの起動です。
sunxi#go 0x40007800
## Starting application at 0x40007800 ...
Early console started
awin_bootstrap: warning: cpu1 failed to hatch
[ Kernel symbol table missing! ]
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.3 (CUBIEBOARD.201412190900Z) #0: Fri Dec 19 10:33:36 UTC 2014
        builds@b47.netbsd.org:/home/builds/ab/HEAD/evbarm-earm/201412190900Z-obj/home/source/ab/HEAD/src/sys/arch/evbarm/compile/CUBIEBOARD
total memory = 1024 MB
avail memory = 1008 MB
sysctl_createv: sysctl_create(machine_arch) returned 17
mainbus0 (root)
cpu0 at mainbus0 core 0: 912 MHz Cortex-A7 r0p4 (Cortex V7A core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB/32B 2-way L1 VIPT Instruction cache
cpu0: 32KB/64B 4-way write-back-locking-C L1 PIPT Data cache
cpu0: 256KB/64B 8-way write-through L2 PIPT Unified cache
vfp0 at cpu0: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
cpu1 at mainbus0 core 1: disabled (unresponsive)
armperiph0 at mainbus0
armgic0 at armperiph0: Generic Interrupt Controller, 160 sources (151 valid)
armgic0: 32 Priorities, 128 SPIs, 7 PPIs, 16 SGIs
armgtmr0 at armperiph0: ARMv7 Generic 64-bit Timer (24000 kHz)
armgtmr0: interrupting on irq 27
awinio0 at mainbus0: A20 (0x1651)

awingpio0 at awinio0
awindma0 at awinio0: DMA
awindma0: interrupting on irq 59
awincnt0 at awinio0
com0 at awinio0 port : ns16550a, working fifo
com0: console
awindebe0 at awinio0 port 0: Display Engine Backend (BE0)
awintcon0 at awinio0 port 0: LCD/TV timing controller (TCON0)
awinhdmi0 at awinio0: HDMI 1.3
awinwdt0 at awinio0: default period is 10 seconds
awinrtc0 at awinio0: RTC
awinusb0 at awinio0 port 0
ohci0 at awinusb0: OHCI USB controller
ohci0: OHCI version 1.0
usb0 at ohci0: USB revision 1.0
ohci0: interrupting on irq 96
ehci0 at awinusb0: EHCI USB controller
ehci0: companion controller, 1 port each: ohci0
usb1 at ehci0: USB revision 2.0
ehci0: interrupting on irq 71
awinusb1 at awinio0 port 1
ohci1 at awinusb1: OHCI USB controller
ohci1: OHCI version 1.0
usb2 at ohci1: USB revision 1.0
ohci1: interrupting on irq 97
ehci1 at awinusb1: EHCI USB controller
ehci1: companion controller, 1 port each: ohci1
usb3 at ehci1: USB revision 2.0
ehci1: interrupting on irq 72
motg0 at awinio0: OTG
motg0: interrupting at irq 70
motg0: no restrict gpio found
motg0: Dynamic FIFO sizing detected, assuming 16Kbytes of FIFO RAM
usb4 at motg0: USB revision 2.0
awinmmc0 at awinio0 port 0: SD3.0 (DMA)
awinmmc0: interrupting at irq 64
ahcisata0 at awinio0: AHCI SATA controller
ahcisata0: interrupting on irq 88
ahcisata0: AHCI revision 1.10, 1 port, 32 slots, CAP 0x6724ff80<CCCS,PSC,SSC,PMD,SAM,ISS=0x2=Gen2,SCLO,SAL,SALP,SSNTF,SNCQ>
atabus0 at ahcisata0 channel 0
awiniic0 at awinio0 port 0: Marvell TWSI controller
awiniic0: interrupting on irq 39
iic0 at awiniic0: I2C bus
awge0 at awinio0: Gigabit Ethernet Controller
awge0: interrupting on irq 117
awge0: reset timed out
awinac0 at awinio0: CODEC
audio0 at awinac0: full duplex, playback, capture, mmap, independent
awinhdmiaudio0 at awinio0: HDMI 1.3
audio1 at awinhdmiaudio0: half duplex, playback, mmap
awinnand0 at awinio0
awinir0 at awinio0 port 0: IR
awinir0: interrupting on irq 37
cir0 at awinir0
gpio0 at awingpio0: 18 pins
gpio1 at awingpio0: 1 pins
gpio2 at awingpio0: 28 pins
gpio3 at awingpio0: 12 pins
gpio4 at awingpio0: 2 pins
gpio5 at awingpio0: 12 pins
gpio6 at awingpio0: 28 pins
gpio7 at awingpio0: 22 pins
sdmmc0 at awinmmc0
uhub0 at usb0: Allwinner OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1 at usb1: Allwinner EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub2 at usb2: Allwinner OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub3 at usb3: Allwinner EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub4 at usb4: Mentor Graphics MOTG root hub, class 9/0, rev 1.00/1.00, addr 1
umass0 at uhub3 port 1 configuration 1 interface 0
umass0: JetFlash Mass Storage Device, rev 2.10/10.75, addr 2
scsibus0 at umass0: 2 targets, 1 lun per target
sd0 at scsibus0 target 0 lun 0: <JetFlash, Transcend 8GB, 1.00> disk removable
sd0: fabricating a geometry
sd0: 7536 MB, 7536 cyl, 64 head, 32 sec, 512 bytes/sect x 15433728 sectors
sd0: fabricating a geometry
sd0: mbr partition exceeds disk size
boot device: <unknown>
root device: sd0a
dump device (default sd0b):
file system (default generic): ffs
root on sd0a dumps on sd0b
kern.module.path=/stand/evbarm/7.99.3/modules
init path (default /sbin/init):
init: trying /sbin/init
Sun Dec 21 19:32:27 UTC 2014
Not checking /: fs_passno = 0 in /etc/fstab
Starting file system checks:
random_seed: /var/db/entropy-file: Not present
Setting tty flags.
Setting sysctl variables:
ddb.onpanic: 1 -> 0
Starting network.
Hostname: pcduino
IPv6 mode: host
Configuring network interfaces:.
Adding interface aliases:.
Waiting for DAD to complete for statically configured addresses...
Building databases: dev, utmp, utmpx.
Starting syslogd.
Mounting all file systems...
Clearing temporary files.
Updating fontconfig cache: done.
Creating a.out runtime link editor directory cache.
Checking quotas: done.
Setting securelevel: kern.securelevel: 0 -> 1
/etc/rc: WARNING: No swap space configured!
/etc/rc.d/swap2 exited with code 1
Starting virecover.
Checking for core dump...
savecore: /dev/rsd0b: Device not configured
Dec 21 19:32:37 pcduino savecore: /dev/rsd0b: Device not configured
Starting local daemons:.
Updating motd.
Starting inetd.
Starting cron.
The following components reported failures:
    /etc/rc.d/swap2
See /var/run/rc.log for more information.
Sun Dec 21 19:32:46 UTC 2014

NetBSD/evbarm (pcduino) (console)

login: root
Dec 21 19:32:50 pcduino login: ROOT LOGIN (root) on tty console
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.3 (CUBIEBOARD.201412190900Z) #0: Fri Dec 19 10:33:36 UTC 2014

Welcome to NetBSD!

This system is running a development snapshot of the NetBSD operating system,
also known as NetBSD-current.  It is very possible that it has serious bugs,
regressions, broken features or other problems.  Please bear this in mind
and use the system with care.

You are encouraged to test this version as thoroughly as possible.  Should you
encounter any problem, please report it back to the development team using the
send-pr(1) utility (requires a working MTA).  If yours is not properly set up,
use the web interface at: http://www.NetBSD.org/support/send-pr.html

Thank you for helping us test and improve NetBSD.

Terminal type is vt100.
We recommend that you create a non-root account and use su(1) for root access.
pcduino# ls -l
total 10
-rw-------  1 root  wheel     0 Dec 21 18:59 .Xauthority
-r--r--r--  2 root  wheel  1295 Dec 19 10:24 .cshrc
-rw-------  1 root  wheel    59 Dec 19 10:24 .klogin
-rw-r--r--  1 root  wheel   244 Dec 19 10:24 .login
-r--r--r--  2 root  wheel   847 Dec 19 10:24 .profile
-rw-r--r--  1 root  wheel   221 Dec 19 10:24 .shrc
pcduino# uname -a
NetBSD pcduino 7.99.3 NetBSD 7.99.3 (CUBIEBOARD.201412190900Z) #0: Fri Dec 19 10:33:36 UTC 2014  builds@b47.netbsd.org:/home/builds/ab/HEAD/evbarm-earm/201412190900Z-obj/home/source/ab/HEAD/src/sys/arch/evbarm/compile/CUBIEBOARD evbarm
pcduino# mount
/dev/sd0a on / type ffs (local)
kernfs on /kern type kernfs (local)
ptyfs on /dev/pts type ptyfs (local)
pcduino# ps auxww
USER     PID %CPU %MEM  VSZ  RSS TTY   STAT STARTED    TIME COMMAND
root       0  0.0  0.8    0 8248 ?     DKl   7:32PM 0:00.20 [system]
root       1  0.0  0.1 4008 1344 ?     Is    7:32PM 0:00.97 init
root     502  0.0  0.2 6776 2032 ?     Ss    7:32PM 0:00.03 /usr/sbin/syslogd -s
root    1373  0.0  0.1 4120 1136 ?     Is    7:32PM 0:00.00 /usr/sbin/inetd -l
postfix 1470  0.0  0.3 9896 3312 ?     I     7:32PM 0:00.05 pickup -l -t unix -u
root    1540  0.0  0.1 3904 1480 ?     Is    7:32PM 0:00.01 /usr/sbin/cron
root    1550  0.0  0.2 9896 2360 ?     Is    7:32PM 0:00.05 /usr/libexec/postfix/master -w
postfix 1563  0.0  0.3 9896 3336 ?     I     7:32PM 0:00.05 qmgr -l -t unix -u
root    1515  0.0  0.3 8928 3152 tty00 Is    7:32PM 0:00.11 login
root    1619  0.0  0.2 4104 1880 tty00 S     7:32PM 0:00.04 -sh
root    1756  0.0  0.1 4112 1376 tty00 O+    7:33PM 0:00.01 ps -auxww
pcduino# shutdown -h now
Shutdown NOW!
shutdown: [pid 41]
pcduino# wall: You have write permission turned off; no reply possible

*** FINAL System shutdown message from root@pcduino ***
System going down IMMEDIATELY


Dec 21 19:33:53 pcduino shutdown: halt by root:

System shutdown time has arrived

About to run shutdown hooks...
Stopping cron.
Stopping inetd.
Saved entropy to /var/db/entropy-file.
Removing block-type swap devices
Sun Dec 21 19:33:56 UTC 2014

Done running shutdown hooks.
Dec 21 19:34:01 syncing disks... done
unmounting file systems...
unmounting done
The operating system has halted.
Please press any key to reboot.
rebooting...

まとめ

ここ最近のNetBSDにおけるAllwinnerのサポートの充実の恩恵をバッチリ享受して、大きな苦労なくNetBSDが動いています。

一方、Gigabit NICやSDHCなど動いておらず、まだまだやることはありそうです。あ、あとマルチプロセッサが動いてませんね。

また、HDMIやSATAについては試していません。このあたりも動いてくれるとかなり楽しそうですね。

pcDuino3 Nano de NetBSD/evbarm
2014/12/15(月) 20:48 NetBSD はてブ情報 はてブに登録 はてブ数

pcDuino3 Nano is a single board computer.

CPUAllWinner A20 SoC, 1GHz ARM Cortex A7 Dual Core
GPUOpenGL ES2.0, OpenVG 1.1, Mali 400 Dual Core
DRAM1GB
Onboard Storage4GB Flash, microSD card (TF) slot for up to 32GB
Video OutputHDMI 1.4 with HDCP support
Network interfaceEthernet 10M/100M/1Gbps
Audio out3.5mm analog audio interface
IRIR reciever
SATASATA Host socket
CameraMIPI
USB2 x USB host, 1x USB OTG
Power5V, 2000mA
Source : LinkSprite pcDuino3 Nano

The pin of serial connector.

pcduino3nanoUART.jpg

The setting of serial port is as below.
  • baud rate : 112500
  • data : 8bit
  • parity : none
  • stop bit : 1 bit
  • flow control : none
Explanation of headers of pcDuino3 nano -
http://learn.linksprite.com/pcduino/schematics/explanation-of-headers-of-pcduino3-nano/

u-boot menu

sunxi#help
?       - alias for 'help'
base    - print or set address offset
boot    - boot default, i.e., run 'bootcmd'
boota   - boota   - boot android bootimg from memory

bootd   - boot default, i.e., run 'bootcmd'
bootm   - boot application image from memory
cmp     - memory compare
cp      - memory copy
crc32   - checksum calculation
env     - environment handling commands
exit    - exit script
false   - do nothing, unsuccessfully
fastboot- fastboot- use USB Fastboot protocol

fatdown - download data to a dos filesystem
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
go      - start application at address 'addr'
help    - print command description/usage
key_test- Test the key value and dump key registers
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing address)
mmc     - MMC sub system
mmcinfo - display MMC info
mtest   - simple RAM read/write test
mw      - memory write (fill)
nand    - NAND sub-system
nboot   - boot from NAND device
nm      - memory modify (constant address)
printenv- print environment variables
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv  - set environment variables
showvar - print local hushshell variables
sunxi_flash- sunxi_flash sub-system
test    - minimal test like /bin/sh
true    - do nothing, successfully
version - print monitor, compiler and linker version

Can not access SDHC on u-boot

SDHC did not detected.
I gave up that to load the kernel from SDHC.
sunxi#mmc list
No MMC device available
sunxi#mmc info
No MMC device available
sunxi#mmc dev 0 1
No MMC device available
sunxi#fatls mmc 0:1

** Unable to use mmc 0:1 for fatls **
sunxi#

Can access NAND flash on u-boot!

Fortunately, NAND flash is fine!
I decided to load the kernel from NAND flash.
sunxi#fatls nand 0
   124256   boot_signature.axf
   344813   font24.sft
            os_show/
  6498840   uimage
   121580   boot.axf
   357443   font32.sft
   222916   drv_de.drv
   287936   sprite.axf
   232872   drv_hdmi.drv
   226316   prvt.axf
   222900   drv_de_lvds.drv
    50660   script.bin
   121984   boot_lvds.axf
            linux/
      121   boot.ini
      512   magic.bin

15 file(s), 2 dir(s)

But SDHC is not broken.

Because It works on Linux.

So, I will copy the kernel from SDHC to NAND on Linux. And, I will load the kernel from NAND on u-boot.

I prepared a SDHC card of MS-DOS format on My PC. And, I copied the kernel of CUBIEBOARD2 to SDHC card.
The Name of kernel is netbsd.bin. I used to download the NetBSD-current of 201412190900Z from ftp.jaist.ac.jp.
root@ubuntu:~# mount -t msdos /dev/nanda /mnt
root@ubuntu:~# ls /mnt
boot.axf      boot_s~1.axf  drv_hdmi.drv  linux      prvt.axf    uimage
boot.ini      drv_de.drv    font24.sft    magic.bin  script.bin
boot_l~1.axf  drv_de~1.drv  font32.sft    os_show    sprite.axf
root@ubuntu:~# mount | grep mmcblk
/dev/mmcblk0p1 on /media/3465-6634 type vfat (rw,nosuid,nodev,uid=1001,gid=1002,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
root@ubuntu:~# cp /media/3465-6634/netbsd.bin  /mnt/netbsd.bin
root@ubuntu:~# sync;sync;sync; reboot
On u-boot, Load the kernel from NAND flash.
sunxi#fatls nand 0
   124256   boot_signature.axf
   344813   font24.sft
            os_show/
  6498840   uimage
   121580   boot.axf
   357443   font32.sft
   222916   drv_de.drv
   287936   sprite.axf
   232872   drv_hdmi.drv
   226316   prvt.axf
   222900   drv_de_lvds.drv
    50660   script.bin
   121984   boot_lvds.axf
            linux/
      121   boot.ini
      512   magic.bin
  5286336   netbsd.bin

15 file(s), 2 dir(s)

sunxi#fatload nand 0 0x40007800 netbsd.bin
reading netbsd.bin

5286336 bytes read
Why address is0x40007800?

See evbarm/conf/std.awin.
     26 makeoptions	KERNEL_BASE_PHYS="0x40007800"
     27 makeoptions	KERNEL_BASE_VIRT="0x80007800"

Let's go!

sunxi#go 0x40007800
## Starting application at 0x40007800 ...
Early console started
awin_bootstrap: warning: cpu1 failed to hatch
[ Kernel symbol table missing! ]
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.3 (CUBIEBOARD.201412190900Z) #0: Fri Dec 19 10:33:36 UTC 2014
        builds@b47.netbsd.org:/home/builds/ab/HEAD/evbarm-earm/201412190900Z-obj/home/source/ab/HEAD/src/sys/arch/evbarm/compile/CUBIEBOARD
total memory = 1024 MB
avail memory = 1008 MB
sysctl_createv: sysctl_create(machine_arch) returned 17
mainbus0 (root)
cpu0 at mainbus0 core 0: 912 MHz Cortex-A7 r0p4 (Cortex V7A core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB/32B 2-way L1 VIPT Instruction cache
cpu0: 32KB/64B 4-way write-back-locking-C L1 PIPT Data cache
cpu0: 256KB/64B 8-way write-through L2 PIPT Unified cache
vfp0 at cpu0: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
cpu1 at mainbus0 core 1: disabled (unresponsive)
armperiph0 at mainbus0
armgic0 at armperiph0: Generic Interrupt Controller, 160 sources (151 valid)
armgic0: 32 Priorities, 128 SPIs, 7 PPIs, 16 SGIs
armgtmr0 at armperiph0: ARMv7 Generic 64-bit Timer (24000 kHz)
armgtmr0: interrupting on irq 27
awinio0 at mainbus0: A20 (0x1651)

awingpio0 at awinio0
awindma0 at awinio0: DMA
awindma0: interrupting on irq 59
awincnt0 at awinio0
com0 at awinio0 port : ns16550a, working fifo
com0: console
awindebe0 at awinio0 port 0: Display Engine Backend (BE0)
awintcon0 at awinio0 port 0: LCD/TV timing controller (TCON0)
awinhdmi0 at awinio0: HDMI 1.3
awinwdt0 at awinio0: default period is 10 seconds
awinrtc0 at awinio0: RTC
awinusb0 at awinio0 port 0
ohci0 at awinusb0: OHCI USB controller
ohci0: OHCI version 1.0
usb0 at ohci0: USB revision 1.0
ohci0: interrupting on irq 96
ehci0 at awinusb0: EHCI USB controller
ehci0: companion controller, 1 port each: ohci0
usb1 at ehci0: USB revision 2.0
ehci0: interrupting on irq 71
awinusb1 at awinio0 port 1
ohci1 at awinusb1: OHCI USB controller
ohci1: OHCI version 1.0
usb2 at ohci1: USB revision 1.0
ohci1: interrupting on irq 97
ehci1 at awinusb1: EHCI USB controller
ehci1: companion controller, 1 port each: ohci1
usb3 at ehci1: USB revision 2.0
ehci1: interrupting on irq 72
motg0 at awinio0: OTG
motg0: interrupting at irq 70
motg0: no restrict gpio found
motg0: Dynamic FIFO sizing detected, assuming 16Kbytes of FIFO RAM
usb4 at motg0: USB revision 2.0
awinmmc0 at awinio0 port 0: SD3.0 (DMA)
awinmmc0: interrupting at irq 64
ahcisata0 at awinio0: AHCI SATA controller
ahcisata0: interrupting on irq 88
ahcisata0: AHCI revision 1.10, 1 port, 32 slots, CAP 0x6724ff80<CCCS,PSC,SSC,PMD,SAM,ISS=0x2=Gen2,SCLO,SAL,SALP,SSNTF,SNCQ>
atabus0 at ahcisata0 channel 0
awiniic0 at awinio0 port 0: Marvell TWSI controller
awiniic0: interrupting on irq 39
iic0 at awiniic0: I2C bus
awge0 at awinio0: Gigabit Ethernet Controller
awge0: interrupting on irq 117
awge0: reset timed out
awinac0 at awinio0: CODEC
audio0 at awinac0: full duplex, playback, capture, mmap, independent
awinhdmiaudio0 at awinio0: HDMI 1.3
audio1 at awinhdmiaudio0: half duplex, playback, mmap
awinnand0 at awinio0
awinir0 at awinio0 port 0: IR
awinir0: interrupting on irq 37
cir0 at awinir0
gpio0 at awingpio0: 18 pins
gpio1 at awingpio0: 1 pins
gpio2 at awingpio0: 28 pins
gpio3 at awingpio0: 12 pins
gpio4 at awingpio0: 2 pins
gpio5 at awingpio0: 12 pins
gpio6 at awingpio0: 28 pins
gpio7 at awingpio0: 22 pins
sdmmc0 at awinmmc0
uhub0 at usb0: Allwinner OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1 at usb1: Allwinner EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub2 at usb2: Allwinner OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub3 at usb3: Allwinner EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub4 at usb4: Mentor Graphics MOTG root hub, class 9/0, rev 1.00/1.00, addr 1
boot device: <unknown>
root device:
use one of: awge0 ddb halt reboot
root device:
Awesome!

Very slow?

The cause is SDHC card.
Should remove SDHC card.

If you insert SDHC card. will continue to display the following message.
awinmmc0: timeout updating clock
sdmmc0: couldn't supply clock

Multi user mode

USB device is fine.
On the USB memory to build a root file system, let's start with multi-user.
sunxi#go 0x40007800
## Starting application at 0x40007800 ...
Early console started
awin_bootstrap: warning: cpu1 failed to hatch
[ Kernel symbol table missing! ]
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.3 (CUBIEBOARD.201412190900Z) #0: Fri Dec 19 10:33:36 UTC 2014
        builds@b47.netbsd.org:/home/builds/ab/HEAD/evbarm-earm/201412190900Z-obj/home/source/ab/HEAD/src/sys/arch/evbarm/compile/CUBIEBOARD
total memory = 1024 MB
avail memory = 1008 MB
sysctl_createv: sysctl_create(machine_arch) returned 17
mainbus0 (root)
cpu0 at mainbus0 core 0: 912 MHz Cortex-A7 r0p4 (Cortex V7A core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB/32B 2-way L1 VIPT Instruction cache
cpu0: 32KB/64B 4-way write-back-locking-C L1 PIPT Data cache
cpu0: 256KB/64B 8-way write-through L2 PIPT Unified cache
vfp0 at cpu0: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
cpu1 at mainbus0 core 1: disabled (unresponsive)
armperiph0 at mainbus0
armgic0 at armperiph0: Generic Interrupt Controller, 160 sources (151 valid)
armgic0: 32 Priorities, 128 SPIs, 7 PPIs, 16 SGIs
armgtmr0 at armperiph0: ARMv7 Generic 64-bit Timer (24000 kHz)
armgtmr0: interrupting on irq 27
awinio0 at mainbus0: A20 (0x1651)

awingpio0 at awinio0
awindma0 at awinio0: DMA
awindma0: interrupting on irq 59
awincnt0 at awinio0
com0 at awinio0 port : ns16550a, working fifo
com0: console
awindebe0 at awinio0 port 0: Display Engine Backend (BE0)
awintcon0 at awinio0 port 0: LCD/TV timing controller (TCON0)
awinhdmi0 at awinio0: HDMI 1.3
awinwdt0 at awinio0: default period is 10 seconds
awinrtc0 at awinio0: RTC
awinusb0 at awinio0 port 0
ohci0 at awinusb0: OHCI USB controller
ohci0: OHCI version 1.0
usb0 at ohci0: USB revision 1.0
ohci0: interrupting on irq 96
ehci0 at awinusb0: EHCI USB controller
ehci0: companion controller, 1 port each: ohci0
usb1 at ehci0: USB revision 2.0
ehci0: interrupting on irq 71
awinusb1 at awinio0 port 1
ohci1 at awinusb1: OHCI USB controller
ohci1: OHCI version 1.0
usb2 at ohci1: USB revision 1.0
ohci1: interrupting on irq 97
ehci1 at awinusb1: EHCI USB controller
ehci1: companion controller, 1 port each: ohci1
usb3 at ehci1: USB revision 2.0
ehci1: interrupting on irq 72
motg0 at awinio0: OTG
motg0: interrupting at irq 70
motg0: no restrict gpio found
motg0: Dynamic FIFO sizing detected, assuming 16Kbytes of FIFO RAM
usb4 at motg0: USB revision 2.0
awinmmc0 at awinio0 port 0: SD3.0 (DMA)
awinmmc0: interrupting at irq 64
ahcisata0 at awinio0: AHCI SATA controller
ahcisata0: interrupting on irq 88
ahcisata0: AHCI revision 1.10, 1 port, 32 slots, CAP 0x6724ff80<CCCS,PSC,SSC,PMD,SAM,ISS=0x2=Gen2,SCLO,SAL,SALP,SSNTF,SNCQ>
atabus0 at ahcisata0 channel 0
awiniic0 at awinio0 port 0: Marvell TWSI controller
awiniic0: interrupting on irq 39
iic0 at awiniic0: I2C bus
awge0 at awinio0: Gigabit Ethernet Controller
awge0: interrupting on irq 117
awge0: reset timed out
awinac0 at awinio0: CODEC
audio0 at awinac0: full duplex, playback, capture, mmap, independent
awinhdmiaudio0 at awinio0: HDMI 1.3
audio1 at awinhdmiaudio0: half duplex, playback, mmap
awinnand0 at awinio0
awinir0 at awinio0 port 0: IR
awinir0: interrupting on irq 37
cir0 at awinir0
gpio0 at awingpio0: 18 pins
gpio1 at awingpio0: 1 pins
gpio2 at awingpio0: 28 pins
gpio3 at awingpio0: 12 pins
gpio4 at awingpio0: 2 pins
gpio5 at awingpio0: 12 pins
gpio6 at awingpio0: 28 pins
gpio7 at awingpio0: 22 pins
sdmmc0 at awinmmc0
uhub0 at usb0: Allwinner OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1 at usb1: Allwinner EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub2 at usb2: Allwinner OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub3 at usb3: Allwinner EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub4 at usb4: Mentor Graphics MOTG root hub, class 9/0, rev 1.00/1.00, addr 1
umass0 at uhub3 port 1 configuration 1 interface 0
umass0: JetFlash Mass Storage Device, rev 2.10/10.75, addr 2
scsibus0 at umass0: 2 targets, 1 lun per target
sd0 at scsibus0 target 0 lun 0: <JetFlash, Transcend 8GB, 1.00> disk removable
sd0: fabricating a geometry
sd0: 7536 MB, 7536 cyl, 64 head, 32 sec, 512 bytes/sect x 15433728 sectors
sd0: fabricating a geometry
sd0: mbr partition exceeds disk size
boot device: <unknown>
root device: sd0a
dump device (default sd0b):
file system (default generic): ffs
root on sd0a dumps on sd0b
kern.module.path=/stand/evbarm/7.99.3/modules
init path (default /sbin/init):
init: trying /sbin/init
Sun Dec 21 19:32:27 UTC 2014
Not checking /: fs_passno = 0 in /etc/fstab
Starting file system checks:
random_seed: /var/db/entropy-file: Not present
Setting tty flags.
Setting sysctl variables:
ddb.onpanic: 1 -> 0
Starting network.
Hostname: pcduino
IPv6 mode: host
Configuring network interfaces:.
Adding interface aliases:.
Waiting for DAD to complete for statically configured addresses...
Building databases: dev, utmp, utmpx.
Starting syslogd.
Mounting all file systems...
Clearing temporary files.
Updating fontconfig cache: done.
Creating a.out runtime link editor directory cache.
Checking quotas: done.
Setting securelevel: kern.securelevel: 0 -> 1
/etc/rc: WARNING: No swap space configured!
/etc/rc.d/swap2 exited with code 1
Starting virecover.
Checking for core dump...
savecore: /dev/rsd0b: Device not configured
Dec 21 19:32:37 pcduino savecore: /dev/rsd0b: Device not configured
Starting local daemons:.
Updating motd.
Starting inetd.
Starting cron.
The following components reported failures:
    /etc/rc.d/swap2
See /var/run/rc.log for more information.
Sun Dec 21 19:32:46 UTC 2014

NetBSD/evbarm (pcduino) (console)

login: root
Dec 21 19:32:50 pcduino login: ROOT LOGIN (root) on tty console
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.3 (CUBIEBOARD.201412190900Z) #0: Fri Dec 19 10:33:36 UTC 2014

Welcome to NetBSD!

This system is running a development snapshot of the NetBSD operating system,
also known as NetBSD-current.  It is very possible that it has serious bugs,
regressions, broken features or other problems.  Please bear this in mind
and use the system with care.

You are encouraged to test this version as thoroughly as possible.  Should you
encounter any problem, please report it back to the development team using the
send-pr(1) utility (requires a working MTA).  If yours is not properly set up,
use the web interface at: http://www.NetBSD.org/support/send-pr.html

Thank you for helping us test and improve NetBSD.

Terminal type is vt100.
We recommend that you create a non-root account and use su(1) for root access.
pcduino# ls -l
total 10
-rw-------  1 root  wheel     0 Dec 21 18:59 .Xauthority
-r--r--r--  2 root  wheel  1295 Dec 19 10:24 .cshrc
-rw-------  1 root  wheel    59 Dec 19 10:24 .klogin
-rw-r--r--  1 root  wheel   244 Dec 19 10:24 .login
-r--r--r--  2 root  wheel   847 Dec 19 10:24 .profile
-rw-r--r--  1 root  wheel   221 Dec 19 10:24 .shrc
pcduino# uname -a
NetBSD pcduino 7.99.3 NetBSD 7.99.3 (CUBIEBOARD.201412190900Z) #0: Fri Dec 19 10:33:36 UTC 2014  builds@b47.netbsd.org:/home/builds/ab/HEAD/evbarm-earm/201412190900Z-obj/home/source/ab/HEAD/src/sys/arch/evbarm/compile/CUBIEBOARD evbarm
pcduino# mount
/dev/sd0a on / type ffs (local)
kernfs on /kern type kernfs (local)
ptyfs on /dev/pts type ptyfs (local)
pcduino# ps auxww
USER     PID %CPU %MEM  VSZ  RSS TTY   STAT STARTED    TIME COMMAND
root       0  0.0  0.8    0 8248 ?     DKl   7:32PM 0:00.20 [system]
root       1  0.0  0.1 4008 1344 ?     Is    7:32PM 0:00.97 init
root     502  0.0  0.2 6776 2032 ?     Ss    7:32PM 0:00.03 /usr/sbin/syslogd -s
root    1373  0.0  0.1 4120 1136 ?     Is    7:32PM 0:00.00 /usr/sbin/inetd -l
postfix 1470  0.0  0.3 9896 3312 ?     I     7:32PM 0:00.05 pickup -l -t unix -u
root    1540  0.0  0.1 3904 1480 ?     Is    7:32PM 0:00.01 /usr/sbin/cron
root    1550  0.0  0.2 9896 2360 ?     Is    7:32PM 0:00.05 /usr/libexec/postfix/master -w
postfix 1563  0.0  0.3 9896 3336 ?     I     7:32PM 0:00.05 qmgr -l -t unix -u
root    1515  0.0  0.3 8928 3152 tty00 Is    7:32PM 0:00.11 login
root    1619  0.0  0.2 4104 1880 tty00 S     7:32PM 0:00.04 -sh
root    1756  0.0  0.1 4112 1376 tty00 O+    7:33PM 0:00.01 ps -auxww
pcduino# shutdown -h now
Shutdown NOW!
shutdown: [pid 41]
pcduino# wall: You have write permission turned off; no reply possible

*** FINAL System shutdown message from root@pcduino ***
System going down IMMEDIATELY


Dec 21 19:33:53 pcduino shutdown: halt by root:

System shutdown time has arrived

About to run shutdown hooks...
Stopping cron.
Stopping inetd.
Saved entropy to /var/db/entropy-file.
Removing block-type swap devices
Sun Dec 21 19:33:56 UTC 2014

Done running shutdown hooks.
Dec 21 19:34:01 syncing disks... done
unmounting file systems...
unmounting done
The operating system has halted.
Please press any key to reboot.
rebooting...

NetBSD/evbarm on Radxa Rock USB編 その2
2014/11/10(月) 28:16 NetBSD はてブ情報 はてブに登録 はてブ数

なんか、動くようになってました。

変えたところは、USBメモリを刺すポートを隣にしたのと、以下ぐらい? たぶん関係なさそう。
--- a/arm/rockchip/rockchip_dwctwo.c
+++ b/arm/rockchip/rockchip_dwctwo.c
@@ -83,7 +83,7 @@ static struct dwc2_core_params rkdwc2_params = {
        .ts_dline                       = 0,    /* 0 - No (default) */
        .reload_ctl                     = 0,    /* 0 - No (default for core < 2.92a) */
        .ahbcfg                         = 0x7,  /* INCR16 */
-       .uframe_sched                   = 1,    /* True to enable microframe scheduler */
+       .uframe_sched                   = -1,   /* True to enable microframe scheduler */
 };
すごい不安定だから、まったく同じカーネルでも起動したりpanicしたり。

USBメモリをroot deviceとして、USB無線LANアダプタでネットワークも使えています。とはいえ、すごい遅いんですけど。

手持ちのUSB有線LANアダプタが二つあったのですが、認識されるけどパケットが出ていかない、認識する途中でポートから切り離される、など残念な感じでした。
Loaded initial symtab at 0x8079e878, strtab at 0x807d4668, # entries 13772
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.1 (RADXA) #204: Mon Nov 10 18:14:38 UTC 2014
        root@aug:/usr/obj/sys/arch/evbarm/compile/RADXA
total memory = 1024 MB
avail memory = 1009 MB
sysctl_createv: sysctl_create(machine_arch) returned 17
kern.module.path=/stand/evbarm/7.99.1/modules
mainbus0 (root)
cpu0 at mainbus0 core 0: 1600 MHz Cortex-A9 r4p0 (Cortex V7A core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB/32B 4-way L1 VIPT Instruction cache
cpu0: 32KB/32B 4-way write-back-locking-C L1 PIPT Data cache
cpu0: 64KB/32B 8-way write-through L2 PIPT Unified cache
vfp0 at cpu0: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
armperiph0 at mainbus0: mapping registers at 0x1013c000 size 12288 memh feb3c000
arml2cc0 at armperiph0: ARM PL310 r3p2 L2 Cache Controller (disabled)
arml2cc0: cache enabled
armgic0 at armperiph0: Generic Interrupt Controller, 160 sources (149 valid)
armgic0: 32 Priorities, 128 SPIs, 5 PPIs, 16 SGIs
a9tmr0 at armperiph0: A9 Global 64-bit Timer (800 MHz)
a9tmr0: interrupting on irq 27
a9wdt0 at armperiph0: A9 Watchdog Timer, default period is 12 seconds
obio0 at mainbus0: On-board I/O
grf iomux: old 00005554, new ffff5555, renew 00005555
grf iomux: old 00000000, new ffff0004, renew 00000004
grf iomux: old 00001000, new ffff1400, renew 00001400
gpio: 0x2000a000 0x00000100 -> 0x00000108
gpio: 0x2000a004 0x00000104 -> 0x0000010c
com0 at obio0: addr 0x20064000-0x200643ff intr 68  mult 4
: ns16550a, working fifo
com0: console
dwctwo0 at obio0: addr 0x10180000-0x101bffff intr 48  mult 1
: USB controller
dwctwo1 at obio0: addr 0x101c0000-0x101fffff intr 49  mult 1
: USB controller
usb0 at dwctwo0: USB revision 2.0
usb1 at dwctwo1: USB revision 2.0
uhub0 at usb0: vendor 0x0000 DWC2 root hub, class 9/0, rev 2.00/1.00, addr 1
uhub1 at usb1: vendor 0x0000 DWC2 root hub, class 9/0, rev 2.00/1.00, addr 1
uhub2 at uhub1 port 1: Genesys Logic USB2.0 Hub, class 9/0, rev 2.00/85.36, addr 2
uhub2: single transaction translator
ugen0 at uhub2 port 1
ugen0: Realtek 802.11n WLAN Adapter, rev 2.00/2.00, addr 3
urtwn0 at uhub2 port 3
urtwn0: GW-USValue-EZ GW-USValue-EZ, rev 2.00/2.00, addr 4
urtwn0: MAC/BB RTL8188CUS, RF 6052 1T1R, address XX:XX:XX:XX:XX:XX
urtwn0: 1 rx pipe, 2 tx pipes
urtwn0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
urtwn0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
umass0 at uhub2 port 4 configuration 1 interface 0
umass0: SMI Corporation USB DISK, rev 2.00/11.00, addr 5
scsibus0 at umass0: 2 targets, 1 lun per target
sd0 at scsibus0 target 0 lun 0: <S31B0807, USB DISK, 1100> disk removable
sd0: 1983 MB, 3936 cyl, 16 head, 63 sec, 512 bytes/sect x 4061184 sectors
boot device: <unknown>
root device: sd0a
dump device (default sd0b):
file system (default generic): ffs
root on sd0a dumps on sd0b
WARNING: no TOD clock present
WARNING: using filesystem time
WARNING: CHECK AND RESET THE DATE!
warning: no /dev/console
init path (default /sbin/init):
init: copying out path `/sbin/init' 11
/etc/rc.conf is not configured.  Multiuser boot aborted.
Enter pathname of shell or RETURN for /bin/sh:
Terminal type is vt100.
We recommend that you create a non-root account and use su(1) for root access.
# uname -a
NetBSD  7.99.1 NetBSD 7.99.1 (RADXA) #204: Mon Nov 10 18:14:38 UTC 2014  root@aug:/usr/obj/sys/arch/evbarm/compile/RADXA evbarm
# mount
root_device on / type ffs (read-only, local)
tmpfs on /dev type tmpfs (union, local)
# mount /dev/sd0a /
/dev/sd0a: file system not clean (fs_clean=0x8); please fsck(8)
/dev/sd0a: lost blocks 0 files 0
# ls
.cshrc    bin       lib       mnt       sbin      usr
.profile  dev       libdata   rescue    stand     var
altroot   etc       libexec   root      tmp
# ifconfig
urtwn0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        ssid ""
        powersave off
        address: XX:XX:XX:XX:XX:XX
        media: IEEE802.11 autoselect
        status: no network
lo0: flags=8048<LOOPBACK,RUNNING,MULTICAST> mtu 33192
# dhclient urtwn0
# urtwn0: link state UP (was UNKNOWN)


# ifconfig
urtwn0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ssid XXXXXXXX
        powersave off
        bssid XX:XX:XX:XX:XX:XX chan 6
        address: XX:XX:XX:XX:XX:XX
        media: IEEE802.11 autoselect (OFDM54 mode 11g)
        status: active
        inet 192.168.43.193 netmask 0xffffff00 broadcast 192.168.43.255
lo0: flags=8048<LOOPBACK,RUNNING,MULTICAST> mtu 33192
# ping ki.nu
PING ki.nu (218.44.234.234): 64 data bytes
64 bytes from 218.44.234.234: icmp_seq=0 ttl=239 time=301.274847 ms
64 bytes from 218.44.234.234: icmp_seq=1 ttl=239 time=245.764923 ms
64 bytes from 218.44.234.234: icmp_seq=2 ttl=239 time=219.746549 ms
64 bytes from 218.44.234.234: icmp_seq=3 ttl=239 time=122.356646 ms
^C
----ki.nu PING Statistics----
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 122.356646/222.285741/301.274847/74.794880 ms
#