組み込みR&Dに10年以上携わってきたエンジニアは、これらの原則に気づきました。

参照:
張Qiaolong:https //zhuanlan.zhihu.com/p/210726592


1.組み込み業界にはどのような技術的才能が必要ですか?

さまざまな採用の職務要件を注意深く観察してください。それは2つの側面にすぎません。

1.1一般的な要件

たとえば、どの程度、何年の仕事の経験、革新的な精神、圧力に耐える強い能力、勤勉、コミュニケーションが得意、真剣な態度など...

1.2専門的な要件

これは本当に多すぎますが、それはあらゆる種類の習得にすぎません。制御理論、回路設計、さまざまなハードウェアドライバーの開発、Linuxカーネルと調整、C / C ++ / Java言語、DSP、ARM、linux / ecos / ucosに精通していること/ wince / VxWorks、データベースの埋め込み、マルチスレッドプログラミング、さまざまなネットワークプロトコル、さまざまなバスプロトコル、Symbian / Android / IOSプラットフォームアプリケーション開発、アセンブリ、コンパイラ、バイナリツール、さまざまなメディアパッケージ形式、エンコードとデコード、通信技術に精通している、ハードウェア回路図に精通している、PCB設計に精通している、コンピュータ構造に精通している、ブートローダーに精通している、熟達している...業界にいる限り、あなたは熟練している必要があります。(1つの科目に習熟するには長い時間がかかると思います...)

これら、特に専門的な要件を読んだ後、あなたの頭は大きいですよね?

それでは、上記の要件を分析してみましょう。各社の一般的な要件は、学歴(n年の経験があり、n年の経験がn年かかった)などの学歴(個人的には学歴の方が明らかに重要だと個人的に考えている)など、相互にコピーアンドペーストするようなものです。 ;そして個人的には、各企業が入社前に従業員をどのように検査しているかはわかりません。専門的な要件(実際には、それらのいくつかに習熟していることは素晴らしいことです)それは人々を一見めまいにさせます。組み込み開発の構造を理解する方が簡単かもしれません。

技術的な実現の観点から、組み込み製品は2つのカテゴリに分類されます。1つはオペレーティングシステムのサポートがない単純なもので、もう1つはオペレーティングシステムがある複雑なものです。現在の開発の方向性を見ると、後者がトレンドです。

オペレーティングシステムをサポートしていないものは、次の3つの層に分けることができます。

  • ハードウェア層
  • ドライブレイヤー
  • アプリケーション層

オペレーティングシステムは4つの層に分かれています。

  • ハードウェア層
  • ドライブレイヤー
  • システム層
  • アプリケーション層

したがって、組み込み開発には通常、下から上に4種類のエンジニアが必要です。

  • 組み込みハードウェア開発
  • 組み込み駆動開発
  • 組み込みシステム開発
  • 組み込みソフトウェア開発

2.どのようなスキルを知っておくべきですか?

2.1組み込みハードウェアの開発

これは、一般に自動化、電子工学、通信、その他の専攻で生まれたハードウェアエンジニアによって行われます。彼らは、回路やその他の知識に精通し、さまざまな一般的なコンポーネントに精通し、アナログおよびデジタル回路設計の開発能力を習得する必要があります。 、およびハードウェア開発モデルと設計モードに精通し、さまざまなチップと周辺機器に精通し、8ビット、16ビット、および32ビットプロセッサの組み込みハードウェアプラットフォームの開発に精通している。

FPGA開発の経験と、一般的に使用されるハードウェア設計ツールであるProtel / PADS(PowerPCB)/ Cadence / OrCadが必要なものもあります。一般的に、4〜8層の高速PCB設計の経験が必要です。私はハードウェアメーカーではなく、これにも慣れていないので、あえて何も言わない。

2.2組み込みドライバーの開発

これは、機器に応じて、ハードウェアエンジニアまたはソフトウェアエンジニアが行うことができます。現在のドライバー開発は、単純なデバイスドライバーでない限り、実際には何度も移植されているため、ターゲットプラットフォームのハードウェアとシステムの特性を習得する必要があります。

したがって、オペレーティングシステム、システム構造、コンピューター構成の原則、およびデータ構造に関する少なくともある程度の知識を習得する必要があります。組み込みARM / MIPS / PowerPCアーキテクチャに精通している。シングルチップマイクロコンピュータと1つ以上の32ビット組み込みプロセッサを移植および開発する能力を持ち、ブートローダープロセスに精通し、ハードウェアの確かな知識を持ち、ハードウェアの概略図を理解し、関連するハードウェアドライバのデバッグを独立して完了でき、書き込みができるチップマニュアルに従ったソフトウェアドライバ。

