SDHC内蔵 initrd.bin 作成キット

SDHC ドライバを SL-A300 の rootfs に組み込んでしまうことで、電池が切れて全てが消えても最初から SDHC が使えるようにした initrd を作成するキットです。

SL-A300本体で initrd.bin を作成しますので、Linux PC 等は不要です。

ただし、initrd.binを作成後、アップデートする際には完全初期化されます。必要なファイルはバックアップを取ってから実行してください。

ファイル

ソース

必要なもの

使い方

これは SL-A300 の NOR Flash に書かれている rootfs をベースに、SDHCドライバを組み込んだ initrd.bin を作成するキットです。

rootfs には GPL でないものも含まれているので勝手に配布できないため、イメージをユーザの方々に作っていただく必要があるためです。

ただし、この手順を実行すると SL-A300 は完全初期化されます。必要なデータ等はバックアップしておいてください。

流れとしては、以下のような感じになります。

  1. 1GB以下のSD(FATフォーマットのもの)を用意。
  2. PCでキットをSDに展開
  3. SL-A300 に SDHC ドライバをインストール。
  4. 高速起動をOFFにし他のアプリケーションは全て終了
  5. SL-A300 で SD 内の mkinitrd.sh を実行
  6. しばらくすると initrd.bin が作成される
  7. キット同梱のupdater.pro と initrd.bin を SD のルートディレクトリに移動
  8. HOMEを押しながら再起動し、rootfs をアップデート
  9. 電源LEDが消灯したらアップデート完了
  10. 再起動するとSDHCが使用可能に

1つづつ説明していきます。

1.  1GB以下のSDを用意

SL-A300のアップデート機能を使って rootfs を書き換えるため、アップデート機能が対応している SD カードが必要になります。ですので、1GB 以下のSDをご用意ください。

おそらくアップデート機能では FAT フォーマットしか認識できないと思いますので、FAT のものを用意してください。普通の SD カードは FAT なのでそのままで OK です。

2.  PCでキットをSDに展開

PC上でダウンロードしたキットをSDに展開します。

キットを展開すると、mkinitrd-sdhcというディレクトリが作成されるので、それをそのまま SD にコピーしてください。

3.  SL-A300 に SDHC ドライバをインストール

rootfs を作成するときに、本体にインストールされている SDHC ドライバを参照します。そのため、あらかじめ SDHC ドライバをインストールしておく必要があります。

4. 高速起動をOFFにし他のアプリケーションは全て終了

イメージの作成にはメモリを多く使います。そこで高速起動を全て OFF にし、端末以外のアプリは全て終了してください。

5.  SL-A300 で SD 内の mkinitrd.sh を実行

2. で作成した SD を SL-A300 に挿入し、端末から以下のコマンド実行します。あらかじめ embedded-konsole 等の端末ソフトをインストールしておいてください。

# cd /mnt/card/mkinitrd-sdhc
# ./mkinitrd.sh

すると、以下のようなログが出力されながらイメージを作成します。
イメージ生成に約5分くらいかかりますので、気長にお待ちください。

Copy all original files...
Copy SDHC Driver
Copy qinstall
Create initrd.bin ...
Directory data: 40752 bytes
addgroup
ash
bash
busybox
cat
chkmntsh
     :  (省略)
localtime
posixrules
zone.tab
sharp
scshot
var
Everything: 14116 kilobytes    ※
Super block: 76 bytes    ※
CRC: f6aa0474    ※
Finished!
#

※の部分の値は環境により変わります。

6. しばらくすると initrd.bin が作成される

約5分くらいで initrd.bin が作成されます。気長にお待ちください。

7. updater.pro と initrd.bin を SD のルートディレクトリに移動

作成した initrd.bin とキットに同梱してある updater.pro を SD のルートディレクトリに移動します。

端末から以下のコマンドを実行します

# mv initrd.bin ..
# mv update.pro ..

9. HOMEを押しながら再起動し、rootfs をアップデート

再起動を実行した直後から HOME キーを押しっぱなしにしてください。

再起動がかかった後、電源の緑LEDが点滅したらアップデートモードに入っています。

点滅がゆっくりになったら書き込み中です。

rootfs の書き換えに5分程度?かかります。結構時間がかかるのでしばらくお待ちください。

