APC8750にNetBSD/evbarmを移植するための記録 8/24
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で表示ができるのも、わりと謎だが...
で、comprobe1でへくっとる。
根本的におかしいんじゃないのかなと思ってしまう。
geminiとか、consinitでbus_space_mapしてるんだよな。
やったほうがいいのかな。comcnattachだけでええんやろか?
よく考えたら、ここでもCOM_TYPE_NORMALってやってるけど、変えたほうがいいのか?
調べてみたら、COM_TYPE_NORMALじゃないやつって、COM_TYPE_PXA2x0を除けばgeminiのCOM_TYPE_16550_NOERSぐらいか。むしろgeminiが異端に見えるので真似しないほうがよいのかも...
やっぱり、シリアルコンソールの出力はマグレで表示されていると思ったほうがよさそうな気がしてきた。
二台目は普通に動いてうれしい。
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が異端に見えるので真似しないほうがよいのかも...
やっぱり、シリアルコンソールの出力はマグレで表示されていると思ったほうがよさそうな気がしてきた。
コメント(0件)
- TB-URL http://www.tokuda.net/diary/0828/tb/