以前は、多くの組み込みアプリケーションがアセンブリレベルのプログラミングを使用して開発されていました。ただし、移植性はありませんでした。この欠点は、C、Pascal、COBOLなどのさまざまな高級言語の出現によって克服されました。しかし、組み込みシステムで広く受け入れられたのはC言語であり、それは今も続いています。記述されたCコードは、より信頼性が高く、スケーラブルで、移植性があり、実際、はるかに理解しやすいものです。組み込みCプログラミングは、すべての内部で機能するプロセッサの魂です。 組み込みシステム 携帯電話、洗濯機、デジカメなど日常生活の中で出会う。各プロセッサは、組み込みソフトウェアに関連付けられています。何よりもまず、組み込みシステムの機能を決定する組み込みソフトウェアです。埋め込まれたC言語は最も頻繁に使用されます マイクロコントローラをプログラムする 。
C言語とは何ですか?
C言語は、1969年にDennis Ritchieによって開発されました。これは、1つ以上の関数のコレクションであり、すべての関数は、特定のタスクを実行するステートメントのコレクションです。
C言語は、高レベルのアプリケーションと低レベルのアプリケーションをサポートするため、中レベルの言語です。組み込みCプログラミングの詳細に入る前に、RAMメモリの構成について知っておく必要があります。
C言語の主な機能は次のとおりです。
“ローパスフィルターの適用 ”
- C言語は、さまざまなキーワード、データ型、変数、定数などで設計されたソフトウェアです。
- 組み込みCは、特定のハードウェアアーキテクチャに関連付けられている、Cで記述されたプログラミング言語に付けられた総称です。
- Embedded Cは、いくつかの追加ヘッダーファイルを含むC言語の拡張機能です。これらのヘッダーファイルは、コントローラーごとに変わる可能性があります。
- ザ・ マイクロコントローラー8051 #includeが使用されます。
組み込みCプログラミングとは
すべての組み込みシステムベースのプロジェクトでは、組み込みCプログラミングは、マイクロコントローラーを実行して優先アクションを実行するための重要な役割を果たします。現在、私たちは通常、携帯電話、洗濯機、セキュリティシステム、冷蔵庫、デジタルカメラなどのいくつかの電子機器を利用しています。これらの組み込み機器の制御は、組み込みCプログラムの助けを借りて行うことができます。たとえば、デジタルカメラでは、カメラボタンを押して写真をキャプチャすると、マイクロコントローラーは必要な機能を実行して画像をクリックし、保存します。
組み込みCプログラミング
組み込みCプログラミングは、すべての関数が特定のタスクを実行するために使用される一連のステートメントである一連の関数で構築されます。埋め込まれたC言語とC言語はどちらも同じであり、変数、文字セット、キーワード、データ型、変数の宣言、式、ステートメントなどのいくつかの基本的な要素を通じて実装されます。これらの要素はすべて、組み込みCプログラムを作成する際に重要な役割を果たします。
組み込みシステムの設計者は、プログラムを作成するためのハードウェアアーキテクチャについて知っている必要があります。これらのプログラムは、外部デバイスの監視と制御において重要な役割を果たします。また、割り込み処理、タイマー、シリアル通信、その他の利用可能な機能など、マイクロコントローラーの内部アーキテクチャを直接操作して使用します。
組み込みシステムプログラミング
前に説明したように、組み込みシステムの設計は、ハードウェアとソフトウェアを使用して行うことができます。たとえば、単純な組み込みシステムでは、プロセッサはシステムの心臓部のように機能するメインモジュールです。ここでのプロセッサは、マイクロプロセッサ、DSP、マイクロコントローラ、CPLD、FPGAに他なりません。これらのプロセッサはすべてプログラム可能であるため、デバイスの動作を定義します。
組み込みシステムプログラムにより、ハードウェアはそれに応じて入力と制御出力をチェックできます。この手順では、組み込みプログラムは、タイマー、割り込み処理、I / Oポート、シリアル通信インターフェイスなどのように、プロセッサの内部アーキテクチャを直接制御する必要がある場合があります。
したがって、組み込みシステムのプログラミングはプロセッサにとって非常に重要です。 C、C ++、アセンブリ言語、JAVA、JAVAスクリプト、Visual Basicなど、さまざまなプログラミング言語を組み込みシステムで使用できます。したがって、このプログラミング言語は、組み込みシステムを作成する際に重要な役割を果たしますが、言語の選択は非常に重要です。
組み込みCプログラムを構築する手順
次のような組み込みCプログラムの設計には、さまざまな手順が含まれます。
- コメント
- プロセッサのディレクティブ
- ポートの構成
- グローバル変数
- コア機能/メイン機能
- 変数の宣言
- プログラムの論理
コメント
プログラミング言語では、コメントはプログラムの機能を説明するために非常に重要です。コメントのコードは実行可能ではありませんが、プログラムのドキュメントを提供するために使用されます。プログラムの機能を理解するために、これはプログラムの機能を理解するための簡単な方法になります。埋め込みCでは、コメントは1行コメントとメイン行コメントの2つのタイプで使用できます。
埋め込みCプログラミング言語では、読者がコードを簡単に理解できるように、コードにコメントを付けることができます。
C = a + b / *値が別の変数C * /に格納されている2つの変数を追加します
単一行コメント
一般に、プログラミング言語の場合、プログラムの一部を明確にするために1行のコメントが非常に役立ちます。これらのコメントは二重スラッシュ(//)で始まり、プログラミング言語内のどこにでも配置できます。これを使用することにより、プログラム内で行全体を無視できます。
複数行コメント
複数行のコメントは、コードのブロックを説明するプログラミング言語の単一のスラッシュ(/)とアスタリスク(/ *)で始まります。これらのタイプのコメントは、プログラミング言語内のどこにでも配置でき、主にプログラム内のコードのブロック全体を無視するために使用されます。
プロセッサのディレクティブ
プログラムコードに含まれる行はプリプロセッサディレクティブと呼ばれ、その後にハッシュ記号(#)を付けることができます。これらの行はプリプロセッサディレクティブですが、プログラムされたステートメントではありません。
コードは、実際のコードコンパイルが開始される前にプリプロセッサを介して検査され、通常のステートメントを介してコードを生成する前にこれらのディレクティブを解決できます。プログラミング言語内では2つのディレクティブが非常に役立ちますが、いくつかの特別なプリプロセッサディレクティブを使用できます。
次のように。
#include
#include
スビットLED = P2 ^ 3
メイン()
{{
LED = 0x0ff
ディレイ()
LED = 0x00
}
#define
#include
#define LED P0
メイン()
{{
LED = 0x0ff
ディレイ()
LED = 0x00
}
上記のプログラムでは、#includeディレクティブは通常、studyやなどの標準ライブラリを構成するために使用されます。 hは、「C」のライブラリを使用してI / O機能を許可するために使用されます。 #defineディレクティブは通常、一連の変数を記述し、マクロなどの特定の命令内でプロセスを実行することによって値を割り当てるために使用されます。
ポートの構成
マイクロコントローラには、すべてのポートに異なるピンがあるいくつかのポートが含まれています。これらのピンは、インターフェースデバイスを制御するために使用できます。これらのピンの宣言は、キーワードを使用してプログラム内で実行できます。組み込みCプログラムのキーワードは標準であるだけでなく、プログラム内のビットとシングルピンを記述するために使用されるビット、sbit、SFRのように事前定義されています。
特定のタスクを実行するために予約されている特定の単語があります。これらの単語はキーワードとして知られています。これらは標準であり、EmbeddedCで事前定義されています。キーワードは常に小文字で記述されます。これらのキーワードは、メインプログラムを作成する前に定義する必要があります。キーワードの主な機能は次のとおりです。
#include
ビットa = P 2 ^ 2
SFR 0x00 = PoRT0
ビットC
メイン()
{{
……………..
……………..
}
sbit
これは一種のデータ型であり、SFRレジスタ内の単一ビットにアクセスするために使用されます。
このデータ型の構文は次のとおりです。sbit変数名= SFRビット
例:sbit a = P2 ^ 1
p2.1を「a」変数として割り当てると、プログラムのどこでもp2.1の代わりに「a」を使用できるため、プログラムの複雑さが軽減されます。
ビット
このタイプのデータタイプは、主に20hから2fhのようなランダムアクセスメモリのビットアドレス指定可能なメモリを許可するために使用されます。
このデータ型の構文は次のとおりです。ビット変数の名前
例:ビットc
これは、主に何かを記憶するためのプログラムの助けを借りて使用される、小さなデータ領域内のビットシリーズ設定です。
SFR
この種のデータタイプは、追加の名前を介してSFRレジスタの周辺ポートを取得するために使用されます。したがって、すべてのSFRレジスタの宣言は大文字で行うことができます。
このデータ型の構文は次のとおりです。SFR変数名= SFRレジスタのSFRアドレス
例:SFRポート0 = 0×80
「port0」のように0×80を割り当てると、その後、プログラミング言語のどこでも、port0の代わりに0×80を使用して、プログラムの難易度を下げることができます。
SFRレジスタ
SFRは特殊機能レジスタの略です。 8051マイクロコントローラには、256バイトのRAMメモリが含まれています。これは2つの主要な要素に分割されます。128バイトの最初の要素は主にデータの格納に使用され、128バイトのもう1つの要素は主にSFRレジスタに使用されます。タイマー、カウンター、I / Oポートなどのすべての周辺機器はSFRレジスタ内に格納され、すべての要素に1つのアドレスが含まれます。
グローバル変数
キー関数がグローバル変数と呼ばれる前に変数が宣言された場合。この変数は、プログラム内の任意の関数で許可できます。グローバル変数の寿命は、主にプログラミングが終了するまで依存します。
#include
unsigned int a、c = 10
メイン()
{{
……………
…………..
}
コア機能/メイン機能
main関数は、プログラムの実行中の中心的な部分であり、単純にmain関数から始まります。プログラムに上記の1つの主要な機能が含まれていると、次にコンパイラがプログラムの実行を開始する際に混乱するため、各プログラムは1つの主要な機能を使用します。
#include
メイン()
{{
……………
…………..
}
変数の宣言
変数のような名前は値を格納するために使用されますが、この変数はプログラム内で使用する前に最初に宣言する必要があります。変数宣言は、その名前とデータ型を示します。ここで、データ型はストレージデータの表現に他なりません。組み込みCプログラミングでは、メモリ内にデータを格納するために、整数、浮動小数点数、文字などの4つの基本的なデータ型を使用します。データ型のサイズと範囲は、コンパイラに応じて定義できます。
データ型は、整数、文字、浮動小数点数などのさまざまな型の変数を宣言するための広範なシステムを指します。組み込みCソフトウェアは、データをメモリに格納するために使用される4つのデータ型を使用します。
「char」は任意の1文字を格納するために使用され、「int」は整数値を格納するために使用され、「float」は任意の高精度浮動小数点値を格納するために使用されます。次の表に、32ビットマシンのさまざまなデータ型のサイズと範囲を示します。サイズと範囲は、ワードサイズが異なるマシンによって異なる場合があります。
- char / signed charデータ型のサイズは1バイトで、範囲は-128〜 +128です。
- unsigned charデータ型のサイズは1バイトで、範囲は0〜255です。
- int / signed intデータ型のサイズは2バイトで、範囲は-32768〜32767です。
- unsigned intデータ型のサイズは2バイトで、範囲は0〜65535です。
メイン()
{{
Unsigned int a、b、c
}
組み込みCプログラムの構造を以下に示します。
- コメント
- プリプロセッサディレクティブ
- グローバル変数
- メイン機能
{{
- ローカル変数
- ステートメント
- …………..
- …………..
}
- fun(1)
{{
- ローカル変数
- ステートメント
- …………..
- …………..
}
プログラムの論理
プログラムのロジックは、プログラムのアクションの背後にある理論と予測可能な出力に現れるレーンの計画です。組み込みプログラムが機能する理由に関する理論を説明し、アクションの認識された効果を示します。
メイン
{{
LED = 0x0f
delay(100)
LED = 0x00
delay(100)
}
組み込みCプログラムの主な要因
組み込みシステムを開発するためのプログラミング言語を選択する際に考慮すべき主な要因は次のとおりです。
プログラムサイズ
すべてのプログラミング言語は、マイクロコントローラなどの組み込みプロセッサに含まれるランダムアクセスメモリの量が非常に少ないメモリを占有します。
プログラムのスピード
プログラミング言語は非常に高速である必要があるため、できるだけ速く実行する必要があります。ソフトウェアの実行速度が遅いため、組み込みハードウェアの速度を落とさないでください。
移植性
さまざまな組み込みプロセッサについて、同様のプログラムのコンパイルを行うことができます。
- 簡単な実装
- 簡単なメンテナンス
- 読みやすさ
Cプログラムと組み込みCプログラムの違い
組み込みCプログラミングとCプログラミングの違いは、実際には動作環境といくつかの拡張機能からそれほど離れていません。これらのプログラミング言語はISO標準であり、構文、関数、データ型などもほぼ同じです。Cプログラミングと組み込みCプログラミングの主な違いは次のとおりです。
C言語 | 埋め込みC言語 |
通常、この言語はデスクトップベースのアプリケーションの開発に使用されます
| 組み込みC言語は、マイクロコントローラーベースのアプリケーションの開発に使用されます。 |
C言語はプログラミング言語の拡張ではなく、汎用プログラミング言語です。 | Embedded Cは、アドレス指定I / O、固定小数点演算、マルチメモリアドレス指定などのさまざまな機能を含むCプログラミング言語の拡張機能です。
|
自然界のネイティブ開発を処理します | 自然界の相互開発を処理します |
ハードウェアアーキテクチャに依存しません | マイクロコントローラやその他のデバイスのハードウェアアーキテクチャによって異なります |
C言語のコンパイラはオペレーティングシステムに依存します | 組み込みCコンパイラはOSに依存しません |
C言語では、標準のコンパイラがプログラムの実行に使用されます | 組み込みC言語では、特定のコンパイラが使用されます。 |
この言語で使用される一般的なコンパイラは、GCC、Borland Turbo C、Intel C ++などです。 | この言語で使用される人気のあるコンパイラは、Keil、BiPOM Electronics、およびgreenhillです。 |
C言語の形式は自由形式です | その形式は、主に使用するマイクロプロセッサの種類によって異なります。 |
この言語の最適化は正常です | この言語の最適化は高レベルです |
変更と読み取りは非常に簡単です | 変更して読むのは簡単ではありません |
バグ修正は簡単です | この言語のバグ修正は複雑です |
組み込みCプログラムの例
以下は、に使用されるいくつかの簡単な組み込みCプログラムです。 マイクロコントローラーベースのプロジェクト 。
例-1
例-2
例-3
例-4
利点
ザ・ 組み込みCプログラムの利点 g以下を含みます。
- 理解するのはとても簡単です。
- 同様のタスクを継続的に実行するため、追加のメモリやストレージスペースなどのハードウェアを変更する必要はありません。
- 一度に1つのタスクを実行するだけです
- 組み込みCで使用されるハードウェアのコストは、通常、非常に低くなっています。
- 組み込みのアプリケーションは、業界で非常に適切です。
- アプリケーションプログラムの開発にかかる時間は短くなります。
- プログラムの複雑さを軽減します。
- 確認と理解は簡単です。
- あるコントローラーから別のコントローラーに移植できます。
短所
ザ・ 組み込みCプログラミングの欠点 以下のものが含まれます。
- 一度に1つのタスクのみを実行しますが、マルチタスクを実行することはできません
- プログラムを変更する場合は、ハードウェアも変更する必要があります
- ハードウェアシステムのみをサポートします。
- スケーラビリティの問題があります
- それは限られたメモリのような制限があります、さもなければコンピュータの互換性。
組み込みCプログラムのアプリケーション
ザ・ 組み込みCプログラミングのアプリケーション 以下のものが含まれます。
- 組み込みCプログラミングは、さまざまな目的で業界で使用されています
- アプリケーションで使用されるプログラミング言語は、高速道路の速度チェッカー、信号機の制御、街灯の制御、車両の追跡、人工知能、ホームオートメーション、および自動強度制御です。
の初心者に簡単で親しみやすい方法を提供することに成功したことを願っています 組み込みCプログラミング 。組み込みCプログラミングを理解することは、組み込みベースのプロジェクトを設計するための最も重要な前提条件です。これに加えて、組み込みCプログラミングについてのより良い理解と適切な知識は、学生がやりがいのあるキャリアを選択するのに非常に役立ちます。
読者からの質問、提案、コメントを奨励し、歓迎します。したがって、この記事に関する質問やフィードバックは、以下のコメントセクションに投稿できます。以下のリンクをたどってください 無はんだプロジェクト