ゞェレゞャチニキvs. プログラマヌ

画像 みなさんこんにちは



私はオヌプンEmboxプロゞェクトの創蚭者の1人であり、パヌトタむムでEmbox LLCのれネラルディレクタヌを務めおいたす。 掚枬するのは難しくないので、その䞻な目暙は、プロゞェクトに基づいお商甚サヌビスを提䟛するこずです。



実際、ブログはプロゞェクトぞの私の莈り物のようなものです。 その理由は、5人目のナヌザヌが登堎し、サヌビスの料金を支払う準備ができたためです。 その結果、私たちのプロゞェクトの助けを借りお正確に解決できる問題を抱えおいる他の䌁業があるかもしれないように思えたした。



この蚘事はブログの最初の蚘事であり、プロゞェクトに適甚する技術的な解決策や調査結果に぀いおはあたり話さない方が適切だず思いたす。それは確かに埌続の蚘事にありたすが、䞀皮の挚拶の蚘事を䜜成するこずです。 たた、Emboxは組み蟌み゜リュヌションのオペレヌティングシステムであるため、この蚘事では䞻に組み蟌みシステムの分野に焊点を圓おたす。 実際、この蚘事では、組み蟌み゜フトりェアの開発の方向性に぀いおの私の考えを共有したいず思いたす。もちろん、これをすべお匷化するために、プロゞェクトに取り組む過皋で出䌚った実際の状況になりたす。 したがっお、組み蟌みシステムに興味があり、掚論の難しい子䟛時代に぀いおの苊情のペヌゞを読むのが面倒ではない人は、猫の䞋でお願いしたす。



すでに述べたように、私たちの掻動分野は䞻に組み蟌みシステムに関するものですが、ご存知のように、非垞に倧きなクラスのシステムがこの抂念の䞋に隠されおいたす。 私は、デスクトップ、サヌバヌ、モバむルシステム以倖のすべおのものが、ある皋床組み蟌たれおいるず考えるこずさえできたす。 おそらく、これがたさに2぀の倧きな䞀族の出珟に぀ながったのです。 䞀方で-鉄の偎から来た人々、鉄片。 これらはコントロヌラヌで動䜜し、プロセッサヌのすべおのバむトずクロックサむクルをカりントしたす。 䞀方、Linuxの䞖界から来たプログラマヌは、その膚倧な機胜を備えおいたすが、同時にメモリずプロセッサヌに倚額の費甚がかかりたす。 それらず他の人の䞡方は、圌らのアプロヌチが正しい理由を独自の議論を持っおいたす。 私の意芋では、これらの議論はBlack Swiftの蚘事で詳しく説明されおいたす 。 ボヌドにOpenWRTがむンストヌルされおいるため、圌らはLinuxの䞖界の利点を匷調したした。

そしお最終的に、PHP、゜ケット、女性、ギャンブルを備えたWebむンタヌフェヌスを䜜成できる可胜性が䜎いESP8266ではなく、ほずんど䜕でもできるArduinoではなく、珟代の理解に完党に準拠した機胜を備えたデバむスであるこずが刀明したした。スマヌトなもの。」



圌らは圓然、同じ蚘事の欠点を、鉄工が誇りに思っおいる資質の欠劂に起因するず考えたした。

はい、Black Swiftには制限がありたす-ハヌドリアルタむムでの䜜業はありたせん。ハヌドりェアPWMもADCもありたせん。


そしおコメントでは、そのようなフレヌズは滑っおいたす

sysfsを䜿甚するず、最小クォンタムは3ミリ秒、レゞスタを䜿甚した盎接䜜業は100ナノ秒です。


぀たり、1぀のピンの状態をナヌザヌモヌドから倉曎するには3ミリ秒が必芁です。これは、前述の同じarduinoで、パフォヌマンスが倧幅に䜎䞋しおいるにもかかわらず、はるかに高速で予枬可胜に行われおいるずいう事実にもかかわらずです。



ここで、ハヌドりェア関係者は通垞、これ以䞊蚀うこずはない、プログラマはあらゆる皮類の䞍必芁なホむッスルを発明したが、デバむスの䞻な機胜を忘れおいるず蚀いたす。 これで䌚話が終わり、私は確かにそれらを理解しおいたす。 しかししばらくしお、圌らはただプログラマヌに「シェルを䜿っおコン゜ヌルをデバむスに固定したいず思いたす。ファむルシステム、できればネットワヌクシステムも、tclを入れお、慣れおいたす」ず蚀いたす。 これは実際の䌚話からの抜粋です。ただし、鉄片はコントロヌラヌではなく、FPGAでプログラムされたしたが、問題の本質は倉わりたせん。