ネットワーク機器が関係する場合は、多くの高レベルネットワークプロトコルの原則を習得する必要があります。個人的には、この部分のほとんどは難しくありませんが、それは非常に重要です。もちろん、このレベルで上位層にマルチスレッドのサポートを提供したい場合は、一部のドライバーも作成が困難です。

2.3組み込みシステムの開発

ハードウェアエンジニアがこれを行っているとは聞いたことがありません。これを行うには、メモリ管理、スレッドスケジューリング、ファイルシステムなど、オペレーティングシステムの原則に精通していることが不可欠です。また、プロセッサアーキテクチャ、命令セット、アドレッシングモード、デバッグ、アセンブリ、および混合プログラミングにも精通しています。その他の側面;オペレーティングシステムの起動プロセスに精通している。

Linuxの場合、Linux構成ファイルの変更に精通し、カーネル削減、カーネル移行、相互コンパイル、カーネルデバッグ、ブートローダープログラミング、ルートファイルシステムの作成、およびLinuxシステムの統合展開のプロセス全体を習得する必要があります。この作品が本当に書かれていると、難易度はかなり恐ろしいです。幸いなことに、ほとんどが移植されています。企業がオペレーティングシステムを開発するということはめったにありません。それはGoogleの強みではありません。

2.4組み込みソフトウェア開発

さて、オペレーティングシステムがない場合、プログラムは一般的に特に複雑ではありません。オペレーティングシステムでサポートされている場合、一般的なソフトウェア開発に非常に近いため、デスクトップ開発と見なすことができます。この要件は、システムのAPIに精通し、関数とプログラム構造、ポインター、配列、一般的なアルゴリズム、ライブラリ関数の使用、データ構造の基本的な内容など、C言語の高度なプログラミング知識に精通している必要があります。オブジェクト指向プログラミングの基本的な考え方、およびC ++言語の基本的な内容。

組み込みLinuxでのプログラミングに習熟し、システムプログラミング、ファイルI / O、マルチプロセスおよびマルチスレッド、ネットワークプログラミング、GUIグラフィカルインターフェイスプログラミング、データベースなどの組み込みLinux開発環境に精通し、一般的に使用されるグラフィックライブラリのプログラミングに精通している、QT、GTK、miniGUI、fltk、nano-xなどは、さまざまなアプリケーション層ネットワークプロトコル、およびさまざまなオーディオおよびビデオテクノロジーの使用を習得します。

2.5 通用技能

上記の4つのカテゴリーで使用できるスキルもいくつかあります。

2.5.1基本的なスキル

組み込み開発に従事し、いくつかの基本的なスキルがあります

  • 開発プラットフォームに精通していること。現在、組み込み開発のほとんどはLinuxまたはLinuxのような環境で実行されているため、Linuxの使用に慣れ、シェルスクリプトを記述し、構成ファイルを変更し、GCC GDBを使用し、ツールを作成する必要があります。知っておく必要があります?
  • プロジェクト管理ツールの使用年齢は何歳ですか、CVSまたはSVNを使用しませんか?すみません、あなたはまだソフトウェア時代の原始社会に住んでいますか?
  • データ構造とアルゴリズム。ソフトウェア開発に従事し、データ構造を理解せず、アルゴリズムを最適化する方法を知らず、複雑さを測定しない、それはあまりにも信頼性が低いですか?もちろん、これはすべてのアルゴリズムを使用できるという要件ではなく、すべてのデータ構造を覚えておく必要があります。少なくとも、そのようなものがあり、その影響が何であるかを知っておく必要があります。それらが使用されます。
  • プログラミング言語。JAVAに関しては、JAVAの突然の出現がプログラミング言語の世界に衝撃を与えたことは知っていますが、組み込み開発では、CまたはC ++の言語を正当化することは不可能です。もちろん、多くのモバイルアプリケーションは完全にJavaで記述されています。組み込みの上位レベルのソフトウェア開発に従事したいだけで、深く掘り下げたくない場合は、JAVAを使用してもかまいません。組み立てに関しては、まあ、これは難しいかもしれません。結局のところ、それは特定のハードウェアアーキテクチャ(主にCPU)に関連していますが、それは本当に興味深いものであり、場合によってはかけがえのないものです。

2.5.2特別なスキル

