FC2ブログ

鈴の音情報局blog

携帯関連の将来や最新の技術情報や業界の行く末などを適当に綴るblogです。 内容の信憑性は?余り信じない方がいいと思います。
本家の鈴の音情報局はこちら→http://suzusuzu.dip.jp:8800/
スマホ・携帯端末アクセス[ランキング][アクセスシェア(グラフ)] (毎年10/1にログをクリア)

Androidの移植を考えてみる

意外とAndroid機の記事にレスを頂いていて驚いている。
可能性を考えただけの穴だらけの記事なんだけど、意外と技術的に興味深いことを
書いて頂く事も有ったり、忘れていた気持ちを思い出させてくれる。

Androidはまだやっつけで作られていてARMやMIPSコア以外ではまともにAndroidが
動かないようだ。SHはようやくメーカーが苦労して移植を行った所だという話が一番驚いた。
2.0でようやく依存部を大きく整理して無くす方向に舵を切ったという話だ。
その2.0がまだ安定していない。現状はその段階のようだ。

早い話が1.6迄はAndroidを作るので精一杯、ようやく機能が揃ってきたので2.0では
移植の事まで手が回るようになったというところだろうか。

移植においてやはり困るのはCPUのアーキテクチャー。
リトルエンディアンやビッグエンディアン等、高級言語でもビットシフトなどを使うと
困ることが出て来たりする。アドレッシングモードで影響を受けることもある。
プログラムは必ずしも全てのコードがお行儀良く書かれているとは限らない。

私がT-01Aは一番移植に近い位置にいると書いたのは単純にSnapdragonを使用している
からという理由だけで細かいことは考えずに書いてみた。先日の記事に頂いたコメントの
返事でも書いたが、この記事にも取り上げられているようにAndroidはSnapdragonをサポートしている。

そもそもSnapdragonはARMというスマートホン等ではかなりメジャーなシリーズのコアを
使用しており、その中でも今市場に出ている最新のARMv7アーキテクチャーを使用している。
ARMv7はiPhone3GSやその他今のメジャーどころのARMを使用したチップセットのほとんどで
使われているといっていいだろう。なのでOSの対応のことを私は心配していなかった。

またSnapdragonはグラフィックスコアはAMDでこれも大御所、Linux用の基本ドライバー等も
しっかりしたものが用意されているでしょう。それを流用すれば比較的簡単に実装できる
のではないでしょうか。

まあこの辺り実際私が見たわけではないので「T-01AへのAndoridの移植は比較的容易な
方に入る」というのは単なる想像でしかありませんが。


ただコメントで頂いたのは「WM用に設計されたハードはアーキテクチャーが違うから移植が
困難だろう」という意見が意外と多かったこと。私にはこれは結構ショックでした。

古い人間なのかも知れませんが、昔は何が何でも移植してやるみたいなガッツのある人が
多かったように思います。確かに昔よりも何もかも複雑化してしまっているので単純には
比べられませんが。しかしその分メーカー標準のリファレンスドライバーなんてものが有る訳で。

しかし各種エミュレーターに代表されるようにアーキテクチャーが違うからといって絶対
動かせないなんてことは有りません。むしろやる気になればCPUのコードまで含めて
まるまるエミュレーションで動かせてしまうわけです。ましてやCPUのコードに互換性の
ある端末だったらより移植はしやすいのではないでしょうか。


種類の違う端末で、例えば割り込みのトリガーが不足している例を挙げてみます。
どうしても1/60秒の割り込みが欲しくてハード側は1/1000秒のトリガーしか発生できない
場合があったとします。

今の高級なOSにはプログラマブルなタイマーが付いてる事はもう当たり前のようなもの
ですが、ハードを直に操るとそんなに都合のいいものなんてほとんどの場合有りません。
昔のプログラマは1/1000秒トリガーなんて高級なハードがあればそれだけで何でも出来ました。
(そんなにいいものは大抵の場合無いので色んな代替案を駆使していたのが現実です)

