2010年04月15日

開発環境を構築

Neo slim 3000 の開発環境を 遊んでいる eeePC 701SDXに構築することにした。

OS は、Vine-5.1にした。DVD イメージファイルを USBメモリに RAW で書き込むと DVD boot と同じようにインストーラが起動する。

    いままで diskboot.img を使ってきたのだが、同じようにやろうとしてはまった。どうも diskboot.img は、使えないようだ。


mips 用の toolchain は、

にある dingux_toolchain_20091022.tar.bz2 を /usr に展開して使うことにした。

    export PATH=$PATH:/usr/mipsel-linux-uclibc/bin:/usr/mipsel-linux-uclibc/usr/bin
    export CROSS_COMPILE=mipsel-linux-

こんな環境変数の設定で使う。

つぎに、dingoo-linux のカーネルを試しにビルドしてみることにした。

svn で全部のソースを取って来ることになっているのだが、どうしても途中でエラーになる。関係ありそうなディレクトリを個別に取って来ることにした。

    もういちど取り直して作ってみた。(新しいのは bzip2 で圧縮)

とりあえず次の3つにまとめた。



1) linux-2.6.24.3 を展開して TOP デレクトリに cd
2) files-2.6.24.3-dingoo-r171.tar.gz を展開
3) mtd-utils-dingoo-r171.tar.gz を展開
4) linux-2.6.24.3-dingoo-r171.patch.gz を -p1 で当てる。
5) make a320_defconfig
6) make menuconfig
7) make zImage

これで、ビルドだけはできた。ただし、それらしいというだけで動くものかどうかは分からない。

さて、カーネルに付属のドキュメント README-JZに目を通してみたのだが、


+-----------+ +-------------+ +-------------+
| YAFFS2 | | UBIFS | | FAT or EXT2 | Filesystems
+-----------+ +-------------+ +-------------+
\ | / \
\ | / \
\ | / \
\ | +-----------------+ +-----------------+
\ | | UBI Block Layer | | MTD Block Layer |
\ | +-----------------+ +-----------------+
\ | / /
\ | / /
\ +-------------+ /
\ | UBI | /
\ +-------------+ /
\ | /
+-------------------------------------------+
| MTD |
+-------------------------------------------+
|
+--------------------+
| nand_base.c |
+--------------------+
|
+--------------------+
| jz4740_nand.c |
+--------------------+

なんていう図が載っている。ブロックデバイスの上に UBI というレイヤがあって、どうも ウェアレベリングのようなことをしているようだ。そしてその上に UBIFS という専用のファイルシステムがある。

それとは別に YAFFS2 も載せているようだ。

ようだと書いているのは、dingoo-linux には、それらが含まれていないため。Ingenic が出しているパッチは 20090506 が最新のようだが、ダウンロードできないので確認できていない。

まぁ dingoo-linux がサポートしていない以上 DINGUX を動かすだけなら必要ではないのだが... Neo Slim 3000 のファームウェアがどうも UBIFS を使っているっぽいのだ。中を覗いたりするのに欲しいような気がしている。

ところで、ビルドしてみたカーネルは、Neo Slim 3000 では動作するはずもない。ビルドしたのは、A-320 でどういうカーネルになっているかを確認するのが目的。

ベースにしようと思っているのは、

こちらの方。Jz4725 を使っている SAKC用のカーネル をベースにしようと思う。

情報は、SAKC : Development_Tools にあるようだ。

    linux は出来ていると勝手に思っていたのだが、Qi-U-BOOT までみたいだ。だが、手順として、
    1) Create config Files
    2) Modify existing Drivers
    と書いてあるだけだし、新チップに対応するような大変さは感じられない。 大丈夫なんだろう。

ちなみに上の projects の リンクから、Ingenic が出している最新のカーネルソースも取れるようだ。

SAKC のカーネルと書いたが、Ben-NonoNoteBuilding_Software_Imageをみると openwrt-xburst を git で取って来ることになっているらしい。

とりあえずとって来てみたら linux-2.6.32 用のパッチがあったので、同じように整理してみた。


ビルドしてみた。

基本は dingoo-linux と同じだったのだが、defconfig がないので、全部自分で設定しないといけない。

Ingenic のオリジナルを http://projects.qi-hardware.com/ を見て git で落とせたので 同じように整理。dingoo-linux の方がオリジナルに近い感じ。オリジナルは、YAFFS2 と UBIFS が入っているので files-xx が大きい。2.6.31.3 ベースの files-xx は、UBIFSが linux 自体に入っているので 小さくなっている。ちなみに rxx は git に登録されているリビジョン。

xburst-tools を ビルトしてみる。



上の projects のリンクに Xburst Tools がある。これに usbboot が含まれている。



autogen.sh を実行 して configure するようになっている。最初 CentOS 5.4 とかを使ってみたが CentOS が使っている autoconf が古くてエラーになった。

あと、libconfuse-devel (と check-devel) が必要で、Vine だと VinePlus に含まれている。あと libusb-devel も必要で DVD には含まれていない。

一応ここまでで、開発環境は構築できたとしよう。

追記:メモ


IPU -- イメージプロセッシングユニットの説明は、Programming Manual にあった。

概要は、YUV や YCbCr フォーマットのデータを resize 付きで フレームバッファに転送する機能。(それだけで他の機能はない)

フレームバッファは、R8G8B8 か R5G6B5 / R5G5B5 である必要がある。

あと Xburst は SIMD 命令 (x86 の MMX とか SSE のようなもの?) を持っているが、詳細は分からない。

どうも

  • アセンブラ のソースは公開されているから、それを見れば 一覧と形式は分かる。
  • Mplayer とか jpeg6b に移植されているので 使い方はそれを参考にできる。

ということらしい。

追記:

u-boot も置いておく。u-boot-1.1.6 からの差分。
posted by すz at 00:44| Comment(1) | TrackBack(0) | Jz47xx(Linux)

2010年04月10日

Neo Slim 3000でなにをしようか

いろいろ調べてぼんやりながら何ができそうかについては、わかってきた。

で、実際なにをしていこう。

まずハードウェアの改造などしなくてできること。たぶん...カスタマイズ可能な PMP にするということになりそうだ。

既に DINGUX というものがあるわけだから、そのリソースを極力利用する方向で考えるわけだが、動かすのが目的なら A-320 を買ってDINGUXをインストールすればよい。これを目標にすると動機としては弱くなってしまう。

Linux をちゃんと動かすのを1つの目標にして。DINGUX が動くかどうかは、それができたかどうかの判断基準。... ぐらいに考えておこう。

さて、その先はどうしよう。趣味なんだから Linux を動かすこと自体を目標にしてもかまわないわけだ。Linux が動いたら満足してしまう気もするが、先のことも一応考えてみよう。

本体だけで高機能なものを作ろうとするのは多分無理がある。上には PDA や PC があるわけで、PDA や PC で出来ることならそれでやれば良い。方向性としては専用機化が良いのではないか。

例えば、サブディスプレーだって良いと思う。PDA でそれが出来たとしてもそういう使い方はしない。専用機にしたら PDA が別に必要になる。

電子工作の対象としても考えている。なにかデバイスを接続して制御したい。そういうことをすれば、ますます専用機化していきそうだ。

あとやりたいことは、Linux ではなくもっと 生(RAW)に近い状態で使う。AVR でやっているようなことを これでやっても良いような気がする。

usbboot を見て思ったのだが、ブートローダの stage2 は、USB を制御している。おなじようにして好きなソフトを動かしても良さそうだ。

好きな リアルタイム OS を動かしても良いし、本当に 生で使ってもかまわない。

入れ替えるのもそれほど手間でもない。ボタンを押してUSB に差し込み usbboot を動かすだけだ。

ただバッテリーには要注意。自分でバッテリー制御をやっているとすれば、バッテリーをつなげたまま 好きなソフトを動かすのは危険。バッテリー周りの仕組みがわからないなら外してしまった方が良さそう。

マイルストーン



    0) 開発環境の構築

    開発用の Linux のインストールと toolchain のインストール

    1) usbboot を理解して動作させる。

    FLASH にしてもなにもしないで書き込めるわけではないようだ。少なくとも 制御するための情報を Config ファイルに正しく書かないと。SDRAM も同様だし、結局チップの初期化を一通り理解する必要がありそうだ。

    あと gpio を 出力にして H/L の設定をするコマンドがある。状態の読み込みは、直接レジスタを見れば良いのだろう。

    このツールだけで 制御ピンを探すようなことは出来そうだし、改造すれば、たとえば PWM を動かしてみるということは出来そうだ。

    こういうことをやっているうちにチップの制御方法を理解していくはず。

    2) linux をビルドして 基本的な動作を確認

    デバイスドライバを極力減らしてビルドして、linux そのものが動いているかどうか確認する。USB はひとつの確認手段になるはず。

    USB はチップの機能だし、制御方法を見つけなくても動かせる。なによりドライバーがある。コンソールとして使うことも出来るに違いない。

    USB が使える出来る前の段階では LED しかないわけだが、よくよく考えれば stage2 で既に動いているわけで 工夫次第で 信頼できるデバッグ手段になり得る。

    3) Neo Slim 3000 のドライバを動かす

    LCDは既に外している。裸の状態でつなげて壊すのも嫌だし、Linux がちゃんと動いてからつなげようと思う。

    LCD をつなげるまでは、ボタンは自由に見ることができるが、LCD と線を共有しているので、制御の仕方も変わる。

    装置固有のドライバはこの段階で確認する。

    Neo Slim 3000 のドライバがちゃんと公開されているかどうかは現時点では分からない。オリジナルのドライバで良いのかもしれないし改造しているのかも知れない。

    まぁ大分後の段階になるから、そのときにはかなり分かっているはず。


      ちょっとメモ:

      DINGUX のキーコードは

      306 CTRL (A = ○)
      308 ALT (B = ×)
      32 SPACE (X = ▲)
      304 SHIFT (Y = ■)
      9 TAB (R)
      8 BS (L)
      13 RETURN (START)
      27 ESC (SELECT)

      273 UP (UP) 一応未確認
      274 DOWN (DOWN) 〃
      275 RIGHT (RIGHT) 〃
      276 LEFT (LEFT) 〃

      19 PAUSE (HOLD)

      0 -- (POWER) ?

      だそうだ。同じキーコードを返却するようにしないと。

      Neo Slim 3000 は、START,SELECT なんていうボタンはないが、幸いなことにアナログスティックはある。
      アナログスティックとしての機能をサポートしないで、ボタンを拡張するのに使えばなんとかなりそうだ。

      例えば FN1-FN4 みたいに定義して


      FN1
      FN4 FN2
      FN3

      FN1-4 + X => START
      FN1-4 + Y => SELECT

      とか。同時押しというオペレーションを使っているソフトがあるらしいので、アサインは検討の余地がある。

      問題は HOLD 。固定できるキーはないから 工夫がいる。

      鍵を回すイメージで

      FN1 → FN2 → FN3 → FN4 → FN1 (時計回りで1周) HOLD
      FN1 → FN4 → FN3 → FN2 → FN1 (反時計回り) HOLD解除

      とか。

      POWER はどうしよう。shutdown 機能があるので 電源スイッチでは代替できない。START + SELECT 同時押しかつ長押し?

      ついでに PMP-3100 。-- プライオリティは低いが、一応

      こいつは、POWER だけない。START + SELECT 同時押しかつ長押しで良いのかも。

      ついで dmenu の機能で

      L : 音量ダウン(-5%)
      R : 音量アップ(+5%)
      X : 輝度アップ(1/5レベル)
      Y : 輝度ダウン(-1/5レベル)

      というのがある。カーネルのドライバレベルで出来ても良いような気もする。FN2 だけ特別扱いにするとか。


    4) ユーザランドの動作確認

    Linux が概ね動いてから、DINGUX とかのユーザランドを動かしてみることにする。MP4 のアクセラレータとかを使っていない限り互換性はあるはず。

      IPU は、JZ4725B にもある。ユーザランドから見て A320 と違いがないようにできそうだ。

    不安なのは、LCD 。ハード的に R5G6B5 と決まっているから A-320 と合わないかも。

    dingoo-linux wiki: GPIOを見ると配線を調査したデータが載っている。これ見ると 16bpp で VSYNC/HSYNC を使っているように見える。16bpp だからといって R5G6B5 とは限らないのだが、デザインガイド通りなら R5G6B5 のはず。-- あまり心配しないで良いかも。

      IPUが対応しているフレームバッファのフォーマットは 24bpp か R5G6B5。だから R5G6B5 なのは確定で心配する必要はなさそう。

    “初心者お断り”の超小型Linuxマシン「本(Ben)NanoNote」をいじり倒すというレビュー記事が出ている。普通に作っていけば、これと似た状況になりそう。


