2011年3月12日土曜日

MID816(minipad)にゅーふぁーむ

タイトルはWikiトラップのテスト。

どなたかしらん、某Wikiに関連リンクとして登録していただいたっぽい。
いきなり、リファラが増えてびっくりした( ´∀`)
ありがたや、ありがたや。
でも、ここに書いてある内容を実行するときは自己責任でおねがいしますm(__)m
良い子は真似しないでね(`・ω・´)


んで、MID816-20110311版ニューファームが出てた。

http://mid816.com/filedrop/firmware/

20110311-update.zip
が、それ。
Slatedroidにも情報あり。

http://www.slatedroid.com/index.php?/topic/16003-03112011-firmware-released-im-not-sure-its-aviable-on-m816/


早速、アプデトしてみたけど、見た目はまったく変わらない。
パフォーマンスも良くなったのか??私の使い方ではあまり実感はなかった。
カーネルバージョンなどは写真のとおり。


残念なのは、Bluetoothの設定が無くなってしまった(´・ω・`)
ていうか、そもそも機能してなかったっぽいからなくても動作に影響はないんだろうけど、Bluetooth対応してみようと目論んでた人としては痛い。
地味に痛い。
チッ(゜-゜)・・・とりあえず、保留。
せっかく、ドライバもbluezもビルドしたのに(´・ω・`)

で、中身の確認をしてみた。

基本的な構成はこれまで通り変わってないっぽい。
システムツリーも初期化もドライバもライブラリも、顔ぶれは変わんない。
opt-root による root化もできるし、busybox もインストールできる。
お手軽ハック環境が作れるのはとても(・∀・)イイ!!

一般的な使用には関係ない部分で高評価(笑)

しばらく0311のユーザー評価を見てから、GPS対応ROMを作ろうかなと。
( ・ω・)ぼちぼち


参考
http://m001etc.blogspot.com/2011/02/mid816_23.html
http://m001etc.blogspot.com/2011/02/busybox.html

2011年3月10日木曜日

煮詰まってきた

っで、

MID816上でのGPS駆動は順調に進んでいるっぽい(・ω・)

前から何とかしたかった、ttyの初期化処理も何とか目処がついた。
GPS機能を使用=OFFにしたら、レシーバーの抜き刺しもOKにできそう。
これで、いちいち電源切らなくてもレシーバー取り外しできるぜ!(・∀・)
後はちゃんとテストして、組み込む方法を考えるだけだー。
できれば、パッチインストールできるような形がいいよなぁ。
カスタムROMをイチイチ入れなおすのは面倒だし、作るのも面倒(笑)
でも、できるかなぁ。/ の書き換えが必要なんだよなぁ。。。。
ま、いっか。

いやーしかし、一番厄介だったのは、MID816用の捏造ドライバを作るのに kernel config をどうやって調べるか?と言う問題。

カーネル組み込みモジュールやら、バイナリの形式、パワマネ関係、どのオプションで configure されているのかさっぱり情報がない。
仕方ないので、完全手探りでモジュールをmakeしては読み込ませてAndroidごとぶっ飛ばしたり、リブートの嵐になったりとかなりやばかった(笑)
最終的には、既存のドライバと diff って差異をコード上で探し出すと言う、力技以外の何者でもない方法に行き着いたり(笑)

でも、なんとか正解に近い config になったっぽい(`・ω・´)
おかげで、cp210x.ko も cdc-acm.ko も動いている。
たぶん、他のUSBシリアルドライバも動くだろう。
ファイルシステムとかはまた違うオプションを追求する必要があるので、動くかどうかわかんない。
ていうか、ファイルシステムは間違えるとディスクをぶっ飛ばす可能性がかなり高いのでちょっとビビリ気味(笑)
bluetoothはまだ調べてないけど、使えるかビミョーかも。

ま、気が向いたら調べるか(´・ω・`)

2011年3月8日火曜日

指先GPS

なんのこっちゃ!?

さておき、某ショップで取り扱ってるコレが以前から気になっていたので、散財ついでに手に入れた。
↓コレ

組み込み用のGPSレシーバー基板。
小さいんですよコレ。

 ほら(笑)


ちなみに、某ショップではpl2303接続のような記述になってるけど、本当は全然違う。
載っているGPSチップは u-blox5 で、チップ内臓のUSB出力を使ってるっぽいんだけど、windows用のドライバは u-bloxのサイトでダウンロードできる。