例えば1/60割り込みは16.666・・・ms毎に割り込みがくることを期待するわけですが、
1/1000秒の割り込みを16回数えれば近似値が得られます。しかし16ms×60回で
960ms、秒にすると0.04秒ずつずれてきます。では17ms×60回では?
1020秒でこれも0.02秒ずつ逆にずれてしまいます。

では60回のうち40回は17msで、20回は16msで割り込むように割り込みドライバー側で
1/1000msでの割り込みの回数の数えて割り込みドライバーを利用するアプリへの
供給を調整します。

17ms×40回、16ms×20回は比率にすると17ms×2回、16ms×1回になおせます。
3回中2回を17ms、1回を16msにドライブするようにすれば丁度1000ms=1秒で正確に
60回の割り込みが作れます。昔の人はこうやって無いものは自分で作るという
各種の力技を駆使していました。というか、今でも別ハードに移植というものはそういう
ものだと考えています。

こんな調子でドライバ側でどんどんハードの違いを吸収していけばOS本体をほぼ
いじらなくても動かすことは出来ると思うのですけれども・・・それでもダメでしょうか?
というかアーキテクチャーが違ったら何も動かすことが出来ないなんて、それなら
何の為のドライバーなの?って思ってしまいます。ドライバーで吸収できないものは
エミュレーションしてでもやってしまえ、逆にそういうガッツが欲しいですね。


現実のAndroid 1.6はそういう状況ではなさそうだけど、ARMv7用ならコード自体は
問題ないわけだしある程度いけるんじゃない?とも思うわけだけどどうでしょう?
グラフィックコアのハードウエアアクセラレーションをどこまで最適化して使えるかが
快適性のキーになるでしょうがアクセラレーション無しでとりあえず動かすだけなら
そんなにかからないと思います。

それでもやっぱり考え方が短絡的で浅はかでしょうか?
でもとりあえずやろうと思わなければ何も起きないわけですよね。
私は東芝社内では誰か一応試してみているような気はしています。
というか、まだ試していないのなら是非試してみておいて欲しいです。
決して払えないコストではないと思います。
私が東芝社内でそれなりの立場にいるのなら間違いなくお遊び移植の指示を出しているはずです。
関連記事
  1. 2009/11/22(日) 01:01:02|
  2. 携帯
  3. | トラックバック:0
  4. | コメント:6
<<速度よりも自由度 | ホーム | 孫正義氏が語る“第2のIT革命”>>

コメント

年内・・・・

年内に2.1が来るらしいですが・・・・そこら辺はどうなっているんでしょうね~
まあ、マイナーアップなのでそこまで期待は出来ませんが・・・
更に変わるとすると来年のメジャーアップ待ちですかね?
まあ、関係の無い話ですね、すみません。
  1. URL |
  2. 2009/11/22(日) 06:52:50 |
  3. N #-
  4. [ 編集]

短絡的と書いたのは

鈴さん<
コメントの返事をこちらに書かせて頂きます。
まず、私が言っている「アーキテクチャ」はCPUがメインの話ですが、もちろんそれだけの話ではありません。
そもそもハードウェアとOSの関係の話ですから、CPUアルゴリズムなどはもちろん、他の方も仰っている様にドライバのこともそうですし、チップセット、ファームウェアそう言ったもの全てのアーキテクチャ(仕様設計)全体の話です。