まぁこんな感じ。それぞれの段階を楽しもうと思う。きまぐれで買ってみただけだから途中で挫折するかも知れない。

電子工作として何するかは、あまり考えていない。シリアルとか欲しいと思ったが、USB でなんとかなるはずで 再考中。

まぁセンサは欲しい。温度計とか加速度センサ。AVR の Tiny44A とかを使ってみたいが、全部終わった後。

    調べたところ PIC24FJ64GB002 が USB HOST 機能もあって良さそう。-- ずっと先になりそうだが一応メモ。

さらに言うと、LCD を外して別のものをつなげてみたい。FPGA とか。smart LCD 用のピンは出ていると思うので、多少は柔軟な使い方ができるはず。

動いてしまった後の話になるが、mipsel のセルフビルド環境というものにしてみたい気もする。usb デバイスしかないわけだが、イーサネットとして見せる 仕組みはあるので、HOST とつないで network には接続できる。rootfs を nfs にすれば、リモートから ログインできるマシンになるわけだ。このあたりは SmartQ5 と同じ。

SmartQ5 は 128MB あるがこれで少ないと感じていたわけで、32MB ぐらいで何ができるのか? という気にはなるのだが、ubuntu を載せるとかいう無理なことを考えなければ それなりには使えるかも知れない。16bit 幅 512Mbit の DRAM をなんとか手に入れて 64MB にしてみる... とか電子工作として楽しめるかも知れない。
だがメモリを増やすのなら、2 個載る Jz4740 とかの方が楽めそうだ。512Mbit にしても 128MB になる。あと メモリ帯域が 2 倍違うため性能的にも有利。

追記: 512M bit DRAM の値段を考えたら、吊り合わないことが分かった。

ただ 512M bit (8bit 幅)の SO-DIMM (3000円ぐらい) から取り外すなら 値段的には折り合うか。難易度は高いが親子にする加工ができれば128MB にできる。

    仮に 333 Mhz で動作させたとすると、メモリクロックは この 1/3 が選択できるので 111 Mhz ということになる。
    SDRAM は隙間なく使うようなことができた場合 1 クロック 2 バイト(16bit 1個の場合) の READ/WRITE ができるわけで、 単純計算で 222 MB/sec の帯域ということになる。2 個積めばこの倍で 444MB/sec 。ただし帯域を使いきれるわけではない。大量のメモリコピーをするようなケースで 良くて 1/2 とか。

    アクセスタイムという面で見てみると ... 普通の使い方をしている場合、L1 キャッシュラインを 埋めるだけの連続アクセスになる。キャッシュラインが 16バイトだとして、16bit 幅だと レイテンシ + 8クロックかかる。2 個使って 32bit 幅にすると レイテンシ + 4 クロック。

    レイテンシは、CAS レイテンシが 2 クロック。ランダムアクセスだと ページを切り替えるからさらに 数クロックかかる。たぶん 全部で 4 クロックはかかるはず。4 クロックだとしても 8: 12 だから バス幅が 2 倍になっても 1.5 倍にしかならない。また、こういう状況になるとすれば、キャッシュが全然ヒットしないケースということになるからレアケース。Jz4740 が速いといっても Jz4725B に比べて せいぜい 10%-20% 高速とか じゃないかと思う。

    追記:

    Jx47xx ではバンクはインターリーブになっていない。そうすると単純に Burst 転送の繰り返しと思って良いかも知れない。

    Programmers Manual にタイミングが載っていたので見てみた。

    以下は 16 バイトの READ/WRITE

    同じページにアクセスする場合 典型的な例では、32bit なら READ/WRITE に 6clock , 16bit なら 10clock 。

    ただし、こういうアクセスをするのはかなり難しい。単純に memset する場合でも ダーティなキャッシュを追い出して書こうとするメモリを読み込み、キャッシュに書いてダーティにする動作になる。memcpy だと source と distnation を交互にアクセスすることになりがち。

    違うページなら 32bit で 11clock / 16 bit で 15 clock 。これがほとんどだと思って良い。

    そうすると 32bit の A320 は最大 (16 - 11)/11 45% 速いことになる。ただし、普通こんなに差がでないのは上で書いたとおり。

    ところで、JZ4740 は 180 nm のプロセスルールだが、JZ4725B は、160 nm だそうだ。クロックアップ耐性は JZ4725B の方が高いかも。
posted by すz at 22:14| Comment(0) | TrackBack(0) | Jz47xx

2010年04月07日

Neo Slim 3000入手

Neo Slim 3000が入手できた。

すぐに分解したいところだが、不良品だったりすると困るし取り敢えず動作確認など。


  • 備品

    USB A-miniB ケーブル (1m ぐらい)
    8cm CD
    USB Aメス ACアダプタ
    インナータイプ イヤホン

    AC アダプタは、プラグ折りたたみ式のコンパクトタイプ。イヤホンも端子が金色で、少々グレードが高い。

    CDの中はあまり見ていない。PDF マニュアルもあったが、Web 版と同じみたいだし。

  • 本体インターフェイス

    オーディオミニジャック
    USB miniB コネクタ
    DCジャック (たぶん 例の EIAJ#1 もどき)
    SDスロット (push-push)

    電源スイッチ スライドSW(ON/OFF)
    ボタン 4方向 A,B,X,Y, L(電源マーク),R(OK)
    アナログスティック
    スピーカー(モノラル)

    筐体は3枚におろせる構造。裏面に 4ヶ所 小さな +ネジ。

    ボタンは、透明なカバーに印刷された紙が入っていて質感が低い。充電ランプ(赤,左), 電源ランプ(青,右)の光がもれる。均一にもれるわけではないので残念な感じ。

    他の部分の質感はよい。

メニューシステム


まぁ二度と使えない可能性もあるので、どういうものかチェックだけはしておこうと思う。

基本的に、サンコー AV BANK (マニュアル)と同じシステムのようだ。


    92 名前:名無しさん@お腹いっぱい。[] 投稿日:2010/02/07(日) 19:53:21 ID:vebL0otX
    サンコーのAV BANK ATLMPB4G を買ってみた。画面がそれなりに大きいので、
    老眼が始まった私には、動画の字幕を読むのは楽でよい。液晶も結構きれい。

    ただ、以下の点が気になる。
    ・変な日本語(「を探している」、「は、工場出荷時の設定を復元する」 主語がない・・・)
       ⇒割と中国製なんかにありがち まぁ、意味は想像できるので愛嬌と思えば特に問題なし
    ・PCからはずしたときに、「を探している」が出て待ちが長い
    ・ID3タグにきちんと対応してない? ID3タグを読んでアルバム検索できない。(複数アルバムをフォル
     ダに分けて入れると、なぜか1曲だけアルバム分類されたり変な動きをする)
       ⇒フォルダに分けてフォルダをアルバムとしての再生すれば実用上は回避可能だが
    ・Ebookは、青空文庫のテキストを表示しようとすると文字化け スクロールすると勝手にリセット
       ⇒取説に「非対応」とあった・・・ ばおーはOKなのに
    ・音楽再生時間が、定格でも6時間と短め

     言語対応がダメ。この液晶サイズでこの値段、動画メイン使用なら悪くはないかって感じ。

のレビューを見て気がついた。「を探している」、「は、工場出荷時の設定を復元する」が同じ。

日本語が変だし英語を想像しないと理解できない。しょうがないので、言語をEnglish にすることにした。

  • Toolbox
     System Stetti(文字切れ)
      Desktop Set
       - タイムゾーンの設定はここ(重要)
      Animate Set
      Resume Background
      Boot Option
        - 電源 On で Top レベルにするか、前の状態にするかの設定
      Timing Shutdown
        - デフォルトは Off
      Backlight Luminace
        - 明るさ 5 段階
      Backlight Time
        - デフォルト Off 。バックライトが 切れたら Lボタンで復帰。
      Languages
      System Function
       Device Infomation
        - Device Model の確認や 容量の確認とか
        - ここに JZ4725 と出る。
        - SDカードの容量も出るが文字が重なって読めない。
       Recover System
       Format U Disk
        - U Disk とは内蔵FLASH のこと
       Updating ...
        - U Disk の / に (解凍した)NEO_UPDATE.BIN を置く。
       Test Screen
     World Clock
     Calendar
        - 日本語の設定だと意味不明
  • E-Book
        - エンコーディングを設定できる。UTF-8 が無難?
        - CP932 が SJIS の意味。
  • File Manager
  • Radio
        - Background の設定あり
  • Music
        - SJIS で入れた ID3タグは文字化けしていない。
        - ...いつのまにか文字化けするようになった。
        - 日本語で「更新プログラムのメディ」の実行が必要。
        - E-Book のエンコーディングも関係あるかも。
        - Background の設定あり
  • Video
        - 手持ちの Xvid なら普通に見れた
        - ファイル単位のスキップ ↑(前)↓(後)
  • Recoder
  • Picture
  • Game

  • メインメニュー基本操作

      →  なし
      ←  選択(○ と同じ?)
      ↑  項目移動(UP)
      ↓  項目移動(DOWN)
      ○  選択
      ×  もどる
      ■  なし
      ▲  なし

  • プレー中の基本操作

    Video/Music

      →  音量UP
      ←  音量DOWN
      ↑  ファイルスキップ(前)
      ↓  ファイルスキップ(次)
      ○  PAUSE
      ×  メニュー
      ■  なし
      ▲  なし

    Radio

      →  音量UP
      ←  音量DOWN
      ↑  チューニング(周波数DOWN :逆になっている)
      ↓  チューニング(周波数UP)
      ○  チャンネル切り替え
      ×  メニュー
      ■  なし
      ▲  なし

  • その他

    電源 は、入れて 5 秒ぐらいで立ち上がる。オフはすぐ切れ シャットダウンしているような感じがしない。

    そういえば、操作のロックがない。なにかのキーの組み合わせなのだろうか?


まぁこんな感じ。

文字が重なって読めないとか、バックグラウンドと重なって読めないとか日本語の訳語以前の問題もあるし、メニューシステム自体も全体的に未完成な印象でアップデートに期待。

各機能は、細かいところに不満が出たりするがどうにもならない。

分解



そろそろ分解したいが、チェックしたいのは


  • CPU の確認 -- ほんとうに JZ4725 なのか?
  • メモリの確認 -- 何MB なのか
  • FLASH の確認 -- チップの種類
  • バッテリーの容量と電圧
  • BOOT_SEL(ブートの設定)の接続
    BOOT_SEL0  101 
    BOOT_SEL1 100
  • シリアルの接続
    UART0_TxD   58 
    UART0_RxD 57
  • ボタンの接続
    面倒


これぐらいか。さぁ分解。



まず、4つのネジを外して裏蓋をはずすと 基板の裏がみえるようになる。このj点で外れる部品は、(裏蓋と)ネジ4 つと電源スイッチのツマミのみ。ちなみに基板の色は青、

基板の裏には、SDカードコネクタなどのコネクタ類すべてがある。あと、バッテリーが両面テープで貼られている。

あと目に付くのは、いくつかの空きパターン。ひとつは FLASH2 と書いてあり 4GB モデル用なのだろう。あと (よくわからない)18 pin と 10pin の TSSOP のパターンが重なるように配置されている。外付け DAC かアンプなのだろう。

あとマイクと アナログスティックが見える。アナログスティックは基板をくり抜いてマウントされている。裏蓋もここの部分に台が付いていて強度上の配慮がされている。ちなみに、B10K と印字がある。

あとは、水晶も見える。水晶は、表なのだが基板がくり抜かれている。表側はほとんどスペースがないのだろう。

裏側は、バッテリーが一番背が高い。それ以外はガラガラなので、薄い基板を仕込むことはできそうだ。

次に進む。基板は、真ん中の枠に 4つのネジで固定されている。
ネジを外すとまず枠が外れる。枠をはずすと基板を取り出せた。

まず、ボタンのパーツが自由になって外れるので、回収しておく。次にフレキ。フレキはコネクタで止まっているのでロックを外して抜いておく。あとスピーカーが邪魔。なくても困らないので、基板から外してしまった。元にもどすためにはハンダ付けが必要になった。



さてようやく基板の表が見えるようになった。基板にはシルクで、

    Neo Slim 3000(1022) - 2009.12.17

とマークされている。ここで書くことはこのロットのみの話ということ。



CPU には、JZ4725B と書いてある。あまり意味がないが、一応 SDXC 対応の新しいタイプだ。

    この書き方は相当に語弊がある。正確には、SDカード規格2.0 にしたがって 最大クロックを80MHzを上げたということ。Jz4725(無印) は、SDカード規格1.01 で最大クロックは 20MHz だった。

    前のSD規格は、50MHzまでだったはずなので、80MHz で動くとすれば SDXC カード。ただし 1bit で I/O するので、普通のSDHCカードの最高速より遅い。(80Mbps / 200Mbps) 。また Jz4725(無印) は、最大 20MHz で 規格より大分下だったので、それと比べれば 普通のSDHCカードも高速になる。... といっても カードの性能の 1/4 にしかならない。




肝心の SDRAM には、EM63A165TS-6G と書いてある。ググると 16M x 16 -- 32MB だ。予想より容量が大きく嬉しい。



FLASH は、H27UAG8T2ATR-BC 。FMラジオは、RDA5807P と水晶が載った 10pin のモジュール。あとは アンプの XPT4890。電源用とかいくつか IC があるが 8pin 未満。

    データシートはみつからなかったが、スペックは(一応)見つけた。(Hynix_Product_Catalogue.pdf より)
  • H27UAG8T2A 41nm
  • 電圧 3.3V
  • 容量 2G x 8bit
  • Page Program 4KB + (128B or 224B ??)
  • Block Erase 512KB
  • Stack Mono (?)

    - 41nm で 32Gbit のは、4KB + 224B と書いてあったが、16Gbit もそうなのかが不明。
    - Stack の意味も分かっていないが、一応メモ。



LCD は 0.5mm ピッチで 54pin。型番がフレキに印刷でてあるのだが LED のフレキで隠れて全部読めない。 B3xxW1MV1 。

これではググることさえ出来ない。

    追記:
    B334W1MV1 だった。が、全然ヒットしない。

    CFAF320240F-T-TS というのが、似ているといえば似ている。0.5mm ピッチ 50pin だし、フレキにチップがいくつか載っているのも似ている。ただ、4線のフレキが メインのフレキに付いていないところが違うし、ストレートでないのも違う。

    まぁ取り外して電子工作につかうことは 今はほとんど考えていないのでピンアサインはあまり重要ではない。コントローラICが分かれば良い。

    ところで、Jz4725B の LCD 用のピンは、

    LCD_D0 〜 LCD_D17 / SLCD_DAT0 〜 SLCD_DAT17
    LCD_PCLK / SLCD_CLK
    LCD_VSYNC / SLCD_CS
    LCD_HSYNC / SLCD_RS
    LCD_CLS
    LCD_SPL
    LCD_DE
    LCD_PS
    LCD_REV


    VIDEO 出力のように PCLK(dot clock)/HSYNC/VSYNC/ を送るタイプの LCD と コントローラにコマンドとデータを送る タイプの smart LCD を制御できるのだが、54pin も信号線がある LCD は、たぶん両方サポートしている。どっちを使うかは接続できまりモジュールだけ分かっても決まらない。

    それぞれメリット/デメリットがあるので、どちらを選ぶかは、設計するひとの考え方で決まる。

    チップメーカの Ingenic が Linux のパッチを出していて、ドライバのソース自体は入手済みかもしれない。ちょっと調べてみよう。

ここまでのまとめ



  • CPU の確認 -- ほんとうに JZ4725 なのか?

    JZ4725B

  • メモリの確認 -- 何MB なのか

    EM63A165TS-6G -- 32MB

  • FLASH の確認 -- チップの種類

    H27UAG8T2ATR-BC

    裏に空きパターンも

  • FMラジオ

    RDA5807P モジュール (10pin)

  • バッテリーの容量と電圧

    403759 900mAh 3.7V

  • LCDの種類・コントローラ

    不明

  • BOOT_SEL(ブートの設定)の接続
    BOOT_SEL0  101 
    BOOT_SEL1 100

    SEL0 はプルアップ? SEL1 は線が伸びていて、なにか使っている。
    11 で FLASH からのブート。01 で USB-BOOT 。

  • I2C・シリアルの接続
    I2C_SDA     60
    I2C_SCK 59

    18pin の空きパターンに接続。4.7K でプルアップ済。

    UART0_TxD 58
    UART0_RxD 57

    不明

  • ボタンの接続
    LCD と共用。詳細不明。


ちゃんと基板を調べられているわけではないのだが、コネクタの類が見つからない。外に引き出したいのは、I2C,シリアル,USB-BOOT 設定(BOOT_SEL1/PC31)

BOOT_SEL1 がボタンと共用されていれば、あるボタンを押すことで USB-BOOT になるかも知れない。もしそうであれば、無改造で Fファームウェアの改造にトライできそうだ。そうでなければ面倒。失敗したら終わりなので、なんとかして改造することを考えなければならない。

    Jz4725B データシート (2009/07/07)は、PC31 が GPIO として使えるような記述だが、Programming Manual では GPIO として使えないような記述になっている。別の pinアサインの PDF (v3) にも GPIO の記述がない。ボタンと共用を期待するのは厳しいかも。ただボタンの接続によっては、パラレルでつなげられるかも。

I2Cやシリアルは、ファームウェアの改造を始めるのに必要というものではない。基本的に電子工作観点。ただ、シリアルがあれば立ち上げメッセージを見たりログできるので効率が違う。

基板+バッテリーの状態で、USB につなげてみた。赤と青の LED が、L,R ボタンの近くにあるが、ちゃんと光るし接続もできる。



LED は、赤がまぶしい。指向性がないからケース内部まで照らしてしまうようだ。なにか黒いもので覆って ボタンだけを照らすようにしたいところ。黒いもので思いつくのはプチルゴムの両面テープとか。

    赤のそばの電流制限抵抗は、201 の刻印で 200Ω。青のそばの電流制限抵抗は、102 の刻印で 1KΩ。両方間違いでは?と思える値。-- 抵抗が逆になっているのではないだろうか?

    いじって遊んでみることにしたので、予備器も 複数購入したのだが、LED の不良率が高い。両方点くのは分解したこいつだけ。他のは片方しか点かない。まぁ下品というか安っぽいかんじで、LED を 交換したくなるから良いのだけれども ... ちなみに他のところの不良はなかった。

    不良のLED を自分で直すとすれば ...

    1) 抵抗を入れ替える。
    2) LED を 横にマウント。
    3) ブチルゴムの両面テープでマスク

    かなぁ。もし LED を壊してしまったり、なくしてしまったら 秋月の 1608の LED と交換かな。赤は 端子が表面に出ているので 付けやすいが 黄/オレンジは難しい。青はないので 2012を無理やり付けるしかないか。抵抗をなくしたら ... ちょっと困る 1608 の抵抗は揃えていない。2012 ならあるのだが .. 。1608 は 秋月で リールなら買える。2500 個! 500 円。マルツだと 10個52円

