参照コード

愚か者だけが自分の過ちから学ぶ、賢い人は見知らぬ人から学ぶことを好む



私のアクティブな特派員チャールズ・マニングは、ノルディック・セミコンダクターのウェブサイトから質問へのリンクを送ってくれました。 文字通り、この質問は次のとおりです。「どのBLEプロファイルが最良の方法でECG信号を満たしますか。このプロファイルからADCのサンプルコードはありますか? しばらく探していましたが、見つかりませんでした。」



チャールズと私は彼と一緒にst然とした。 誰かが医療機器の重要な部分を作成し、使用する通信プロトコルの知識が限られているようです。彼はまた、この部分を参照に基づいて構築する予定です(この用語の翻訳があれば、 -ロシア語では、これらの2つの用語の意味は少し異なりますが、「近似」は聞こえません-翻訳者のメモ)(サプライヤからのコードはデモコード-ppによってコメントで促されました)。



ユーザーに恐ろしい結果をもたらす可能性があるにもかかわらず、たった1つの質問からこのような結論を引き出すことはおそらく不公平です。 そして、私はフォーラムを禁止するつもりはありません-それらは知識を共有する素晴らしい方法です。 インターネット以前の時代、私たちは皆、私たち自身の経験から関心のある問題をほとんど把握する必要がありましたが、これはひどく非効率的でした。 不十分に文書化された、または壊れた機能に関する内部情報を取得するために、ベンダーの腕に乗ってチップ開発者と話をしたことを覚えています。



そして、信じてください、私は完全に再利用するためのものであり、システムがより大きく、より複雑になっているので、これが本当に救いに対する私たちの唯一の希望だと思います。



しかし、参照コードにはエラーが多く、完全にはほど遠い状態です。 通常、開発者にチップの機能の使用方法を示すことを目的としています。 体のほとんどの経験豊富な開発者は、このコードの一部が機能しない理由を見つけたときにエピソードの傷を持っています。 それらの中にはひどいものもあります(さらに悪いものは-ppです)。 CharlesはNordicを使用しており、自分のコードは他のコードよりも優れていると主張していますが、それでも参照コードです。



そのような質問をした人は、使用する前にコードを分析する非常に有能な開発者になることができます。 しかし、これは今日の業界の2つの問題を示す症状です。



最初の問題は、多くの場合、サプライヤからのコードの質が低く、重要ではありません。 場合によっては、すべてが非常に悪いため、半導体企業は製品の市場投入を支援するために、大規模なエンジニアチームを顧客サイトに配置する必要があります。 もちろん、これは、膨大な数のチップを購入し、小さな消費者、または数十万を購入する人々でさえも飛び回るだけです。



場合によっては、私が知っているように、これらのエンジニアの作業の結果は戻らず、他の全員に提供される参照コードに反映されません。 彼らは、差し迫った危機以外の質問に対する答えを探す時間がありません。そのため、更新は焦点から外れています。



それでも、サプライヤーに免責を示す必要があります-結局のところ、彼らの使命はチップを販売することです。 参照コードは無料であるため、無料として認識されます。 つまり、チップを販売ドアに押し込むために存在する必要がありますが、ユーザーのニーズに必要な注意を払うことはありません。 最新のマイクロコントローラーは本当に複雑です。 タイヤがバラバラになっても、周辺機器は無数のモードで動作します。 数百または数千のレジスタを正しく設定する必要があります。 今日の初期化リストは、500、1000、またはそれ以上のページになる場合があります。 参照コードは実際に各モードと可能な構成を処理できません。 このようなコードの開発コストは莫大であり、価格はゼロです。



2番目の問題は、市場に常に時間がないことです。 お客様は、これらすべての周辺機器を処理するニュアンスを把握する時間がないだけでなく、波の頂上にとどまるために信頼できるコードを作成する必要があります。 解決策は、参照コードを再利用することです。 完全な世界である場合、再利用はオブジェクトコードのレベルで行われ、すべての再利用可能なコードは修飾され、すべての顧客はコードに完全な自信を持ちます。