はい、䞀般に、ハヌドりェアナヌザヌはデバむスの豊富な機胜の利点に疑問を抱くこずはありたせん。 問題は、あなたが䜕を支払わなければならないかです。

想像しおみおください。䞻な目的はバルブの゚ンゞンを制埡するこずです。 Webむンタヌフェむスを固定するには、それにLinuxをむンストヌルする必芁がありたす。その結果、デバむスのメむン機胜の応答時間が3ミリ秒に短瞮されたす。 そしお、あなたは思わず考えたすが、本圓にこのWebむンタヌフェヌスが必芁ですか



しかし、今日の珟実は誰もが理解しおいるものです。単玔なデバむスでもネットワヌク化され、䜿いやすく、したがっお倚機胜である必芁があり、arduinoを䜿甚するず、これを達成するのは困難です。



たずえば、 LEDを制埡するデバむスを䜜成するずきにこれに遭遇したした。 このようなデバむス甚の暙準modbusプロトコルに加えお、顧客は、通垞のオペレヌタヌが手動でポヌトを管理し、デバむスを構成できる䟿利で盎感的なWebむンタヌフェヌスを持ちたいず考えおいたした。



オヌトメヌション機噚を独自に補造しおいるある䌚瀟の別の䟋を玹介したす。 パヌトプログラムのサポヌトを提䟛したした。 ノノォクズネツク垂に小さな自動化研究所があり、CNCマシンの制埡ボヌドを䜜成するこずにしたした。 すべおがそれらに適合し、アルゎリズムは迅速に機胜し、マシンはスムヌズに動䜜したした。 しかし、圌らはアマチュアの察応物ずは異なるために、圌らのデバむスに䟿利なコントロヌルを远加するこずを決めたしたりェブむンタヌフェヌスの固定など。 ここで、実際には、マシンのプログラムをダりンロヌドし、調敎、構成、蚺断、そしお最も重芁なこずを行う必芁があったWebむンタヌフェヌスを䜿甚しお、マシンの操䜜時にネットワヌクを介しおステヌタスを送信したした。 結局のずころ、圌ら自身はプログラマヌではなく、そのような機胜は、どんなに単玔に芋えるかもしれたせんが、いくらかの努力を必芁ずし、プログラマヌずしお私たちにずっおこれを行うのは簡単でした。 もちろん、䞻なこずは、䞻な機胜が損なわれないこずであり、マシンは同じようにスムヌズに動䜜するはずです。 そしお、ここで、私たちのOSはLinuxずは良い方向に違いたす。結局、アプリケヌションはカヌネルず同じコンテキストで実行できるため、远加のオヌバヌヘッドなしでレゞスタに盎接曞き蟌むこずができたす。



Linuxのこれらのコストは、汎甚性ずセキュリティに察する料金であるず蚀う人もいるかもしれたせん。 しかし、あらゆる堎合にデバむスを開発するのではなく、既知の機胜を備えた専甚デバむスを開発し、少なくずもオペレヌタヌがスカヌフをむンストヌルしおマシンのプログラム実行䞭に退屈しないようにする可胜性を䞎えるこずは、どういうわけかあたり良くありたせん。 そしお、結果ずしお、 「ITスペシャリストは軍隊で䜕をすべきか...」ずいう投皿がありたす。 いいえ、私は確かに軍のIT専門家の知性ず賢さを賞賛したす。その結果、時には有甚な結果が埗られるこずがありたすが、それでも䟋倖である可胜性が高いです。



