[ TOP | Recently ]

2009-09-24 STR9105その3


どうも不安定なのはキャッシュまわりと思ったら、違うようだ。キャッシュも怪しいけど。
コンソールから何度も dmesg してると、たまにピタっと止まってしまう。一度この状態になるとBREAK信号も受けつけない。
イーサのドライバに仕込んでおいた特殊パケット受信でDebugger()を呼ぶ機能を使って ddb に落としてから c すると、何故か復活する。うーん。。。

どうも割込みまわりか、UARTの挙動が怪しい。

幸いこの状態になってもEtherやその他諸々はは生きていてpingにも答えるし、sshdを上げておけばリモートログインできるので、リモートで入って観測。

# gdb --write /netbsd
(gdb) target kvm
(gdb) p/x star_intr_enabled
$1 = 0x19c041b
(gdb) p/x star_intr_pending
$2 = 0x0

0x19c041b = 0000_0001_1001_1100_0000_0100_0001_1011 (b) で、UART は IRQ10 なのでちゃんと enable になっている。
にもかかわらず star_intr_pending も 0 ってことはそもそも割込みが入ってきてない感じ。
UARTもSTR8100とSTR9100で微妙に制御ビットが追加されたりするので、そのへんの違いか。どちらにせよなんちゃって16550互換なので、また場合分けを入れなきゃならないのか…

いろいろ調べてると、現象が起きた状態で cnputc すると復活することがわかった。ddb に落とすと復活するのはこのせいか。どう考えてもcomだなぁ。
回避方法がわかったので特殊パケット受信でcnputcするように仕組んでおくと、止まりつつも(パケット投げれば)進むようになった。
なんかdev_mkdbが数分かかってて変だけど、とりあえずマルチユーザまで上がった。

NetBSD/evbarm STR8100/9100
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009
    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 5.99.18 (STR91xx) #184: Thu Sep 24 04:48:06 JST 2009
        ryo@falsie:/src/cvs/NetBSD/sys/arch/evbarm/compile/STR91xx
total memory = 32768 KB
avail memory = 28164 KB
mainbus0 (root)
cpu0 at mainbus0: FA526 rev 1 (ARMv4 core)
cpu0: DC enabled IC enabled WB enabled LABT
cpu0: 16KB/16B 2-way Instruction cache
cpu0: 16KB/16B 2-way write-back-locking-B Data cache
star0 at mainbus0: Star Orion Family SoC: STR9100, 200MHz
starclk0 at star0 addr 0x79000000-0x79000047 irq 0: Programmable Timer
com0 at star0 addr 0x78000000-0x7800001f irq 10: ns16550a, working fifo
com0: console
ohci0 at star0 addr 0xc4000000-0xc400005b irq 23: USB1.1 Host Controller
ohci0:  OHCI version 1.0, legacy support
usb0 at ohci0: USB revision 1.0
ehci0 at star0 addr 0xcc000000-0xcc00006b irq 24: USB2.0 Host Controller
ehci0: ohci or uhci probably not configured
usb1 at ehci0: USB revision 2.0
starrtc0 at star0 addr 0x7b000000-0x7b000037 irq 14: Real-time Clock
starwdog0 at star0 addr 0x7a000000-0x7a00001b irq 3: Watch Dog Timer
stargpio0 at star0 addr 0x7c000000-0x7c000047 irq 4: GPIO
gpio0 at stargpio0: 32 pins
gsec0 at star0 addr 0x70000000-0x7000029b irq 18: Gigabit Switch Engine
gse0 at gsec0 port0
gse0: Ethernet address 00:08:a1:c0:45:7e
ukphy0 at gse0 phy 0: OUI 0x0009c3, model 0x0005, rev. 4
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
gse1 at gsec0 port1
gse1: Ethernet address 00:08:a1:c0:45:7f
ukphy1 at gse1 phy 1: OUI 0x0009c3, model 0x0005, rev. 4
ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
uhub0 at usb0: Star OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1 at usb1: Star EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
boot device: <unknown>
root on gse0
nfs_boot: trying static
nfs_boot: client_addr=192.168.185.87
nfs_boot: gateway=192.168.185.65
nfs_boot: netmask=255.255.254.0
nfs_boot: server=192.168.185.65
nfs_boot: root=192.168.185.65:/src/boot/str9100
root on 192.168.185.65:/src/boot/str9100
WARNING: preposterous TOD clock time
WARNING: using filesystem time
WARNING: CHECK AND RESET THE DATE!
WARNING: negative runtime; monotonic clock has gone backwards
Thu Sep 24 05:13:54 JST 2009
Not checking /: nfs mounted
Starting file system checks:
Setting tty flags.
Setting sysctl variables:
Starting network.
Hostname: str9100
IPv6 mode: host
Configuring network interfaces:.
Adding interface aliases:.
Building databases: dev, utmp, utmpx done
Starting syslogd.
Setting date via ntp.
Checking for core dump...
savecore - - - no core dump (no dumpdev)
Starting rpcbind.
Mounting all filesystems...
Clearing temporary files.
Creating a.out runtime link editor directory cache.
Starting statd.
Starting lockd.
swapctl: adding /var/swapfile as swap device at priority 0
Starting virecover.
Starting local daemons:.
Updating motd.
Starting ntpd.
Starting sshd.
Starting inetd.
Starting cron.
Thu Sep 24 05:22:09 JST 2009

NetBSD/evbarm (str9100) (console)

login: 

NetBSD/evbarm (str9100) (console)

login: 

NetBSD/evbarm (str9100) (console)

login: root
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009
    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 5.99.18 (STR91xx) #184: Thu Sep 24 04:48:06 JST 2009

                        STR9105

Terminal type is vt100.                                                 
We recommend that you create a non-root account and use su(1) for root access.
str9100# ifconfig -a
gse0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 00:08:a1:c0:45:7e
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 192.168.185.87 netmask 0xfffffe00 broadcast 192.168.185.255
        inet6 fe80::208:a1ff:fec0:457e%gse0 prefixlen 64 scopeid 0x1
gse1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        address: 00:08:a1:c0:45:7f
        media: Ethernet autoselect (none)
        status: no carrier
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
str9100# uname -a
NetBSD str9100 5.99.18 NetBSD 5.99.18 (STR91xx) #184: Thu Sep 24 04:48:06 JST 2009  ryo@falsie:/src/cvs/NetBSD/sys/arch/evbarm/compile/STR91xx evbarm
str9100# df
Filesystem                       1K-blocks       Used      Avail %Cap Mounted on
192.168.185.65:/src/boot/str9100  479777102  144965034  310823214  31% /
mfs:150                                7647          0       7265   0% /tmp
procfs                                    4          4          0 100% /proc
kernfs                                    1          1          0 100% /kern
192.168.185.65:/home              479777102  144965034  310823214  31% /home
192.168.185.65:/src               479777102  144965034  310823214  31% /src
str9100# 

遅いのはたぶんEtherが適当だからな気がする。もっとちゃんと作らなきゃダメだな。
あとはUARTの非互換部分を調べて止まらないようにしなければ。

STR9100対応程度サクサクできると思ったらそうもいかないな。
arm/starは終わらせて早くimx515をいじりたいものだ…


EOF