目次

Cortex-M

ARMのCortexファミリの一種
ハーバードアーキテクチャ

デバッグ

デバッグに記載,Cortex-M4での場合の話が主

アーキテクチャ

PSR

プログラムステータスレジスタ.
これは3つのレジスタから構成されている.

  1. アプリケーションプログラムステータスレジスタ(APSR)- 演算結果のフラグ
  2. 割り込みプログラムステータスレジスタ(IPSR) - 割り込み番号
  3. 実行プログラムステータスレジスタ(EPSR) - 実行状態bit

これらのレジスタはまとめてxPSRとしてアクセスも可能.

IPSR

割り込みプログラムステータスレジスタ
現在の割り込みハンドラの番号が入る.何も割り込みが発生していなければここは0になる.

Cortex-M0

ARMv6-M Thumb命令セットが実装,
命令セットアーキテクチャ(ISA)はThumb,Thumb-2サブセット(それぞれがいくつか入ってる感じ?)

Cortex-M0 テクニカルリファレンス マニュアル
ARMv6-Mと戯れる 第1号 ~ARMv6-Mと戯れる準備をしよう~
ArmプロセッサはArm命令セットThumb命令セットが使えるらしい
だけどCortex-M3以降はThumb命令セット専用になった模様,正直Cortex-Mプロセッサしか使ってないので,実質Thumb命令のみ感

Cortex-M3

ARMv7-Mアーキテクチャ
Thumb2命令セットに統一(Arm7はArm命令(32bit長),Thumb命令(16bit長)混在だった)
統合ネスト型ベクタ割り込みコントローラ(NVIC)
リアルタイムOSMOTIC,スケジュールタスクのための統合システムタイマ

Cortex-M4

Cortex-M4

Cortex-M23,33

ARMv8-Mアーキテクチャを搭載
BaselineとMainlineの2つのサブプロファイルが存在.
Baseline → ARMv6-M, Mainline → ARMv7-Mという対応に近い.
TrustZoneというIoT向けのセキュリティ機能が追加で組み込まれているのが大きなポイント.
ARMv7-Mはスレッド(非特権)モードとハンドラ(特権)モードという2つの動作モードがあるが,ここに非セキュアステートとセキュアステートが追加され,計4つの動作モードを遷移して動作する.
Amazon FeeRTOSはARMv8-Mの事前設定がされたバージョンがすでにリリースされている.
AWS が、Armv8-M 対応 FreeRTOS 向けに事前設定された例をさらにリリース

FPUが積まれているか確認

corecm4.hやcorecm7.hファイルの中に

__STATIC_INLINE uint32_t SCB_GetFPUType(void)

という関数があり、これでFPUの有無、単精度か倍精度かを返してくれる。

参考文献

ArmとCortex
Thumb-2対応GCCクロス開発環境の構築
超最新!マイコン用ARMv8-Mアーキテクチャの研究
Armv8-Mセキュアマイコンプログラミングテクニック
ARMv8-M TrustZone:組み込みデバイス向けアーキテクチャとセキュリティ機能
EWARMで開発するCortex-M プログラミングガイド
専用プログラムステータスレジスタ(PSR)