それはともかく、Ingenic JzSOC USB-DISK というふうに見えていて DISK のサイズは 1736MB 。FLASH 全部を見せているわけではないようだ。

とりあえずは、こんなところ。

追記: I2C は分かった、DACかもと書いた空きパターンに接続されていた。空きパターンは、1.27mm ピッチ(?)。ここから引き出して AVR とか I2C スレーブになれる マイコンやデバイスに接続できる。



となりの シリアルは、外側にパターンが伸びていないので不明。無接続かも知れない。... 無接続なら 引き出すことは可能だが、0.4mm ピッチだし相当に厳しい。私には無理。

BOOT_SEL0 は、Jz4725B のそばでプルアップしている様に見える。BOOT_SEL1 は、配線が伸びていて何か使っているようだ。USB-BOOT できる可能性がある。

そういえば TVOUT だがメニューにあるものの、それ用の IC がない。TVOUT はできないはず。メニューで選んでしまうと操作できなくなるかも知れないし危険。

追記:54pin の LCD のデータシートを探してみた。

54pin だということが分かったので、探してみた。
ヒットしたのが

  • LTV350QV-F04
  • AM480272H3TMQW
  • WXCAT35-TG3
  • T2432C13VR01
  • MB-TFT-35-S4-S

とりあえず、LED と GND に着目してみてみると 全部

  • 1,2 -- LED カソード
  • 3,4 -- LED アノード
  • 53,54 -- GND

だった。なにかデファクトスタンダードみたいなのがあるようだ。
                       HSYNC   VSYNC   DOTCLK RESET   CS
    LTV350QV-F04 36 37 38 8 9
    AM480272H3TMQW 36 37 38 - -
    WXCAT35-TG3 42 43 44 14 15
    T2432C13VR01 36 37 38 8 9
    MB-TFT-35-S4-S 36 37 38 8 9


AM480272H3TMQW は名前から想像できるように 480x272 で、他のと違う。

とりあえず、違う 2つを外して もうすこし別の信号もチェック。

             CS    SDL   SDI  DATA  DataEn 
    LTV350QV-F04 9 10 11 12-35 52
    T2432C13VR01 9 10 11 12-35 52
    MB-TFT-35-S4-S 9 10 11 12-35 52


どうも一緒のようだ。これだと仮定して、たとえば HSYNC に信号が接続されているか.. 接続されているならどの信号か? という観点で見ればだいたい判るはず。



よく見てみよう。左の ところ 4pin 分つながっている。これは丁度 39-40 の VDD(analog),VCC(diginal) にあたる。左端の 2pin も GND に接続しているように見えるし、右が 1 番ピンということになる。

その右 38 から DOTCLK,VSYNC,HSYNC,R7... R0 という並び順。8pin が接続されていて 3 pin が同じ信号。... ということは smart LCD でなく Video タイプの LCD。3pin が同じ信号ということは Red は 6bpp か 5bpp 。次に 6pin 分接続されていて、その先はよくわからない。まぁ Green は少なくとも 6bpp ということだけはわかる。こんな風に 接続をおっていって、R5G6B5 の 16bpp ということが判った。

これで少なくとも「どういうドライバを使うのか?」ということは分かったわけだ。ただし、バックライトを点灯する方法は分からない。これについても 明るさ調整できるようだから、おそらく PWM のどれかという仮定はできる。

    追記:aitendo から 3.5 inch LCD [LQ035NC111] が発売されている。データシートもある。
    これが、かなり似ている。

さてボタンの追跡。



これは、R ボタン周り。5 つのボタンがあって、それに対して 6つの 103(10KΩ) の抵抗が付いている。たぶんプルアップかブルダウン。ちがうとおもうが あるいは直列かも知れない。それはともかく、6 つの信号が 右端で VIA (スルーホール) に消えている。ここで裏をみて 追って行くわけだ。

裏はちょうどバッテリーで隠されている。バッテリーをずらした写真は、これ。



それに対応する表側も撮り直した。



    バッテリーは邪魔なので、外してしまった。ちなみに、バッテリーも LCD もない状態でも USB に接続したらアクセスできた。当面はこの裸の状態で 使おうと思う。


よーく見る。上の写真の 上部 の 7 本の横のラインのうち 上の 6本が、Rボタンの ところの 6 つの 103につながっている。で,一番上の 1 つを除く 5 つが LCD 用のデータ線とつながっている。

上の 1本は、VIA で消えているわけだが、表の部分は LCD のコネクタの下で分からない。見えないところで、おなじように LCD のデータ線とつながっているのかも知れない。

ところで、裏面で 1本単独の縦のラインがある。これは、BOOT_SEL1 。これも同じように LCD 用のデータ線につながり、どこかのボタンの線ともつながっているのかも。

さて、こういうデザインだとすると、Linux の LCD ドライバで対応しなければボタンの情報は取れない。ひょっとして、リファレンスデザインで既にそうなっているのかも。ここらでドライバのソースを見てみた方が良いかもしれない。

USB-BOOT



電源OFF の状態で → ボタンを押しながら USB を接続すると USB-BOOT になることが判った。

「JZ4750 USB BOOT Device」というデバイスとして認識される。

まだ詳しくはわからないが、ここでプログラムをアップロードすればそれが動作するのだろう。

まず最初にやりたいのは、FLASH の吸出しと書き戻し。それさえ出来るようになれば、大分不安が解消される。

