Jz4725(無印) も Jz4725Bも おなじようなものだと思っていたのだが、調べるうちに 全然違うことが分かってきた。Jz4725(無印) は、Jz4740 ファミリーで、Jz4725B は Jz4750 ファミリー。
Port のマッピングが ファミリーで 全然違うので、Jz4725(無印) と Jz4740 は同じカーネルにできる可能性があるが、 Jz4725(無印) と Jz4725B は同じにできない。


そのうち、後継機の P5-5 が FocalPriceから出たので気になっていた。DealExtreme で PMP3100として売られているのも実は P5-5 だと知ったので、ひとつ入手しておくことにした。
後継機と言っても ハードウェアは、CPU を載せ替えて、ボタン や スイッチなどの印字を 妥当なものに修正しただけに思える。
-- 最初の PMP3100 は、HOLD, ON/OFF の表示が逆 。あと、2つめの イヤホンジャックに AV-OUT と印字されていた。
CPU を載せ替えるのは、たぶん入手できなくなったから。
ファームウェアも前のが動かないし、刷新することになったのだろう。
なにかものを作る場合、だれも持っていなさそうな aneca をターケットにするより 数が出て 安定供給されそうな P5-5 をターゲットにしたほうが良いのだ。
aneca は自分が気に入ったからターゲットにするのだが、気が済んだら P5-5 もターゲットにしたいと思う。
まだ入手しただけだが、Jz4725B なのは確認できた。あとはメモリサイズを一応確認してみる。ついでにメモリが 32MB になったりしてると嬉しい。
ちょっと USBBOOT で確認
usbboot :> nquery 0 0
CPU data: Boot4750
ID of No.0 device No.0 flash:
Vendor ID :0xec
Product ID :0xd5
Chip ID :0x14
Page ID :0xb6
Plane ID :0x74
4K Page の K9XXG08UXM (2GB) だった。
次は RAM サイズ。USBBOOT の cfg ファイルに
BUSWIDTH = 16
BANKS = 4
ROWADDR = 13
COLADDR = 9
という設定がしてあって
SDRAM Total size is 32 MB, work in 4 bank and 16 bit mode
というメッセージがでる。で、この情報を元に CPU の SDRAM 設定をする。CPU は、32MB だと思ってアクセスするわけだが、実際に 16MB しかない場合、データ が 循環する。bank が 上位 2 bit になるので、8MB が実は 4MB + 同じデータの 4MB ということになる。
W9812G6PH-6 を使っていて 16MB しかないのが明らかな A-41 でまずは確認。
0x81c00dd4 : 00 00 1c 3c 2c 60 9c 27 21 e0 99 03 d0 ff bd 27
0x81800dd4 : 00 00 1c 3c 2c 60 9c 27 21 e0 99 03 d0 ff bd 27
次に A5-5 。... 結果はまったく同じだった。これで RAM 容量は 16MB だと分かった。
ところで、... 16MB 用のマシン に 64MB の RAM を入れるとどうなるのだろう? OK そうなのだが、A12(pin 18) に配線されているのが条件。PMP3100 だが写真を見ると SDRAM の方に配線されているから 問題ないはず。
よくよく考えると、16MB では DINGUX 並のことはできない。RAM の換装が必須だが 電子工作が趣味ならともかく、普通の人が RAM の換装などできるはずがない。そうすると ターゲットにする意味がなくなってしまう。 -- ただ、このマシンは 裏蓋をあけるとすぐ RAM にアクセスでき、周りにスペースもあるので 換装自体は 最もやりやすい。最初に RAM 換装してみようと 思っているマシンだったりする。
GPIO の 解析
簡単そうなのが、microSD のセンスと イヤホンのセンスだったので同じことをやってみる。
初期状態
PAPIN: 0000ffff
PBPIN: 823f5f0c
PCPIN: ffdfdcff
PDPIN: fd7fffff
microSD なし PCPIN: ffdfdcff
microSD あり PCPIN: ffcfdcff
ありで PC20 が L に変化
phone1 あり -- 変化なし
phone2 あり -- 変化なし
分かったのは、microSD のみ。デフォルトの pullup を落とすとかしないと分からないのだろうか? それとも コントローラ経由?
さて PC10 からの PWM は 110111 (MSB が PC15)のビット列。
これを見るとバックライトは、PC13/PWM3/UART-RxD のように思える。
実際やってみると当たり。-- まぁこれは 選択枝がないようなもの。... それはともかく、コントーラの制御に UART を使っているものとばかり思っていたのだが違うのかも知れない。
すぐわかるのはここまで。他はどうしよう。
課題1 PHONE1/PHONE2 のセンス
Linux が動いてからでも遅くない。とりあえずパス。
課題2 ボタンの制御
これはどうやったら分かるのだろう? 配線もわからなければ、制御するための プロトコルも分からない。
こういうのに近いものがあるとすれば ... A-330 のワイヤレスコントローラか。受信部にマイクロコントローラが付いているところから よく知られているコントローラ互換のように思えるのだが ...
ロジアナ使うにしても できることは、コントローラ自体の PIN の変化が分かるだけ。分析すれば どのように制御しているかは分かるだろう。で、GPIO がどう配線されているかを見つけるのはどうしよう。... テスターで頑張ればなんとかなるか。
課題3 スピーカー出力切り替え
これも 後回しで問題ない。
課題4 PHONE の ポップノイズ対策 (ないと思うがあるかも知れない)
課題5 LCD の制御
LCD のつなぎ方は、割と決まっている。特に 2.8 inch なら A-320 などと 同じはず。-- と思ったが、A-320 の 新しいタイプ ILI9331 は SLCD(SmartLCD: HSYNC/VSYNC を使わない) 接続だそうだ。
確かめてみることはできるだろう。DINGUX の hwinit を参考にすれば 良さそうだ。... ソースコードの情報は、dingoo-linux の ここ。svn でダウンロードできる。
課題6 MicroSD の CS
MSC1 は、CLK/CMD/D0 のみ。CS は GPIO でやることになっているようだ。そうすると PIN を見つけないと MicroSD が使えない。
これは基本機能なので重要だ。なんとか見つけないと。... と思ったのだが、どうも SPI モードとは違うらしく 上記の線だけで良いのかも。
付録 PMP3100(旧機種) の基板写真
P5-5 JZ4725B ピンアサイン表 (作成中)
凡例 : x 割り当てに選択の余地がないピン
o A-41 固有の割り当てで判明したピン
? 不明なピン
Jz4725B
? 2 PD18 LCD_PCK(LCD)
? 48 PC15 PWM5
? 54 PC20 WAIT(SRAM)
? 55 PC22 CS2/MSC0_D3
o 57 PC13 PWM3/UART0_RxD(UART)
o 58 PC12 PWM2/UART0_TxD(UART) T1
? 59 PC11 PWM1/I2C_SCK(I2C)
? 60 PC10 PWM0/I2C_SDA(I2C)
? 68 ADIN1
x 84 PPRST(RTC)
o 85 PB31 WKUP(RTC)
x 86 PWRON(RTC)
x 100 BOOT_SEL0
x 101 BOOT_SEL1
? 102 PD23 LCD_SPL(LCD)
? 103 PD22 LCD_CLS(LCD)
? 105 PD25 LCD_REV(LCD)
? 107 PD24 LCD_PS(LCD)
x 108 PD20 LCD_VSYNC(LCD)
x 109 PD19 LCD_HSYNC(LCD)
? 110 PD18 LCD_DE(LCD)
? 111 PD17 LCD_D17(LCD)
? 112 PD16 LCD_D16(LCD)
P5-5 JZ4725B 判明ピン
バックライト:
o 57 PC13 PWM3/UART0_RxD(UART) H で ON
microSD センス:
o 54 PC20 WAIT(SRAM) L で microSD あり
JZ4725B 調査対象ピン
制御候補
? 48 PC15 PWM5/A18(SRAM)
専用機能
? 57 PC13 PWM3/UART0_RxD(UART)
? 58 PC12 PWM2/UART0_TxD(UART)
? 59 PC11 PWM1/I2C_SCK(I2C)
? 60 PC10 PWM0/I2C_SDA(I2C)
? 68 ADIN1
電源制御
x 84 PPRST(RTC)
x 85 PB31 WKUP(RTC)
x 86 PWRON(RTC)
GPIO 候補
? 54 PC20 WAIT(SRAM)
? 102 PD23 LCD_SPL(LCD)
? 103 PD22 LCD_CLS(LCD)
? 105 PD25 LCD_REV(LCD)
? 107 PD24 LCD_PS(LCD)
? 111 PD17 LCD_D17(LCD)
? 112 PD16 LCD_D16(LCD)
+ UART ?