組み込み開発の一部では不可欠ですが、一部(アプリケーション開発など)ではあまり役に立たない場合があります。

  • デジタル回路。これは主に、組み込みチップ、メモリ、周辺機器、その他のハードウェアの設計をよりよく理解するために、ゲート回路、論理回路、メモリ、レジスタなどの基本的な回路知識を理解することですが、ソフトウェア開発では使用できない場合があります。 。。ほとんどのハードウェアが非常に完全なソフトウェアインターフェイスを提供するためです。
  • オペレーティング・システム。これは、プラットフォームで選択されているオペレーティングシステムです。組み込み製品にはオペレーティングシステムが多すぎます。ただし、オペレーティングシステムの内部設計原則はすべて、同じ目標につながります。最初に学ぶことは、プロセス通信、メモリ管理、ファイルシステムなどのいくつかの重要な部分を理解するためのオペレーティングシステムの原則です。これらはソフトウェア開発、特にカーネルドライバー開発で使用されるためです。次に、少なくとも1つの主流のオペレーティングシステムに慣れることができます。Linuxは、カーネルアーキテクチャ、デバイスドライバーのアーキテクチャ、アプリケーションのコンパイル、調整、作成の方法、および特定の組み込みシステムでの使用方法を理解するのに適しています。製品。
  • コンピュータ/マイクロコンピュータの原理の構成。主にマイコンのハードウェアの動作原理を理解し、CPU、バス、I / O、メモリなどの主要な構造がどのように機能するかを理解することは非常に退屈な知識ですが、周辺機器の動作方法に精通していますハードウェアとオペレーティングシステム。ソフトウェアアーキテクチャの設計と最適化は重要です。

2.5.3拡張機能

これらは使用できます

  • 同意書。非アプリケーション層の通信プロトコルについては、多くのオペレーティングシステムにネットワーク部分がないため、オペレーティングシステムのカテゴリに分類する必要があるかどうかは本当にわかりませんが、多くの点でオペレーティングシステムによって提供されます。もちろん、これらの低レベルの通信プロトコルは、オープンソースのプロトコルスタックが多すぎるため、あまり気にしないようです。http、ftp、rtsp、rtmp、mmsなどのアプリケーション層ネットワークプロトコルを考慮する必要がある場合があります。
  • オーディオおよびビデオ処理。たとえば、ファイルのパッケージ化、オーディオとビデオのエンコードとデコード、さまざまなオーディオとビデオの標準、ストリーミングメディアなどです。Ffmpegはとても良いことです、それを学ぶことをお勧めします。
  • 情報セキュリティー。さて、これは今ますます注目を集めているようです。
  • データベース。残念ながら、組み込み機器の機能はますます強力になっています!あなたが混乱した場合、私はあなたがクロスコンパイルする必要はないと思います。
    現在の業界のニーズについて同僚と話し合うこともありますが、常に人を採用できない企業や、プログラマーが仕事を見つけることができないといつも言っている企業については、私は多くの感情を抱いています。プログラマーが要求する?採用に必要な仕事を目にすることもあり、自信が持てなくなります。自分にできることはあまりないかのように、1つずつ数えます。自分自身をもっと頑張らなければなりません。もちろん、特定の採用は信頼できないと感じることもあります。要件を見ると、個人的には、すべての要件が満たされていると、一般の人々は10〜8年間懸命に努力しなければならないと感じています。このような大きな牛はおそらく十分ではありません。 。支払われる給与。

プログラマーにとって、テクノロジーを実行することは本当に疲れて困難です。インターネットでの検索、あらゆる場所での苦情や感情の投稿は、この職業の身体的および感情的なテストを完全に反映しています。苦労を恐れず、テクノロジーについていきたいのなら、一生懸命頑張ってください。いつか、求人情報を手に取って見下ろすかもしれません。 「それならあなたは本当の大きな牛です!

3.現在の状況の分析

多くの新参者が10年近く私たちの研究開発に来ています。過去10年間で、同じグループの人々の何人かはすぐに環境に適応しました。彼ら自身の努力と献身の後で、彼らは研究開発作業で独立し、特定の分野で小さな専門家になることができます。早い段階ですが、指導や修正を経て、ゆっくりと稼働状態になり、しばらくしてから徐々に研究開発のある面に取り組んでいくと思います。

同じ時期に就職したとき、なぜ彼らの現在の能力と地位がこれほど大きな違いを生むのでしょうか。

仲良くして分析したところ、すぐに進歩するすべての仲間には次の特徴があることがわかりました。