私はアドミニの側の人間だったので、プログラミングに於いてきちんとした勉強をしてはいないのですが、「WM用に作られたハード」であれば、例えば、そうしたアーキテクチャにおいて様々なOSの仕様や不具合(不整合?)を力業でハードと強調させることも可能では無いかと思います。若しくはそうしている所もあるかも知れません。(知人のプログラマに聞くとそういったことはよくある様なので、WM端末に於いても例外ではないと思います。)
そうしたものはOSが変われば全く違ってくるというのは容易に想像出来ることで、もちろん鈴さんの仰る様にドライバやエミュでその差を埋めることは十分可能であり、そのためのドライバであるのはその通りだと思います。
ただ、鈴さんの発言はメーカとしての立場を軽視したものではないかと思うのです。
例えば、メーカがWM端末に無理矢理Androidを載せた、恐らくバグや仕様的な不具合が出まくるようなものを出せるでしょうか。
メーカの責任に於いてそんなものを出せるはずが無く、
不具合などを無くす為には下手をすれば(私のいう)アーキテクチャそのものを見直す必要があるかも知れません。
鈴さんのいう力業なども含めて元々全く違う仕様のものに対して整合性を合わせていく事に多くの時間がかかるのは、OSの開発などに携わっていた鈴さんもご存じなはずだと思ったので、「OSをガワにポン付けすればすぐ出来るんじゃ?」的な発言に対して少し短絡的ではないかと思ったのです。
もし気分を害されたのであればそれは申し訳なく思います。

Andoridに関しては恐らく皆さんが仰る様にドライバ関係が問題なのでしょう。
私の言っていることは基本的に一般論なので、最早この問題とは多少ずれているかもしれません。
また、私の拙い文章で逆に問題がややこしくなってしまっているかもしれず、私はコメントを続けるべきではないのかもしれませんが。
  1. URL |
  2. 2009/11/23(月) 01:45:10 |
  3. 通りがかりの置きみやげ #HSDP1/G.
  4. [ 編集]

>Nさん
2.1ですか・・・何が変わるのだろう??
ちょっとバージョンアップのペースが速すぎますね。
ペースが遅いマイナーバージョンアップでしたら熟成が期待できるのですけれども・・・。

>通りがかりの置きみやげさん
いや、問題提起して頂けるのは有り難いことだと思っていますよ。
しかし私の書き方がまずいせいだと思いますが、会話が余り噛み合っていないなということも感じています。
どうもT-01AでAndroidを動かすと言えば、全く無改造のT-01AでAndroidを動かす・・・。
つまり全くユーザーサイドと同じレベルでメーカーの人が移植を試みることを私が提案している
様に取られているのではないかとこのレスにて感じました。

またWM用のハード・・・まあ実際WMを乗せて売っているハードを無改造で再利用することが前提なら
そういう考え方が根強いのも理解できます。私がチップ単位まで話を戻しているのにどうしてそういう話に
なるのか不思議でなりませんでした。

私がユーザーレベルではなく、メーカーに対して言っているのはそれなりに意味が有っての事です。
あくまでT-01A(TG01)ベースだということですよ。ガワを替えてということも前の記事で書いている通り、
販売する時は全くの別製品であることが前提です。

新製品を開発するに当たってハードの再開発からはじめるのか、ソフトだけでやってしまうかで
開発にかかるコストは大きく変わります。勿論無改造のハードでできるのが理想です。

しかし場合によっては最悪ハードまで別物であってもいいわけです。
ハードは電気的に同じでブートストラップやBIOS等で吸収してもいいし、可能ならファームまで
同一のものでドライバのみで吸収してもいいわけです。
電気的に同じもの以上のレベルで派生製品を出せればメーカーとしては大きな開発コストカットで
新製品を出せるわけで、大変メリットのある話だと思いますよ。
どこまでいじって動かすかは実際に移植してみて技術的に可能な所で決めればいいわけで。

実際移植してみようと思わなければどのラインで可能かの判断が出来ません。
繰り返しますがWMを乗せた製品だから絶対にWMしか動かないというものでもありません。
ギリギリでバグが見つかったらOS外のファームの部分でごまかすことなんかは日常茶飯事ですが、
だからといってそのせいで別OSを立ち上げようとすると必ず悪影響が出るとも限りません。

