トップページ⇒tech
76コメント31KB

ハードドライバをシステマチックに作る方法

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
私は仕事でファームウェアのハードドライバを書いています。
アプリケーションだとXPのようなプログラミング手法が考案されていますが、
ハードドライバにそのようなものはないのでしょうか?
このまま職人的にプログラムを組むにも限界がありそうなので・・・
0002デフォルトの名無しさんNGNG
        コロッケワッショイ!!
     \\  コロッケワッショイ!! //
 +   + \\ コロッケワッショイ!!/+
       _,,、、,,,_,_  _,,、、,,,_,_  _,,、、,,,_,_     +
.   +  ,r';;'::゛':::`::;''tr';;'::゛':::`::;''t,';;'::゛':::`::;''t  +
      'r、;:´∀`:∩'r;´∀`∩r''r、;:´∀`;;r'さくさくほかほか!
 +  (( (つ   ノ (つ  丿 (つ  つ ))  +
       ヽ  ( ノ  ( ヽノ   ) ) )
       (_)し'  し(_)  (_)_)
0003デフォルトの名無しさんNGNG

           _/⌒ ̄⌒`´ ̄`〜ヽ'ー--、
           _/      ιυっ ̄~つyへつ
         /    フっιつ人´ / /つυ^っへ  っっ
       /   /つつ。o/ / / /  ^つっへυっつ
     /________。   。 / /  /°>つっっっつっっ
    / {   ,-∋☆ノハ☆∈\。 o 。 /o。/ /つっっつっつ
__/  \ ヽヽ ( ^▽^)<新スレおめでとうございまーす♪っつっつ
=/      Y ̄ ̄⌒⌒⌒⌒ ̄ ̄ ~\ つつっ、。|    つ  っつつつ
 ̄     っっヽ  ※※※※※※※  \|          っっつつ
  つつっιつ) \  ※※※※※※※  \  °           o 。
  っつっo °。 \  ※※※※※※※  \ ° °           °。
 っ\\っoっ。  °\__________ノ ° 。°°。       。°。
  つっつ _o°°。 ° ° 。o/⌒\。 o\°°o  。     /У\°
 )へ)つ\///`ー、_ ° °。_/    \°。\。 。°°   /WMW、\
  へ)。°|\\\\`ー、 ,〜´ へっυ   ̄ ̄ ̄\°°  /           \  ___/
 ( ̄o°oヽ、 \\,O、/~   つっへっ   \ へ  \ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  \__/ ̄ ̄ ̄ ̄    っっつ         へ  \ 

0004デフォルトの名無しさんNGNG
そういえばドライバスレ久しくなかったね
0005デフォルトの名無しさんNGNG
コピペの練習をするスレッドはここですか?
0006デフォルトの名無しさんNGNG
XPプログラミングが提唱する。

単体テスト作成→実装→単体テスト実行

これをハードドライバでするのはちょっと難しいかも。
ハードドライバのAPIを一発で決めるのは至難の技だからなあ・・・
ハードドライバのAPIを修正する度に単体テストの修正をするのはかえって効率が落ちそう。
0007デフォルトの名無しさんNGNG
>>1
マジレスすればプログラムの種類が違う。

>>6の言ってる事の趣旨は良くわからないけど、
ドライバはプログラムの構成が問題になる事はない。
データフローさえ指摘されれば
バカでもかける。
でも、そのデータフロー(アルゴリズム)は
試行錯誤的に作らなくてはいけない(タイミング処理とか)。
そういう意味でドライバのプログラミングは
アルゴリズムの試行錯誤的構築が本質だと思う。
それにプログラムのサイズも小さいので、
破綻すれば0から作り直せばいい。
0008デフォルトの名無しさんNGNG
>>7
>ドライバはプログラムの構成が問題になる事はない。
>データフローさえ指摘されれば
>バカでもかける。

馬鹿はお前だろ?
ファームウェアの場合、PCのドライバのように抽象化された世界ではない。
PCのドライバはハードを叩いていないものが多いからな。
ファームウェアのドライバを書いたことがあってそんなことを言っているのならば
簡単なドライバしか書いたことがないだけ。
ドライバはハードという融通の利かないものを抽象化する必要があるので、
プログラムの構成が非常に重要。
そうしないと直ぐに破綻する。

>でも、そのデータフロー(アルゴリズム)は
>試行錯誤的に作らなくてはいけない(タイミング処理とか)。

これも簡単なドライバしか書いたことの無い奴の発言だな。
確かに微調整は必要だが、ハードの仕様書(たいてい英語)を全部理解して
アルゴリズムを考えないと確実に破綻する。

>それにプログラムのサイズも小さいので、
>破綻すれば0から作り直せばいい。

ドライバが小さいというのは一概には言えない。
特にゲーム機のグラフィックドライバは尋常な大きさではない。
移動体通信機の無線ハードドライバもそれほど簡単に書けるものではない。

アプリケーションが大きいのは、リンクするデータやライブラリが大きいから大きく見えるだけで
実際のロジックはたいして大きくはない。
アプリケーションの場合、エンジン部分以外は能力の低い奴でも作れる。
0009デフォルトの名無しさんNGNG
>>1
ファームウェアの場合、ハードドライバだけでプロジェクトが進められることはないからXPは適用可能。
まあ、ファームウェアの場合、ハードドライバの実装だけ始まってアプリは後から作る場合が多いけど。
0010デフォルトの名無しさんNGNG
>>7
少なくとも言えることはドライバのソフトウェアは通常のOS上での
プログラミングと違い溺愛のライブラリを組み合わせて実現するものではない。
そしてプログラムサイズが小さいと言うことは決して作業が楽というわけではない。
むしろ厳しい制約の中で要求仕様を実現することの方が困難であろう。

0011デフォルトの名無しさんNGNG
>>10
同意。
ハードドライバはF1で例えればモナコみたいなもの。
モナコはコース長が短く速度も出ないけど、難易度は最も高い。
モナコの勝利は、他のサーキットの3勝分に値すると言われている。
それと同じで、私はハードドライバの1行はアプリケーションの100行に値すると思う。
0012デフォルトの名無しさんNGNG
ハードドライバのスレハケーン
0013デフォルトの名無しさんNGNG
また単発質問スレですか?
0014デフォルトの名無しさんNGNG
>>1とは関係ないけど、ハードドライバのスレッドなのでちょっと書かせて。

ハードドライバ書ける人って、ソフトハウスの派遣外注だとみたことないよ。
半導体メーカーから派遣された人とかフリーでやっている人だといるけど。
いつも派遣外注でハードドライバ書ける人いないかなーと思って面接してもろくなのいないし・・・
ハードドライバ書ける人って確保しにくい。
0015デフォルトの名無しさんNGNG
ハードドライバをアクロバティックに作る方法

かと思った…
0016デフォルトの名無しさんNGNG
俺は

ハードドライバをドラマチックに作る方法

と読んだ。
0017デフォルトの名無しさんNGNG
>>14
そもそもそういうのを派遣で賄おうって根性が既になあ・・・日本はもうダメポ
0018デフォルトの名無しさんNGNG
>>17
オープン系が派遣に頼る理由は誰にでも出来るからである。
0019デフォルトの名無しさんNGNG
ホントは誰にでも出来るなら苦労はしないよ。 
人によって能力や適性はプログラミングに関しては10倍どころか最大千倍くらいあるだろなあ
002014NGNG
>>17
やっぱり甘い?
ソフトハウスが「うちにもハードドライバ書ける人材がいますよ」と言ってくると期待しちゃうけどね。
でも実際会ってみると、お手伝い程度にしかドライバを書いていなかったり、ハードに近いけど
直接ハードを叩いていないソフトを書いているだけだったり。
書いたことがあってもただのコーダーだったり。。。
英語のハード仕様書を自分で理解して、自分で構築できる人はソフトハウスではいないのかな?
ハードドライバ作成者っていつも人手不足なんだよね。
自社で育てればいいのかもしれんが、会社がそういう方針ではないし。
0021デフォルトの名無しさんNGNG
>>18
ファームウェア技術者の私にはオープン系は分からないけど、どんな仕事?
0022デフォルトの名無しさんNGNG
>>20
そりゃ甘いだろ。
英語の仕様書読んで、ハードも理解して、ハードの問題点まで指摘してくれて、
その上著作権全部おいてってくれて、なおかつ派遣で使い捨てなんて 誰がやる?

自分ならやるの?
0023デフォルトの名無しさんNGNG
>>17
ソフトハウスじゃハードたたくプログラムは無理でしょ。
規模は小さくても自社でハード設計もやっているところじゃないと。
ハードドライバの仕様は基本的に回路解る人じゃないと理解できないから。
ただまれに大手からスピンアウトしてハードドライバも出来る
人がいるソフトハウスもあるけど。


0024デフォルトの名無しさんNGNG
やらないわなあ、回路読めて、ハードも出来て、なおかつ職にあぶれたら
派遣で人生の大事な時間潰すより、ベンチャーでも個人でIPビジネスでも
やった方がマシ・・・・って普通思うわなあ
0025デフォルトの名無しさんNGNG
ハードドライバやっているけど
アプリケーションソフトを仕事にはしたくないなあ。
20年後の自分を想像すると。
40才すぎて新しい言語が出るたびにいちいち覚えてられない。
0026デフォルトの名無しさんNGNG
回路読めてハードができたらベンチャーや個人でビジネスがやれると考える方が甘い。
0027デフォルトの名無しさんNGNG
>>25
そうそう。あなたはそれしか出来ないんだから。
0028デフォルトの名無しさんNGNG
ドライバ書けて、回路読めて、ハードも触れるなら、IPビジネスやれるだろ
儲かるかどうかは別にして 最近頑張ってるのは液晶ドライバの

・・・・っと、あれはソフトとは違うか
0029デフォルトの名無しさんNGNG
>>28
儲からなくていいなら誰でもやれますよ(プ
0030デフォルトの名無しさんNGNG
この世界は、オープン系と違って、千倍差あるっていう技術がそのまま面に出るからね。
ホントに技術があるなら、個人でも大企業は相手にしてくれるよ。(たとえ間に別の業者入れられたとしても)
0031デフォルトの名無しさんNGNG
>>27
VC、Javaも仕事でやってことあるけど。
あんたはハードドライバ解るのか?
0032デフォルトの名無しさんNGNG
>>1-31
海外に仕事を発注するのでお前ら必要ありません。
0033デフォルトの名無しさんNGNG
インド人が糞コードを書き散らして逃亡しました!
0034デフォルトの名無しさんNGNG
>>28
液晶ドライバも資料はたいがい英語だな。
レアなチップだと仕様を理解するのに苦労する。
ただあれは回路が解らなくてもソフトは書けるな。
0035デフォルトの名無しさんNGNG
チップセットとドライバセットにしてIPビジネス展開するのが最近のベンチャーの流行かな
0036デフォルトの名無しさんNGNG
ところで、「ハードドライバ」って一般的な言葉なの ?
0037デフォルトの名無しさんNGNG
>>35
はっきり言ってやろう。

おまえにビジネスの才能は無い。
0038デフォルトの名無しさんNGNG
ハードウエアレベルのデバイスドライバーって事だと解釈してたけど? 違うの?

IPビジネスは最初、 インターネットプロトコルを使ったビジネスだと思って話聞いてて
たまたま、その話はそれに近い話だったんで話がそんなにズレてなくて、良かった〜 って経験があるよ
0039デフォルトの名無しさんNGNG
>>37
ありがと。判ってるよ。 自分にビジネスの才能がないのはね。
0040デフォルトの名無しさんNGNG
USBが出始めの頃はそれを売りにしている会社が結構あった。
IPビジネスでいかに利益を得るかはチップや規格が出てからの
スピードにかかっている。
今後はBluetuth、IEEE802.11a等の無線LANが狙い目だと思う。
0041デフォルトの名無しさんNGNG
>>40
そういうのは規格作成に関われる大手に抑えられるから 個人でやるにはチョット厳しいかもね
最初はニッチを狙わないと
0042デフォルトの名無しさんNGNG
>>37
いや、ビジネスをわかってないのはお前の方。
最近は、デバイスドライバなんてかける奴はそうそういなくなったから、チップだけよくても使ってもらえない。
きちんとドライバとセットにしないとだめ。
つまり、>>35 は必要条件と言うこと。(もちろん、十分条件じゃない。)

>>38
だよねー。だったら、普通に「デバイスドライバ」で言いと思うが...。
つーか、「ソフトドライバ」ってあるの ?

> IPビジネスは最初、 インターネットプロトコルを使ったビジネスだと思って

と言うのもあるけど... (>>40 とかもそう思ってる口だな)。

>>35 が言ってるのは、多分(IP:Intellectual Property)の方だと思うぞ。

(>>37 は、よくわかっていないと思う。)
0043デフォルトの名無しさんNGNG
いや、俺が 良かった〜 ってのもちょうど >>40みたいな話だったんで話しが通じてたからなんだよな。
後で調べて一人で赤面したよ。
0044デフォルトの名無しさんNGNG
>>42
IPビジネスって、ようはARMのような形態で(つまり物ではなく
一部分のサービスとしてとして)
提供するビジネスと思っているのだが。
FPGA/PLDには適しているな。
0045デフォルトの名無しさんNGNG
>>42
ソフトドライバって言うと、MPEGとかのエンコーダ・デコーダみたいな感じのニュアンスで使うかも
0046デフォルトの名無しさんNGNG
>>44
とりあえず PLDには向かないだろ
0047デフォルトの名無しさんNGNG
>>46
理由を述べよ。
0048デフォルトの名無しさんNGNG
>>43
ああ、そう言うことですか。だったら、納得。
確かに、通信系の LSI なんかの話してると、(思い込みもあって) それなりに辻褄が合ってしまうので、深みにはまりそうですね。

>>45
ソフトドライバと聞くと、私は /dev/null とかのハードウェアを持たないデバイスドライバを想像してしまうんですけど...。
0049デフォルトの名無しさんNGNG
>>46
理由ってこっちが聞きたいよ。
CPLDじゃなくて PLDだろ? そんなもんどうやってIPビジネスにするんだよ?
0050デフォルトの名無しさんNGNG
>>49
なんだよ、言葉遊び厨かよ。
CPLD を含む総称として、PLD を使ってるってことでいいだろ。
0051デフォルトの名無しさんNGNG
>>49
PLDでは語弊があったな。規模から見てCPLDだな。
ただCPLDというと自分はアルテラの製品を連想してしまう。
まあどうでもよいが。
0052デフォルトの名無しさんNGNG
今なら DSPアプリも狙い目かな
0053デフォルトの名無しさんNGNG
ハードドライバのスレハケーン
005414&20NGNG
ここってハードドライバのページなのにCPLDの話になっているw

>>22
まあそうだよなw
漏れもメーカー勤務なんだけど、ハードドライバが分からない上司が「人が足りないなら外注採れ」
って言ってくるので仕方なく・・・
結局、テスター程度を雇うだけだけど。
やっぱりソフトハウスにハードドライバできる奴っていないよな。
上司が分かってくれればいいけどね
0055デフォルトの名無しさんNGNG
>>20=14
漏れ零細にいるけど糞窓のもLinuxのも書けるよ。ハードベタベタ触る奴。
そもそも組み込み系だし。
で、もうすぐ転職予定。
いつまでも小さいのにはそれなりの理由があるのよ。つまり、大きくなれな
いDQNなマネジメントしてるってワケ。

んなわけで、いてもすぐ逃げ出しちゃうので小さい所にはにはそういうのが
いないのではないだろうかと思ワレ。
005614&20NGNG
>>55
なるほど。
レジスタ叩くハードドライバが書けるのならもっと大手に行った方がいいよ。
自分の売り込み方を間違えなければ、それなりの会社に行けるはず。
0057デフォルトの名無しさんNGNG
このスレだったらまともな回答返ってきそうだ。
LSI設計やってます
最近SpecCとかSystemCとか
はーどうえあをC言語もどきで
記述するというアホな考え方が蔓延
してきました。
ソフトもハードも境界がない時代が
やってこようとしてます。
ソフト技術者から見るとどう感じますか?
0058conflict ◆BMrqngXGkM NGNG
>>57
何でアホな考えだと思うの?
005957NGNG
ソースから想像できないような
回路ができあがちゃったりする。
1024bitのバスが32個ある回路とか
無意識にポインタを使って巨大な
レジスタが生成されたりとか。
考えただけで恐ろしい。
006014&20NGNG
>>57
ディジタル回路を言語で作るのは正しいと思う。
ソフトウェア=ディジタル回路のシーケンスなのだから、本来は同じものと考えてもいいはず。
ENIACも配線でプログラムしていたのだし。
0061conflict ◆BMrqngXGkM NGNG
>>57
そういう意味ね。まぁ C コンパイラも最初はそう言われたらしいから
徐々にまともな回路を生成してくれるといいね。
0062デフォルトの名無しさんNGNG
>>57
個人的には関数型言語の方が合うんじゃないかと思ってる。
実際にはそういう研究もある/あったみたい。
でも、C言語を書ける技術者の方が多いからなぁ。
006355NGNG
>>56
そだよね。大手だからいいとは言えないだろうけど転職すべきだよね。

それはそうとそろそろいい歳こいてきた(今30)ので技術者俺一人なのにもかかわ
らずマネジメントの勉強とかもしてるんだけど、勉強すればするほど現勤務先の
DQNっぷりが見えてきて...転職する事にしたのですた。
006457NGNG
>>60
>ディジタル回路を言語で作るのは正しいと思う。
そう、確かに現状でもVHDLとかVelilog-HDLっていう
ハードウエア記述言語で設計している。
そのレベルだと記述を読んでどういうできるか回路が想像できるけど
C言語で書いてあるとそこからどういう回路になるのか想像できない。
でも最終的には仕様が満たせればハードだろうがソフトだろうが
どっちでもいい。
>ソフトウェア=ディジタル回路のシーケンスなのだから、本来は同じものと考えてもいいはず。
>ENIACも配線でプログラムしていたのだし。
その考え方は正しい
そもそも回路をシミュレーションするためのプログラムもCで作られているんだから。
>>61
そうなるにはあと3年はかかると思われる
もしそうなったら、おいらの仕事手伝ってね。
>>62
>でも、C言語を書ける技術者の方が多いからなぁ。
そうこれが一番の理由でC言語ベースの言語が開発されてる。
ソフト技術者からハード技術者へのシフトが始まってる。
N社とかF社とかで。
0065conflict ◆BMrqngXGkM NGNG
>>57
俺なんか 3 年後に HDL がせいぜいだよ〜。

しばらく前の日経エレに載ってた C ベースで
MPEG4 のデコード(エンコードだったかも) LSI 設計した
っていう記事読んだ?
もし読んだなら感想を聞かせて欲しいんだけど。

> そのレベルだと記述を読んでどういうできるか回路が想像できるけど
> C言語で書いてあるとそこからどういう回路になるのか想像できない。

とあるけど C だってアセンブリレベルでどういったコードに落ちるか
ある程度わかるわけだし HDL のそれとあまり変わらないんじゃない?
そう考えると記述言語の抽象度はあまり関係ないんではないかと思うのだけど。
0066デフォルトの名無しさんNGNG
ソフト屋の習性としてルーチン内の処理は上から下へ順番で実行される
と言う概念がある。
ハードを書くときはその辺の常識を忘れなければならない。
006757NGNG
>>65
>感想を聞かせて欲しいんだけど。
もちろん読んだ
確かSH社のことで他にSo社やO社の
事例もあった。
どの会社も(半導体部門持ってる会社)
研究レベルの試行は終わってそろそろ
実用段階に入ったのかなって感じ
ただ圧縮・伸張処理とか画像処理は
データーの流れが一方向だし
全部新規設計だったから適用しやすかったと思う。
だけど普通は複雑な制御回路があったり
過去のきれいじゃない回路資産を
使いたい場合があったりするするから
簡単にはいかないと思う。
>>66
そうだ、いいこと言た
ハード屋の場合は逆ですべて並列処理で
データの変化はクロックと言う考え方だが
抽象度が高くなるとクロックの概念がなくなる
だからわけわからなくなる。


0068デフォルトの名無しさんNGNG
>>67
おまいはもう少し物事を巨視的に読み書きする訓練しろ
006957NGNG
>>68
なにがいいたいのか?
おれはソフト技術者側からの
ハードのC言語化の賛否を聞きたいだけだが。
0070デフォルトの名無しさんNGNG
>>69
まあここはプログラム板っつー事で
ソフト寄りな書き込みの方が喜ばれるっつー事よ。
たとえそれが真実と異なっていてもな。
俺個人的な意見としてはあんたみたいな
人がいたほうが面白いけどな。
007157NGNG
うーん
まともな議論ができるかと思ったけど
話の腰を折られたようだ
てことでこの話題はおしまい。
0072デフォルトの名無しさんNGNG
なんでバカが一人二人紛れたくらいでそんな。
そこそこ面白そうだったんだがなぁ・・・。
0073デフォルトの名無しさんNGNG
WinMX 最 高 !
0074デフォルトの名無しさんNGNG
Windows は屑
007557NGNG
あげちゃったりして
>>68
うん、この手のものは巨視的にみなきゃ
いけないのはようわかる、だがLSIは納期が命
だが研究分野と実務レベルで大きな隔たりがあるような
気がする。
>>70
ありがと
おいらとしてもソフト屋さんに
協力してもらいたい訳よ
とくにドライバ屋さん
>>72
一瞬むかついたが68はバカではないな
ツールを売り込みたいEDAベンダの人間か?
それとも”おまえの会社は遅れてる”といいたいのかな?
007657NGNG
スレちがい?
工学板逝った方がいいすか?
■ このスレッドは過去ログ倉庫に格納されています