まずは、xburst-toolsで何が出来るか調べて、これのビルド環境をつくることから始めてみよう。

とりあえず nandprog の README を読んでみた。linux 環境で動作すると書いてあり、ビルドするには mipsel-linux-gcc が必要とも書いてある。

詳しくは、NandProgrammer_Manual.pdfを読めとも。

でも ftp.ingenic.cn には全然アクセスできない。qi-hardware.com は ingenic オリジナルのものも含めて ちゃんと最新のものがあるみたいだから、こっちを頼ろう。

とりあえずは、ダウンロードして README を見ていった。どうも usbboot で FLASH に書き込むことができるようだ。


  • /etc/xburst-tools/usbboot.cfg を用意する。
  • usbboot -c "boot"
  • usbboot -c "nprog 0 u-boot-nand.bin 0 0 -n"
  • usbboot -c "nprog 2048 uImage 0 0 -n"

こんな感じで使うものらしい。コードを見ると、usb_get_ingenic_cpu() という 関数があってそれで処理を切り分けている。それは USB のプロトコルで 教えてもらうもののようで、かならずしも 実際のCPUと同じである必要はないようだ。

"boot" コマンドを実行すると、プログラムを送り込んでそれが動作するように思える。stage1 と stage2 があって、動作するにも段階があるようだ。動作すると、何がおきるのか?

stage2 のコードには usb のディスクリプタの記述がある。... ということは自分で usb を扱っている。ここまでくればプログラム次第でなんでも出来るのだろう。

stage2 で、定義されているコマンドは、

    VR_GET_CUP_INFO
    VR_SET_DATA_ADDRESS
    VR_SET_DATA_LENGTH
    VR_FLUSH_CASHES
    VR_PROGRAM_STAT1
    VR_PROGRAM_STAT2
    VR_NOR_OPS
    VR_NAND_OPS
    VR_CONFIGRATION
    VR_SDRAM_OPS


どうも SDRAM に書き込んで 実行することもできるようだ。ただし、コマンドを発行する側も合わせて対応しているかどうか見る必要がある。

残念ながら、READ するコマンドはないように思える。... 作ればなんでも出来そうだが

    どうも読むべきは、USB_Boot_Tool_Manual_1.4_EN.pdf らしい。直接リンクはしないが、これならググれば見つかる。


... そんなことより どうやってプログラムが動いたことを確認しよう。LED のアクセス方法を知るのが先か?

  • LCDを動かせれば、LED も必要ないのかも知れないが、LCD そのものも デバッグしないといけないだろう。あと LCD では情報を人が目で見るしかなく、記録できない。これはデバッグ時には面倒になる。

  • USB も良いのだが、ドライバーが切り替わると 接続しなおさないといけなさそうで 厳しい。usbboot などプログラムと組みにすれば、問題ないような気もする。が、作るのが面倒そう。

  • 電子工作を前提にすれば、I2C 経由で情報を書き込むとかはできる。メモリに書き込んで後で読み込むこともできるだろうし、シリアルに変換してホストに送ることもできるだろう。

  • どれも一長一短のような気がする。シリアルが便利なのだが、それも電子工作前提になるし他の人には勧められない。

  • 使えるものなら USB が一番良いような気がしてきた。専用プログラムならあたかも シリアルに接続されているように見せることも可能そうだし。できるかどうか分からないが検討してみよう。


こういう話題の続きは別途記事にしようと思う。さて、提供されている NEO_UPDATE.BIN の構造はどういうものなのだろう? それが分かれば dual-boot といったことも可能だろうし、FLASH に書き込む方法も分かるかも知れない。書き込む方法さえ分かれば吸い出す必要などなくなる。

まず、NEO_UPDATE.BIN 自体は 67MB ほど。U-DISK として見えている部分は 1736MB で見えていない部分が、200MB はある。

まず、NEO_UPDATE.BIN が圧縮されているのかどうか? 圧縮済みなら このファイルを圧縮しても 小さくならないので判断できる。

gzip をかけてみると 23 MB ほどに圧縮できることから 基本的に圧縮されていないようだ。だからといって FLASH の RAW イメージともあまり思えない。FLASH の容量との差が大きすぎる。


    ちょっと調べてみたが、RAW イメージかも。先頭 150KB 程は Ingenic 社が提供しているブートローダのようだ。uC/OS-II というメッセージが見える。続く部分は、ファイルシステムのようにも見える。だが、どういうファイルシステムか分からない。ひょっとして yaffs2 とか?

      dump してみたが、特徴がある形式で、yaffs2 とも思えない。カーネルソースをチェックしてみると UBI という ウェアレベリングのレイヤーがあり それに最適化された UBIFS というものがあるようだ。どうも UBIFS っぽい。

    それはともかく、RAW イメージならば FLASH の先頭かどこかに書くことで 元に戻せるのかも知れない。

    そんなことより開発環境。どうしよう。dingoo-linuxのダウンロードページにある dingux_toolchain_20091022.tar.bz2 でいいかという気になっている。


ちょっとメモ:「遊星より愛をこめて」より

usbboot に関する解析記事を発見。だいぶ分かってきているのだが、rockbox の usbboot とか A-320 についてとか知らないので関連情報が役にたった。

バッテリーの制御IC


例外はあるかも知れないが、中華PMPというものは、充電中は必ず電源が入る。たとえ電源スイッチを OFF にしていても電源が入ってしまう。そして無意味にバッテリーのイメージを表示して充電中を示すアニメーションまでしてくれる。そして、これも例外ではなかった。

そんなことをする理由は、コストを下げるために自分で電源管理をするからだと思っていた。

しかし、充電を制御するIC は意外と安いものだった。それでも使わないのだろうと勝手に思っていたのだが Onda VX747 は、TQ7051 という IC (LTC4054 互換,pdf) を使っていることを RockBoxのページで知った。

となれば、こいつも使っていておかしくない。真面目に調べてみることにした。

電源用の IC は、SOT23-5 とか SOT23-6 という 5,6 ピンの ものが多い。そして、必要なのは 主電源用の 1.8V,3.3V とバックライト用、バッテリー充電用の 4つ。

探すとちょうど 4 つある。そのなかでそれらしいのがこれ。

    ちまみに、1つだけ 6ピンで LCDのコネクタのそば。残りの 2つは並んでいてそのうちの 1 つにはインダクタが付いている(おそらく 1.8V)。
    ついでなので書いておくと写真下の8ピンがスピーカ用アンプ。 XPT4890 という IC で 1W BTL。LM4890, TPA2005D1 と互換。



LT4054 互換なら、2 番ピンが GND 。3,4 番ピンが 電源とバッテリー。-- 一応それらしく見える。1番ピンは STAT で 無接続で問題ない。特徴は、5番ピンで 2KΩぐらいの抵抗が接続される。写真ではよくわからないが、2.7KΩが接続されている。

場所も バッテリーのリード線のちょうど裏でそれらしい。

たぶん LTC4054 互換で間違いないのだろう。だとすれば電源を接続すれば勝手に充電してくれる。プログラムを作って制御する必要はない。

    追記: チップの表面に 55b9 と印字がある。これでググると ビットした。充電IC で間違いない。

    ちなみに、4.2V ±1% で充電する。C/10 になったら充電を停止する機能がある。(電圧が下がれば)再充電。 あと電圧が低い場合 2.9V になるまで 電流を制限しての充電機能もある。

    LT4054 と同じだが、それより劣るようなものもあるので とりあえず安心。

これは嬉しい。バッテリーを外さなくてもデバッグできるし、管理用のドライバも不要。ただ電圧を監視すれば良い。

あとは、電源スイッチを Off すると電源が切れるのか、自分で制御して電源を切るのかの調査が必要。電源を自分で切るのなら切り方が分からないとバッテリーが空になってしまう。

ちなみに、ちゃんと電源を切っているのはほぼ確か。USB を接続するとパワーオンリセットで USB-BOOT にできるから間違いなさそう。電源スイッチも Off にすると直ちに Off になる。シャットダウンしている様子がないので、機械的な電源スイッチだと思う。

    オートで電源 OFF できるのを忘れていた。機械的な電源スイッチではないかも。OFF する方法を見付けないと。

スピーカ用アンプのメモ:

XPT4890 という IC で 1W BTL。LM4890, TPA2005D1 と互換。と書いてしまったが、互換なのは LM4890 で 1W 。TPA2005D1 は PWM で 1.4W 。ピンアサインは互換性がある。どうもルーツは、MC34119っぽい。よく見るとピン互換性がある。MC34119 は 250mW だがだいぶ進化しているようだ。

ついでにメモ: aitendo で扱っている TMPA2055DM(2.7W) もピン的には互換。ただし、TPA2005D1 と違って 普通の D級アンプなので、出力に LC フィルターが必要。
posted by すz at 02:15| Comment(0) | TrackBack(0) | Jz47xx(機種解析)

2010年04月04日

中華PMPのハードウェア

中華PMPの A-320 に Linux が載ることをいまさらながらに知った。

興味がわいたので、ちょっと調べてみた。



  • CPU: Ingenic JZ4740 (or JZ4732 ?).
  • Flash: Samsung K9GAG08U0M-PCB00 (2G x 8 bit NAND).
  • RAM: 128Mbit SDRAM(16bit) x 2. (Total 32MBytes).
  • FM receiver: RDA microelectronics RDA5800C.


ググって入手した JZ4740 のデータシートでは、Xburst core 360MHz と書いてあるが、要は MIPS らしい。MMU も付いているし、なかなか。

メモリは 32MB と Linux を動かすには少ないが、PMP としては多い方なのかも。

開発環境などは結構充実しているようだ。VirtualMIPSなんてもものまである。

まぁ興味はあるのだが、買ったとしてなにか作りたくなるかというと微妙。Smart-Q5 ですら今は放置状態。

もうちょっと安いやつならお試しに買ってみてもいいかなという感じ。



探してみると、Neo Slim 3000 というのが 3999円と 安いようだ。CPU は、JZ4725 だそうで、MP4 のサポートはないものの 同じ CPU core。RAM は少ないのではないかと思えるが 16MB は載っているだろう。ひょっとしたら、RAM チップ載せ換えなんてこともできるかも知れないし。すべてがダメになっても液晶モジュール取りぐらいには使えるかも知れない。

ちょっと突撃してみるか。

その前にもうすこし調査。

公式のフォーラムは、NeoTeam Official Forumのようだ。

V1.7 が 2010/3/12 に公開されている。あと機械翻訳のような微妙な日本語の html 版マニュアルとかも。

それを見ると、メニューも微妙なかんじ。それはともかくテキストファイルも表示できるようだ。文字エンコーディングの設定ができて、日本語も表示できるようだ。

時計機能やFMラジオもある。時計機能があるということは、RTC が CPU に組み込まれているのだろう。すくなくとも TZ47XX には RTC があるので、TZ4725 という情報は正しそうな気がする。

フォーラムの some info about neo slim 3000 を見てみたら、Linux だと書いてあった。.. ということは、少なくとも RockChip ではないのだろう。Linux ならファームウェアの中を覗けるかも知れない。

安いものだし、過度の期待はできないが、ちょっとワクワクしてきた。

JZ4740 と JZ4725 のブロック図



(JZ4740)


(JZ4725)

上は、データシートの抜粋。同じ基準で書かれたものではないが、JZ4740 には、USB HOST と カメラインターフェイス、SPI 、SRAM インターフェイスと I2S 出力が増えているように見える。

あと、マルチメディアアクセラレータが付いている。カメラインターフェイスがあるところから見て、MP4 のエンコーダ/デコーダーが付いているのだろう。

CPU 自体は同じ。XBurst core 360 MHz 。MIPSII で little endian のみらしい。命令キャッシュ、データキャッシュともに 16KB 。消費電力は 200mW@360MHz 。

SDRAM インターフェイスは、DDR/DDR2 はサポートしていないようだ。A-320 は、16bit の SDRAM が 2 個ついていて 32MB だが、Neo Slim 3000 は不明。8/16/32 MB のどれかでたぶん 16MB なのだろう。

A-320 はカメラも USB Host も使っていないようだから、差はメモリの量とMP4 のデコーダーということになる。