WMしか動かしてないハードはWMでしか動作確認を取っていないだけです。
試す前から可能性がゼロという考えでは何も変化は起こせません。
何もしなければ確かにリスクは抑えることが出来ますが、その分手に入れられるはずの成功も
スポイルされるのです。
単なるいちブログでの提案を、メーカの会議室の話し並みに否定する理由が知りたいです。
僅かなコストで大きな可能性が広がると思われる提案を全力で否定される理由って何でしょう?
少なくとも私は東芝やドコモが損をする提案をしたとは思っていないです。

始めは実際に開発している方が実態を知った上で否定しているのかなと思っていましたが、
どうもそうではない空気を感じ始め、突っ込んでいくほどに違和感の増殖を覚えていたのです。
プログラマが趣味的に仕事の開き時間でちょっとした実験をやってみたことが社内的に意外と
役に立ったりするものがあることをご存じない上での話の流れのような気がしました。
私が言ってるのはあくまでそのレベルの話ですよ。
  1. URL |
  2. 2009/11/24(火) 02:50:49 |
  3. #GpEwlVdw
  4. [ 編集]

バージョンアップ

そうですね~これは少し私も問題視しているのですが
androidOSのアップデートが早すぎて現状置いてきぼりの端末というのが多々あります。
それと2.0は恐らくDROIDのみ実質2.0は一つの端末のみの対応になるかと思っております。
2.1がもう近づいて来ているようですからね・・・・
OSの差の問題はキャリアなどが対応するか独自UIを作ったメーカーが対応するか
など少しややこしいことになっているような気がします。とりあえず今年の最後はこんなに慌しかったので
(1.6が9月?発表で10月供給そして10月の最後あたりに2.0のSDKが出て11月にDROID発売さらにこの後、年内最後のアップデートを予定している)
今年が終わればしばらく多分4月か5月あたりまで新しいアップデートは無いと思われますのでその間に足並みを揃えて欲しいな~と思っております。
まあ、2.0でかなりよくなったという印象を受けたのでアップデート自体はユーザー視点からすればうれしいですね。
  1. URL |
  2. 2009/11/24(火) 05:33:07 |
  3. N #-
  4. [ 編集]

お互いに誤解無くなれば良いのですが。

鈴さん<
どうやら、お互いに誤解があるようです。

先ず、鈴さんが「どうしてこんなに時間がかかっているのか分からない」という記事を書き、
その中で「T-01Aのハードをそのまま使ってAndroidを移植するだけでAndroid端末を作れると思う」
「色やケースの一部のデザインを変えるだけで十分T-01Aと別製品として売り出すこともできる」
「入力装置を差し替えるだけで短期間で出せそう」
と書かれました。
これに対し、私は鈴さんの仰る様にユーザーサイドと同じレベルでメーカーの人が移植を試みることを提案している様に感じ、コメントを返した訳です。
ただ、あくまでT-01Aベースで販売する時は全くの別製品であることが前提
だと仰るなら、何故こういった表現の仕方をされたのか、とは思いますが。

また、「私がチップ単位まで話を戻しているのにどうしてそういう話に
なるのか不思議でなりませんでした。」
と仰られますが、私にしてみれば、どうしてチップ単位でしか話をしないのか不思議でなりませんでした。
上にも書いた様にハードウェアとOSの関係の話ですから、チップ(セット)だけの問題でないのは当然であって、チップ(セット)に限定してしまうのは不適当だと思うからです。