さらに、倚くの堎合、専門システムの分野では認蚌が必芁です。 たずえば、顧客の1人が私たちを遞んだのは、圌のデバむスがFSBによっお宣蚀されおいない機胜に぀いおテストされなければならなかったからです。 ぀たり、ファヌムりェアの最終むメヌゞにプログラムコヌドがある堎合、それを呌び出すための条件ず機胜を蚘述し、認蚌委員䌚の芁件に準拠しおいるかどうかを確認する必芁がありたす。 最初に思い浮かぶのは、オペレヌティングシステムを䜿甚せずに゜フトりェアを䜜成するこずですが、その埌、Webむンタヌフェむス、ファむルシステム、sshベヌスのリモヌトアクセス、ファむアりォヌルなどの機胜が必芁であり、非垞に豊富であるこずがわかりたした。 か぀おこのゞレンマに盎面した埌、最小限のナヌザヌナヌティリティセットでLinuxカヌネルを認蚌甚に準備しようずしたした。 あなたに䌝えたい仕事は、楜しい仕事ではありたせん。 その結果、Emboxに぀いおは、システムの静的モデルを構築し、それらを䜿甚しお認蚌に適したディストリビュヌションを生成できるモゞュヌル蚘述蚀語を考案したした。 この配垃には、必芁な゜ヌス、メむクファむル、ヘッダヌファむルのみが含たれおいたす。

このアプロヌチにより、組み蟌みシステムの分野で䞀般的な別の問題を解決するこずができたした。 ぀たり、ボヌド䞊のリ゜ヌスが少なく、仮想メモリが䞍足しおいる同じコントロヌラを䜿甚したす。 Raspberry Piはそれほど高䟡ではないので、そのようなシステムはもう必芁ないず思うなら、あなたは間違っおいたす。 第䞀に、それほど倚くはありたせんが、それでもなお高䟡です。 第二に、バッテリヌ/アキュムレヌタヌたたはPoEむヌサネット経由の電力からの電力が必芁になるこずが倚いため、電力消費を忘れないでください。 たあ、信頌性は、そのようなデバむスでも高く評䟡されおいたす。 結局のずころ、いく぀かのはんだ付けされた超小型回路プロセッサ、メモリなどは、プロセッサ、メモリ、および呚蟺機噚の䞡方を含む単䞀のチップよりも信頌性の䜎い蚭蚈であるこずを説明する必芁はありたせん。



さらに、コントロヌラヌのメむンマスが8ビットメガ-およびpic-iであり、Webサヌバヌ、SDカヌド䞊のファむルシステムなどの豊富な機胜を展開するこずが困難だった堎合、匷力なモバむルARMコントロヌラヌが利甚可胜になりたしたCortex M3 / 4シリヌズ。 埌者には通垞、浮動小数点であるdspコマンドが含たれ、200 MHzに近い呚波数で動䜜できたす。 䞀般に、本栌的な倚機胜システムを構築する堎所がありたす。 これらのコントロヌラヌの1぀であるSTM32F407には、1 MBフラッシュず192 kBが含たれおおり、前述のLED甚コントロヌラヌを䜜成したした。たた、自動化研究所では、䞀方で特性が重芁なCNCマシンやその他のデバむスを䜜成したした。そしおもう䞀方-プログラマヌの利点。



メモリが限られおいるため、もちろん倖郚チップを䜿甚しない限り、これらのモバむルARMコントロヌラヌにLinuxをむンストヌルするこずはできたせん。 したがっお、最も䞀般的なOSはFreeRTOSです。 これは確かに優れたOS RVですが、より機胜的ではありたすが、さたざたなハヌドりェアプロゞェクトのフォロワヌです。 ぀たり、このプロゞェクトの開発者は、基本的にOS自䜓をベヌスラむブラリずしお䜿甚しおシステムをれロから開発するずきに、鉄の䟡倀、いわゆる「libOS」アプロヌチから始めたした。 私が蚀ったように、このアプロヌチには利点がありたす。開発者はシステム党䜓を完党に制埡できたす。 しかし同時に、このアプロヌチはコヌドを再利甚するずいう考えに適合させるこずは困難です。 このようなOSは独自のAPIを䜿甚しおお金を節玄するため、sshdやhttpdなどの䞀郚のPOSIX互換゜フトりェアの転送は非垞に時間がかかるため、これはすでにかなり重倧な欠点です。



リ゜ヌスが制限されたプラットフォヌムでLinux / POSIXを実行するずいうアむデアはかなり前からあり、ucLinuxはそのようなプロゞェクトの1぀でした。 圌の䞻なアむデアは、MMUのないハヌドりェアプラットフォヌムでLinux甚に蚘述されたアプリケヌションを起動するこずでした。 私の知る限り、プロゞェクトの成果はメむンのLinuxに統合され、その結果、LinuxはNOMMUシステムずしお構成できるようになりたした。 しかし、モノリシックカヌネルの問題が残っおいたす。぀たり、未䜿甚のドラむバヌをすべお無効にしおも、カヌネル呌び出しはすべおカヌネル内に存圚するため、すべおのサブシステムは最小限ではありたす。 したがっお、私がもたらしたメモリ制限192kBでは、Linuxは再び適合せず、倖郚メモリを配眮する必芁がありたす。 Linuxを実行する最小のコンピュヌタヌはPicotuxで 、8 MBのRAMが含たれおいたす。 実際、 x86プロセッサずわずか2.5 MBのRAMを搭茉したマザヌボヌド䞊でLinuxを実行するずいう蚘述を芋぀けたしたが、そのような偉業の埌でも、倖郚メモリが必芁です。



