steletoの日記 このページをアンテナに追加 RSSフィード

2017-07-15

[] CubieBoard2サーバが起動しなくなった問題(解決12:39  CubieBoard2サーバが起動しなくなった問題(解決) - steletoの日記 を含むブックマーク  CubieBoard2サーバが起動しなくなった問題(解決) - steletoの日記 のブックマークコメント

HDDがダメなのかなーということで安いSSDを手配してCubieBoardに接続……したけどfdiskでコケよる。ただfsckのこともあったしたぶんNetBSD/evbarmのどっかがおかしんだろーなーと母艦側でfdisk→disklabel→newfsまでお膳立てしたところ無事にインストール完了。

俺「ふむ、pkgsrcのビルドを始めたけど問題なさそうだしこの様子なら大丈夫かな」

→剥き出しで繋いでいたSSDを机の端に移動させる

SSDCRC Error』『CRC Error』『CRC Error』『CRC Error』『CRC Error』『CRC Error

俺「あっこれケーブルが駄目なやつだ

SATAケーブルの根本を折るようにして筐体に無理矢理押し込んでいたという心当たりもあるので薄手のSATAケーブルに交換。これで本当に大丈夫なはず。原因がケーブルということになるとHDDは問題ないということになるんだけど、消費電力とかもあるからこのままSSDでいく予定。

ちなみにCubieBoardは基盤上のピンコネクタから+5Vを供給するため、専用のSATAケーブルが付属している。ただしこれSATAと一体化しているタイプなので、SATAだけ別のケーブルに交換するということができない。というわけで

f:id:steleto:20170715121736j:image

鋸で真っ二つの刑。力技もいいところだけど電気的には問題なし。

なおSSDは結局WDのWDS240G1G0A(240GiB)にしたんだけど、 no title にある分解写真を見たら(スッカスカなのはまぁいいとして)基板におもいっきり『SanDisk』って書いてある。やっぱ中の人一緒じゃねーかコレ。





ところで今朝から母艦のNetBSDが起動しなくなったけど今度はなんなの。GR-PEACH移植進まねぇ…

2017-07-03

[] CubieBoard2サーバが起動しなくなった問題(解決しなかった) 00:08  CubieBoard2サーバが起動しなくなった問題(解決しなかった) - steletoの日記 を含むブックマーク  CubieBoard2サーバが起動しなくなった問題(解決しなかった) - steletoの日記 のブックマークコメント

はい

Welcome to minicom 2.7

OPTIONS: I18n
Compiled on Feb  9 2017, 05:05:04.
Port /dev/ttyU0

Press CTRL-A Z for help on special keys

ahcisata0 channel 0: clearing WDCTL_RST failed for drive 0
wd0a: device timeout reading fsbn 1517440 of 1517440-1517503 (wd0 bn 1525632; cn 1513 tn 8 sn 24), retrying
ahcisata0 channel 0: clearing WDCTL_RST failed for drive 0
wd0a: device timeout reading fsbn 1517440 of 1517440-1517503 (wd0 bn 1525632; cn 1513 tn 8 sn 24), retrying
ahcisata0 channel 0: clearing WDCTL_RST failed for drive 0
wd0a: device timeout reading fsbn 1517440 of 1517440-1517503 (wd0 bn 1525632; cn 1513 tn 8 sn 24)

ということでまたサーバにアクセスできなくなったのでシリアル繋いだ結果がこれである。うーんやっぱりHDDがイカンっぽいがどうしたものか。

ところでSSDの値段見てたらWestern DigitalSanDiskがそれぞれ製品出してたけどそれ中身一緒だったりしないん?

2017-06-11

[] CubieBoard2サーバが起動しなくなった問題(解決済み) 12:02  CubieBoard2サーバが起動しなくなった問題(解決済み) - steletoの日記 を含むブックマーク  CubieBoard2サーバが起動しなくなった問題(解決済み) - steletoの日記 のブックマークコメント

ファイル置き場やproxyに使っているCubieBoard2(NetBSD/evbarm 7.1)が先週当たりから応答しない。とりあえずシリアルケーブルで母艦と繋いでみる。

wd0 at atabus0 drive 0
wd0: <Hitachi HTS545050B9A300>
wd0: 465 GB, 969021 cyl, 16 head, 63 sec, 512 bytes/sect x 976773168 sectors
boot device: wd0
root on wd0a dumps on wd0b
/: replaying log to memory
root file system type: ffs
Sun Jun  4 01:45:20 JST 2017
Starting root file system check:
panic: kernel diagnostic assertion "oldsize != VSIZENOTSET || pgend > oldsize" failed: file "/home/star/work/netbsd/src/sys/uvm/uvm_vnode.c", line 355
Stopped in pid 21.1 (fsck) at   netbsd:cpu_Debugger+0x4:        bx      r14
db{1}>

おぉうなんでか知らんけどfsckでkernel panicしとる。最初はディスクが死んだかと思ったけどシングルユーザモードでなら起動できたのでSMARTを見た感じでは大丈夫…そうな気がする(これの読み方をよく知らない)。

# atactl /dev/wd0 smart status
SMART supported, SMART enabled
id value thresh crit collect reliability description                 raw
  1 100   62     yes online  positive    Raw read error rate         0
  2 100   40     yes offline positive    Throughput performance      0
  3 243   33     yes online  positive    Spin-up time                30064771072
  4 100    0     no  online  positive    Start/stop count            636
  5 100    5     yes online  positive    Reallocated sector count    0
  7 100   67     yes online  positive    Seek error rate             0
  8 100   40     yes offline positive    Seek time performance       0
  9  30    0     no  online  positive    Power-on hours count        30862
 10 100   60     yes online  positive    Spin retry count            0
 12 100    0     no  online  positive    Device power cycle count    615
191 100    0     no  online  positive    G-sense error rate          0
192 100    0     no  online  positive    Power-off retract count     77
193  37    0     no  online  positive    Load cycle count            638702
194 171    0     no  online  positive    Temperature                 32 Lifetime min/max 10/56
196 100    0     no  online  positive    Reallocated event count     0
197 100    0     no  online  positive    Current pending sector      0
198 100    0     no  offline positive    Offline uncorrectable       0
199 200    0     no  online  positive    Ultra DMA CRC error count   145240
223 100    0     no  online  positive    Load/unload retry count     0

であればfsckをかけてチェックをかけて…ってそこでkernel panicしてるのか。とりあえず試しにディスクを引っこ抜いて母艦に繋げてそちらで動かしてみる。

$ sudo fsck_ffs -fy /dev/wd3a
** /dev/rwd3a
** File system is already clean
** Last Mounted on /mnt
** Phase 1 - Check Blocks and Sizes
UNKNOWN FILE TYPE I=11210928
CLEAR? yes

UNKNOWN FILE TYPE I=11210929
CLEAR? yes

UNKNOWN FILE TYPE I=11210930
CLEAR? yes
   :
   :

おぉ動いた。そしてエラーまみれだ orz

そしてfsckをかけ終わったディスクをCubieBoard2に戻したら無事に起動するようになったのでとりあえずそのまま動かすことに。NetBSD 8が出たころに改めてディスク診断をかけてクリーンインストールかなー。

2013-03-19

[][]zkbd.c チャタリングとか改善してるといいなパッチ 01:52 zkbd.c チャタリングとか改善してるといいなパッチ - steletoの日記 を含むブックマーク zkbd.c チャタリングとか改善してるといいなパッチ - steletoの日記 のブックマークコメント

C700でちょっと触ってみた程度ではチャタリング解消できているっぽいけどしばらく試して様子見。これでOKなら割り込み動作が半分以下で済むというオマケがついてくる。

あとC3x00にも影響するはずだけどこちらは未確認。



0. ちょっとだけ軽量化

stuck_keys[]はそこに定義されているキー番号への処理をスキップする、という感じがしたので、zkbdmap.hのキー定義テーブルを参照してC7x0/860用のテーブルを用意。ついでにC3x00用のテーブルにも追加しておく。

→チャタリングとは関係ないけどとりあえず動作に問題はなさそう。

@@ -100,16 +100,23 @@
 	76,
 	77
 };
 
 static const int stuck_keys[] = {
-	7,
-	15,
-	23,
-	31
+	1,  7,  15, 22, 23, 31, 39, 47,
+	53, 55, 60, 63, 66, 67, 69, 71,
+	72, 73, 74, 75, 76, 77, 78, 79,
+	82, 85, 86, 87, 90, 91, 92, 94,
+	95
 };
 