10. 電源LEDが消灯したらアップデート完了

電源の緑LEDが消灯したらアップデート完了です。

完全初期化を行うため、RESETを20秒程度長押しして再起動してください。

これで素の状態でも SDHC が使えるはずです。

オリジナルに戻し方

SHARP公式ページのSL-A300アップデートを適用すれば元のオリジナルに戻すことができます。

このキットで作成した initrd.bin が動作しなかった場合は上記ページの手順にしたがってオリジナルのSL-A300へアップデートしてください。

免責事項

本キットを使って発生した、いかなる損害の責任も作者は負わないこととします。

At your own risk. でのご使用をお願いします。

履歴

  • 0.2   10/04/20   zip
    問題修正してリニューアルリリース
  • 0.1   10/04/08   zip
    初リリース。
    アップロードし忘れ&問題発覚で配布されないまま公開停止。

SL-A300用コミュニケーションアダプタ購入

SL-A300用のコミュニケーションアダプタを買いました!

初めはオークションでしか手に入らないと思っていたのですが、sugarware さんに秋葉原のソフマップ「中古モバイル・デジタル専門店」で2千円位で売っているとの情報を教えていただき、先週買いに行ってきました。

ここには初めて入ったのですが、ガラスケースにはザウルスだけでなく、CLIE や GENIOe など、数々の懐かしい PDA が並んでいました。でも、ザウルスが圧倒的に多かったです。長く愛されてきたんだなぁと思いました。

早速、ガラスケースを探して見たんですが、コミュニケーションアダプタは・・・無い・・・売れてしまったのかと思いながらも、わざわざこのために秋葉原まで来たので、ダメ元で店員さんに聞いてみたら「ありますよ」とあっさり言われてしまいました。

オプション品は別の棚に置いてあるので、オプション目当てで行く人はご注意ください。

で、買ってきました!

CE-JC1買いました
コミュニケーションアダプタCE-JC1

箱ありで、付属品もたぶん全て付いていて \1980 でした。

他にも箱なしですが CD-ROM・取説付きが \1880 で、CD無し本体のみが \1580 で売っていました。

クレードルも \1500 位で1つだけ売っていましたが、悩んだ末、無くても使えるのであきらめました。


付属品も全部そろってました

早速装着してみました。


コミュニケーションアダプタ装着!

