APC8750にNetBSD/evbarmを移植するための記録 8/24
2014/01/13(月) 16:44 NetBSD はてブ情報 はてブに登録 はてブ数

8/24からは書き溜めたメモから順次投下していく。敬体から常体に書きぶりも変わってマス。

二台目は普通に動いてうれしい。

u-bootに毎回同じコマンドを入れるのが面倒くさい。ということで対策。

tftpbootはデフォルトファイル名をC0A80002.imgが設定されているので、netbsd.binにシンボリックリンクを張れば少しだけサボれる。

結局、ほかのドライバと比較するときわかりにくいのでobioをgeminiのobioっぽく書き換え。oba -> obioに変更するなど。ドライバ全体に波及。

シリアルドライバ、matchが1を返すという実装から、geminiのような初期化を加える。
さらに、attachはsc->sc_typeをCOM_TYPE_16650_NOERSに変更。当たり前だが、起動時のメッセージが変わった。で、attachの前後にデバッグ文を入れてみたら、uartのattachはなぜか二回呼ばれている。

ねんがんのシリアル「入力」はできない。

良く考えたら、割り込みコントローラって、コンパイルを通るようにしただけなので、動いているわけがない。

シリアルの入力は、割り込みによって入力処理に飛ばされるはずだから、割り込みコントローラの実装をやらないとダメって気が。当たり前か。consinitで表示ができるのも、わりと謎だが...
WMT # set serverip 192.168.0.10
WMT # tftpboot 8000
EEP-less strapping = TRUE
*** Warning: no boot file name; using 'C0A80002.img'
TFTP from server 192.168.0.10; our IP address is 192.168.0.2
Filename 'C0A80002.img'.
Load address: 0x8000
Loading: #################################################################
         #################################################################
         ######################################T ###########################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ######################################
done
Bytes transferred = 2520256 (2674c0 hex)
WMT # go 8000
## Starting application at 0x00008000 ...
00008328
NetBSD
00000000 00000000 0048096b 00000412
00000000 00000412 00000004 00000412
c0000000 00000000 0048096b 0000041e
00003000 0000041e 00000004 0000041e
fe000000 d8000000 010fffff 00000412
00003f80 d8000412 00000010 00000412
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000



NetBSD/evbarm (APC) booting ...
[ Kernel symbol table missing! ]
Loaded initial symtab at 0xc01b4364, strtab at 0xc01d3494, # entries 7940
pmap_postinit: Allocated 35 static L1 descriptor tables
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
    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 6.99.23 (APC) #28: Sat Aug 24 13:53:26 UTC 2013
        root@builder.localdomain:/usr/obj/sys/arch/evbarm/compile/APC
total memory = 512 MB
avail memory = 499 MB
mainbus0 (root)
cpu0 at mainbus0 core 0: ARM1176JZ-S r0p7 (ARM11J V6ZK core)
cpu0: DC enabled IC enabled WB enabled LABT
cpu0: 16KB/32B 4-way L1 Instruction cache
cpu0: 16KB/32B 4-way write-back-locking-C L1 Data cache
vfp0 at cpu0: VFP11
obio0 at mainbus0
<wm8750_uart_match>
comprobe1 0
</wm8750_uart_match rv=0>
wmicu0 at obio0 addr 0xd8140000-0xd814ffff
<wm8750_uart_match>
com0 at obio0 addr 0xd8200000-0xd820ffff intr 32  : ns16650, no ERS, working fifo
com0: console
wmtmr0 at obio0 addr 0xd8100000-0xd810ffff intr 48 : VC System Timer
rn_init: radix functions require max_keylen be set
boot device: <unknown>
root device:
<wm8750_uart_match>はデバッグ文である。むかしむかしJavaでこういう書き方したのでやってみたが、イマイチカッコ悪いな。

で、comprobe1でへくっとる。
根本的におかしいんじゃないのかなと思ってしまう。

geminiとか、consinitでbus_space_mapしてるんだよな。
やったほうがいいのかな。comcnattachだけでええんやろか?
よく考えたら、ここでもCOM_TYPE_NORMALってやってるけど、変えたほうがいいのか?

調べてみたら、COM_TYPE_NORMALじゃないやつって、COM_TYPE_PXA2x0を除けばgeminiのCOM_TYPE_16550_NOERSぐらいか。むしろgeminiが異端に見えるので真似しないほうがよいのかも...

やっぱり、シリアルコンソールの出力はマグレで表示されていると思ったほうがよさそうな気がしてきた。

名前:  非公開コメント   

  • TB-URL  http://www.tokuda.net/diary/adiary.cgi/0828/tb/