私のキャリアにとって貴重な、学ぶ必要のある事柄のリストを作りたいと思います。組み込みの開発者、今、そして遠い未来に不可欠なスキルは何だと思いますか?
CとARMアセンブラーで組み込みLinuxカーネルを操作することでかなり熟達しました。これからLinuxドライバーに飛び込もうとしています。ただし、私のスキルはかなり高くなりました。今後も組み込みシステムを使い続けたいのですが、求人市場を知らないでしょう(私は中国とインドに外注するつもりです)。
私は現在C++とJavaにかなり弱いと感じています。また、Androidカーネルを将来的に学びたいと思います。スクリプト言語も知りません。
組み込みシステムでしばらく働いた経験のある人が、組み込み開発者にとって不可欠であると考えるスキル/言語についての情報を提供できますか? Cスキルだけを磨き続けるのか、それとも新しいことを学ぶべきなのか。
これが私のリストです:
ランディンが述べたように、この質問は多くの異なる答えに開かれています。バッテリ駆動のメモリに制約のあるベアメタルの組み込みデバイスから、Linuxを実行するより複雑なシステムまで、さまざまなものがあります。
まず、柔軟な開発者であることは非常に重要です。変更にできるだけ迅速に適応できる必要があります。これまでに使用したことのない言語で数週間で概念を実証したプロトタイプを作成したり、レガシープロジェクトで作業を開始してバグをすばやく修正したりする必要があるかもしれません。
ソフトウェアアーキテクチャの概念、RTOS、イベント駆動型システム(組み込みシステムは本質的にリアクティブです)、およびモデリング(UML)について知ることは非常に重要です。たぶんテスト駆動開発(TDD)。これらは言語に依存しないため、最初から優れたファームウェアを開発するのに役立ちます。
言語に関しては、Cは小規模システムと大規模システムの両方で使用されていると思うので、Cの優れた背景を持つことは必須です。ここでは、初心者レベルのCプログラミングについては話していません。私は、プロセッサとコンパイラが舞台裏で何をするかを知っていることについて話している。あなたが言ったことによると、あなたはおそらくこれらのスキルを持っています。これは、RAMおよびROMのすべてのバイトがカウントされる小さなシステムの場合に非常に役立ちます。MISRA-Cルールについて知っておくと、開発に役立ちますより安全なCコード。
おそらく、自動テスト、データ処理、コード生成ツールなどを実行するには、いくつかのスクリプトプログラミングが必要になります。これにはすべてPythonを使用します。また、いくつかのLinuxシェルスクリプトも使用します。
PCベースのアプリケーションを設計できることは、製造ラインの組み込みデバイスをテストするためのテストフィクスチャを作成する場合、またはおそらく組み込みデバイスが動作するためのPCソフトウェア(ポケットUSBベースのオシロスコープなど)を必要とするだけの場合に役立ちます。この場合、クロスプラットフォームなのでQtを使用しますが、Windowsでのみ作業したい場合は、C#でVisual Studioを使用できます。
組み込みシステムの場合、ハードウェアのバックグラウンドがしっかりしている方が良いでしょう。また、オシロスコープ、ロジックアナライザ、信号発生器などを使用できる必要があります。ソフトウェアでハードウェアの問題を修正する必要がある場合があります。 :)
ここに私が非常に役立つと思う本の小さなリストがあります:
お役に立てば幸いです。
フェルナンド
選択するドメインが何であれ、Cプログラミングだけでなく、ハードウェアにも精通している必要があります。
作業しているドメイン(linux、vlsi、arm ....)は関係ありません。ただし、コードがハードウェア上でどれほど効率的に実行されているかを確認してください。
組み込みの世界で本当に働きたいのなら、あなたは自分の道を見つけるでしょう。