本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。 IEC61508 SIL2 セルフテストライブラリ 32-BIT MICROCONTROLLER FM3 Family, FM4 Family APPLICATION NOTE Publication Number FM3_AN706-00048 CONFIDENTIAL Revision 2.0 Issue Date April 24, 2014 A P P L I C A T I O N N O T E 対象製品 本操作マニュアルに記載されている内容の対象製品は、下記のとおりです。 (FM3:TYPE0) シリーズ名 MB9B500B MB9BF504NB, MB9BF504RB, 品種型格(パッケージサフィックスは除く) MB9BF505NB, MB9BF506NB MB9BF505RB, MB9BF506RB MB9B400A MB9BF404NA, MB9BF404RA, MB9BF405NA, MB9BF405RA, MB9BF406NA MB9BF406RA MB9B300B MB9BF304NB, MB9BF304RB, MB9BF305NB, MB9BF305RB, MB9BF306NB MB9BF306RB MB9B100A MB9BF102NA, MB9BF102RA, MB9BF104NA, MB9BF104RA, MB9BF105NA, MB9BF105RA, MB9BF106NA MB9BF106RA (FM4) シリーズ名 MB9B560R MB9B460R MB9B360R MB9B160R 2 CONFIDENTIAL MB9BF566R, MB9BF566N, MB9BF566M, MB9BF466R, MB9BF466N, MB9BF466M, MB9BF366R, MB9BF366N, MB9BF366M, MB9BF166R, MB9BF166N, MB9BF166M, 品種型格(パッケージサフィックスは除く) MB9BF567R, MB9BF568R MB9BF567N, MB9BF568N MB9BF567M, MB9BF568M MB9BF467R, MB9BF467N, MB9BF467M, MB9BF367R, MB9BF367N, MB9BF367M, MB9BF167R, MB9BF167N, MB9BF167M, MB9BF468R MB9BF468N MB9BF468M MB9BF368R MB9BF368N MB9BF368M MB9BF168R MB9BF168N MB9BF168M FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N N O T E 目次 対象製品 .......................................................................................................................................................... 2 1. はじめに .................................................................................................................................................... 5 1.1 この文書について ........................................................................................................................... 5 1.2 背景 ................................................................................................................................................ 5 1.3 開発・評価環境 .............................................................................................................................. 5 1.4 注意事項 ......................................................................................................................................... 5 2. IEC61508 の概要 ....................................................................................................................................... 6 2.1 用語の定義 ..................................................................................................................................... 6 2.2 安全ライフサイクル ....................................................................................................................... 7 2.3 SIL(安全度水準) .............................................................................................................................. 8 2.4 故障の定義 ..................................................................................................................................... 8 2.5 ハードウェア安全性評価とアーキテクチャ制約 ............................................................................ 9 2.6 SFF(安全側故障比率) ................................................................................................................... 10 3. STL 概要 .................................................................................................................................................. 11 3.1 診断の対応範囲 ............................................................................................................................ 11 3.2 診断の種類 ................................................................................................................................... 11 3.3 故障検知 ....................................................................................................................................... 12 3.4 STL の構成 ................................................................................................................................... 12 4. API 概要................................................................................................................................................... 14 4.1 ROM 診断 ..................................................................................................................................... 14 4.1.1 診断の概要 ........................................................................................................................ 14 4.1.2 設定可能な内容 ................................................................................................................. 14 4.2 RAM 診断 ..................................................................................................................................... 15 4.2.1 診断の概要 ........................................................................................................................ 15 4.2.2 設定可能な内容 ................................................................................................................. 15 4.3 CPU 診断 ...................................................................................................................................... 16 4.3.1 診断の概要 ........................................................................................................................ 16 4.3.2 設定可能な内容 ................................................................................................................. 20 4.4 BUS 診断 ...................................................................................................................................... 21 4.4.1 診断の概要 ........................................................................................................................ 21 4.4.2 設定可能な内容 ................................................................................................................. 21 5. STL 性能 .................................................................................................................................................. 22 5.1 ROM/RAM サイズ ........................................................................................................................ 22 5.2 診断処理速度 ................................................................................................................................ 23 5.2.1 RAM の診断処理速度 ........................................................................................................ 23 5.2.2 ROM の診断処理速度 ........................................................................................................ 23 5.2.3 CPU の診断処理速度 ......................................................................................................... 24 5.2.4 BUS の診断処理速度 ......................................................................................................... 24 6. 参考文書 .................................................................................................................................................. 25 7. 付録 ......................................................................................................................................................... 26 7.1 フラッシュの CRC コード作成方法 ............................................................................................. 26 7.1.1 コマンドラインの起動 ...................................................................................................... 26 7.1.2 コマンドの入力 ................................................................................................................. 27 7.1.3 メッセージウィンドウ表示内容の設定 ............................................................................. 28 7.1.4 リンカ設定ファイルの設定 ............................................................................................... 29 7.1.5 CRC コード作成................................................................................................................ 29 8. 主な変更内容 ........................................................................................................................................... 30 April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 3 A P P L I C A T I O N N O T E 図 図 図 図 図 図 2-1 3-1 3-2 4-1 4-2 安全ライフサイクル ...................................................................................................................... 7 ROM 定期診断コール時のイメージ(x 分割).................................................................................... 11 API 使用例 .................................................................................................................................... 13 ROM 診断のイメージ ..................................................................................................................... 14 RAM 診断 ....................................................................................................................................... 15 表 表 表 表 表 表 表 表 表 表 表 表 表 表 表 表 表 表 1-1 開発・評価環境 .............................................................................................................................. 5 2-1 用語/意味....................................................................................................................................... 6 2-2 SIL の数値目標............................................................................................................................... 8 2-3 故障の分類 ..................................................................................................................................... 8 2-4 タイプ A のアーキテクチャ制約..................................................................................................... 9 2-5 タイプ B のアーキテクチャ制約..................................................................................................... 9 3-1 診断の対応範囲 ............................................................................................................................. 11 3-2 API の種類 .................................................................................................................................... 12 4-1 ARMv7-M Thumb 命令セット(16bit) .............................................................................................. 16 4-2 テスト対象のアセンブラ命令(DSP 乗算命令) ........................................................................... 20 4-3 テスト対象のアセンブラ命令(FPU 乗算命令) ........................................................................... 20 5-1 ROM/RAM サイズ............................................................................................................................. 22 5-2 RAM のスタートアップ診断処理速度 ............................................................................................ 23 5-3 RAM の定期診断処理速度 .............................................................................................................. 23 5-4 ROM のスタートアップ診断処理速度 ............................................................................................ 23 5-5 ROM の定期診断処理速度 .............................................................................................................. 23 5-6 CPU の定期診断処理速度 .............................................................................................................. 24 5-7 BUS の定期診断処理速度 .............................................................................................................. 24 表 4 CONFIDENTIAL FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N N O T E 1. はじめに 1.1 この文書について このアプリケーションノートは、スパンション製マイコン FM3 ファミリ、FM4 ファミリを対象とし、 IEC61508 の SIL2 相当のソフトウェアによるマイコン向け自己診断処理(Self Test Library、以下 STL) の利 用を検討されている方を対象としています。 1.2 背景 近年、各産業分野においてシステムの安全に対する考え方やその手法が益々重要視されており、国際的に標 準化する動きがあります。IEC(International Electrotechnical Commission) が定めた IEC61508 は様々な分 野を対象としており、他の安全規格で制定されていない分野は全て IEC61508 の適用が可能です。IEC61508 が規定されたことにより、製品開発において規格の対応を要求されることが多くなってきています。 1.3 開発・評価環境 本 STL は表 1-1 に示す環境で開発・評価されています。 表 1-1 開発・評価環境 マイコン 統合開発環境 評価ボード 最適化 1.4 [FM3] ・MB9BF506R [FM4] ・MB9BF568R ・IAR Embedded Workbench for ARM6.60 kickstart ・KEIL μVision V5.0.5.15 [FM3(80MHz,Flash アクセス 2wait)] ・MB9BF506R-SK ・MCB9B500 [FM4(160MHz, フラッシュアクセラレータ Enable)] ・SK-FM4-U120-9B560 ・[IAR]高(バランス) ・[KEIL]Level3 注意事項 提供する STL は認証機関による認証を受けたものではないため、本 STL を変更なく利用しても認証を取得 できるとは限りません。また、本 STL は SFF が 90%以上かつ 99%未満での SIL2 を達成することが前提と して設計されています。(2.5 ハードウェア安全性評価とアーキテクチャ制約) April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 5 A P P L I C A T I O N N O T E 2. IEC61508 の概要 用語の定義 2.1 このアプリケーションノートで使用する用語とその意味を表 2-1 にまとめます。 表 2-1 用語/意味 用語 意味 安全関連系 ある特定の制御システムに対し、リスクを許容範囲以下まで軽減させ安全を確保するた めのシステム 安全機能 安全関連系が持つ機能 機能安全 安全機能により、リスクを許容範囲以下まで軽減させ安全を確保すること 安全ライフサイク ル 安全関連系への要求事項に対して、構想から廃棄に至るまでの規定した業務プロセス。 全工程を 16 のフェーズに分けている Safety Integrity Level の略。安全度水準。安全関連系が安全機能の遂行に失敗するリスク の度合い。1~4 までの水準があり、4 が最高 SIL プルーフテスト 安全関連系の故障に対し、自動検出が不可能な故障を見つけるための定期テスト 低頻度作動要求 モード 安全関連系への動作要求の頻度が、1(回/年)以下かつ、プルーフテスト頻度の 2 倍以下 である運用モード 高頻度作動要求 モード 安全関連系への動作要求の頻度が、1(回/年)より大きい、またはプルーフテスト頻度の 2 倍よりも大きい運用モード 連続モード 通常運用の一部として安全機能が常に動作している運用モード PFDavg Average Probability of dangerous Failure on Demand の略。安全機能作動要求時の危険側故 障確率の平均値 PFH Probability of dangerous Failure per Hour の略。単位時間あたりの危険側故障確率の平均値 ランダム故障 ハードウェアの故障等、時間的に無秩序に発生する故障 決定論的原因故障 ソフトウェアのバグ等、開発工程で故障の原因が入り込み必然的に発生する故障 安全側故障率 安全関連系が故障した際、制御対象が危険な状況を導かない故障 危険側故障率 安全関連系が故障した際、制御対象が危険な状況を導く故障 DC SFF Diagnostic Coverage の略。自己診断率。全ての危険側故障に対する検出可能な危険側故 障の割合 Safe Failure Fraction の略。安全側故障比率。全ての故障に対する、全ての安全側故障と 検出可能な危険側故障の割合 フォールト トレランス 障害発生時に、安全機能を遂行できる機能ユニットの能力 タイプ 以下の 3 つの構成条件を全て満たすものをタイプ A と呼び、タイプ A 以外をタイプ B と呼ぶ。例として、タイプ A には抵抗、コンデンサ、タイプ B には ASIC が挙げられま す。マイコンはタイプ B に属すると考えます。 1) 全てのコンポーネントの故障モードを定義できる 2) 障害条件化でサブシステムの挙動を完全に決定できる 3) 検出された及び未検出の危険側故障率の主張を支援できるような、現場に即した、 十分に依存可能なデータがある 6 CONFIDENTIAL FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N 2.2 N O T E 安全ライフサイクル ある特定の制御システムに対し、安全を確保するためのシステムを安全関連系と呼びます。IEC61508 は、 この安全関連系に対して要求事項を規定しています。(ただし、電気・電子・プログラマブル電子系(以下、 E/E/PES)で構成される安全関連系のみを対象としています) この安全関連系に対する要求事項は、構想、設計、開発、保守、廃棄に至るまでを規定しており、この一連 の体系を安全ライフサイクルと呼びます。(図 2-1 参照)安全関連系に対する管理や開発等は全て、この安全 ライフサイクル上で運用することが求められています。 図 2-1 安全ライフサイクル April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 7 A P P L I C A T I O N 2.3 N O T E SIL(安全度水準) IEC61508 は安全関連系の安全機能に対して故障発生頻度の許容範囲を定めており、その指標を SIL と呼び ます。SIL には 1~4 までの水準があり、各水準には表 2-2 の通り具体的な数値が規定されています。 表 2-2 SIL の数値目標 低頻度作動要求モード 高頻度作動要求または連続モード (PFDavg) (PFH) SIL 4 ≧10-5 to <10-4 ≧10-9 to <10-8 3 ≧10-4 to <10-3 ≧10-8 to <10-7 2 ≧10-3 to <10-2 ≧10-7 to <10-6 1 ≧10-2 to <10-1 ≧10-6 to <10-5 SIL は安全ライフサイクルのフェーズ 1~5 で決定され、それ以降のフェーズでは決定された SIL を満たす よう進めていくことになります。 2.4 故障の定義 IEC61508 は、安全関連系の故障をランダム故障と決定論的原因故障の 2 つに分類しています。それらの故 障のうち、安全側故障率を λS、危険側故障率を λD、全体の故障率を λ とすると、次の式(2-4-1)が成り立ちま す。 λ = λS +λD・・・(2-4-1) さらにその故障を検出可能と検出不可能なもので分類すると、表 2-3 の通りになります。 表 2-3 故障の分類 検出可能 検出不可能 安全側 自己診断可能な安全側故障 自己診断不可能な安全側故障 危険側 自己診断可能な危険側故障(λDD) 自己診断不可能な危険側故障(λDU) 表 2-3 より、次の式(2-4-2)が得られます。 λD = λDD +λDU・・・(2-4-2) 自己診断テストによる検出可能な故障の割合である DC は、次の式(2-4-3)で表されます。 DC = λDD / λD・・・(2-4-3) この DC は SFF(安全故障比率)を考える上で重要になってきます。 (SFF については 2.6 を参照して下さい) 8 CONFIDENTIAL FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N 2.5 N O T E ハードウェア安全性評価とアーキテクチャ制約 決定論的原因故障については安全ライフサイクルの実施、ランダム故障については安全要求仕様を満たす安 全なハードウェアアーキテクチャ設計が求められています。 ハードウェアの安全性を評価する際、表 2-2 の数値を達成することだけでなく、安全関連系を構成するサ ブシステムに対し一定のフォールトトレランスを満たさなければいけません。このハードウェアのフォール トトレランス、サブシステムのタイプ、SFF、の 3 つから、主張できる SIL の上限が決められています。こ れをアーキテクチャ制約と呼びます。表 2-4 と表 2-5 にタイプ A とタイプ B のアーキテクチャ制約をそれ ぞれ示します。N は、N+1 の障害により安全機能の損失を招く場合があることを意味します。 表 2-4 タイプ A のアーキテクチャ制約 ハードウェアのフォールトトレランス(N) SFF 0 1 2 < 60% SIL1 60% - < 90% SIL2 90% - < 99% SIL3 SIL2 SIL3 SIL4 SIL3 SIL4 SIL4 ≧ 99% SIL4 SIL4 SIL3 表 2-5 タイプ B のアーキテクチャ制約 SFF ハードウェアのフォールトトレランス(N) 0 1 2 < 60% 許されない SIL1 SIL2 60% - < 90% SIL1 SIL2 SIL3 ※90% - < 99% SIL2 SIL3 SIL4 ≧ 99% SIL4 SIL4 SIL3 ※弊社が提供する STL のターゲット April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 9 A P P L I C A T I O N 2.6 N O T E SFF(安全側故障比率) IEC61508 では、SFF を次の式(2-6-1)で定義しています。 SFF = ( ΣλS +ΣλDD ) / (ΣλS +ΣλD )・・・(2-6-1) これは、SFF は全故障発生率に対する安全側故障発生率の比であることを意味します。ただし前提として、 自己診断テストが十分有効と仮定し λDD と λS を同等に扱うものとしています。 ここで、式(2-4-3)と式(2-6-1)から、SFF と DC の関係を表したものが式(2-6-2)です。ただし、η = ΣλS /ΣλD としています。 SFF = ( η + DC ) / ( η + 1 )・・・(2-6-2) 通常、半導体装置は η=1 で考えます。故に、次の式(2-6-3)が得られます。 SFF = 0.5 + 0.5*DC・・・(2-6-3) つまり SFF は DC に依存しているため、DC の値が非常に重要になります。このため、IEC61508-2 Annex A では、SFF を算出する際に考慮すべきコンポーネントとそのテスト技法、またそのテスト技法を使用した 際の DC の最大値が規定されています。 10 CONFIDENTIAL FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N N O T E 3. STL 概要 3.1 診断の対応範囲 IEC61508-2 Annex A で制定される、診断するべきコンポーネントとそのテスト技法において、弊社が STL として提供する箇所が表 3-1 です。 表 3-1 診断の対応範囲 コンポーネント 対象範囲 診断技法 DC の最大値 BUS Data paths Inspection using test patterns 99%≦ CPU Processing units Self-test by software:walking bit(one-channel) 90%≦ to <99% ROM Invariable memory ranges Signature of a double word(16-bit) 99%≦ RAM Variable memory ranges RAM test galpat or transparent galpat 99%≦ 3.2 診断の種類 診断にはスタートアップ診断と定期診断の 2 種類をコンポーネント毎に用意しています。スタートアップ診 断はリセット時に実施することを想定しており、一度コールすると対象コンポーネントの全範囲を診断しま す。定期診断はメイン周期で実施することを想定しており、対象コンポーネントに対して分割して診断し、 複数回実施することで全範囲を診断できます。例えば ROM 定期診断を x 分割している場合、ROM 定期診 断を x 回コールすると図 3-1 のようになります。 図 3-1 ROM 定期診断コール時のイメージ(x 分割) April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 11 A P P L I C A T I O N 3.3 N O T E 故障検知 診断時に故障を検知すると、故障回数をカウントし再度同じ診断を連続で実施します。ユーザは、故障検知 に対する閾値を設定することができ、故障カウントがこの閾値を超えると故障ステータスがセットされます。 故障ステータスはそのコンポーネントの故障の有無を示します。 3.4 STL の構成 STL はコンポーネント毎に表 3-2 の API を持ちます。 表 3-2 API の種類 API 初期化 API スタートアップ診断 API 定期診断 API 故障ステータス取得 API 12 CONFIDENTIAL 概要 診断時に使用する変数を初期化します。 スタートアップ診断を実施します。 定期診断を実施します。 最新の故障ステータスを取得します。 FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N N O T E STL の API 使用例を図 3-2 のフローチャートに示します。この使用例は各コンポーネント共通です。 図 3-2 API 使用例 April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 13 A P P L I C A T I O N N O T E 4. API 概要 4.1 ROM 診断 4.1.1 診断の概要 ROM に対するテスト技法は”Signature of a double word(16-bit)”を使用します。詳細は IEC61508-7 A4.4 を 参照して下さい。 ROM 診断の概要を図 4-1 に示します。 ビルド時に生成した CRC コードを特定の ROM 領域に配置します。 次にシステム起動後、スタートアップ診断もしくは定期診断により CRC コードを生成し、それをビルド時 に生成した CRC コードと比較して一致することを確認します。本 STL では CRC16 よりさらに検出精度の 高い CRC32 を使用して CRC コードを算出します。診断で生成する CRC コードは、ソフトウェアで算出 するか、もしくはハードウェアマクロを使用して算出するかをユーザが選択できます。 図 4-1 ROM 診断のイメージ 4.1.2 設定可能な内容 ROM 診断の API を使用するにあたり、ユーザが設定可能な内容を下記にまとめます。 14 CONFIDENTIAL 1. 診断領域の数 2. 各診断領域のスタートアドレスとエンドアドレス 3. 故障検知に対する閾値 4. 一度の定期診断で計算するテスト長(byte) FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N 4.2 N O T E RAM 診断 4.2.1 診断の概要 RAM に対するテスト技法は”RAM test galpat or transparent galpat”を使用します。詳細は IEC61508-7 A5.3 を参照して下さい。 スタートアップ診断、定期診断共に galpat を使用します。スタートアップ診断は対象領域全てに対して実 施するのに対し、定期診断は 4byte 分を実施します。(図 4 2 を参照) 図 4-2 RAM 診断 4.2.2 設定可能な内容 RAM 診断の API を使用するにあたり、ユーザが設定可能な内容を下記にまとめます。 1. 診断領域の数 2. 各診断領域のスタートアドレスとエンドアドレス(スタートアップ診断と定期診断で別々の領 域を指定可能) 3. 故障検知に対する閾値 April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 15 A P P L I C A T I O N 4.3 N O T E CPU 診断 診断の概要 4.3.1 CPU に対するテスト技法は”Self-test by software:walking bit(one-channel)”を使用します。詳細は IEC61508-7 A3.2 を参照して下さい。 CPU 診断は、表 4-1 に示す 16bit の ARMv7-M Thumb 命令セットの各命令(FM3 ファミリ、FM4 ファミリ 共通です。また、Thumb-2 命令セットの検査が必要な場合には、別途用意する必要があります)の正常動 作と、レジスタ(R0~R14)の正常動作を診断します。診断方法は、walking bit パターンを入力値として演算 し、結果が期待値通りかを確認します。 表 4-1 ARMv7-M Thumb 命令セット(16bit) 命令 構文 内容 1 ADC <Rd>, <Rm>+ レジスタの値と C フラグをレジスタの値に加算 Rd = Rd + Rm + C 2 ADD <Rd>, <Rn>, #<immed_3>+ 3 ビットのイミディエート値をレジスタに加算 Rd + Rn + immed_3 3 ADD <Rd>, #<immed_8>+ 8 ビットのイミディエート値をレジスタに加算 Rd + Rd + immed_8 4 ADD <Rd>, <Rn>, <Rm>+ 下位レジスタの値を下位レジスタの値に加算 Rd = Rn + Rm 5 ADD <Rd>, <Rm> 上位レジスタの値を下位または上位レジスタの値に加算 Rd = Rn + Rm 6 ADD <Rd>, PC, #<immed_8>*4 PC アドレス + 4 × (8 ビットのイミディエート値)でレジ スタに加算 Rd = PC + 4*immed_8 7 ADD <Rd>, SP, #<immed_8>*4 SP アドレス + 4 × (8 ビットのイミディエート値)でレジ スタに加算 Rd = SP + 4*immed_8 8 ADD SP, #<immed_7>*4 4 × (7 ビットのイミディエート値)を SP に加算 SP = SP + 4*immed_7 9 AND <Rd>, <Rm>+ レジスタの値をビット単位に AND(論理積) Rd = Rd AND Rm 10 ASR <Rd>, <Rm>, #<immed_5>+ イミディエートの数値により算術右シフト Rd = Rd >> Rs No. 11 B<cond> <target_address_8> 条件付き分岐 if <cond> then PC = (PC + 4) + (SignExtend (target_address_8) * 2) 12 B <target_address_11> 無条件分岐 PC = (PC + 4) + (SignExtend (target_address_11) * 2) 13 BIC <Rd>, <Rm>+ ビット・クリア Rd = Rd AND (NOT Rm) 14 BKPT <immed_8> ソフトウェア・ブレイクポイント 15 BL <target_address11> リンク付き分岐 16 BLX <Rm> リンク付き分岐と状態遷移(Rm[ビット 0]は 1 にする) 17 BX <Rm> 分岐と状態遷移(Rm[ビット 0]は 1 にする) 18 CBNZ <Rn>, <label> 比較して非 0 で分岐(前方分岐のみ) 16 CONFIDENTIAL FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N N O T E 命令 構文 内容 19 CBZ <Rn>, <label> 比較して 0 で分岐(前方分岐のみ) 20 CMN <Rn>, <Rm>+ レジスタの値の 2 の補数(負数、negation)を別のレジスタの 値と比較(Rn - (-Rm))を計算しフラグを更新 21 CMP <Rn>, #<immed_8>+ レジスタの値と 8 ビットのイミディエートイミディエート 値との比較 22 CMP <Rn>, <Rm>+ レジスタと比較 23 CMP <Rn>, <Rm>+ 上位レジスタを下位または上位レジスタと比較 CPSIE < i または f > CPSID < i または f > 25 CPY <Rd>, <Rm> 上位レジスタまたは下位レジスタの値を別の上位レジス タまたは下位レジスタにコピー 26 EOR <Rd>, <Rm>+ レジスタ値のビット単位で Exclusive OR 27 IT IT<x> IT<x><y> IT<x><y><z> <cond> <cond> <cond> <cond> IF-THEN 条件付のブロックを作る命令 条件<cond>に基いて、この命令に続く一つから四つの命令 を条件付きで実行 No. 24 プロセッサ状態の変更 CPSIE は PRIMASK(i)または FAULTMASK(f)をクリアする ことで割込みを有効にする CPSID は PRIMASK(i)または FAULTMASK(f)をクリアする ことで割込みを無効にする 28 LDMIA <Rn>!, <registers> ロード・マルチプル・インクリメント・アフターは、Rn により指定したアドレスから、複数ワードをレジスタに ロード 29 LDR <Rd>, [ <Rn>, #<immed_5>*4 ] ベース・レジスタのアドレス+5 ビットのイミディエートを オフセットしたメモリから、ワードをロード 30 LDR <Rd>, [ <Rn>, <Rm> ] ベース・レジスタのアドレス+レジスタのオフセットのメ モリから、ワードをロード 31 LDR <Rd>, [ PC, #<immed_8>*4 ] PC アドレス + 8 ビットのイミディエートをオフセットし たメモリから、ワードをロード 32 LDR <Rd>, [ SP, #<immed_8>*4 ] SP アドレス + 8 ビットのイミディエートをオフセットし たメモリから、ワードをロード 33 LDRB <Rd>, [ <Rn>, #<immed_5> ] ベース・レジスタのアドレス + 5 ビットのイミディエート をオフセットしたメモリから、バイト[7 : 0]をレジスタに ロード 34 LDRB <Rd>, [ <Rn>, <Rm> ] ベース・レジスタのアドレス + レジスタオフセットのメ モリから、バイト[7 : 0]をレジスタにロード 35 LDRH <Rd>, [ <Rn>, #<immed_5>*2 ] ベース・レジスタのアドレス + 5 ビットのイミディエート をオフセットしたメモリから、ハーフ・ワード[15 : 0]をレ ジスタにロード 36 LDRH <Rd>, [ <Rn>, <Rm> ] ベース・レジスタのアドレス + レジスタオフセットのメ モリから、ハーフ・ワード[15 : 0]をレジスタにロード 37 LDRSB <Rd>, [ <Rn>, <Rm> ] ベース・レジスタのアドレス + レジスタオフセットのメ モリから、バイト[7 : 0]をレジスタに符号付でロード 38 LDRSH <Rd>, [ <Rn>, <Rm> ] ベース・レジスタのアドレス + レジスタオフセットのメ モリから、ハーフ・ワード[15 : 0]をレジスタに符号付で ロード April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 17 A P P L I C A T I O N N O T E 命令 構文 内容 39 LSL <Rd>, <Rm>, #<immed_5>+ イミディエートの数値により論理左シフト Rd = Rd << immed_5 40 LSL <Rd>, <Rs>+ レジスタの値により論理左シフト Rd = Rd << Rs 41 LSR <Rd>, <Rm>, #<immed_5>+ イミディエートの数値により論理右シフト Rd = Rd >> immed_5 42 LSR <Rd>, <Rs>+ レジスタの値により論理右シフト Rd = Rd >> Rs 43 MOV <Rd>, #<immed_8>+ 8 ビットのイミディエート値をレジスタに移動 44 MOV <Rd>, <Rn>+ 下位レジスタの値を下位レジスタに移動 45 MOV <Rd>, <Rm> 上位または下位レジスタの値を上位または下位レジスタ に移動 46 MUL <Rd>, <Rm>+ レジスタの値を乗算 Rd = Rd * Rm No. 47 MVN <Rd>, <Rm>+ レジスタの値の否定(1 の補数、complement)をレジスタに 移動 Rd = NOT(Rm) 48 NEG <Rd>, <Rm>+ レジスタの値を負(2 の補数、nagatevi)にしてレジスタへ保 存 Rd = 0 -Rm 49 NOP 50 ORR <Rd>, <Rm>+ レジスタ値のビット単位で OR(論理和) Rd = Rd OR Rm 51 POP <registers> スタックから複数のレジスタをポップ 52 POP <registers, PC> スタックから複数のレジスタおよび PC をポップ 53 PUSH <registers> 複数のレジスタをスタックへプッシュ 54 PUSH <registers, LR> 複数のレジスタおよび LR をスタックへプッシュ 55 REV <Rd>, <Rn> ワードの中でバイト順を反転して、レジスタへコピー Rd = {Rn[7:0], Rn[15:8], Rn[23:16], Rn[31:24]} 56 REV16 <Rd>, <Rn> 二つのハーフ・ワードの中でそれぞれバイト順を反転し て、レジスタへコピー Rd = {Rn[23:16], Rn[31:24], Rn[7:0], Rn[15:8]} 57 REVSH <Rd>, <Rn> 下位ハーフ・ワード[15:0]の中でバイト順を反転、符号拡 張した値をレジスタへコピー Rd = SignExtend ({Rn[7:0], Rn[15:8]}) 58 ROR <Rd>, <Rs>+ レジスタで指定した値だけ右ローテート 59 SBC <Rd>, <Rm>+ レジスタの値からレジスタの値とボロー(~C)をレジスタ の値から減算 Rd = Rd - Rm -NOT(C) 60 SEV 61 STMIA <Rn>!, <registers> 連続したメモリ・アドレスに、複数のレジスタをワード単 位でストア 62 STR <Rd>, [ <Rn>, #<immed_5>*4 ] レジスタのアドレス+5 ビットのイミディエートのオフ セットへ、レジスタの値をワードでストア 63 STR <Rd>, [ <Rn>, <Rm> ] ベース・レジスタ+レジスタ・オフセットのアドレスへ、 レジスタの値をワードでストア 18 CONFIDENTIAL 無操作 FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N N O T E 命令 構文 内容 64 STR <Rd>, [ SP, #<immed_8>*4 ] SP アドレス+8 ビットのイミディエートのオフセットへ、 レジスタの値をワードでストア 65 STRB <Rd>, [ <Rn>, #<immed_5> ] レジスタのアドレス+5 ビットのイミディエート値のオフ セットへ、レジスタの値をバイト[7:0]でストア 66 STRB <Rd>, [ <Rn>, <Rm> ] レジスタのアドレス+レジスタ・オフセットのアドレスへ、 レジスタの値をバイト[7:0]でストア 67 STRH <Rd>, [ <Rn>, #<immed_5>*2 ] レジスタのアドレス+5 ビットのイミディエートのオフ セットへ、レジスタ値をハーフワード[15:0]でストア 68 STRH <Rd>, [ <Rn>, <Rm> ] レジスタのアドレス+レジスタ+オフセットへ、レジスタの 値をハーフワード[15:0]でストア 69 SUB <Rd>, <Rn>, #<immed_3>+ 3 ビットのイミディエート値をレジスタから減算 Rd = Rn -immed_3 70 SUB <Rd>, #<immed_8>+ 8 ビットのイミディエート値をレジスタから減算 Rd = Rd -immed_8 71 SUB <Rd>, <Rn>, <Rm>+ レジスタの値を減算 Rd = Rn - Rm 72 SUB SP, #<immed_7>*4 4 × (7 ビットのイミディエート値)を SP から減算 SP = SP - immed_7*4 73 SVC <immed_8> 8 ビットのイミディエート値の呼び出しコードにより、オ ペレーティング・システムのサービスを呼び出し (スーパーバイザ・コール) 74 SXTB <Rd>, <Rm> レジスタからバイト[7:0]を抽出し、レジスタへ移動して、 32 ビットに符号拡張 75 SXTH <Rd>, <Rm> レジスタからハーフ・ワード[15:0]を抽出し、レジスタへ 移動して、32 ビットに符号拡張 76 TST <Rn>, <Rm>+ 別のレジスタの値と論理積を実行して、レジスタのセット されているビットをテスト Rn AND Rm 77 UXTB <Rd>, <Rm>+ レジスタからバイト[7:0]を抽出し、レジスタへ移動して、 32 ビットにゼロ拡張する 78 UXTH <Rd>, <Rm>+ レジスタからハーフ・ワード[15:0]を抽出し、レジスタへ 移動して、32 ビットにゼロ拡張する 79 WFE 80 WFI No. イベント待ち 割込み待ち ただし、No.49,60,79,80 は対象外としています。 April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 19 A P P L I C A T I O N N O T E ARMv7-M Thumb 命令セット以外に、FM4 ファミリ用として Cortex-M4 がサポートする命令セットから、 DSP 乗算命令と、FPU 乗算命令のテストを行います。 (他命令の検査が必要な場合には、そのテストを別途 用意する必要があります。 )CPU コアの内部において、レジスタから DSP、FPU へのパスが全ての命令で同 一と判断できないため、命令毎にレジスタを変えてテストします。その際、テストの入力値にウォーキング ビットパターンを使用します。テスト対象の DSP 乗算命令と FPU 乗算命令に含まれるアセンブラ命令の一 覧を以下に示します。 表 4-2 テスト対象のアセンブラ命令(DSP 乗算命令) No. 命令 構文 内容 1 SMMLA SMMLA <Rd>,<Rn>,<Rm>,<Ra> 最上位 32 ビット累算付き 32 ビット乗算 2 3 SMMLS SMMUL SMMLS <Rd>,<Rn>,<Rm>,<Ra> SMMUL <Rd>,<Rn>,<Rm> 最上位 32 ビット減算付き 32 ビット乗算 最上位 32 ビットを返す 32 ビット乗算 4 5 SMMLAR SMMLSR SMMLAR <Rd>,<Rn>,<Rm>,<Ra> SMMLSR <Rd>,<Rn>,<Rm>,<Ra> 丸め付き最上位 32 ビット累算付き 32 ビット乗算 丸め付き最上位 32 ビット減算付き 32 ビット乗算 6 SMMULR SMMULR <Rd>,<Rn>,<Rm> 丸め付き最上位 32 ビットを返す 32 ビット乗算 表 4-3 テスト対象のアセンブラ命令(FPU 乗算命令) No. 命令 構文 内容 1 VMUL.F32 VMUL.F32 <Sd>, <Sn>, <Sm> 単精度乗算 2 3 VMLA.F32 VMLS.F32 VMLA.F32 <Sd>, <Sn>, <Sm> VMLS.F32 <Sd>, <Sn>, <Sm> 乗算後に単精度累算 乗算後に単精度減算 4 5 VNMLA.F32 VNMLS.F32 VNMLA.F32 <Sd>, <Sn>, <Sm> VNMLS.F32 <Sd>, <Sn>, <Sm> 乗算後に単精度累算してから補数 乗算後に単精度減算してから補数 4.3.2 設定可能な内容 CPU 診断の API を使用するにあたり、ユーザが設定可能な内容を下記にまとめます。 20 CONFIDENTIAL 1. 診断する命令 2. 故障検知の閾値 FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N 4.4 N O T E BUS 診断 診断の概要 4.4.1 BUS に対するテスト技法は”Inspection using test pattern”を使用します。詳細は IEC61508-7 A7.4 を参照し て下さい。 BUS 診断で診断する機能を以下に挙げます。 [診断する BUS 機能] ・I-code bus ・D-code bus ・System bus ・DMAC bus ・DSTC bus (FM4 のみ) ・ビットバンド制御 ・アンアラインドアクセス ・アービトレーション BUS の定期診断は、診断する BUS 機能を、FM3 ファミリの場合は 3 つに分割、FM4 ファミリの場合は 4 つに分割して診断します。 設定可能な内容 4.4.2 BUS 診断の API を使用するにあたり、ユーザが設定可能な内容を下記にまとめます。 1. 故障検知の閾値 April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 21 A P P L I C A T I O N N O T E 5. STL 性能 以下に、IAR Embedded Workbench for ARM6.60 kickstart 版を用いた STL の性能を示します。 測定対象のマイコンは FM3(MB9BF506R)です。 5.1 ROM/RAM サイズ 表 5-1 にコンポーネント毎の ROM/RAM サイズを記載します。 表 5-1 ROM/RAM サイズ 単位は byte ROM サイズ(合計) RAM サイズ(合計) RAM 診断 584 ROM 診断※ 298 28 BUS 診断 784 248 CPU 診断 7742 148 合計 9408 448 24 ※ROM 診断に記載されている ROM サイズは、CRC コードの算出にハードウェアマクロを使用した場合の 数値です。ソフトウェアを使用した場合、1306(byte)になります。 22 CONFIDENTIAL FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N 5.2 N O T E 診断処理速度 コンポーネント毎の診断処理速度を記載します。数値は正常系で測定したものです。 5.2.1 RAM の診断処理速度 RAM のスタートアップ診断と定期診断の処理速度を表 5-2, 表 5-3 にそれぞれ記載します。 表 5-2 RAM のスタートアップ診断処理速度 領域数 診断領域(byte) 1 スタートアップ診断(ms) 100 12 1 500 278 1 1000 1100 8 100 14 8 500 290 8 1000 1130 表 5-3 RAM の定期診断処理速度 診断領域(byte) 定期診断(μs) 19.6 4(固定) 5.2.2 ROM の診断処理速度 ROM のスタートアップ診断と定期診断の処理速度を表 5-4, 表 5-5 にそれぞれ記載します。 表 5-4 ROM のスタートアップ診断処理速度 CRC コード算出方法 領域数 診断領域(byte) スタートアップ診断(μs) HW 1 500 110 HW 1 1000 211 HW 4 500 110 HW 4 1000 211 SW 1 500 380 SW 1 1000 752 SW 4 500 380 SW 4 1000 752 表 5-5 ROM の定期診断処理速度 CRC コード算出方法 HW 定期診断(μs) 10 9.6 HW 50 13.8 HW 100 19 SW 10 4.5 SW 50 19.4 SW 100 37.6 April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL テスト対象領域(byte) 23 A P P L I C A T I O N 5.2.3 N O T E CPU の診断処理速度 CPU のスタートアップ診断にかかる処理速度は、246μs です。 定期診断にかかる処理速度は表 5-6 に記載します。測定は命令郡(例えば、LDR,LDRB,LDRH は LDR 郡)ご とに実施しています。 表 5-6 CPU の定期診断処理速度 命令群 定期診断(μs) ADD 10.2 ASR 8.2 論理演算 17.4 分岐 18 比較 10.4 IT 20.2 LDR 8.4 LDM 13.8 STR 7.8 STM 10.2 SHIFT 5.2.4 5 MLA 4.4 MOV 14 REV 5.6 SUB 6.6 SXT 7.2 レジスタ 7.2 BUS の診断処理速度 BUS のスタートアップ診断にかかる処理速度は、88.8μs です。 定期診断にかかる処理速度は表 5-7 に記載します。測定は、分割した 3 つのテスト(TestNo1~3)ごとに実 施しています。 表 5-7 BUS の定期診断処理速度 TestNo 24 CONFIDENTIAL 定期診断(μs) TestNo1 9.68 TestNo2 76 TestNo3 2.8 FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N N O T E 6. 参考文書 [1]. IEC61508 1-7(ed2.0) [2]. ARMv7-M Architecture Application Level Reference Manual, 2008 [3]. MB9BF504NB-DS706-00021-2v0-J.pdf (MB9B500 Data Sheet) [4]. MB9B560R-DS709-00001.pdf(MB9B560R Data Sheet) [5]. MB9Bxxx-MN706-0002-4v0-E (FM3 Series Periphery Manual) [6]. MN709-00001-1v0-J.pdf(FM4 Series Periphery Manual) [7]. Cortex-M3 Revision r2p1 Technical Reference Manual [8]. Cortex-M4 Revision r0p1 Technical Reference Manual April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 25 A P P L I C A T I O N N O T E 7. 付録 7.1 フラッシュの CRC コード作成方法 4.1ROM 診断で使用するデータ/プログラムの CRC コードの生成方法について、IAR Embedded Workbench の例を以下に説明します。詳細は IAR のマニュアルを参照してください。 7.1.1 コマンドラインの起動 「プロジェクト」→「オプション」→「リンカ」→「追加オプション」タブを選択し、"コマンドラインオ プションの使用"にチェックを入れます。 26 CONFIDENTIAL FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N 7.1.2 N O T E コマンドの入力 --place_holder コマンド CRC コードを作成して ROM にセクションを生成する為に、"--place_holder"オプションを使用します。 セクションのサイズを 4byte、アライメントを 1 に設定するため下記のコマンドを設定します。 --place_holder __checksum,4,.checksum,1 --fill コマンド CRC コードを作成するためには、対象領域の未使用領域に対して任意の値をフィルする必要があります。 そのために、"--fill"コマンドを使用します。対象領域 0x00000000-0x00003FFF にフィル値 0xFF を設定す るコマンドは以下の設定となります。 --fill 0xFF;0x0000-0x3FFF 対象領域 0x00000000-0x00003FFF、0x5000-0x5FFF、0x6500-0x6FFF にフィル値 0xFF を設定するコマン ドは以下の設定となります。 --fill 0xFF;0x0-0x3FFF;0x5000-0x5FFF;0x6500-0x6FFF --checksum コマンド 使用する CRC のアルゴリズムを設定します。CRC コードを格納するシンボル名を__checksum、サイズを 4byte、アルゴリズムを CRC32、計算を LSB first、CRC コードを 0xFFFFFFFF で初期化、対象領域 0x00000000-0x00003FFF、0x5000-0x5FFF、0x6500-0x6FFF の設定をするコマンドは以下のようになりま す。 --checksum __checksum:4,crc32:mi,0xffffffff;0x0-0x3FFF;0x5000-0x5FFF;0x6500-0x6FFF 0.,0.,0.を入力した後、"OK"を押してウィンドウを閉じます。 April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 27 A P P L I C A T I O N 7.1.3 N O T E メッセージウィンドウ表示内容の設定 メイク時のメッセージをメッセージウィンドウへ表示するように設定します。 「ツール」→「オプション」→「メッセージ」を選択します。"ビルドメッセージの表示(S):" のコンボ ボックスで "全て" を選択します。右下の"OK"または"適用"ボタンを押します。 28 CONFIDENTIAL FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N 7.1.4 N O T E リンカ設定ファイルの設定 生成した CRC コードをフラッシュメモリに格納するため、リンカ設定ファイルに設定を追加します。debug モードの場合は” mb9bf506_ram.icf”ファイル、release モードの場合は” mb9bf506.icf”ファイルです。0x8000 番地に CRC コードを格納する場合は以下の設定を追加します。 define symbol __ICFEDIT_checksum_start__ = 0x00008000; define block CHECKSUM {ro section .checksum}; define symbol __ICFEDIT_checksum_start__ = 0x00008000; 7.1.5 CRC コード作成 メイク(ビルド) を実行し、CRC コードが作成されたことを確認します。 - 以上 - April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 29 A P P L I C A T I O N N O T E 8. 主な変更内容 ページ 場所 変更箇所 Revision 1.0 - - Initial release Revision 2.0 はじめに 5 1 20 4.3.1 診断の概要 21 4.4 30 CONFIDENTIAL BUS 診断 FM4 に対応 CPU 診断に FM4 の DSP 命令と FPU 命令を追加 BUS 診断に DSTCbus テストを追加 FM3_AN706-00048-2v0-J, April 24, 2014 A P P L I C A T I O N N O T E MN706-00048-2v0-J Spansion Application Note FM3 Family, FM4 Family 32-BIT MICROCONTROLLER IEC61508SIL2 セルフテストライブラリ アプリケーションノート April 2014 Rev. 2.0 Published: Edited: Spansion Inc. Marketing Communications Dept. April 24, 2014, FM3_AN706-00048-2v0-J CONFIDENTIAL 31 A P P L I C A T I O N N O T E Colophon The products described in this document are designed, developed and manufactured as contemplated for general use, including without limitation, ordinary industrial use, general office use, personal use, and household use, but are not designed, developed and manufactured as contemplated (1) for any use that includes fatal risks or dangers that, unless extremely high safety is secured, could have a serious effect to the public, and could lead directly to death, personal injury, severe physical damage or other loss (i.e., nuclear reaction control in nuclear facility, aircraft flight control, air traffic control, mass transport control, medical life support system, missile launch control in weapon system), or (2) for any use where chance of failure is intolerable (i.e., submersible repeater and artificial satellite). Please note that Spansion will not be liable to you and/or any third party for any claims or damages arising in connection with above-mentioned uses of the products. Any semiconductor devices have an inherent chance of failure. You must protect against injury, damage or loss from such failures by incorporating safety design measures into your facility and equipment such as redundancy, fire protection, and prevention of over-current levels and other abnormal operating conditions. If any products described in this document represent goods or technologies subject to certain restrictions on export under the Foreign Exchange and Foreign Trade Law of Japan, the US Export Administration Regulations or the applicable laws of any other country, the prior authorization by the respective government entity will be required for export of those products. Trademarks and Notice The contents of this document are subject to change without notice. This document may contain information on a Spansion product under development by Spansion. Spansion reserves the right to change or discontinue work on any product without notice. The information in this document is provided as is without warranty or guarantee of any kind as to its accuracy, completeness, operability, fitness for particular purpose, merchantability, non-infringement of third-party rights, or any other warranty, express, implied, or statutory. Spansion assumes no liability for any damages of any kind arising out of the use of the information in this document. ® ® ® TM Copyright © 2012-2014 Spansion Inc. All rights reserved. Spansion , the Spansion logo, MirrorBit , MirrorBit Eclipse , TM ORNAND and combinations thereof, are trademarks and registered trademarks of Spansion LLC in the United States and other countries. Other names used are for informational purposes only and may be trademarks of their respective owners. 32 CONFIDENTIAL FM3_AN706-00048-2v0-J, April 24, 2014