第3部 第 ご購入はこちら 8章 CPU コアもソフト構造も共通のご利益にあやかってみる My プログラムをどの Cortex-M マイコンでも共通に動かすポイント 石岡 之也 ユーザ・アプリケーション・プログラム ユーザは GPIO2をH→L などと命令 CMSIS-CORE ライブラリ ARM社が マイコン・ メーカに提供 ARM提供の標準ヘッダ・ライブラリ Cortex-M0/0+/3/4/7用 ユーザはマイコ ン・メーカから, マイコンごとに 入手する マイコンメーカ固有定義 66番ピンをH→Lに ソフトウェア ハードウェア Cortex-Mコア SysTick タイマ GPIO UART SPI ADC ペリフェラル Cortex-Mマイコン 66番ピン(GPIO2)が H→Lになる 図 1 CMSIS ソフトウェア規格の中でも特に重要な CMSIS-CORE の移植のポイントを解説 第 7 章ではプログラム移植を簡単にする Cortex-M 用ソフトウェア・インターフェース規格 CMSIS の仕 組みを紹介しました. かつて,CMSIS が提供される前の Cortex-M マイコ ン間の移植は,マイコン・メーカから出されるデータ シートに記されたメモリ・マップやレジスタのアドレ スから,各自で自分たちが使用するデバイスのアドレ スやビットのオフセット値などを手作業でマクロで定 義していました. 時 は 過 ぎ て,CMSIS 規 格 の 概 念 の 下 で CMSISCORE に対応したソースコードが提供されてからは, Cortex-M マイコン間の移植がしやすくなりました. 以上の経緯から,Cortex-M 系マイコンの移植で最 初に行わなければならない「CMSIS-CORE」の移植例 のポイントを紹介します(図 1). 2016 年 4 月号 移植の要注意ポイント①… ベクタ・テーブル Cortex-M 系マイコンの起動直後にアクセスされる のが,ベクタ・テーブルです.ベクタ・テーブルは startup_Device.s ファイル内に置かれています (図 2) . リスト 1 は,IAR EWARM 用のベクタ・テーブル 部分の抜粋です.sfe(CSTACK)が 0x00000000 番地 に配置され(リスト 1 の①) ,以降,4 バイトごとにハ ンドラのアドレスが配置されます. ARM から提供されるテンプレートでは Cortex-M コ ア 固 有 の 16 個 分 が 記 述 さ れ, そ れ 以 降 は _IRQ Handler で省略されていますが,実際のマイコン対 応の startup_Device.s では,使用するマイコン が持つデバイスそれぞれのハンドラがベクタ・テーブ ルへ列記されています. ● 基本 SysTick タイマ割り込みの例 ここでは Cortex-M 系マイコンが共通して持ち注 1, プログラム作成時にベースとなる時間を生成する SysTick タイマの割り込み(リスト 1 の②)の使い方を 説明します. ▶ SysTick_Handler の実処理を定義している箇 所はプログラムが暴走しない記述になっている startup_Device.s のさらに後方へソース表示 を 進 め る と リ ス ト 2 の ③ の よ う に SysTick_ Handler の実処理を定義している箇所が現れます. テンプレートでは,このままのコードを利用しても プログラムが暴走しないよう各割り込み(例外)ハン ドラは呼び出されると自身のアドレスへジャンプする 無限ループとなっています(リスト 2 の④) . 注 1:Cortex-M0/M0+ でオプション扱いになっている SysTick タイマが,実際には多くの M0/M0+ で採用されているの で共通と記している. 93
© Copyright 2025 ExpyDoc