Internet of Things | MDK の使用方法とツール | Cortex-M シリーズ CPU のコアを探る | ARM アセンブリ言語 | MDK 注釈表示中国語 | Cortex-M シリーズ CPU で遊ぶ基礎ゼロの Internet of Things 開発シリーズ コース - 学習ノート ( 2)

記事ディレクトリ

詳細情報を取得する方法

1.ヘルプドキュメントの使い方
2.BOOK Windowの使い方と設定方法

MDKの使い方と他のツールの紹介 (3)

MDK5.13 エンジニアリング コードのデバッグ デモンストレーション

エンジニアリングコードの基本構成

MDK5.13 のコンパイル プロセスの紹介とコンパイル済みファイルの説明

詳細情報を取得する方法

★その他のツール

1 コードの閲覧と編集

.UE
ダウンロード アドレス
. Source Insight: 比較的大量のコードを含むプロジェクトに適しています
ダウンロード バージョン 4.0.0126

2 インターフェースツール

.シリアル ポート アシスタントの
ホームページ: http://www.daxia.com/download
sscom
.ネットワーク ポート アシスタント

3 ファイルコンパレータ

Beyond Compare は
無料でダウンロードでき、30 日間の標準 / プロフェッショナル バージョンの試用版をサポートしています。

4 コードのコンパイル

gcc
IAR

放課後の宿題

1 MDK を使用して、チップ STM32F407ZG に基づくプロジェクトを作成し、コードを追加し、コンパイルし、ソフト シミュレーションを通じてデバッグしてください。
コースで説明されている 2 番目の方法を使用して、スタートアップ コードを追加する必要があります。
2 Source Insight、UE、シリアル ポート アシスタント、およびファイル コンパレータをダウンロードしてください。Beyond Compare

Lesson3: cortex-MシリーズCPUのコアを探る

Cortex-M コアのアーキテクチャと命令セットの簡単な説明

ここに画像の説明を挿入

Cortex-M 3 兄弟アーキテクチャの概要

cortex-M0 Cortex-M3 Cortex-M4のアーキテクチャ図
ここに画像の説明を挿入

Tip1: ハーバード・アーキテクチャーとは

ARMアセンブリ言語の簡単な学習

1ARM アセンブリ言語の基本文法
ARM コンパイラ armasm ユーザ ガイド バージョン 5.06
ラベルは
命令のアドレスです。
2 一般的に使用される組み立て手順の紹介とデモンストレーション

データ転送命令

ここに画像の説明を挿入

例: startup_stm32f407xx.s

F:\IOT\PRJ\first_prj\RTE\Device\STM32F407ZGTx\startup_stm32f407xx.s は
import 後に追加 main: MOV R0, #0X123; mov 命令は直接番号 0X123 を操作

        IMPORT  __main
				 MOV     R0, #0X123 ;mov指令操作直接数0X123

                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP

最初にコンパイルし、最後までコンパイルする

Build started: Project: first_prj
*** Using Compiler 'V6.19', folder: 'd:\Keil_v5\ARM\ARMCLANG\Bin'
Build target 'Simulator'
".\Objects\first_prj.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:00

デバッグを再度実行します。
ここに画像の説明を挿入

リセットをクリックしてリセットを実行すると、プログラム カーソルが変更されたばかりのコードで停止します。ここに画像の説明を挿入

ステップスルーすると、レジスタに 0x123 が書き込まれます。
ここに画像の説明を挿入

メモリアクセス命令

LDR/STR命令のデモ

追加したばかりの MOV 命令を削除し、以下を追加します:
LDR R0, =NMI_Handler; ラベル NMI_Handler を介して NMI_Handler を R0 に書き込み、
最初にコンパイルし、コンパイルして渡し、次にリセットし、リセットを実行し、シングルステップ実行を実行します。ここに画像の説明を挿入

LDR の後、0x08000217 にジャンプします。
ここに画像の説明を挿入
ここに画像の説明を挿入

プログラムフロー制御命令(ジャンプ命令)

ここに画像の説明を挿入

BL命令の使用例

LDR R0, =NMI_Handler; 次の命令を追加します:
BLX R0
は単一のステップでコンパイルおよび実行します。ここに画像の説明を挿入

その他の手順 (ユーザー マニュアルを参照してください。F1 を押すと、プログラム コマンドのカーソル位置にあるインデックスが自動的に開きます)

ARM アセンブリ言語のサフィックス

ここに画像の説明を挿入
ここに画像の説明を挿入

Cortex-M アーキテクチャ CPU におけるアセンブリと C の混合プログラミング

アセンブリ コードでの C 関数の呼び出し

F:\IOT\PRJ\first_prj\RTE\Device\STM32F407ZGTx\startup_stm32f407xx.s 例:
サンプルコード:

        IMPORT  SystemInit
        IMPORT  __main
                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP

その中で: IMPORT SystemInit
ここに画像の説明を挿入

このファイルをインポートするソース ファイルは次のとおりです。
F:\IOT\PRJ\first_prj\RTE\Device\STM32F407ZGTx\system_stm32f4xx.c
実行。
ここで、R0 の値が 0x080002C9 に更新されます。

ステップを続行し、systeminit 関数にジャンプします。
ここに画像の説明を挿入

C コードでアセンブリ関数を呼び出す

tip1: アセンブリ関数の書き方

アセンブリ ステートメントを C コードに直接追加する

埋め込みアセンブリ ステートメント
. インライン アセンブリ ステートメント

ヒント: MDK コメントは中国語で表示されます

MDK のエンコーディングは、chinese2312 に設定されています ([編集] > [構成] > [エディタ] > [エンコーディング])。

Cortex-M アーキテクチャ CPU コアのレジスタとプロセッサ モード

Cortex-M アーキテクチャ CPU コア ストレージ システム

Cortex-M アーキテクチャ CPU コアの割り込みおよび例外処理

Cortex-M アーキテクチャ CPU リセットおよびリセット シーケンス ブック

よく使用されるヘルプ ドキュメントのヒント リスト

ARM Development Toolst
MDK-ARM Primer
uVision ユーザー ガイド
ARM コンパイラ ツールチェーンの紹介 ARM
命令セット ユーザー ガイド
コンパイラ ユーザー ガイドアセンブラ
ユーザー ガイド
リンカ ユーザー ガイド
ライブラリと浮動小数点サポート ガイド
移行と互換性
armar を使用した静的ソフトウェア ライブラリの作成
fromelf イメージ コンバータ
エラーの使用および警告リファレンス ガイド
Debugger Adapter ユーザー ガイド
サポート情報
ライセンス ユーザー ガイド

おすすめ

転載: blog.csdn.net/Medlar_CN/article/details/130389732