状況が非常に悪いままであれば、驚くべき奇跡が今後数年間でIoTの爆発を伴います。



残念ながら、良い点については微妙なメタリフレクションがあります。 チップメーカーが完全に完璧な参照コードを作成するとします。 エラー、素晴らしいドキュメント、およびエンジニアリングの実践によるこのコードの偉大さの確認はありません。 誰が彼を信じますか? 問題の数十年は、一般的な不信の雰囲気を作成しました。 売り手は、今、もちろん、私たちが本当に欲しいものを作り出したと懐疑論者をどのように納得させるでしょうか(これが、彼らがそのようなすばらしいコードをしない理由です-もちろん-pp)?



再利用に関しては、ピラミッドについて考える必要があります。 彼らは信じられないほど強固な基盤の上に構築されました。 ファームウェアの世界では、多くの場合、このピラミッドは逆さまになっています。



参照コードの使用経験は何ですか?



さらに翻訳者からは、ジャックの質問に対する答えがあります。

約2週間前、ブログでArduinoでのサーボマシンの故障に関する質問を見ました。 ライブラリのコードが使用され、見られ、恐ろしいことがわかりました-それらはソフトウェアPWMを形成し、タイマー割り込みで自分の手で足を引っ張るので、当然ながら(または言うまでもなく)プロセッサに別の割り込みを読み込むときに(そして、その場合はワイヤレスプロトコルサポートスタックについて話していました)ソースコードは見つかりませんでしたが、現代モードに従って割り込みモードで実行される可能性が最も高い)、PWMパルスの持続時間は無限に拡大する可能性があります。



解決策は明らかです-そのような場合にはハードウェアPWMを使用する必要がありますが、これに関するドキュメントのどこかで言われたと思いますか? さらに、すべてがArduinoの公式Webサイトからダウンロードされました。 別の解決策もありますが、ゴキブリはそこでさらに大きくなります。 スターリン同志が言ったように、「どちらも悪い」

さて、イチジクはArduinoと一緒にいます(いくつかの恐怖のために、彼らはその後自分自身を非常に古いとみなし、それに応じて彼らに尋ねる必要があります)が、ちょうど昨日、バグが特定の条件下で現れるSTMの参照ライブラリ(ポートlwIP)で見つかりましたデバイスの異なるハードウェア部品への電力の非同時供給。



約6か月前、特定のモードでおなじみの若いエンジニアはSTM USBリファレンスライブラリを持っていませんでしたが、1か月後にライブラリの新しいバージョンが登場しましたが、それはSTMに心から感謝しています(もちろんこれらのエンジニアにとっては、このような重要でない使用を正当化するものではありませんサードパーティのコード)。



多くの点で、私の同僚が同じArduinoライブラリについて指摘したように、それらの使用はカーゴカルトに非常に似ています。つまり、それを行うと、あなたは幸せになります。 そして、すべてが実際に機能する限り、すべては問題ありませんが、もしそれができない場合は、知識が必要な場所であり、特定のルールを遵守することは原則としてはできません。 私はそれを正しく理解したいと思っています-私はArduinoに反対ではありません、さらに、エントリーのしきい値を驚くほど下げてファームウェアに膨大な数の人々を引き付けた素晴らしいエコシステムですが、それは決して銀の弾丸ではなく、非常に複雑ではないことを明確に理解する必要があります関数は、解決することを教えていない特定の問題を引き起こす可能性があります。 つまり、Arduinoから始めて、次に進んでください-そこから楽しみが始まります。



PS。 そのため、同じジャックが毎年5〜6か国で「More Firmware、Faster」ファームウェアコースを読む理由を理解することはできませんが、このようなものはなく、期待されていません。 強力なエンジニアは必要ありませんか? 信じられません。 それとも、学ぶことを嫌がりますか? または、(あなたまたはあなたの従業員のために)学校の代金を支払うことに抵抗がありますか? これらの質問には答えがありません。事実のみが記載されています。



All Articles