メーカに対して発言した意味は大幅なコストカットやI/Fなどの技術が生かせることなどの優位があるからこそだという事は分かりました。
ただ、鈴さんはやはりメーカの立場というものに思い至っていないのではないかと思います。
鈴さんが最初の記事を書いたのはユーザーの立場としてになりますよね?
ユーザーの立場として「何故こんなに時間がかかっているか分からない」と言うことは「はやく製品として出して欲しい(出せるはずだ)」と言うことです。
製品に対して「こうやればもっと早く出来るはずだよね」という話になれば、ある程度は「メーカの会議室の話し並み」になるのは当然の事だと思いますが。
そして製品として出すということはメーカがその商品に責任を持って出すということは言うまでもないですよね。
責任を持たなければならないメーカに対して、製品として「プログラマが趣味的に仕事の開き時間でやってみたちょっとした実験」のレベルの話をするのはどうなんでしょうか。

そして、鈴さんも誤解されているようですが、
私は「WMを乗せた製品だから絶対にWMしか動かない」とも言ってませんし、「試す前から可能性がゼロという考え」でもなければ「提案を全力で否定」もしていません。
コメントを読み返して貰えば分かると思いますが、
「そもそも設計されたものと違うOSをハードウェアに載せて何の問題なく動かそうとするなら様々な問題が出てくるだろうし、それなりに製品として出すには時間がかかるはずだろう。安易にすぐ出せる(はず)じゃないかという様な発言は少し無責任ではないのか」と言っていたのです。

お互い誤解しているので、話が噛み合わなくなっていた様ですが、
私も鈴さんが言わんとしていたことは多少なりとも理解出来たのではないかと思います。
  1. URL |
  2. 2009/11/25(水) 03:04:26 |
  3. 通りがかりの置きみやげ #HSDP1/G.
  4. [ 編集]

>Nさん
とりあえずgoogle本家がどこでソースを落ち着かせるかにかなり影響を受けますね。
2.1でしばらくアップさせなくてもいいぐらいの感じで落ち着ける状態ならいいのですが。

>通りがかりの置きみやげさん
なるほど、確かにそう抜き出せば私は非常に誤解を招きやすいことを書いていますね。
「中身には一切手をつけずに・・・」とは書いてないように、中身をAndroid化した上でと見えない枕詞が
前提としてついていたわけです。その中身のAndroid化の度合いはハードをいじるのか、ファームで
対応するのか等は実際やってみてのお楽しみ・・・というわけです。
「T-01Aをそのまま使って」も勿論一切手をつけずと言っているわけではないです。
誤解を無くす為にここは「T-01Aを流用して」と書くべきでしたね。

これだけ大騒ぎして言いたかったことは「一から開発せず流用をして開発速度を上げるべき」ということです。
一刻も早く売り出せば商的に有利に立てるはずだと思うのです。ホットなうちに売るべきでしょう。
国内で販売しているAndroid端末の競争相手を考えると年内に発売できていたら非常に有利だった
と思う所からこの発想が来ています。

「折角の商機なのにもったいないよ」が先の元記事の隠れたメッセージだったんです。
早く発売するにはこの手法もありなんじゃない?っていうことだったんです。

私にハード系プログラマとAndroidを理解しているプログラマ1名を部下に付けてくれて不自由ない
程度の人数分の開発機材を与えてくれたら数ヶ月でT-01AのAndroid対応ができるんじゃないかと
思っています。各仕様がはっきりしていたらかなり早くできるかも。半年で準製品レベル?
まあそんな感じです。
  1. URL |
  2. 2009/11/29(日) 01:25:44 |
  3. #GpEwlVdw
  4. [ 編集]

コメントの投稿(投稿時には必ず何らかの名前を付けてください)


管理者にだけ表示を許可する

(名前を入れないとクリックできません)

トラックバック

トラックバックURLはこちら
http://suzunonejh.blog15.fc2.com/tb.php/673-715ba465
この記事にトラックバックする(FC2ブログユーザー)

最近の記事

機能リンク

最近のコメント

カテゴリー

ブログ内検索

ブログリンク

RSSフィード

QRコード

QR

月別アーカイブ



メールフォーム

お問い合わせ・ご質問はこちらから。

名前:
メール:
件名:
本文:

suzunone.m(あっと)gmail.com に
直メでもOKです。