ただ、A-320 のスペックには、500Mhz と書いてあるから グレードが高い CPU を使っているか、そうでなければオーバクロックしているのかも知れない。Neo Slim 3000 の方は不明。クロックは内部のPLLを使っていて設定できると思うので、多少のオーバクロックはできるのかも知れない。

    これ見ると A-320 は、336MHz と書いてある。変更できるが、範囲は 200MHz 〜 400MHz 。500Mhz というのは間違いじゃないだろうか。

メモリーは、JZ4740(or JZ4732)では、16bit 幅 の SDRAM (例: HY57V281620FTP) が 1個または 2個 付くようだ。JZ4740(or JZ4732)の A-320 には 実際 2 個付いている。( 参考 )。

JZ4725 は 16bit 幅が 1 個。VX989LE は、JZ4725 らしいのだが、1 個しか付いていない。( 参考2 )。メモリ帯域が半分しかないから性能的に不利なようだ。

メモリサイズは、16MB とは限らない。256Mbit のものを使えば 32MB になる。

あと、SD/MMC インターフェイス。JZ4740 は 4bit の I/O ができて 80Mbps までの帯域があるが、JZ4725 は 1bit 幅で 20Mbps まで。これだとだいぶ遅く感じられるかも知れない。

    JZ4725B というのもあるらしく。SD/MMC 周りがだいぶ違う。B は、4bit の MSC0 と 1bit の MSC1 があり、MSC0 は 最大 320Mbps と書いてある。要するに SDXC 対応ということだ。しかも MSC0 からブートできるそうだ。まぁ B は入っていないだろうが...

    あと、JZ4725 Programming Manual と データシートの記述が一致しない。 Programming Manual には、あたかも 4bit 幅でアクセスできるようなことが書いてある。??

    追記:
    MSC0 は、NAND Flash と排他的にしか使えないようだ。要するに SanDisk の iNAND のように SD/MMC と同じインターフェイスの Flash チップに対応したものらしい。当然ブートできないと困るわけだ。MSC1 は、やはり 1bit で Bなしの MSC に相当するようだ。やはり遅いのは間違いなさそうだ。

    ちなみに、チップ自体は、USB デバイスからのブートができる。どこからブートするかは、ピンで設定する。具体的なことはまだ知らないが、Qi-Hardware のサイトのどこかにあるに違いない。

これだけの違いがあれば、実用として使うなら A-320 の方が良いのだろう。ソフトの安定度の面もあるし。

だがしかし、分解したりして、怪しいことをするなら安いにこしたことはないのだ。

ちなみに液晶だけは、Neo Slim 3000 の方が大きいというメリットがある。

A-320 では、FPC-FTP280P04N-01 という液晶モジュールを使っているそうだ。コントローラは ILI9325 で、2.8 inch でフレキは 37pin 。さらに、1 pin は DB0 という情報がある。 aitendo で扱っている EGO028Q02と非常に良く似ている。画像検索してみるとフレキの幅も広く 同じ 1.0mm ピッチのようだ。

Neo Slim 3000 の方は、どんな液晶をどんな風に接続しているのだろう?興味の対象はそこだったりする。

Jz4725 の Programming Manual というのがopenpdf.comで見つかった。

データシートは概要が書いてあるだけなので、それだけではどういう制御をするのか分からない。Programming Manual がないと なにもできないのだ。ちなみに JZ4740 は、User Manual で各章が別々の pdf になっているようだ。

ついでなので書いておくと、本(ben)-NanoNote は、JZ4720 だそうだ。メモリは 32MB 。SDRAM 周りは jZ4725 と同じで 16bit 幅 x1 のみだから 256Mbit の SDRAM を使う。

512Mbit の SDRAM が入手できれば 、64MB にすることも可能かもしれない。

    デジキーで探してみると、SDRAM はやたら高い。例外的に Qimonda の SDRAM(128Mb/256Mb)だけが安い。が、16bit 品は特殊な部類らしく 256Mbit 品すら入手できない。

    リスクは大きいが、中古の DIMM から取り外した方が安く付くかも知れない。重要なのは 16bit 品を選ぶこと。4 つしかチップが載っていないものがあったはず。たとえば、ノートPC用の PC133 SO-DIMM は 64bit 幅で 片面 4 つか 両面 8 つのどちらか。


    スロット&ソケット図鑑:メモリ・ソケットより)

    4 つ(片面実装)で 256MB なら 16bit 幅 512Mbit x4 の計算。これで 1500円前後なら、まぁ当たりか。... あまり凝っても本末転倒だし。たまたま見つけたら検討してみよう。

    追記:使われていたのは、256Mbit (32MB) だった。交換して意味があるのは、512Mbit のもののみ。片面実装で 256MB なんていう SO-DIMM は見つけるのは難しい。512MB 8チップなら確実に 512Mbit なのだが 3000円とかする。これで 8bit 品だったら役に立たない。32MB でなんとかしようという気になってきた。

    追記:aliexpress で 512Mbit (16bit 幅) の SDRAM を扱っている所を見つけた。→ barney yang's store。例えば K4S511632Dが $ 9.47 (FreeShiping) 。デジキーとかだと 3000円以上だから格安ではある。


ADCの謎


JZ4725 の ブロック図をみると、タッチパネル用の ADC があるように見える。だが、ピン配置をみても ADC は、2pin しかない。1pin は、バッテリーの電圧測定用を想定していて、残りの 1pin が 汎用。Audio CODEC にも ADC はあるが、これは MICIN と LINE IN用で DC を測定するには向いていない(はず)。

Neo Slim 3000 は、タッチバネルはついていないものの、アナログスティックというものが付いている。2次元だから 2 入力必要。いったい どうやっているのだろう? ちなみに、使えるデバイスは I2C と UART(TXD/RXD) それぞれ 1ch 。あと GPIO 。I2C の ADC を外付けしてたり、アナログスイッチ(セレクタ)を使って切り替えている?

JZ4720 や JZ4740 は、XP/XN/YP/YN という タッチパネル用のピンが出ている。

Linux 関係


こいつで (自分でビルドした)Linux を動かす場合どうしたら良いのか? ... というと 結局のところ Qi-Hardware が出している Ben-NanoNoteSAKCボードの環境に載っかることになりそう。

特に、SAKC ボード は、ベースが JZ4725 で同じ。メモリが 64MB もあるとか FPGA (Spartan3E VQ100pin) が載っているとか オプションの LCD が NanoBook と同じとか ... いろいろ違いはあるものの、ブート周りとか、基本的なデバイスドライバは 同じで随分便乗できる。ユーザランドもほぼ使えるはずだ。

ちなみに、NanoNote の LCD は、ILI9325 などのコントローラが載っている Smart LCD タイプではない。 ここは A-320 用のドライバを使うことになるのだろう。

ところで、DINGUX。まだ良くわかっていないのだが、A-320 のみをターゲットとしているわけではないようだ。カーネルのパッチは、JZ47xx を出している Ingeric社 から出ているが、それぞれのプロジェクトでマージしているらしい。一応別々みたいだから、両方を見てどちらをベースにするか考えることにしよう。


ところで、シリアルは端子があるのだろうか? あるなら、シリアルコンソールに使ったり、外部デバイスをつなげるのに嬉しいのだが。幸い jz4725 は LQFP だから 配線を追ったり、無接続なら無理やりつなげるようなことが可能かも知れない。

あと I2C もある。低速でかまわないなら、AVR を I2Cスレーブとしてつなげる手もあるかも知れない。 いくつかI2C デバイスを使っているなら、デバイスの足から分岐できることも期待できる。

まぁ、購入前の調査はこれぐらいにしておこう。あとは、購入して分解するのみ。

ところで ちょっと Ben-NanoNote にも興味が出てきた。USB HOST の端子さえ出ていれば、BlueTooth とかつなげそうだけどどうなんだろうか?

追記;怪しげなマシンたち

ちょっとメモ。


  • PMP-3000



    筐体は同じみたいに見える。Neo Slim 3000 の製造元?

    ただ Neo Slim 3000 にない TV-out 機能がある。ボードはちょっと違うのかも。

  • PMP-3100



    これは実に怪しげ。A320 とそっくり。..なのだが PMP-3000 の兄弟機なら jz4725B とかかも。

    追記:PMP-3100 は、Jz4725(無印)でメモリ 16MB だった。TV-OUT も間違い。
    後継機らしき P5-5 というのが出ている。firmware が変わったのは明らか。CPU も B になったかも知れない。

  • 音狐 YH-873



    これも怪しげ。もうA320 の偽物なのか 製造元なのかわからなく..

  • 音狐 YH-876FM



    これはいたって普通なのだが、CPUが Jz4755 らしくちょっと興味がある。

  • 音狐 YH-882



    これも Jz4755 。

  • venus JXD300



    Neo Slim 3000 と比べるとこっちの方がボタン周りの質感が高い。... が、Jx47xx ではなく sunplus (ARM + DSP?)らしい。

  • focalprice EM508W




    これはさらに怪しい。venus JXD のさらにパチモノ? お得そうに見えるにもかかわらず、レビューがない。ますます怪しい感じ。

  • 7-Support-WIFI-netbook



    別に怪しげではないのだが、Jz4750 を使った Netbook もあるようだ。しかも買える。-- MIPS を使った 珍しい Netbook -- まぁなにか怪しげではある。

    2010/06/07 現在 $79.38 + 送料 $39.26 = $118.64 と安くなっている。でも同じ製品を多数登録している変なところなので要注意。安くなっているのを知らなかったというのもあり、こっち (送料込み $130.93)をぽちってみた。

  • こんなことを書いた数日後に Lyumo Bookというのが日本で発売されてた。会員なら 12800円とか。



    一般の人には勧められないような気がするが... mips が好きな人にはいいかも。たぶん CPU が jz4730 であること以外は上のとほぼ同じ。

    ちなみに既に分解した人もいるようだ。→ 「日々是おやっとさぁ」

  • Dingoo A-330



    そうこうしている間に、Dingoo A320 の次世代機まで出た。

    なんか green-tool というところで、6,980円と安いのでついつい買ってしまった。ついでに PMP-3100 まで。

    両方とも TV-OUT がある。最新機なら チップ自体に TV-OUT の機能がある Jz4750/Jz4755 ではないかという期待から購入してみることに。とりあえず中を見てみたい。
    あと A330 は、無線コントローラをサポートしている。うまくすれば無線キーボードとか使えるのではないかという期待もある。

    A330 の情報が出ていた。

    dingoonity.org のレビュー

    違うメーカーが出した A320 クローンだそうだ。CPU は Jz4740 で DINGUX が動くらしい。メモリが 64MBになっているの がメリットか。

    どうも DINGOO DIGITAL という所は、既に A320 という A320 クローンを既に出していて A330 は、その後継機らしい。なんとも カオスな状況。



追記: 2010/07/21



    www.aliexpress.com で xburst を検索したら $72.16 + (送料)$19.63 = $91.79 のものが見つかった

  • XBURST 100MHZ 32CPU RAM Capacity: 128M 2GHard Disk Windows CE Elaine
  • SPEC UMPC CPU Samsung 532MHz 32-bit
  • Processor Type: XBurst 400 MHz CPU 32

    CPU の 説明は、一貫していない。G400 と同じタイプなら CE ならWM8505 / Linux なら Jz4730 のはずで、すべて誤りの可能性まである。



    ちなみに、WM8505 の Laptop (android) は、$65.97 + (送料)$13.29 = $79.26 の これが安い。さらに -- このサプライヤーは、CPU が WM8505 のままの 10 inch Laptop ($100.96 + $15.70, 解像度 1024x600) というものも扱っている。

追記: 2010/11/16

その後の研究で、Jz4755 の見分け方が分かってきた。

特徴のあるアナログ時計の画面なら、Jz4755 または Jz4725B 。で、720P 対応 + TV out なら Jz4755 。あと なぜか Touch パネル やカメラ付き のものは見たことがない。
Jz4725B は、H.264 は性能的に無理のようだ。Jz4755 なら 見れると思うが 多分 720p は厳しい。

どれもこれも ファームウェアのベースは同じ。カスタマイズはされているようだが、基本的な性能はみな同じようだ。これは、あまりハズレがないということを意味している。液晶が特に綺麗だとかの特徴がなければ、デザインとか価格で選べば良さそうだ。


(Mahdi (麦迪) T556 / 3.0inch Jz4755採用)
採用例が多いブランドは、Aneca , Mahdi(麦迪), あと KO Digital(可欧), 紫光 。Aneca は、FocalPrice で扱っているが、他は taobao ぐらいでしか買えない。で、Aneca は Jz4755 は採用していないようだ。
結局 Jz4755 が欲しいなら taobao になってしまう。

