1. 関連概念
1. アセンブリ命令: アセンブリ命令を実行して特定の機能を完了します。
2. 組立説明書セット: 多数の説明書と
3. アーキテクチャ: 命令セットに従って設計された抽象パターン
4. カーネル: オペレーティング システムの中核。arm 社はさまざまなアーキテクチャに従ってさまざまなカーネルを設計します。
5.SOC: システム オン チップ システム オン チップ (システム オン チップ)、アーキテクチャ SOC = MCU + ペリフェラル コントローラー
6. 一般的な略語:
MPU: マイクロプロセッサ ユニット マイクロプロセッサ、ハイエンド プロセッサ、Linux オペレーティング システムを実行
MCU: Microcontroller Unit マイクロコントロールユニット、ベアメタル開発を実行
CPU:Central Processing Unit中央処理装置
GPU: グラフィックス プロセッシング ユニット グラフィックス プロセッサー
FPU: 浮動小数点ユニット浮動小数点処理ユニット
DSP: Digital Signal Processing デジタル信号処理
FPGA: フィールド プログラマブル ゲート アレイ プログラマブル ロジック アレイ
MMU: Memory Management Unit メモリ管理ユニット
2. ARM共通製品の配布
1.Aシリーズ: Linuxオペレーティングシステム、携帯電話、タブレット、コンピュータを実行できます。
v7 アーキテクチャ: 32 ビット プロセッサに属する
v8 アーキテクチャ: 64 ビット プロセッサに属し、32 ビット プロセッサと下位互換性があります
2. Mシリーズ:モノのインターネットには多くの種類があり、シングルチップマイコンの開発に使用され、小規模なオペレーティングシステムを実行できます。
3. Rシリーズ:車載エレクトロニクスやカメラなどリアルタイム性の高い場面でよく使われます。
3 番目に、クロスコンパイル チェーン
1. クロスコンパイル ツールチェーンをインストールする理由
Ubuntu は x86 アーキテクチャであり、ターゲット ボードは ARM アーキテクチャです。コンパイルされたプログラムを直接実行することはできません。プログラムを ARM アーキテクチャ命令セット ファイルにコンパイルするには、クロスコンパイル ツールチェーンを使用する必要があります。
4、RISC および CISC 命令セット
命令サイクル: 命令を実行するために必要なイベントの数
命令幅: マシンコードにコンパイルされた命令が占めるコードセグメントスペース
1. RISC===縮小命令セット(ARMアーキテクチャ): ロード命令セットから一部の一般的かつ単純な命令セットを抽出し、命令サイクルと命令幅を固定します。
実行: 1. arm-linux-gnueabihf-gcc -marm 1.c
2. ファイル a.out
逆アセンブリ: arm-linux-guneabihf-objdump -D a.out > a.dis
2.CISC=== 複合命令セット (X86 アーキテクチャ): 命令サイクルと命令幅は固定されていません
逆アセンブリ: objdump -D a.out > a.dis
5、ARM-V7 および ARM-V8、Thumb 命令セット
1.v7 は 32 ビット アーキテクチャに属し、v8 は 64 ビット アーキテクチャに属し、v8 は v7 アーキテクチャと下位互換性があります。
2. v7 命令は 32 ビット空間を占有し、一度に 32 ビット データの演算を完了できます。
V8 命令は 32 ビット空間を占有し、一度に 64 ビットのデータ操作を完了できます。
3. Thumb 命令セット: 32 ビット/16 ビットをサポートします。1 つの命令は 16 ビットのメモリ空間を占有します
4. V7 アーキテクチャのアドレス空間 0~2^32-1、v8 アーキテクチャのアドレス空間 0~2^64-1
6、ARMプロセッサ動作モード
A7 コア: 1. 特権モード: 1. SVC、リセット モード
2.FIQ、高速割り込みモード
3.IRQ、共通割り込みモード
4.undef、未定義モード
5. アボート、終了モード: 1) データフェッチ終了モード、2) 命令フェッチ終了モード
6.システム、システムモード
2. 非特権モード: ユーザー、ユーザー モード、ユーザー関連のコードを実行
M4 コア: 1. スレッド モード: 通常のコード実行モード
2. 異常モード: 現在実行中のプログラムを中断し、割り込みハンドラーを実行し、割り込みプログラムの実行が完了した後、コードの元の場所に戻ってコードの実行を継続します。
合計: 特定のモードでは、特定のコードが実行されて特定の機能が完了します。
特権モードは非特権モードよりも上位であり、動作モードは、1) ソフトウェア プログラミングの切り替え、2) 外部ハードウェア割り込みエントリによって切り替えることができます。
システム モードとユーザー モードは一連のレジスタを共有します。
腕のプロセッサーには 7 つの動作モードがあり、皮質には別のモニター安全監視モードがあります。
七、ARM登録組織
1. レジスタ変数: レジスタ変数はより高速に実行されますが、アドレスを取得できず、数値でのみアクセスできます。
2. Volatile 変数: アドレスを操作する場合、キャッシュ レジスタ内の値をフェッチするのではなく、メモリにアクセスして値をフェッチするたびに変数の前に volatile を追加する必要があります。
レジスタ: コアの内部メモリに属し、通常は操作に一時的に関与するデータを保存します。
3. 各動作モードには独自のレジスタがあります。ユーザーとシステムは一連のレジスタを共有します。プライベート レジスタがある場合は、共有レジスタにアクセスできません。プライベート レジスタがない場合は、共有レジスタにアクセスできます。
4.皮質には43のレジスタがあり、腕には37のレジスタがあります
8、特殊機能レジスタ
1.sp----スタック ポインタ スタック ポインタ レジスタ: スタック空間内のアドレスの一部を指します。スタックのプッシュおよびポップ時にスタック ポインタを移動する必要があります。
2.lr----リンクレジスタ link register: 関数の戻りアドレスを保存します。
3.pc---プログラム カウンター プログラム カウンター: 現在値命令のアドレスを指します。pc の値は自動的に +4 され、次の命令を指します。
4.cpsr----現在のプログラムステータスレジスタ 現在のプログラムステータスレジスタ: 現在のプログラムのステータスを保存するために使用されます。
5.spsr----保存されたプログラムステータスレジスター プログラムステータスレジスターを保存: cpsr レジスターに値を保存します。
詳細な cpsr 現在ステータス レジスタ:
N[31]: 実行結果が負かどうか、N=1: 負、N=0: 非負(負)
Z[30]: 結果が0かどうか、Z=1: ゼロ、Z=0: 非ゼロ(ゼロ)
C[29]: キャリー/ボローフラグ(キャリー)
キャリー: 加算演算によりキャリー フラグが生成され、下位 32 ビット レジスタが上位 32 ビット レジスタへのキャリーを実行します。
C = 1: 下位 32 ビット レジスタは上位 32 ビット レジスタへのキャリーを生成します
C = 0: 下位 32 ビット レジスタから上位 32 ビット レジスタへのキャリーはありません
借用: 減算演算により借用フラグが生成され、下位 32 ビット レジスタが上位 32 ビット レジスタから借用されます。
C = 0: 下位 32 ビット レジスタは上位 32 ビット レジスタから借用します
C = 1: 下位 32 ビット レジスタは上位 32 ビット レジスタから借用していません
V[28]: 符号ビット、V=1: 変更、V=0: 変更なし
I[7]: IRQ 割り込みフラグビット
I = 1: IRQ 割り込みフラグビットをマスクします。
I = 0: IRQ割り込みフラグビットをマスクしない
F[6]: FRQ割り込みフラグビット
F = 1: マスク FIQ 割り込みフラグ ビット
F = 0: FIQ 割り込みフラグビットをマスクしません。
T[5]: ステータスフラグ(状態)
T = 0: ARM 状態、ARM 命令セットを実行、1 つのアセンブリ命令が 4 バイトのスペースを占有
T = 1: サム状態、サム命令セットを実行、1 つのアセンブリ命令が 2 バイトのスペースを占有
M[4:0]: モードビット(モード)
10000 ユーザーモード。
10001 FIQ モード。
10011 SVC モード。
10111 モードを中止します。
11011 未定義モード。
11111 システムモード。
10110 モニターモード。
10010 IRQ モード。