ちなみに、Linux環境では、USB-Serialドライバ cdc-acm.ko でドライヴできる( ・ω・)

で、手に入れたからにはつないでみよう!
と言うことで、MID816につないで自家製ドライバをぶち込んだらちゃーんと動いた(・∀・)

んでも、、、、感度悪っ!

アンテナが小さいのもあるけど、古いチップなのでそんなものかなぁ、、、、と。
MID816に内蔵しちゃうのはたぶん問題ない。
コレが入るくらいのスペースはあるし。
でも、問題は感度だよなぁ・・・・。
アンテナだけでもなんとかならんかなぁ。

Dropad A8割り

MID816にかかりっきりだけど、他の板を忘れているわけではない。
TR718Dはごろ寝用のビュワーとして、Dropad A8は本のページ押さえブックウェイトとして活躍中。
( ・ω・)。。。。

そんなわけで、あまり活躍してない、Dropad A8を殻割してみた。


今や定番の殻割り法、吸盤はがし。
中華pad界ではもう、マストアイテム。
(・∀・)イイ!!です。うまい具合に剥がれます。
隙間に差し込むのはヘラ系がいい感じ。私はバターナイフを使ってみた。
後の解体は簡単。

なーんか、やっぱ違和感のある基板だなぁ、なんでだろう~と、コネクタ側の接合を見てみると、、
二階建てピン結合。
久々にアクロバティックなメインボードを見た感じ(・∀・)
でもまぁ、このスペースに収めようと努力した結果なんだろうなー。


なぞの空きパターン。
パターン追っかけるのは面倒だったからパス。



んで、Wifiのアンテナ線がずーっと伸びているんだけど、追っかけると、なぜかバッテリーの裏に入っていく。。。
バッテリーをはがしてみると、、、、



Σ(゜Д゜υ) イタ!!