この中で紫光は結構安い気がする。麦迪 > 可欧 > 紫光 という印象。


例えば Jz4755 採用 4.3 inch の T816 ここで 235元。


Jz4725B で良ければ、T950/MZ908/ MV-S901 は、ここで 135 元。


ちなみに、 dealextreme でも 1つ Jz4725B らしきのを扱っている。4.3 inch の これ。$43.20 で結構安いが、Jz4755 の特徴がないから、Jz4725B なのだろう。お手軽なところでは 残念ながら Jz4755 は買えないようだ。
posted by すz at 18:54| Comment(0) | TrackBack(0) | Jz47xx

2009年07月23日

業務連絡

私の不注意で レンタルサーバーの契約が切れてしまい、サーバ移行することになりました。

バックアップも適当にしかとってなかったので、5/22 以降の記事・コメントも消えてしまいました。コメントを頂いた方には申し訳なく思います。

移行にあたって、

  • もの置き場のサイトが nmj.sakura.ne.jp → nmj.sumomo.ne.jp になります。
  • 復活した記事の URL が変わっているかも知れません。(よくわかりません)


リンクしていただいている方には申し訳ありませんが、リンクの変更をお願いします。

posted by すz at 19:11| Comment(10) | TrackBack(0) | 日記

2009年06月13日

ファームウェア V3.0

6/12 にファームウェア V3.0が出たので早速インストールした。

ダウンロードサイトの説明では、さらりと書いてあるだけなのだが、使ってみたところ、かなり良くなっている。

いくつか紹介してみよう。

  • 英語対応
    まず、インストール直後、キャリブレーションの前に中国語か英語か選ぶようになった。英語を選べば、メッセージが全部英語になる。V2.0 で対応できていなかった所がすべて対応済みになったようだ。V3.0 でさらにアップデートしてみたところ、そこのメッセージまで、英語が併記されるようになっていた。
    英語なら説明が簡単にできるので非常に嬉しい。

  • マウスカーソル
    デフォルトではマウスカーソルが出なくなった。はっきりいって、操作の邪魔でしかなかったので嬉しい対応。

  • サスペンドのオペレーション改善
    電源ボタンで出てくる System Manager setup のメニューにサスペンドか追加になった。2ステップだが、V2.0 と比べれば随分操作が楽になった。

  • 起動時間
    60秒ほどが40秒ほどになった。嬉しいことは嬉しいのだが、それよりサスペンド時の消費がどうなったかのほうが気になる。

    ところで、起動スクリプトの変更で、GTK なんとかかんとかというエラーが出ることがあるみたい。タイミングの問題っぽく、reboot すれば OK になる模様。... V3.1 が早々に出る予感。

  • ルートファイルシステムの拡大。
    もちろん、どこから容量を持ってくるかと言えば、/home 。/homeを 1/2 の 125MB にして、/ に割り当てている。これで、普通にインストールしても溢れにくくなった。

    日本語化キットでは、/home へ /var を移動しているので、そのままでは、今度は /home = /var が溢れそうになる。

  • 電源管理
    電源管理についても、結構改良しているようだ。まず、サスペンド時間が、バッテリー、AC で別々の設定ができるようになった。それ以外はまだはっきりとは分かっていないのだが、画面がしましまになる問題は直った模様。

    あと、g_ether 。PC 側がサスペンドしたら、再接続にモジュールの再ロードが必要だったのが直ったみたい。ただし SmartQ 側がサスペンドした場合、切断は自動だが、再接続にモジュールの再ロードが必要みたい。未サポートの機能だが、このあたりを見れば取り組み具合がわかる。

とまぁこんな具合。こんな調子で改善していって欲しいものだ。

。。。というわけで 早速日本語化キットを作ってみた。



ちなみに、前のバージョンも一応インストールできる。問題は /home が厳しくなるのと、scim が自動で立ち上がらない点。

今回は、env の設定で /var を移動するかどうか決められるようにした(デフォルトは移動する)のと、DISK を空ける工夫をいれたことが主な変更点。
(移動しない場合は、env の MINHOME を 125000 に変更のこと)


  • /usr/share/startict の削除
    辞書が残っていたので消してみたら結構空くのに気がついた。
  • /etc/xdg/lxsession/LXDE/autostart で作っているデッドスペースを 20MB から 10MB に変更。
    V 3.0 から入った? 安全性を確保する仕組みだと思うが、/var ははなから厳しいので。

ちなみに、容量が増えているのは、おまけ(ph6_omake.sh)をいれたため。ちょっとしたツール と 古き良き時代の日本発祥ソフト。... arm のパッケージがあるのを見つけて嬉しくなったため。

いずれ日本語キットのページを更新するけど、早く使いたい人はどうぞ。
    補足:
    ph3_inst_j で 90 行目シンタックスエラーが出ますが、消し忘れ。終了してるので、機にしないでください。

    ph5 まで入れた後のディスク容量


    Filesystem 1K-blocks Used Available Use% Mounted on
    /var 移動:
    /dev/mmcblk0p1 632948 435472 165324 73% /
    /dev/mmcblk0p2 122003 108166 7537 94% /home
    /var移動なし:
    /dev/mmcblk0p1 632948 542724 58072 91% /
    /dev/mmcblk0p2 122003 9293 106410 9% /home


    普通は /var 移動なしで良さそうですが ... gccと g++ すら入らないのが気に入らない。loopfile は、SD を自由に使えないので自分的には論外。

    そういうわけで /var について、少々分析。

    /var で 100MB ほど使っていますが、内訳は 

    30 MB anthy
    20 MB apt (lib)
    20 MB apt (cache)
    10 MB dpkg
    10 MB リザーブ
    5 MB scrollkeeper


    こんなかんじ。anthy + apt で 70%。

    anthy の辞書を /var/lib ⇔ /usr/share で移動させることで 30MB 分はバランスさせられそう。

    あと、apt ... パッケージを入れるときだけ必要なのだから、SD に追い出すのも手かも。
posted by すz at 01:49| Comment(0) | TrackBack(0) | SmartQ

2009年05月28日

日本語化キット

いままで書いて来たことを元に キットとしてまとめました。ここに書いてあるとおりにやれば、日本語入力が出来るようになるはず。説明は後回し。

あと、基本的に自分用です。再インストールが面倒になってきたので ..

これは何?


SD カードから、scim-anthy で日本語入力できるようにセットアップするものです。(ネットワーク接続は使いません。)
普通にインストールすると root パーティションが溢れます。このキットでは、
  • 中国語変換、中国語辞書の削除
  • /var の /home/var への移動
をすることで、root パーティションの空きをできるだけ増やすようにしています。

インストール前:
/dev/mmcblk0p1 501732 457014 18814 97% /
/dev/mmcblk0p2 243039 4307 226183 2% /home
インストール後:
/dev/mmcblk0p1 501732 403754 72074 85% /
/dev/mmcblk0p2 243039 102556 127934 45% /home

このように、標準より大幅に root パーティションを空けているので、さまざまな作業を安全にできるようになります。

また、LOOPファイルは使用しません。必要な場合は、日本語化した後で、作成してください。

準備(SDカードのセットアップ)



最初に SDカードを準備する。できれば新品が良い。お勧めは SanDisk 。新品でない場合、できれば SDformatter でちゃんとフォーマットしなおすべき。( 特に soft.img を置いたままだと 問題が出るので、要注意 )
最新のファームウェアを ダウンロードセンターからダウンロードして、(rar ファイルに含まれる SmartQ5 というファイルを) SD カードの トップディレクトリに置く。
    SmartQ Serviceというページには、Tips が載っていたり、ダウンロードセンターより早く ファームウェアが載ったりするので要チェック。

つぎに このページで説明する 日本語化キットをダウンロード。SD カードに解凍する。(場所はどこでも良い)


ファームウェアのアップデート


カードを入れた後、“+”ボタンを押しながら リブート (下の四角いボタンがリセット)。
(説明 後記)

インストールが終わり、キャリブレーション後 オペレーションが出来るようになったら、まず最初にCPU Usage Monitor を動かすこと。( フリーズしたかどうか判らないと不安になると思うので )
    タスクバーを長タップすると メニューが出る。その一番上、新増なんとかを押して出たパネルの 添加を押して、CPU監視器を追加。すぐに表示されるので、後は×で閉じればよい。


フェーズ1:準備



disk アイコンを長タップして、ファイルマネージャを起動して、日本語化キットのディレクトリに移動すると rxvt が入っているのでこれを 長タップする。
rxvt(コンソール)の画面が出るが、そのままでは使いにくいので、キーボードを出して 画面を最大化すると良い。
rxvtの画面で次を入力

    $ sudo -s
    # ./ph1_prepare.sh
    (done. reboot! と出たら)
    # reboot

    ちなみに 2 行目は、./ph1 <TAB> で入力できる。

注意)フェーズ1では、/var を 移動しており、終了後は不安定な状態。すみやかに reboot する必要がある。

(なにをやっているかの説明 後で)

フェーズ2:シュリンク



立ち上がって来たら、同じように rxvt で

    $ sudo -s
    # ./ph2_shrink.sh
    (done と出たら完了)


フェーズ3:日本語キットのインストール



そのまま続けて

    # ./ph3_inst_j.sh
    (done と出たら完了)
    # reboot


完了したら reboot する。立ち上がって来たら、漢字変換の Anthy が使えるようになる。
ちなみに ソフトキーボードの は、漢字キー。

(なにをやっているかの説明 後で)

おまけ: telnet で ログイン



これは日本語化とは関係なく、いつでもできる。フェーズ1の前でも OK 。(ただし、フェーズ1後 リブートまではダメ)
  • env の編集
    login するユーザ名(TUSER)と loginできるアドレスの指定(TNET,TMASK)を自分の環境に合わせて編集する。
  • 実行
    rxvt を出して

    $ sudo -s
    # ./ph4_net.sh
    (パスワードなどを入力)
    # reboot


おまけ2: ssh で ログイン



これは日本語化とは関係ないが、ph4_net の後でやるべき。(reboot 前にまとめてやるのは OK)
  • env の編集 (ph4_net と同じ)
  • 実行
    rxvt を出して

    $ sudo -s
    # ./ph5_ssh.sh


おまけ3:gcc/g++ パッケージ集 (sq20_devkit)



とりあえず ... 依存関係の少ないプログラムをビルドするための最低限のものを集めました。カーネルのコンパイルは OK 。

スクリプトは入れていません。dpkg -i *.deb とか適当に入れてください。
全部インストールすると、60885 ブロック消費します。本体FLASH に 日本語化キット + SSH + gcc/g++ を入れることは 一応できます。

メモ: 09/06/05 evince で 日本語が見れない。
本来は、poppler-data を入れれば見れるようになるらしいのだが ... 実はもともと入っていて 中国語 以外が削除されている。入れなおしてもうまくいかない。
なぜ? 他にも 削除されているものがあるのか?
posted by すz at 18:51| Comment(2) | TrackBack(0) | SmartQ

2009年05月21日

SmartQ 5 に ログイン

SmartQ 5 に USB NIC をつなげて ログインできるようにしてみた。

1. USB HOSTを使う


SmartQ 5 には miniB のコネクタが付いていて、PC と接続して 内蔵 SD カードを Removable Disk として使うことができる。

で、このコネクタを 使って USB HOST としても使えるのだが ソフトで切り替えなければならない。

デスクトップを一旦タップして、電源ボタンを 押すと、SysSettings メニューが出るので、

Enable BlueTooth and USB Host (Close mode of Removable Disk)

を押して、BlueTooth のマークのメニュー

Enable Removable Disk (Close mode of BlueTooth and USB Host)

に切り替える。

これをした後 USB の装置を接続。USB LANアダプタ BUFFALO LUA2-TX を接続すると、eth1 として認識されるので、

ifconfig eth1 192.168.XXX.XXX netmask 255.255.255.255 up

とかすれば、ping は通るようになる。(以下 XXX.XXX の XXX は 数字)

それは良いのだが、しばらくすると 勝手にサスペンドしてしまう。サンスペンドしたら復帰後 再度 ifconfig しなおさないといけない。すばやく再接続ことで、コネクションは切れないけど.. どきっとする。あと、一号機は RTC が動いていないので、サスペンドしたら時間が遅れるという問題もある。

勝手にサスペンドしないように設定すれば、この 2 つの問題は解決する。それをするには...

