9S08 (略して68HCS08またはS08 )は、もともとモトローラ社が製造し、後にフリースケールセミコンダクタ社[1]、現在はNXP社が製造している8ビットマイクロコントローラ(μC)ファミリーで、モトローラ6800マイクロプロセッサの流れを汲む。CISCマイクロコントローラである。68HC08のわずかに拡張された派生型で、老朽化した68HC05マイクロコントローラと上位互換性があり、ほぼすべてのタイプの組み込みシステムに使用されている。大型の製品は、最大128 KiBのフラッシュと、バンク切り替え可能な16 KiBのアドレス空間と、任意のアドレスからのデータフェッチを可能にするアドレス/データレジスタペアを可能にするシンプルなメモリ管理ユニット(MMU)を介して8 KiBのRAMを提供する。使用されるページング方式により、理論上は最大4 MBのフラッシュが可能になる。[2]
MMU 搭載のバリアントでは、CALL と RTC という 2 つの追加 CPU 命令が提供され、ページ メモリに配置されたサブルーチンを処理するときにそれぞれ JSR と RTS の代わりに使用され、ページ間のサブルーチンの直接呼び出しが可能になります。1 回のアトミック操作で、CALL は PC だけでなく、1 つの追加アドレス バイトである PPAGE (プログラム ページ) バイトも保存し、RTC は復元します。この追加バイトのため、またスタックのバランスを保つために、RTC で終わるサブルーチンは、同じメモリ ページに存在する場合でも、常に CALL で呼び出す必要があります。
内部的には、9S08命令セットはスタックインデックスアドレッシングモードの追加を除いて6805と上位互換性があります。(SPレジスタを使用する命令は、オペコードの先頭にバイト0x9Eが付きます)。1つの8ビットアキュムレータA、1つの16ビットインデックスレジスタHX(その下位Xは、6805互換命令によって独立して使用されます)、条件コードレジスタ、16ビット スタックポインタ、およびプログラムカウンタがあります。Hレジスタを持たない6805との互換性のため、HXレジスタの最上位バイトHはリセット中にクリアされ、HはどのISR(割り込みサービスルーチン)に入っても自動的にスタックされない唯一のレジスタです。[3] : 81 6805とは異なり、スタックは適切な命令を使用してメモリ内のどこにでも配置できます。
9S08 ファミリをプログラミングまたはデバッグする標準的な方法は、標準の 6 ピンBDMインターフェイスを使用することです (マイクロコントローラとの通信には 1 つのピンのみが使用されます)。
さまざまなメンバーやパッケージで、さまざまな周辺機器が利用できます。SCI、SPI、8/10/12 ビット A/D、(C)PWM、入力キャプチャ、出力比較はほとんどのメンバーで共通ですが、外部バスは利用できません。一部のメンバーには、CANコントローラが組み込まれています。
コンパイラサポート
S08 は、無料の C コンパイラSDCCによって部分的にサポートされ (例: MMU サポートなし) 、CodeWarriorによって完全にサポートされています。
参考文献
- ^ 「NXP Semiconductors | 自動車、セキュリティ、IoT」www.nxp.com . 2021年2月18日閲覧。
- ^ Viramontes, Eduardo; Li, Rick (2008 年 5 月)。9S08 デバイスのメモリ ページングの理解(PDF) (アプリケーション ノート)。Rev. 0。Freescale テクニカル サポート。AN3730。
- ^ HCS08 ファミリ リファレンス マニュアル(PDF) . Rev. 2. Freescale Semiconductor. 2007 年 5 月. HCS08RMv1/D.
外部リンク
- HCS08/9S08 プロセッサ ファミリ
- Win/Linux/DOS ベースのフリーウェア マクロ クロスアセンブラ (ASM8)
- ASM8用に書かれたアセンブリ言語コードの例
