5.4 ARMv6 とそれ以前、ARMv7-A、および ARMv7-R プロファイルのベクタテーブル

ARMv6 とそれ以前、ARMv7-A、および ARMv7-R プロファイルのベクタテーブルには、関連するハンドラへの分岐またはロード PC 命令が含まれています。

必要な場合は、可能な限り効率的に処理されるように FIQ ハンドラをベクタテーブルの末尾にインクルードできます(以下の例を参照)。リテラルプールを使用すると、必要な場合、後でアドレスを簡単に変更できます。

リテラルプールを使用する一般的なベクタテーブル

                AREA vectors, CODE, READONLY                 ENTRY Vector_Table                 LDR pc, Reset_Addr                 LDR pc, Undefined_Addr                 LDR pc, SVC_Addr                 LDR pc, Prefetch_Addr                 LDR pc, Abort_Addr                 NOP                    ;予約ベクタ                 LDR pc, IRQ_Addr FIQ_Handler                 ; FIQ handler code - max 4kB in size Reset_Addr      DCD Reset_Handler Undefined_Addr  DCD Undefined_Handler SVC_Addr        DCD SVC_Handler Prefetch_Addr   DCD Prefetch_Handler Abort_Addr      DCD Abort_Handler IRQ_Addr        DCD IRQ_Handler                 ...END

この例では、リセット時に 0x0 に ROM を配置したことを前提としています。別の方法としては、スキャッタロードメカニズムを使用して、ベクタテーブルのロード/実行アドレスを定義することもできます。この場合は、C ライブラリによってベクタテーブルがコピーされます。

ARMv6 とそれ以前のアーキテクチャのベクタテーブルは、ARM 命令だけをサポートします。ARMv6T2 以降のアーキテクチャは、ベクタテーブルで Thumb 命令と ARM 命令の両方をサポートします。これは、ARMv6-M および ARMv7-M プロファイルには適用されません。

関連情報
スキャッタファイルに関する情報
非機密扱いPDF file icon PDF 版ARM DUI0471JJ
Copyright © 2010-2013 ARM.All rights reserved.