右上の電球みたいなマークが、電源管理。これをタップして、出てくるパネル最下の 没置 をタップし、休眠閑置時間のバーを 右端までもっていき 不休眠 にする。

2. telnet で login



SmartQ には、/usr/sbin/in.telnetd と /usr/sbin/inetd が入っている。まずはこれを使えるようにしてみよう。

最初に Run メニューで

sudo rxvt

あとの作業はすべて rxvt ですることにする。

  • 2-1. /etc/init.d/openbsd-inetd の編集
    15 行目に

    if [ x"($cat /proc/cmdline | grep factory)" = x"" ]; then exit 0; fi

    という行が入っているのでこれをコメントアウト

  • 2-2. /etc/hosts.allow /etc/hosts.deny の 編集

    次のように編集
    hosts.allow :

    ALL : 127.0.0.1
    ALL : 192.168.XXX.0/255.255.255.0

    hosts.deny :

    ALL : ALL

  • 2-3. inted の起動

    # /etc/init.d/openbsd-inetd start

    で、inetd を起動する。次からは自動で 起動するので、手動はこの 1 回のみ。

  • 2-4. localhost での確認


    # telnet localhost

    で、login: が出るか確認

    Handhelds 8.04
    mojo login:

    が出力されれば OK 。ただし、ユーザを設定していないので login できない。

  • 2-5. login するための ユーザを作成。


    # adduser abc

    まずはパスワードを入力、あといろいろ聞かれるが 、最後のあっているかどうか聞かれるところまで ENTER で良い。(あと abc は 任意のユーザ名)

    で、再度 telnet localhost で 確認。OK なら 一旦 exit して、sudo できるように設定。

  • 2-6. /etc/sudoers の編集

    user の行をコピーして つぎのように追加
     
    abc ALL=NOPASSWD: ALL


    再度 telnet localhost で login して、

    sudo su -

    ができれば OK 。

  • 2-7. 外部から login できるか確認。

    ホストの PC から ping できれば、次に telnet 出来るか確認してみる。出来ないとすれば、/etc/hosts.allow が間違っている可能性大。


3. メモ


とりあえずこれで telnet できるようにはなった。これで作業そのものや 作業のログを取るのがすごく便利になる。

ファイルのコピーとか 出来ないので まだまだ不便なのだが、それは別途ということにして、いくつか作業したことを書いてみる。

  • localtime

    login すると、時刻が CST になっていることに気が付く。

    # cat /usr/share/zoneinfo/Asia/Tokyo > /etc/localtime

    とすることで、JST になる。

  • LANG の設定

    telnet すると端末にもよるが、en_US.UTF-8 では困ることも出てくる。

    # export LANG=C

    とした方が良い場合もある。

  • CPU クロックの確認と変更


    # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

    で今のクロックが確認できる。scaling_max_freq , scaling_max_freq は 使用状況にあわせて動的に変更する上限と下限。

    これを同じ値に設定することで、固定にできるわけだ。

    echo 667000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    echo 667000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

    とすることで、最高速 の 667 MHz 固定にできるし、667000 のかわりに 1000000 とすることで、通常時のクロック 100Mhz にできる。

    ちなみに、本当にそのクロックなのか確かめるには、/proc/cpuinfo の BogoMips を確認するのが良い。

  • CPU の実力を測定

    以前 使った dhrystone で比較してみる。

    SmartQ5 (ARM S3C6410 100 MHz) 218340 (gcc-4.3.2)
    SmartQ5 (ARM S3C6410 667 MHz) 877192 (gcc-4.3.2)

    LS-XHL (ARM Sheeva 1.2GHZ) 1519756 (gcc-4.1.2)
    LS-GL (ARM ORION5 400 MHz) 431778 (gcc-4.1.1)
    kurobox/HG (PPC MPC8241 266MHz) 687757 (gcc-3.4.5)
    Pentium III 1GHz 2118644 (gcc-3.3.2)
    eeePC 701SD(Celeron-M 900MHz) 3318258 (gcc-4.3.2)


    実際のアプリではどう変わってくるのか? とりあえず bzip2 で手持ちのファイルの解凍を比較してみた。


    測定方法:
    # time bzip2 -d < ファイル > /dev/null
    で user time を比較


    結果

    SmartQ5 (ARM S3C6410 100 MHz) 807 秒
    SmartQ5 (ARM S3C6410 667 MHz) 323 秒

    kurobox/HG (PPC MPC8241 266MHz) 243 秒
    Pentium III 1GHz 108 秒


    ちょっとおどろいたことに、100MHz と 667 MHz の差が、4.01 倍から、2.49 倍まで縮まっている。それだけでなく、PPC 266 MHz に負けてしまっている。Pen III との比較でも、1/ 2.42 が 1/2.99 と差が開いている。この結果から言えることは、S3C6410 は、クロックを上げてもあまり速くならないということ。メモリのクロックは変わらないようだから、メモリアクセスが多いアプリほどそういう傾向があるはず。bzip2 が典型的なアプリとどれだけ違うのか分からないのだが、6.67 倍にクロックを上げても 2.5 倍しか速くならない というのは結構残念な結果だ。

    LS-XHL との比較もしてみたかったのだが、残念ながらいま使えない状況。いずれ測定してみる予定。
posted by すz at 12:34| Comment(0) | TrackBack(1) | SmartQ

2009年05月17日

SmartQ 5 到着

5/17 10:54 ついに届いた!


開封


ダンボールの箱を開けると、20 cm 角ぐらいの立派な紙箱とおまけの巾着ぶくろが入っていた。
巾着ぶくろは、2枚重ねのフリース製。結構立派なものだった。

箱を開けると、トレイがあって本体が乗っている。トレイの下には付属品。

付属品は、AC アダプタと USB miniB ケーブル、イヤホン。その下には、保証書やら説明書らしきものが敷いてあった。

    ACアダプタは、5V 1A 。DC ジャックは 外径 2.5 mm ほどの細いタイプ。
    → ちなみに、GH-UHK204SSのACアダプタ(5V 2A)と同じ形状 同じプラグ。
    → 普通に 電圧区分1(外径 2.35 mm, 内径 0.7 mm)みたい。

    miniB は何につかうのだろう?
    → どうも Device Mode を持っていて Removable Disk として見えるらしい 。
    → SDカードのFAT領域が パーティションなしの状態で 見えた。Vendor: Linux Model: File-Stor Gadget だそうだ。

さて、本体について。ただの黒いプラスチックの直方体というかんじ。そこに液晶がはめ込まれている。精度は高く安っぽい感じはあまりしない。

とりあえず、2台買ったうちの1つ(以下1号機)に、shop99 で買った FREE CUT 液晶保護フィルムを貼ってみた。シートは 70x140 mm 。これを 64 x 100 mm にカット。適当にやったので気泡だらけ。

    買いなおして、1号機,2号機とも貼ってみた。もっとぎりぎりに 61mm x 97mm に変更。あと、気泡は ゴミがあるところが浮いているだけということが分かった。


ファームウェアのアップグレード


まずは、AC アダプタをつなげて充電しながら、起動するかどうかの確認。-- OK。

立ち上がったら最初に Power ボタンと Move ボタン同時押しをして、キャリブレーション(触膜屏校准)。-- OK 。

中国語は全然わからないので、とりあえず V2.0 にして、つぎに英語化することにした。

まずは、電源を Off 。電源ボタンを押すと、系統管理没置(System Manager Setup)パネルが出るので、下から 2 番目の電源マーク(Power off)を押す。

FAT32 でフォーマットした SD カードに、SmartQ5 をいれ、SD スロットに挿入し + ボタンを押しながらPower ボタンを押す。

正在格式化根分区なんてメッセージが出て、正在弁級プログレス。最後に 弁級成功 メッセージ。

    更新中は黄色になるはずなのだが... 1号機はなぜか緑ランプのまま。2号機は黄色なので、なんか変??

英語化


メニューの下から2番目 (Run) を実行し

    sudo leafpad /etc/default/locale

LANG を zh_CN.UTF-8 から en_US.UTF-8 に変更してリブート。

