アカウント名:
パスワード:
なぜOSを使う必然性があるのか理解出来ないいずれTVやクーラーの赤外線リモコンにもLinuxが搭載される日がくるのだろう
・I/Oの面倒をOSが見てくれるから楽・ドライバをかくための資料やサンプルも豊富なので独自のI/Oも容易に追加できる・開発環境が整備されており楽・信頼性を確保しやすい
そして何より
・Linuxが動くハードウェアの小型化低消費電力か低価格化が著しい
ということが大きく、これまでハードの規模やコスト的制約でローレベルからスクラッチで開発していたデバイスや規模の小さな=機能の小さなOSを利用でざるを得なかったようなデバイスでも、Linuxのような規模の大きなOSを載せることができるようになったわけで、ソフト開発の負担と開発期間と費用を低減できるので利用されるのです。
というより、OSを載せたほうが楽に開発できるほどの複雑な機能ってなに?ということでしょう。
そのうちリモコンどころかリモコンのボタンひとつひとつにそれぞれOSが搭載される日が来るかも知れない。
別に複雑でなくたってOSが合ったほうが楽ですよ当たり前ですが。Linuxなら簡単なことならシェルスクリプトでも実装できますからね。
OSがないということは全て自前でやるってことですよ?実際の仕事に入る前に最低でも割り込みベクタの初期化してSPに適当なRAMのアドレスにロードするという本来の目的以外のスタートアップコードを書かなきゃいけないし、スタックオーバーフローなどメモリの面倒も自分で見ないといけない。C言語を使うならCのスタートアップルーチンもゼロから書くなり既存のものをターゲットのアドレスマップに応じて書き換え用意する必要があるし、Cを使うとスタックやヒープがフローする危険もあるのでいろいろ気を使います。実際の機能のコード書きに入るまでの作業がそれなりにあるわけですね。こうした作業は慣れれば簡単とはいえ相応の時間と費用がかかりますし、何百行かのローレベルなコードを書き連ねる必要があるのでバグも出やすくなります。
ターゲットでLinuxが動いていればこれらの作業の多くは不要になり、本来の目的のコードを書くだけで済むわけです。プログラマが書くべきコードの量が相当に減りバグも出にくくなります。
つまり、ハードとOSの方に金をかけることでプログラマは楽ができるので、実装する機能の複雑さと、ハードにかけられるコストや規模との兼ね合いってことになります。コストや規模に制約がなければ、単にLEDチカチカさせるだけにだってOSを使いたい、それが本当のところです。
先に述べたように後者の方がコストが下がっているので、大して複雑な機能を持つデバイスでなくてもLinuxのような複雑なOSが載せられるようになりました。おおまかに言えば組み込みプログラマにとって歓迎すべきことだし、バグが出にくくなるなどユーザーにとってもメリットはあるわけです。
おおまかに言えば組み込みプログラマにとって歓迎すべきこと
普通に考えればそうなんだけどここの自称組み込みプログラマ達は無駄な苦労するのが偉いと勘違いした体育会系マッチョみたいなのばかりなので…
話がすれ違ってます。
あなたは、開発すべき商品が前提として与えられたときの、ソフトウェアやプログラマの観点から話してます。私は、たとえばリモコンのボタンひとつひとつに、ソフトウェア(およびそれに付随するOSやハードウェアなどなど)を盛り込むという商品企画はどうよ、という話をしています。
ターゲットでLinuxが動いていれば
ハードウェア用の設定が既に完了したカスタム済みOSが手に入るのでも無い限りはOSにそのハードウェアの制御方法を教えるのはプログラマなので、OSにそのハードウェアでのLチカ教えてからOSの上でLチカするのと、自分でそのハードウェアでのLチカ書くのではどうやってもOSが無いほうが楽です。MPUにストレージ他も内蔵しててMPUチップに電圧加えればOSが起動してインストールしたアプリケーションが走り出すみたいな至れり尽くせりの(今のところ)稀少な環境を除けば、OS無しでゴリゴリ書いたほうが楽な場面も多々あります。喩えそういう場合であっても製品固有のハー
AVRのアーキテクチャは素直なのでコンパイラでも結構効率の良いコードを吐いてくれますが、アーキテクチャの変態さからPICはコンパイラに向かないんじゃないかな。アセンブラ必須というか。
で、マスプロダクトだと価格は変わるでしょうけど、とりあえず秋月価格でPIC16F688が110円 [akizukidenshi.com]、ARMな28ピンDIPマイコンLPC1114FN28も110円 [akizukidenshi.com]だったり。まあ、ARMとはいえCoretex-M0でメモリの少ないLPC1114ではLinuxなんてのは無理ですが、アーキテクチャ的な制約が少ないので、開発の手間はPICより格段に楽になると思う。
おおせの通りで、最近の命令セットが一部拡張されたものはマシになってるでしょうが、基本的にはPICはどんなにコンパイラが頑張っても効率の良いコードにはなりません.それでも十分に間に合ってるので、入手の容易なPICを使ってます.個人的にはPIC10/PIC14/PIC16/PIC18でパフォーマンスが足りなければ、次の選択肢はPIC24ですね.少し背伸びしてMIPSベースのPIC32でもかまいませんが.基本的にはやりたいことが低レベルで書くコード量も大したことないので、各種の初期設定のお呪いコードが少なくてすむ低機能プロセッサで十分です.
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
なぜOS搭載 (スコア:0)
なぜOSを使う必然性があるのか理解出来ない
いずれTVやクーラーの赤外線リモコンにもLinuxが搭載される日がくるのだろう
Re: (スコア:4, 興味深い)
・I/Oの面倒をOSが見てくれるから楽
・ドライバをかくための資料やサンプルも豊富なので独自のI/Oも容易に追加できる
・開発環境が整備されており楽
・信頼性を確保しやすい
そして何より
・Linuxが動くハードウェアの小型化低消費電力か低価格化が著しい
ということが大きく、これまでハードの規模やコスト的制約でローレベルからスクラッチで開発していたデバイスや
規模の小さな=機能の小さなOSを利用でざるを得なかったようなデバイスでも、
Linuxのような規模の大きなOSを載せることができるようになったわけで、
ソフト開発の負担と開発期間と費用を低減できるので利用されるのです。
Re:なぜOS搭載 (スコア:1)
というより、OSを載せたほうが楽に開発できるほどの複雑な機能ってなに?ということでしょう。
そのうちリモコンどころかリモコンのボタンひとつひとつにそれぞれOSが搭載される日が来るかも知れない。
Re:なぜOS搭載 (スコア:3)
別に複雑でなくたってOSが合ったほうが楽ですよ当たり前ですが。
Linuxなら簡単なことならシェルスクリプトでも実装できますからね。
OSがないということは全て自前でやるってことですよ?
実際の仕事に入る前に最低でも割り込みベクタの初期化してSPに適当なRAMのアドレスに
ロードするという本来の目的以外のスタートアップコードを書かなきゃいけないし、
スタックオーバーフローなどメモリの面倒も自分で見ないといけない。
C言語を使うならCのスタートアップルーチンもゼロから書くなり既存のものをターゲットの
アドレスマップに応じて書き換え用意する必要があるし、Cを使うとスタックやヒープが
フローする危険もあるのでいろいろ気を使います。実際の機能のコード書きに入る
までの作業がそれなりにあるわけですね。
こうした作業は慣れれば簡単とはいえ相応の時間と費用がかかりますし、何百行かの
ローレベルなコードを書き連ねる必要があるのでバグも出やすくなります。
ターゲットでLinuxが動いていればこれらの作業の多くは不要になり、本来の目的のコードを書くだけ
で済むわけです。プログラマが書くべきコードの量が相当に減りバグも出にくくなります。
つまり、ハードとOSの方に金をかけることでプログラマは楽ができるので、
実装する機能の複雑さと、ハードにかけられるコストや規模との兼ね合いってことになります。
コストや規模に制約がなければ、単にLEDチカチカさせるだけにだってOSを使いたい、それが
本当のところです。
先に述べたように後者の方がコストが下がっているので、大して複雑な機能を持つデバイスでなくても
Linuxのような複雑なOSが載せられるようになりました。おおまかに言えば組み込みプログラマにとって
歓迎すべきことだし、バグが出にくくなるなどユーザーにとってもメリットはあるわけです。
Re: (スコア:0)
普通に考えればそうなんだけどここの自称組み込みプログラマ達は無駄な苦労するのが偉いと勘違いした体育会系マッチョみたいなのばかりなので…
Re: (スコア:0)
話がすれ違ってます。
あなたは、開発すべき商品が前提として与えられたときの、ソフトウェアやプログラマの観点から話してます。
私は、たとえばリモコンのボタンひとつひとつに、ソフトウェア(およびそれに付随するOSやハードウェアなどなど)を盛り込むという商品企画はどうよ、という話をしています。
Re: (スコア:0)
別に複雑でなくたってOSが合ったほうが楽ですよ当たり前ですが。
Linuxなら簡単なことならシェルスクリプトでも実装できますからね。
OSがないということは全て自前でやるってことですよ?
実際の仕事に入る前に最低でも割り込みベクタの初期化してSPに適当なRAMのアドレスに
ロードするという本来の目的以外のスタートアップコードを書かなきゃいけないし、
スタックオーバーフローなどメモリの面倒も自分で見ないといけない。
C言語を使うならCのスタートアップルーチンもゼロから書くなり既存のものをターゲットの
アドレスマップに応じて書き換え用意する必要があるし、Cを使うとスタックやヒープが
フローする危険もあるのでいろいろ気を使います。実際の機能のコード書きに入る
までの作業がそれなりにあるわけですね。
こうした作業は慣れれば簡単とはいえ相応の時間と費用がかかりますし、何百行かの
ローレベルなコードを書き連ねる必要があるのでバグも出やすくなります。
ターゲットでLinuxが動いていれば
Re: (スコア:0)
ハードウェア用の設定が既に完了したカスタム済みOSが手に入るのでも無い限りはOSにそのハードウェアの制御方法を教えるのはプログラマなので、OSにそのハードウェアでのLチカ教えてからOSの上でLチカするのと、自分でそのハードウェアでのLチカ書くのではどうやってもOSが無いほうが楽です。
MPUにストレージ他も内蔵しててMPUチップに電圧加えればOSが起動してインストールしたアプリケーションが走り出すみたいな至れり尽くせりの(今のところ)稀少な環境を除けば、OS無しでゴリゴリ書いたほうが楽な場面も多々あります。
喩えそういう場合であっても製品固有のハー
Re:なぜOS搭載 (スコア:1)
AVRのアーキテクチャは素直なのでコンパイラでも結構効率の良いコードを吐いてくれますが、
アーキテクチャの変態さからPICはコンパイラに向かないんじゃないかな。アセンブラ必須というか。
で、マスプロダクトだと価格は変わるでしょうけど、とりあえず秋月価格で
PIC16F688が110円 [akizukidenshi.com]、ARMな28ピンDIPマイコンLPC1114FN28も110円 [akizukidenshi.com]だったり。
まあ、ARMとはいえCoretex-M0でメモリの少ないLPC1114ではLinuxなんてのは無理ですが、アーキテクチャ的な制約が少ないので、開発の手間はPICより格段に楽になると思う。
Re: (スコア:0)
おおせの通りで、最近の命令セットが一部拡張されたものはマシになってるでしょうが、基本的にはPICはどんなにコンパイラが頑張っても効率の良いコードにはなりません.
それでも十分に間に合ってるので、入手の容易なPICを使ってます.
個人的にはPIC10/PIC14/PIC16/PIC18でパフォーマンスが足りなければ、次の選択肢はPIC24ですね.
少し背伸びしてMIPSベースのPIC32でもかまいませんが.
基本的にはやりたいことが低レベルで書くコード量も大したことないので、各種の初期設定のお呪いコードが少なくてすむ低機能プロセッサで十分です.