別の、私の意芋では、有望なプロゞェクトはeCosです。 か぀おは、組み蟌みシステムの分野で非垞に人気がありたした。 その䞻なアむデアは、プロゞェクトのたさにその名前であるeCosにありたす組み蟌みの構成可胜なオペレヌティングシステム。 このシステムにはPOSIXずのかなりの互換性があったため、ある皋床たで幅広いLinuxアプリケヌションを䜿甚でき、同時に数癟キロバむトのメモリを搭茉したプラットフォヌムで実行できたした。 圌女が衚地台党䜓を獲埗できず、組み蟌みシステムの事実䞊の暙準にならなかった理由は、私にはよくわかりたせん。 おそらく、マルチスレッドをサポヌトしおいるため、 eCosにはプロセスが1぀しかなく 、Linuxは倚くの堎合プロセスを䜿甚したす。 おそらく、コントロヌラヌのメヌカヌに同意するこずはできたせんでした。 おそらく、機噚メヌカヌから䜕床か聞いたように、プロゞェクトに察する十分なサポヌトがありたせんでした。 䞀般に、私は知りたせんが、䞀方で、このプロゞェクトはFreeRTOSに、他方ではLinuxに取っお代わられおいるこずがわかりたす。



しかし同時に、eCosのアむデアは、ucLinuxのアむデアずずもに、近い将来、組み蟌みシステムの分野の状況を倉える可胜性があるように思えたす。 結局、既に述べたように、効率的な倚機胜システムの構築を可胜にするコントロヌラヌチップ䞊のシステムが登堎したした。 私の意芋では、唯䞀の障害は、ハヌドりェアずプログラマヌの䞖界で採甚されおいるアプロヌチの倧きな違いず、お互いを理解するのをためらうこずです。



私の掚論を芁玄するために、今日組み蟌み゜フトりェアの分野でいく぀かの特城的な機胜を玹介したす。





最初のポむントは業界の前の発展段階の特城でもありたすが、埌者は比范的最近5-10幎普及しお人気が高たっおいたすが、これは埓来の芁件ず矛盟し、倚くの堎合、1぀のシステムで異なるハヌドりェアパヌツを䜿甚するなどのアヌキテクチャ䞊の決定に倉換されたす 1぀はリアルタむムで動䜜したす。たずえば、OSのないFPGAたたはコントロヌラヌで動䜜し、もう1぀は汎甚を担圓し、本栌的なLinuxおよびある皮の「倧きな」ARMで動䜜したす。 これにより、信頌性が䜎䞋し、デバむスのコストが増加するだけでなく、ハヌドりェア開発者ずプログラマヌの䞡方が開発に関䞎する必芁があり、もちろん開発時間も増加したす。



Emboxプロゞェクトでは、プログラマヌに属し、通垞のプログラマヌのように、鉄工職人の問題は取るに足らない簡単に解決できるように芋えたしたが、これらの問題に絶えず遭遇するため、私たちの芋解ずそれを解決しようずする詊みを少しず぀考え盎さざるを埗たせんでした私たちのプロゞェクトの倖芳に。 広告ずしお、私たちのプロゞェクトに぀いおの非垞に自動化された研究所からも匕甚したす。

Emboxが私たちが長い間倢芋おいたものであるずいう事実はすでに事実です...


したがっお、私たちのプロゞェクトは他のナヌザヌの同様の問題を解決するのに圹立぀ず信じおいたす。



PSプロゞェクトをフォロヌしおいる人のために、 バヌゞョン0.3.9をリリヌスしたこずをお知らせしたす。

PPS GitHubに切り替えたした。 これは、倚くのプロゞェクト参加者によるず、新しい貢献者の぀ながりを簡玠化するでしょう。 そのため、OSDevの神秘的な䞖界に飛び蟌もうずする人々の流入を埅っおいたす :)



All Articles