光iフレームのソフトウェアのうち、オープンソースを利用しているものはソースコードがNTT-MEからダウンロードできます。
弊社製光iフレーム WDPF-701ME をご購入のお客様へ
これをダウンロードして、中身を覗いてみました。
予想通り、中身はAndroidとLinuxカーネルです。
Androidはよく分かりませんが、Linuxは昔それなりに使い込んでいたので、ちょっと見てみました。
カーネルは2.6.29ですが、ファイルの更新日付を見てみると、2010年10月21日付けのものと、2009年のものがあります。
新しいファイルは、おそらくBroadcomが自社プラットホーム向けに手を加えたものだと思われます。
find . -mtime -250d | wc
してみると、1600ほどのファイルが更新されていました。
更新されたファイル群を、ざっとディレクトリ名だけ眺めてみます。
find . -mtime -250d -type d | more
すると、大幅な更新が目立つのは
./arch/arm/mach-bcmring
./drivers/char/broadcom
./vmcsx
というあたりです。
archの下のソースは個別のハードウェアプラットホームに依存する内容ですから、bcmringというのは光iフレームそのもの、ないしはその開発ボードの名称かもしれません。
そう思って先日の、adb bugreport で取ったログをgrepしてみると、
26 26 0% D 0K 0K fg root bcmring_ddrvpmp[ro.hardware]: [bcmring_custom]
<4>bcmring_pm_init: Initializing Power Management for BCMRING….
<6>bcmring-rtc0 bcmring-rtc0: rtc core: registered bcmring as rtc0
<6>bcmring-rtc0 bcmring-rtc0: setting system clock to 2011-06-12 10:01:52 UTC (1307872912)
<4>bcmring_net configuration: brcmMode=0, descRx=64, descTx=1024
root 26 2 0 0 fg c0059800 00000000 D bcmring_ddrvpmp
root 26 2 0 0 20 0 0 0 fg c0059800 00000000 D bcmring_ddrvpmp
という具合にひっかかってきました。
どうやら光iフレームのハードウェア依存の情報は、mach-bcmringの下のコードを見れば見つかりそうですね。
先日気になっていた、Linux起動時の
bcm11xx_wait_sesdone: no ack
というメッセージも、出所がわかりました。
sh-3.2$ find . -mtime -250d|grep bcm11xx
./i2c/busses/i2c-bcm11xx-hw.c
sh-3.2$ grep wait_sesdone ./i2c/busses/i2c-bcm11xx-hw.c
static int bcm11xx_wait_sesdone( int clear_cmd )
if ( bcm11xx_wait_sesdone(1) < 0) if ( bcm11xx_wait_sesdone(1) < 0) if ( bcm11xx_wait_sesdone(1) < 0) if ( (ack = bcm11xx_wait_sesdone(0)) < 0) if ( bcm11xx_wait_sesdone(1) < 0) sh-3.2$
ソースコードを見てみると、
static int bcm11xx_wait_sesdone( int clear_cmd )
{
(略)
ret = bcm11xx_wait_interrupt();
(略)
/* Get status from interrupt status register */
isr = ret;
(略)
if( isr & REG_I2C_ISR_NOACK )
{
I2C_DEBUG(DBG_ERROR, “no ack\n”);
i2c_errors++;
}
と、こんな流れになっています。
タイムアウトするとタイムアウトのエラーメッセージが出るようですが、ログにはそのエラーは出現していません。
なので、i2cで接続されているデバイスの何かが、反応が遅いだけなのかもしれません。
まあ、i2cで何が繋がっているのかが分からないので、これ以上は分かりませんが…
コメント