勤勉、技術的な問題を解決するために、私はしばしば率先して残業します。
研究、技術的な問題を解決するために、私は情報のあらゆる側面を積極的に学び、頻繁に実験を行い、事実を検証します。
リーダーや同僚とタイムリーに積極的にコミュニケーションを取り、アイデアをブレインストーミングし、あらゆる側面からリソースを求めて努力し、既存の経験を最大限に活用し、迂回を避け、開発プロセスを加速します。
プロ意識と犠牲を強く持ち、目標が達成されるまで止まることはありません。

逆に、成長が遅い、またはまだ研究開発に統合されていない同志には、次の特徴があります。

仕事には目標がなく、エネルギーが散らばっていて、密かにビデオを見ながらインターネットに多くの時間を費やしています。
仕事は責任を怠り、仕事が難しすぎたり、リソースが不足したりするまで仕事が進まなかった理由を回避しますが、彼は積極的にリソースを求めていません。
研究開発や個人的なキャリアの長期計画がないか、食事のためだけに研究開発の目標が比較的低いです。人々には先見の明がなく、差し迫った心配がなく、高尚な理想がなく、外部からの小さな干渉がなければなりません。世界それはあなたを中途半端にするので、知識の学習は体系的ではありません。
リーダーが仕事をチェックすることを恐れて、積極的にではなく、あるいはそれらを避けて、同僚やリーダーとコミュニケーションを取ります。
仕事よりも人生にもっと注意を払ってください。
私は自分の努力をもっと気にかけています。
2対1の比較では、問題は明らかです。R&D作業は非常にやりがいのある作業であり、ハードワーク、確かな理論的基盤、および実践的な能力が必要です。開発タスクに直面して、率直で迅速な思考、明確で系統だった;困難に直面したとき、あなたは後退せず、挫折に遭遇したときに落胆することはありません。チームワークが必要であり、対立や困難を解決するための勇気、知恵、決意が必要です。したがって、質と職員の心理状態が決定的です。少しイニシアチブをとるやる気のある仲間は非常に速く成長します。イニシアチブをとらない仲間は働くのが難しく、それをとるのに苦労し、気分にも影響を与えます。

研究開発の効率を高めるために、管理ソフトウェアを開発し、さまざまな規則や規制を策定しました。しかし、ソフトウェアとシステムは症状を治すことができるだけであり、根本的な原因は治しません。問題の根本は人にあります。

研究開発部門の現在のソフトウェアとハ​​ードウェアの状態と技術レベルは、電子技術の組み込み分野に変化をもたらしたい若者のグループが印象的な結果を達成することを可能にすることができると言わなければなりません。しかし、現実について楽観視することはできません。研究開発部門には、特に人員の質など、まだいくつかの問題があります。そのため、研究開発管理研修に参加した際にも専門家に相談し、「草が大きな木になることはありません」と語った。

考えてみてください、あなたは苗木ですか、それとも草の種ですか?木なのか草なのかは、上向きに成長したいという強い願望があるのか​​、土壌の養分をあらゆる方法で吸収する努力があるのか​​、そして生命の価値の判断に依存します。土壌はあなたの確固たる決意に値します根を取り、この土壌の大きな木になりましょう。あなたが大きな木になりたいのなら、私たちは彼(彼女)が大きな木に成長するための条件を作らなければなりません;それが草の種になる運命にあるなら、私たちは何もできず、適者生存だけです。

4.能力や勤勉さなどを再考する

  • 愚かな鳥は森の中に早く飛んでいきます。物事の認識は、物事が脳に刺激される頻度と時間に比例します。物事を頻繁に行い、よく考えると、真実を理解することができます。物事の理解は、実際には、間違いは常に発見され、修正されます。勤勉でなく、仕事以外の場所に時間と注意を向けすぎると、実践の重要なつながりが途絶え、レベルや経験が向上することはなく、能力の向上についても議論されません。仕事、収入の増加、最終的な分析では、社会における個人の競争力の向上です。コアコンピタンスを向上させず、インターネットやその他のことに一日中夢中にならないのであれば、それは少し見捨てられたのでしょうか。

  • 個人的なポジショニングは職場での態度を決定し、思考は習慣を決定し、習慣は行動を決定し、行動はコアコンピタンスに影響を与えます。

  • 他人や環境ではなく、自分自身を変えてください。

/免責事項:関連技術の普及のために記事を整理します。著作権は元の作者に帰属します。侵害がある場合は、削除するために連絡してください/

おすすめ

転載: blog.csdn.net/mahoon411/article/details/109809151