うーん。厚い。分かっていたことではありますが、せっかくのすっきり薄い SL-A300 が約2倍の厚さに・・・。
バッテリも内蔵しているのはプラスポイントですが、個人的にはSL-A300の魅力が半減です。
この厚さなら SL-C760 でいいんじゃないか?とも思ってしまいますね (^^;
とりあえず、通信カードを使う時以外は外して使おうと思います。

そのうちCF bluetooth カードを買って GPS を繋げたいなと思ってます。高いのと品薄でいつ手に入るかわかりませんが・・・。

PC用地図表示・ダウンロードソフト pgmap!

—–追記—–

タイトルがpgmapを正確に表現していないので変更しました。
前のタイトル: オンライン地図ダウンロードソフト pgmap!

pgmap はダウンロードをメインとしたソフトではなく、GPS対応なども行っていて地図表示もメイン機能だと思ったので変更しました。

—–追記ここまで—–

今回は qgmap と組み合わせると非常に便利なソフトの紹介です。

コメントですでにご存じの人も多いと思いますが、cyclone さんが、PC で地図を見ながら地図を指定してダウンロードするソフト pgmap を作られました。(名前が似てますがqgmapではありませんあっかんべー)

Perl/Tk で組まれているので、Perl が使えれば Windows でも Linux でも動作します。
たぶん Mac でも動くのではないかと思います。

Ubuntu では以下のパッケージをインストールすれば使用できました。

  • perl-tk
  • libtext-csv-xs-perl

起動すると以下のような画面が表示されます。

まだ地図がダウンロードされていないので、青のタイルで埋め尽くされています。

初期地図をダウンロードするには、右上の「?」ボタンを押し、表示されたヘルプダイアログの「Initial map」ボタンを押下します。

すると、Zoom レベル 13 の日本地図がダウンロードされます。

この地図を参考に欲しい地図をダウンロードしていきます。

qgmap のように拡大表示機能があるため、指定したズームレベルの地図が無くても1つ広域の地図を拡大して表示することができます。

地図の縁の色が地図の状態を示していて、以下の3色があります。

  • 青:未ダウンロード
  • 赤:ダウンロード選択
  • 灰:ダウンロード済

Shift+クリック で青←→赤を切り替えることができます。

ダウンロードしたい部分の選択が終わったら右上の「Download Map」ボタンを押すと、赤の部分がダウンロードされ、ダウンロード済の灰色になります。

未ダウンロード(未選択)状態
未ダウンロード状態

 

選択状態
Shift+クリックで選択状態に

 

ダウンロード済み状態
「Download」ボタン押下でダウンロード

また、Shift+ドラッグで、矩形選択ができます。


Shift+ドラッグで矩形選択

このような手順で欲しい地図をダウンロードしていきます。

これだけでも便利なのですが、さらに秀逸なのが、Mag 機能です!

地図画像は 1 枚あたり 256×256 サイズなので、ズームレベルの小さい詳細地図を広い範囲にわたって選択するのは大変です。Mag 機能は地図を拡大縮小し、1枚あたりを 128×128 や 64×64 などに小さく(大きく)表示することができます。

たとえば、Zoom 3 で東京近辺をダウンロードしたい場合、Mag 機能がない場合は以下の画面をスクロールさせて選択していく必要があります。

これでは広範囲の地図を選択するのはとても手間です。

Mag 機能を使い、1/16に縮小表示すると

このように詳細地図でも広い範囲を簡単に選択することができます。非常に便利です!

ダウンロードした画像はカレントディレクトリの imgs/ に保存されますので、これをイメージ化するなり煮るなり焼くなりすれば qgmap でもそのまま使用可能です。

また、GmlMgr でダウンロードした imgs ディレクトリと入れ替えることですでにダウンロードしている地図を見ることもできます。

 

GM_Lite が登場して以来、まさに、こういった地図を見ながらダウンロードできる PC 用のクライアントが欲しかったんです。

PC や Linux に詳しくないユーザにも qgmap を多くの人に使ってもらうには、地図のダウンロードを簡単にしないといけないと前々から考えてました。

でもPC用のクライアントは自分で作るにはちょっとレベルが高いので、地図レシピや、qgmap のフリーハンド範囲指定でお茶を濁していたのですが、PC でダウンロード操作を完結できる pgmap の登場で一気に使いやすくなったと思います。

GmlMgr と pgmap をうまく使い分ければ簡単に欲しい地図を手に入れることができるようになりました。

GmlMgr は地図レシピを使ってたくさんの地図を寝てる間にダウンロードしたり、強力な地図管理機能を使って、欲しい地図を切り出して ISO イメージを作成するのに便利です。

pgmap はピンポイントで欲しい地図を見ながらダウンロードしたり、ある場所の地図を持っているか確認したりするのに便利です。

うーん。ホントに便利になりました。作者の方々に感謝感謝です。ありがとうございます。

SL-A300も SDHC!

SL-A300 もSDHCの対応を行ってしまいました。→ダウンロードページ

ーーー追記ーーー

インストールする際にはROMバージョンを 1.50J にアップデートしてからインストールしてください。

ーーーーーーーー

SL-A300 用だけ、qinstall-fix 相当の修正もドライバパッケージに含めてあります。
これは、SL-A300 だけは SL-C シリーズとは qinstall に関する修正するファイルが違うためです。qinstall-fix のパッケージを分けるならまとめちゃってもいいかなと。

とりあえず 32GB の SDHC も認識することは確認できましたが、一部のカードはどうしても認識させられませんでした。認識しなかったカードは非SDHCの4GB SDです。ほかの手持ちのカードは、SDHC, SD 問わず、認識しました。

SL-A300でも32GB SDHC!
SL-A300でも32GB SDHC!

認識したカード

  • KINGMAX MSD-128M (miniSD 128MB)
  • Sandisk SDSDM-512 (miniSD 512MB)
  • GREEN HOUSE GH-SDCM1GC (miniSD 1GB)
  • アイオーデータ SDMC-2G (microSD 2GB)
  • Sandisk SDSDQ-4096 (microSDHC 4GB)
  • A-DATA SDHC8GB (SDHC 8GB)
  • PCI PL-SDHC08G (SDHC 8GB)
  • Team TG032G0SD26A (SDHC 32GB)

認識しなかったカード

  • Transcend TS4GSDC (SD 4GB)
  • Transcend TS4GSD133 (SD 4GB)

これで SL-B500, SL-6000 系以外は全部 SDHC に対応したことになります。

SL-A300 はコミュニケーションアダプタをつけない限り、外部ストレージが SD のみなので、もしかすると、一番 SDHC 対応の恩恵が受けられる機種かもしれません。

SL-A300 の SD ドライバを解析していてびっくりしたのは、SDIO 用の処理が入っていたことです。ググってみたところ、SDIO 完全対応ではないものの、AirEDGE のSDタイプのモデムカードが接続できるんですね。知りませんでした。

とりあえず、SDHCは問題がなければこの辺で終了です。
今回の解析のおかげ(?)で、ARMのアセンブラがスラスラ読めるようになってしまいました。(^^;
いい経験になりましたが、今のところ、アセンブラはおなかいっぱいです。

SL-A300ちらつき抑制

結構ちらつきが激しい SL-A300 の LCD ですが、LCD のドットクロック(ピクセルクロック)を上げてちらつきを抑制することができました。
リスクを覚悟の上で使ってみたい方はこちら。スペシャルカーネルv19aのパッチも当ててあります。

とりあえずリフレッシュレートさえ上げればちらつきはなくなるだろうという安易な考えでドットクロックを上げることにしました。

ただ、いくら検索しても SL-A300 で使われてる PXA210 の仕様書が見つからなかったので、PXA255 の仕様書と、カーネルソースを参考にいじりました。(^^;
とりあえず、LCDコントローラ近辺は PXA210 も PXA255 もほとんど同じようです。

PXA255 の仕様書によると、ドットクロックはシステムクロックを分周して生成しているようです。で、スペカのページによると SL-A300 のシステムクロックは100MHz らしいです。

LCDコントローラのレジスタ設定値から、デフォルトで 22 分周しているようなのでドットクロックは4.54MHz になります。また、レジスタ設定値から、1画面の描画に 96888clk 必要なようなので、リフレッシュレートは

4.54MHz / 96888 = 46.9Hz

となります。50Hz 以下なんですね。これではちらつくのも当然です。

Wikipediaのフリッカーのページを見ると、一般的にリフレッシュレートが 70Hz を超えるとちらつきを感じなくなるそうです。

分周比を変更してドットクロックを上げたカーネルをビルドし、書き込んでみたところ、ちらつきが少なくなることが確認できました!とりあえずこの方法でちらつきを制御できそうです。

個人的に許せる程度のちらつきになるよう、分周比をいろいろ変更してみたところ、100MHz / 14 = 7.14MHz あたりでほとんどちらつきが感じられずいい感じでした。リフレッシュレートは 73.2Hz でした。確かに70Hz以上になってました。

 

と、とりあえずドットクロックを上げることでちらつきは抑えることはできましたが、デメリットやリスクもあります。SHARP さんも訳あってレートを下げているはずですし。

軽く考えてみて思いついたのは以下の3つ。

  • 液晶パネルにダメージを与えるかも
  • アプリのパフォーマンスが低下するかも
  • バッテリの持ちが悪くなるかも

まず、液晶パネルの仕様書を見たわけではないので、ドットクロックの保証動作範囲に収まっているかわかりません。動作範囲外の場合、とりあえず動いているように見えますが、パネルの寿命を縮めるなど、ダメージを与える可能性があります。

次に、アプリのパフォーマンスが低下する可能性があります。リフレッシュレートを上げるということは、その分、画面を表示するためのメモリアクセスが増えるということになります。そうなると、必然的にアプリが使用可能なメモリ帯域が減ってしまうため、アプリの動作が若干低下するかもしれません。

また、何も処理をしていないアイドル状態でも画面描画のためのメモリアクセスは増えたままですので、当然消費電力も増えます。これによってバッテリの持ちが悪くなる可能性があります。

 

パフォーマンス低下やバッテリの持ちの悪化はどの程度か試してみないとわかりませんが、個人的にはちらつきの方が許せないのでこのまま使ってみようと思います。