なんと、液晶とバッテリーの間に挟まれてた。。。。
これじゃ、、、感度悪すぎだろ(-_-メ

んなわけで、、、、
アンテナは移動させたました(・∀・)

2011年3月7日月曜日

カーネルモジュールをマケ(M001)

一応、私が試したM001用のカーネルモジュール構築手順を書いてみる。
あくまでも、手順の一例なので、これをそのまんま実行すればできるというものじゃないことを先にお断りしておく。
と言うのも、記憶を頼りに書いてる部分もあるので抜けてたりする(笑)
さらに、自力で調べる部分もあったりして手抜き満載。
最低、Linuxの知識とカーネルソースの泳ぎ方を知らないと手に負えない部分もあるのでそのつもりで読んでくだされ( ・ω・)

まず、クロスコンパイル環境を構築しておくこと。
環境へのPATH通しも忘れずに。

ARMクロスコンパイル環境
http://m001etc.blogspot.com/2011/03/arm.html

まず、、、
カーネルソースを展開

http://github.com/projectgus/kernel_wm8505

から、カーネルソースを取得してくる。
WM8505用のカーネルソース一式。

私が以前、拾ったのは。
projectgus-kernel_wm8505-v2.6.29-261-g59df0a4.tar.gz

今見たら、
projectgus-kernel_wm8505-v2.6.29-270-g33e33aa.tar.gz
ってのがそうみたい。

以下、ディレクトリ名など適当に読み替えてね。

mykernel以下に展開

# mkdir ~/mykernel
# cd ~/mykernel
# tar zxfv projectgus-kernel_wm8505-v2.6.29-261-g59df0a4.tar.gz
# cd ~/mykernel/projectgus-kernel_wm8505-59df0a4

READMEを読む。

カーネルコンフィグレーションの方法とかいろいろ書いてるのでチェックしておく。
とりあえず、M001のファクトリーコンフィグを雛形にドライバを作ってモジュール化する.configを作ってみる。

取得したカーネルソースだけど、これ一式でM001用カーネルを作ることはできる。
実際、M001 Debian のカーネルはこれがベースになってる。
でも、Androidについては、現状のカーネルを置き換えるまでには情報がなく、そのまま置き換えるのが難しい。
そこで、考え方を変えて、モジュール化できるドライバだけを makeして、現状のM001に移植できないか?できるだろ!?
という方針で進めていく。

まず、configの雛形をコピー

# cp arch/arm/configs/eken_m001_factory_configuration .config
# make menuconfig

configの内容だけど、今回は USB Serial の CP2101ドライバを作りたいので、目標のCONFIG値がセットされるように操作すれば基本的にOK
余計なところは触らない。。。。
ま、ちょっとくらいなら触っても、、、(´・ω・`)死んでもしらん(笑)

具体的な設定は、

Device Drivers -> USB support -> USB Serial Converter support -> USB CP2101 UART Bridge Controller

を "M" 設定(モジュール)する。
他にもよく使われそうな、コントローラの名前が見えるねー(^_^;

さて、 .config をセーブしてカーネルコンフィグはOK
ちなみに、設定されるべき define は

CONFIG_USB_SERIAL_CP2101=m

んで、カーネルバージョンの詐称をする。
カーネルは自分が知ってるドライバしかロードしないので、カーネルとドライバのバージョンを合わせておく必要がある。
とりあえず、Makefile の記述を下記のように直す。

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 29
EXTRAVERSION = -00236-g4f8dbbb-dirty

dirtyな捏造( ̄ー ̄)
EXTRAVERSIONは端末情報のカーネルバージョン見れば分かる。

以上。ビルド準備完了。

んじゃ、make


# make via_obj

これはなんだろう?ソース読んでないからわかんないケド、READMEにそうすれと書いてあった(笑)必要ないかも(^_^;

んで、モジュールを作る。

# make modules ARCH=arm CROSS_COMPILE=arm-none-eabi-

しばらく待つと出来上がり。
できたモジュールは各モジュールソースのディレクトリ内にできてるはずなので探すべし。

さて、実際に出来上がった cp2101.ko を実機にコピーして手動で insmod してやると、

USB Serial support registered for cp2101
usbcore: registered new interface driver cp2101
cp2101: v0.07:Silicon Labs CP2101/CP2102 RS232 serial adaptor driver

こんな具合にドライバが組み込まれる。

んでもって、USBにデバイスを接続すると、

usb 2-2: new full speed USB device using uhci_hcd and address 2
usb 2-2: configuration #1 chosen from 1 choice
cp2101 2-2:1.0: cp2101 converter detected
usb 2-2: reset full speed USB device using uhci_hcd and address 2
usb 2-2: cp2101 converter now attached to ttyUSB0

こんな感じで、シリアルポートとして認識され、/dev/ttyUSB0 が割り当てられているのがわかる。


以上。

簡単に見えるけど、実際はエラーが出たりして細かい修正を手動で行う必要があったりするかも。
それと、何でもモジュール化できるか?と言うと、そうではなくて、カーネル内に内蔵されているモジュールによっては作成できないものもあるし、ロードが拒否されるものもあるだろう。
この辺りは、情報がないので試してみるしか方法がない。

手探りでトライ!
(・∀・)

ARMクロスコンパイル環境

ただいま、もへーっとmake中。
そんなわけで、クロスコンパイル環境を書いてみる。
作業は、VMware上のUbuntu環境で行っているのでそれに準じてコマンドなどを書いてます。

CodeSourceryから
http://www.codesourcery.com/

下記よりDownload
http://www.codesourcery.com/sgpp/lite/arm

TargetOS -> EABI
IA32 GNU/Linux TAR のtar玉をダウンロード
arm-2010q1-188-arm-none-eabi-i686-pc-linux-gnu.tar.bz


/opt に展開
# sudo tar jxvf arm-2010q1-188-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 -C /opt
環境変数PATHを通しておく。
# export PATH=/opt/arm-2010q1/bin:$PATH

シェルのリソースファイルに記述しておいてもいい。

これでクロスコンパイル環境ができた。

うわぁナニコレ。
こんなに簡単なのね。
ずーっと昔、同じくARMのクロスコンパイル環境作ったときはぜーんぶ、自家製ビルドのツール群を2日がかりでmakeして、途中でおかしくなって破棄すること数回(笑)
今はアーカイブ解凍するだけでいいのね。
ありがたいことです。いやほんと。

参照
http://d.hatena.ne.jp/androidzaurus/20091104/1257326571
https://sites.google.com/a/oidon.net/www/linux/arm-cross-tool-chain

2011年3月1日火曜日

ハイ捕まえた


キタコレ(・∀・)

とりあえず、はりぼての仮組み、手動キックスタートで動いた感じ。
いいねーいいねー。