これで、メニューが読める!


    1. Accessories
    1-1. Galculator
    1-2. Leafpad
    1-3. Search for Files...,
    1-4. StarDict
    1-5. Xarchiver
    2. Games
    2-1. Gweled
    2-2. Shishensho
    3. Grafhics
    3-1. Evince Document Viewer
    3-2. Image Viewer
    3-3. rgbPaint
    4. Internet
    4-1. Claws Mail
    4-2. GNOME PPP
    4-3. GNOME PPP
    4-4. Midori Web Browser
    4-5. pidgin Internet Messenger
    4-6. Transmission BitTorrent Client
    5. Office
    5-1. AbiWord Word Processor
    5-2. E-book reader
    5-3. Gnumeric Spreadsheet
    5-4. Osmo
    6. Sound & Video
    6-1. Audacious
    6-2. SMPlayer
    6-3. Sonata
    7. System Tools
    7-1. GDebi Package Installer
    7-2. PCMan File Manager
    8. Prefereces
    8-1. Appearance
    8-2. Blutooth Manager
    8-3. Openbox Configration Manager
    8-4. SysSettings
    8-5. Wicd Network Manager
    9. Run
    10. Logout


  • SysSettings

    8-4-1. Lock touchscreen and key
    8-4-2. Enable BlueTooth and USB Host (Close mode of Removable Disk
    8-4-3. Task Manager
    8-4-4. Calibrate touch screen
    8-4-5. Power off
    8-4-6. Quit

  • Logout

    Logout LXDE session?
    10-1. Shutdown
    10-2. Suspend


SMPlayer


SMPlayer は、別に英語化する必要がある。

ドライバーのアイコン(Preferences) で出てくるパネルの、左側上から5番目が、Interface これに切り替えると、右下に、zh_CN が出ているので、en_US に切り替える。

これで手持ちのビデオをいくつか見てみた。

  • youtube flv

    ほぼ問題なし FLV1 なら 問題がないようだが、中身が H.264 の flv だと 全然ダメ。

  • youtube mp4

    全然だめ。ブロックノイズだらけになったりする。動きが少ないシーンでは普通に。

    H.264 だとダメだが、XVID だといけるとかあるかも知れない。

  • XVID

    手持ちの XVID 480x360 でアスペクト 4:3 , 16:9 共にダメ。デコードはできているみたいだが、色がずれる! 。

    320x240 は問題なし。16:9 も OK 。

    フルスクリーンにすると、横 640 になるようだ。4:3 だと 上下いっぱいになる。16:9 も 横は 640 で 縦が 360 になってしまう。

    ちなみに、CPU クロックは アプリの起動時など 最大 666 MHz になるが、通常時は 100MHz になっている。320x240 の動画は 100MHz のままで、45 % 程度のシステム負荷。

  • 全画面

    800x480 をまるまる使った全画面モードもあるのだが、操作ができない。ホットキーがないと厳しそう。

    追記:"-" ボタンで 中止が出来た。それだけだけど、できないよりマシ。


その他の問題点



SmartQ 固有のアプリが中国語のみなのはかわいい方、時計が いきなり 1970年になるとか、いろいろ問題がある。

実用で安心して使えるようになるまで時間がかかるかも。

    追記:
    時間が 1970 年に戻るのは、1号機のみだった。2 号機は リセットでも 問題ないのに、1号機はシャットダウンしても 時間がリセットされるし、サスペンドの後 時間が進まない。(サスペンドした時間のまま)

    明らかに RTC(リアル・タイム・クロック) の問題なのだが、RTC は、CPU の内部の機能。壊れることはあまり想像できない。カーネルを書き換えられなくて古いままとか、そういった問題かも知れない。

    カーネルは同じ mojo カーネル(2.6.24.7 #3530) だった。問題は何?

    dmesg 見たら s3c2410-rtc: hctosys: invalid date/time となっていた。正常なら s3c2410-rtc s3c2410-rtc: setting system clock to 2009-XX- .... となる。

    で、hctosys というのは hwclock の値を システム設定するということで、invalid と拒絶しているのは hwclock の値がおかしいため。

    で、ググってみると、 mini2440 Source & Snapshots for mini2440 linux support というページに

    Initializing the hardware clock

    The RTC chip might come with garbage in, if you see this:

    s3c2410-rtc s3c2410-rtc: hctosys: invalid date/time
    ...
    Setting the system clock.
    The Hardware Clock does not contain a valid time, so we cannot set the System Time from it.


    Use "hwclock" to force it's initialization

    # hwclock --set --utc --date="13 march 2009 09:54:00"

    # reboot

    なんて書いてある。これか! と思ってやってみたが...

    Timed out waiting for time change.

    となって reboot しても 1970 年になってしまう。

    hwclock を使わずに、RTCのmanpageを見ながら自分で設定するプログラムを作ってみた

    それで、2009 年にはなった。リブートしても 1970年までは戻らない。... しかし、cat /proc/drivers/rtc としても 同じ時刻。

    S3C6410 と (RTCは)互換らしい S3C2410Aデータシートを見てみたのだが、専用の端子は 専用の電源と 32KHz 水晶のみ。バックアップは出来ているみたいだから、水晶のところがおかしくて発振していないに違いない。どうしよう。

rxvtのインストール


無線LAN環境で、ちゃんとつながるかの確認 -- 両方OK。で、midori (ブラウザ)は、英語環境でもちゃんと日本語のページ (このページとか)を見ることができた。

2ch の情報より

http://repository.handhelds.org/hasty-armv6el-vfp/pool/universe/r/rxvt-unicode/
にあるrxvt-unicode_8.4-1_arm.debを内蔵ブラウザでダウンロードしてダブルクリックしてインストール。

    よくわからないのだが、SD カードを挿して loopback ファイルを作れるようにしておかないと エラーが出る。???

あとは、Run メニューで

    sudo rxvt


ついでに

    sudo leafpad /etc/apt/sources.list

で、次のように修正


あと rxvt の文字がすごく小さい。初めて 800x480 を実感。

それはともかく、これで dmesg とか を見れるようになった。後で整理してまとめる予定。

カーネルメッセージ



  • dmesg
    ( 実をいうと、いんちきで 103 行目で 2つのログをつなぎ合わせている。)

    以下抜粋

    8686 sdio: sd 8686 driver
    8686 sdio: Copyright HHCN 2009

    ※ 写真では WM-G-MR-09 だったのに ドライバは Marvel SD8686

    Bluetooth: Core ver 2.11
    NET: Registered protocol family 31
    Bluetooth: HCI device and connection manager initialized
    Bluetooth: HCI socket layer initialized
    Bluetooth: L2CAP ver 2.9
    Bluetooth: L2CAP socket layer initialized
    Bluetooth: RFCOMM socket layer initialized
    Bluetooth: RFCOMM TTY layer initialized
    Bluetooth: RFCOMM ver 1.8
    Bluetooth: SCO (Voice Link) ver 0.5
    Bluetooth: SCO socket layer initialized
    Bluetooth: BNEP (Ethernet Emulation) ver 1.2
    Bluetooth: BNEP filters: protocol multicast

    ※ これ以外のものは使えない?

    LCD TYPE :: TD043MTEX will be initialized

    ※ ほう TD043MTEX という型番なのか

    input: gpio-keys as /devices/platform/gpio-keys.0/input/input1
    input: gpio-keys as /devices/platform/gpio-keys.1/input/input2
    ※ ボタンは GPIO 。



おまけ:よくわからないものの、興味深げな リスト。

    /sys/devices/platform/:

    bluetooth/ s3c-hsmmc.0/ s3c-uart.1/ s3c2410-wdt/
    dm9000/ s3c-hsmmc.1/ s3c-uart.2/ s3c24xx_led.0/
    gpio-keys.0/ s3c-hsmmc.2/ s3c-uart.3/ s3c24xx_led.1/
    gpio-keys.1/ s3c-ide.0/ s3c-vpp/ s3c24xx_led.2/
    hhtech_gpio/ s3c-jpeg/ s3c2410-iis/ s3c24xx_led.3/
    onenand/ s3c-keypad/ s3c2410-lcd/ s3c6410_OTGHCD/
    power/ s3c-mfc/ s3c2410-nand/ s3c64xx-i2c.0/
    s3c-ac97/ s3c-rotator/ s3c2410-ohci/ s3c64xx-i2c.1/
    s3c-adc/ s3c-ts/ s3c2410-rtc/ smc911x/
    s3c-camif/ s3c-tvenc/ s3c2410-spi.0/ soc-audio/
    s3c-g2d/ s3c-tvscaler/ s3c2410-spi.1/ uevent
    s3c-g3d/ s3c-uart.0/ s3c2410-usbgadget/
posted by すz at 17:06| Comment(3) | TrackBack(0) | SmartQ

2009年05月13日

SmartQ 5 MID 用にいろいろ購入

SmartQ 5 MID で遊ぶためにいろいろ買ってみた。

miniA ⇔ Aメス (20cm): Arvel AUMA02WH


miniA ⇔ miniB (1M): Arvel AUM20MA04


    まずは、USB ケーブル。miniA しかないから なにかを接続するには必須。
    普通は、Aメスタイプを買っとけば事足りるはずだが、すっきりとはいかない。miniB タイプの機器もいくつか持っているし、すっきりさせるためにケーブルを付け替えるようなことも考慮して、miniB のケーブルも複数買ってみた。

    ちなみに、amazon ではなく、ValueMore!というショップにした。ここだと ケーブルは 500円台。

    注意: 05/18
    なんと、本体のコネクタは、一般的な miniAB ではなく miniB だった。miniB は装置側の規格。Host にもなる場合は miniAB のコネクタを使う。ところが、SmartQ5 は miniB ... miniA のケーブルがほぼ無駄になってしまった。無駄になった以上にやっかいなのは、miniB ⇔ A メス なんてケーブルは存在しないこと。自作するしかない。

    実をいうと、miniAB のコネクタは、Digikey などで売っていて 持ってたりする。付け替えたりするのも一つの方法かも。

    とりあえず、一番楽なのは、Aメス⇔Aメス のいわゆるジェンダーチェンジャーを作ること。2本の延長ケーブルを使えば(見栄えは別として)安く作れるはず。

    Aメス⇔Aメス変換器ならいくつかあることが分かったのでメモ:

    AD-USB2 (サンワサプライ)
    AUSB-AFAF (ケーブルダイレクト)

USB LANアダプタ BUFFALO LUA2-TX


    V2.0 の ファームウェアから USB LAN アダプタのドライバが入っている。やっぱりあると便利なんだろう... ということで、定番らしき、BUFFALO のやつ(ドライバは pegasus)を購入。


USB接続 テンキーボード BSTK01BK

    PC に接続するときは、ネットワークでつなぐし、キーボードは特別には必要ないはず。でも持ち歩くときにキーボードがあると便利なこともあるかも知れない。

    で.. 検討してみた。

    超小型キーボード(幅17cm) の AOK-EN56BKが一見良さそうだったのだが、レビューみて パスすることに決定。なんでも 初代 LOOX-U とほぼ同じ配列らしい。


    次に BlueTooth 系 。なんか良さそうなのが結構ある。

    サンワサプライのSKB-BT11BKとか結構安くなっているし、I/O DATA の CPKB/BTもすごく良さそう。あと、リュウドの 2100BTJも定番っぽい。


    でも、結構高いし ... 使う場面も結局はあまりなさそう。とりあえず保留 ... 。



    で、結論がコレ。持ち歩きながら使うとすれば、テンキーで携帯入力でしょう。サイズも 120x80x16 mm と 120x74x14 mm の SmartQ 5 とサイズが近い。うまく加工できれば なんか微妙なガジェットぽくなって面白いかも。

    もちろん、ソフトのアテはない。... それだけでなく、携帯入力は苦手。

    なんというか... ものづくりのネタとして 採用というところ。


5/14 追記 テンキーについて調査

まず、Xのプログラムを作れば キーに割り当てられた キーコードが取得できる。これについて /usr/share/X11/xkb/keycodes/xfree86 を見て調査してみた。ちなみに、USB キーボード自体にも 決められたキーコード体系があって X のものとは違う (参考→ USBキーボードのキーコード)


    NumLock / *
    77 (NMLK) 112 (KPDV) 63 (KPMU)

    7 8 9 -
    79 (KP7) 80 (KP8) 81 (KP9) 82 (KPSU)

    4 5 6 +
    83 (KP4) 84 (KP5) 85 (KP6) 86 (KPAD)

    1 2 3
    87 (KP1) 88 (KP2) 89 (KP3) ENTER
    108 (KPEN) or 36(RTRN)
    0 .
    90 (KP0) 91 (KPDL)




この表は 109キーボード(英語キーボードも共通) のもので、USB テンキーとは違う。

BSTK01BKはまだ入手できていないのではっきりとは分からないのだが ...

右上 が BS キー、下の真ん中に 000 キーが付いている。(たぶん 000 は 0 x 3連打) そして、NumLock は、本体キーボードとは連携しない。--- ローカルに切り替えるのだろう。さらに、最近のものは、大概 NumLock の位置が TAB キーになっている。(NumLock はその上の小さなキー)。

携帯風入力 ソフトを作るなら上の表のキー( NumLock以外) だけで使えるようにすべきだろう。

どのように作るかは、あまりイメージできていないが、上の表のキーを Hotkey みたく横取りするアプリケーションで、確定文字列を 入力バッファー(?:良くは知らない)に送り込むとか そういうものが良いような気がする。あと、NumLock で切り替えた場合、矢印キー と INS,DEL,HOME,END,PgUp,PgDn のコードが出ると思うが、これらは 関知しないことにする。(フォーカスしたアプリケーションに渡る)



  • ちなみに、上の方針ではどうにもならなかったり不満が出れば、電子工作で、コントローラを入れ替えるなんてことも可能なはず。
  • 参考 : HIDKeys - An Example USB HID
  • いっそのこと 12mm角のタクトスイッチで好きなものを作るのもアリかも。


携帯キーボードの配列はこんな感じか?
       
           112 (KPDV) 63 (KPMU)

           HOTKEY1 HOTKEY2

    79 (KP7) 80 (KP8) 81 (KP9) 82 (KPSU)
    1 2 3
    あ か さ 文字種
    . / @ ABC DEF
    83 (KP4) 84 (KP5) 85 (KP6) 86 (KPAD)
    4 5 6
      た な は CLR
    GHI JKL MNO
    87 (KP1) 88 (KP2) 89 (KP3)
    7 8 9 108 (KPEN) or 36(RTRN)
      ま や ら   
    PQRS TUV WXYZ ENTER
    90 (KP0) 91 (KPDL)
    0 #
    わをんー 、。?!
    - +


HOTKEY1、HOTKEY2 は未定のキー。必要なければ HOTKEY にするという程度の意味。

... とまぁ設計を始めてしまっているが、ただのメモ。気が向かないと作らないかも知れない。

メモ: X(Xorg)での Hotkey

  • http://lists.freedesktop.org/archives/xorg/2006-February/013131.html

    > I am looking for some informations how xorg handle hotkeys, how i can
    > register/unregister hotkeys and how i can get notifyed for a hotkey.

    Search docs about XKB. Config files are:
    AT keycode to X keycode
    /etc/X11/xkb/keycodes/xfree86
    "hotkey" to keysym
    /etc/X11/xkb/symbols/inet

    Probably hotkey on press produces keycode 130 , which is .
    # setxkbmap 'us+inet(azonaRF2300)'
    command set up layout 'us' plus "internet keys" for keyboard
    model "azonaRF2300". That means hotkey (keycode 130) now have
    keysym XF86WWW .
    X applications can recognise keysyms ;o)

    Aivils


実を言うとよくわからないが、これが答えらしい。

追記:USB HOST ケーブルを作ってみた




細いケーブル同士をつないで絶縁するのは面倒なので秋月の 16ホールユニバーサル基板を使って 2つの USBケーブルをつなげてminiB⇔Aメスにしてみた。

とりあえずテストするぐらいには使えるが、見栄えも耐久性も難がある。

ケーブル同士をつなぐぐらいなら、基板取付用USBコネクタ(Aタイプ、メス)に直接つないだほうが良さそう。

もっと良いのは、すなおに Aメス⇔Aメス 変換器を使うことだろう。普通の miniB ケーブルが、手間なしに miniB⇔Aメスになる。ただ、入手が難しいかも。

千石で、こんなものを発見 カモン AF-5M mini-B ⇔ Aメス変換!


    追記:
    SHINO BLOGでこんなの作っている。

    千石で USB miniB 端子を入手できたので ... なんて書いてある。入手できるものなのか ... メモメモ。
posted by すz at 05:45| Comment(3) | TrackBack(0) | SmartQ