マイクロメータのプログラミング方法をすでに学んだ場合はどうなりますか?

こんにちはKhabrovchanin、



この記事では、マイクロシステムプログラマーを開発する方法について推測したいと思います。この記事は、かつての私のように、自分の職業でさらに発展する場所を知らなかった人々にとってはちょっとした読み物です。おそらくここで何か面白いものを手に入れることができます。



現在、私はプログラマーとして3年間働いていますが、最近まで、次に何をすべきかわかりませんでした。しかし、その後、組み込みシステムのプログラミングに20年以上の経験を持つ人に会い、彼とコミュニケーションを取り、開発できるいくつかの側面を特定しました。ここで私はそれらと私の個人的な経験を共有したいと思います。誰にも教えたくない場合は、ベストプラクティスを共有します。これらのヒントが役立つかどうかは、自分で決めることができます。



毎月、LEDが点滅する初心者向けの記事があります。同様に、中級プログラマー向けの記事はありません。ここで、マイクロプロセッサを正しくプログラミングすることは簡単な作業ではないことを示したいと思います。これは2、3年で学ぶことはできません。 2020年には、MCがますます強力になっているため、従来のシステムをプログラミングするタスクと大差ありません。もちろん、私は百万行以上のプロジェクトについて話している。



導入がやや遅れたようですので、お仕事に取り掛かります。この記事では、プログラミングの側面のみを考慮し、回路については触れません。優先順位をつけてみましたが、最初と最後の差が小さく、すべてが重要です。



1. C ++言語を学びます。

これは些細なアドバイスですが、私はそれを強調するのにふさわしいと思いました。事実、私が知っているほとんどすべての人が今でも純粋なCでプログラミングを続けています。なぜそれが悪いのですか?さまざまな情報源によると、100,000行を超える(多数ではない)プロジェクトは、Cでは実質的にサポートされなくなります。 2020年に、MKのコンパイラーは、CとC ++からの排出量に違いがないほどのソースコードのコンパイルレベルに達しました。ただし、コードの読みやすさは完全に異なります。クラス、OOP、仮想関数、スマートポインタなど。 -これらはすべて、プログラマーにとって強力なアシスタントです。残念ながら、本が多すぎるため、1冊の本を選び出して推薦することはできません。



2.デザインパターンを研究します。

優れたC ++プログラムを作成することが依然として課題であることは周知の事実です。この言語は広すぎて、ツールが多すぎます。デザインパターンとは?これは、頻繁に繰り返されるタスクを解決するためのある種のガイドです。ここでは、クラシック、つまり4つの「オブジェクト指向デザインのパターンGamma Erich、HelmRichard」のギャングの作品をお勧めします。これを読んでいない普通のC ++プログラマーを見つけるのは難しいですが、なぜ私たちはもっと悪いのですか?



3.STLの素晴らしい世界を発見する

このライブラリは紹介する必要はないと思います。それが何であるかまだわからない人のために、これは標準のテンプレートライブラリです。これにより、一般的なプログラミングを通じてコードを短くし、理解しやすくすることができます。このツールはすでにC ++に組み込まれています。しかし、何らかの理由で、それが使用されているMKのプロジェクトを見つけることは非常に困難です。最新のコンパイラ(同じIAR)はそれをサポートしていますが。



4.プロジェクトにユニットテストを追加します。

ここに書くのに特別なことは何もありません。それが何であるか、そしてその理由について無数の作品が書かれています。ユニットテストとテストによる開発の効果は重要です。これらのテストにより、修正がOTに送信される前でも、多くのバグを見つけることができます。さらに、このテーマに関するすばらしい本があります:Jeff Langr-Test-DrivenDevelopmentを使用した最新のC ++プログラミング(2013)。



5.カーネルの探索

さまざまなマイクロコンピューターをプログラムしますが、ほとんどのコンピューターにはCortexMシリーズのカーネルがあります。カーネルには、ビットマスクやデバッグタイマーなど、さまざまな機能があります。これはすべて便利です。たとえば、中断されたときにRONがどのように保存されるかを知ることも役立ちます。ここでは、「ARMCortex-M3コア」をお勧めします。ジョセフ・ユーによる完全ガイド。」



6.アセンブラーを学ぶ

ばかげているように見えるかもしれませんが、アプリケーションをデバッグするためのアセンブラを知ることは不可欠だと思います。それに、書くのはとても楽しいです。アセンブラーの助けを借りて、この特定のブレークポイントで何が起こっているかを明確に理解することができます。前の段落の本もここに適しています。 7.IDE



について少し

最近VS + VGDBバンドルに切り替えました。このバンドルには多くの利点があり、それらを合わせると、IARの唯一の利点であるバイナリのサイズを上回ります。 gccでは、拡張警告のフラグと、警告をエラーと見なす必要があることを示すフラグを設定できます(ちなみに、IARにもこれがあります)。このアプローチでは、IDE自体がクリーンなコーディングに役立ちます。これについての良い記事があり ます。habrで。ちなみに、テストタスク(インタビュー中)のために、これらのフラグを使用してコードを作成する必要がある企業に出くわしました。



おそらくそれだけです。うまくいけば、あなたがリンクをたどれば、あなたはあなたが探していたものを見つけたでしょう。組み込みプログラマーが持つことができる他の開発パスをコメントで共有してください。



PSこの記事では、レジスターやRTOSを介して複雑な周辺機器をプログラミングするなど、言及されていないことがあります。読者はすでにこれらのスキルを持っているか、少なくともそれらの存在について知っていると想定されます。



All Articles