+static const int stuck_keys_c860[] = {
+	0,  1,  47, 53, 55, 60, 63, 66,
+	67, 69, 71, 72, 73, 74, 76, 77,
+	78, 79, 80, 81, 82, 83, 85, 86,
+	87, 88, 89, 90, 91, 92, 94, 95
+};
 #define REP_DELAY1 400
 #define REP_DELAYN 100
 
 struct zkbd_softc {
 	device_t sc_dev;
@@ -252,12 +259,12 @@
 	} else if (ZAURUS_ISC860) {
 		sc->sc_sense_array = gpio_sense_pins_c860;
 		sc->sc_strobe_array = gpio_strobe_pins_c860;
 		sc->sc_nsense = __arraycount(gpio_sense_pins_c860);
 		sc->sc_nstrobe = __arraycount(gpio_strobe_pins_c860);
-		sc->sc_stuck_keys = NULL;
-		sc->sc_nstuck = 0;
+		sc->sc_stuck_keys = stuck_keys_c860;
+		sc->sc_nstuck = __arraycount(stuck_keys_c860);
 		sc->sc_maxkbdcol = 0;
 		sc->sc_onkey_pin = -1;
 		sc->sc_sync_pin = -1;
 		sc->sc_swa_pin = -1;
 		sc->sc_swb_pin = -1;

1. キースキャンのタイミング

いったんキーが押下されてzkbd_poll()を呼ぶと、中で定周期タイマを作成して全てのキー押下が解除されるまで自身を呼び出してキースキャンをしてる、ような気がする。

なら定周期動作中はキースキャンのタイミングをタイマ満了時のみに絞って、チャタリング中のシグナルや他のキーのシグナルは破棄しまえばチャタリングを解決できそうな。

→チャタリング解消できたっぽい

@@ -346,12 +353,14 @@
 /* XXX are some not in the array? */
 /* handle keypress interrupt */
 static int
 zkbd_irq(void *v)
 {
+	struct zkbd_softc *sc = (struct zkbd_softc *)v;
 
-	zkbd_poll(v);
+	if (!callout_pending(&sc->sc_roll_to))
+		zkbd_poll(v);
 
 	return 1;
 }
 
 static void

2. 割り込み条件

1.が問題ない場合、キーリリースの割り込みってあっても常に無視されてしまうので不要という疑惑がでてきたので実験してみる。

→無くても大丈夫だった

@@ -294,11 +301,11 @@
 	for (i = 0; i < sc->sc_nsense; i++) {
 		pin = sc->sc_sense_array[i];
 		if (pin == -1)
 			continue;
 		pxa2x0_gpio_set_function(pin, GPIO_IN);
-		pxa2x0_gpio_intr_establish(pin, IST_EDGE_BOTH, IPL_TTY,
+		pxa2x0_gpio_intr_establish(pin, IST_EDGE_RISING, IPL_TTY,
 		    zkbd_irq, sc);
 	}
 
 	if (sc->sc_onkey_pin >= 0)
 		pxa2x0_gpio_intr_establish(sc->sc_onkey_pin, IST_EDGE_BOTH,

2013-02-13

[][]キーマップ 03:15 キーマップ - steletoの日記 を含むブックマーク キーマップ - steletoの日記 のブックマークコメント

先月のこの件

残件としてはBackSpaceキーが正しく動作しない(Crtl-Hは効く)という問題があるけど他にこれといった問題はなさそう。

ふとキーマップを確認したらBSキーのところにDELイベントが割り当たってた。マップ的にはBSイベントはShift+BSキーらしいので試してみたら確かに動く。ふむ。

ならば印字通り「BSキー→BS」「Fn+BSキー→DEL」になるようにマップを変更してしまえ。まぁ結局のところ「DELイベントの挙動が変」という点はそのままなので何の解決にもなってなかったりするけど。

--- sys/arch/zaurus/dev/zkbdmap.h
+++ sys/arch/zaurus/dev/zkbdmap.h
@@ -142,11 +142,11 @@
     KC(57),    KS_o,
     KC(58),    KS_k,
     KC(59),    KS_l,           KS_L,           KS_bar,
     KC(61),    KS_KP_Up,       KS_KP_Up,       KS_Prior,       /* up, */
     KC(62),    KS_KP_Down,     KS_KP_Down,     KS_Next,        /* down, */
-    KC(64),    KS_Delete,      KS_BackSpace,
+    KC(64),    KS_BackSpace,   KS_BackSpace,   KS_Delete,
     KC(65),    KS_p,
     KC(68),    KS_Return,
     KC(70),    KS_KP_Right,    KS_KP_Right,    KS_End,         /* right, */
     KC(75),    KS_Shift_R,
     KC(84),    KS_Shift_L,

それにしてもなんでこういうマップにしたんだっけ?と思ったけど、どうも元の元にあたるOpenBSD/zaurusの時点でこうなってる(zaurus_kbdmap.h)。なんか意図があったのかな、ということでしばらく様子を見ることに。