SWRST

SWRST ( Software Rest )レジスタは、ADSP-2191をソフトウェアリセットするためのレジスタです。このレジスタに0x0007を書き込むと、チップ全体をリセットします。システムボードにはリセットがかかりませんので注意してください。

SWRSTでもっとも注意すべきは、シャドーFIFOのフラッシュです。ADSP-2191コアはプログラマからは見えない書き込み用シャドーFIFOを持っています。ここには最大2回分のメモリー書き込みトランザクションが待ち行列を作っています。SWRSTに対する書き込みは即座にDSPをリセットしますので、このFIFOの内容がメモリーに反映されていない可能性があります。

ハードウェアリセットと異なり、ソフトウェアリセットはメモリーの値を使ってブート後の状態を制御することがあります。その場合、シャドーFIFOの値を失うのは大きな問題になります。この問題を防ぐには、捨て変数に二回連続で書き込みを行ってください。これでFIFOの内容は確実にフラッシュされます。そのあとにSWRSTレジスタに書き込みを行います。

レジスタの構造

このレジスタは16ビットのレジスタです。内部にビットフィールドなどはありません。また、リセット後は初期化されません。書き込む場合は0x0007を書き込んでください。

図1 レジスタの構造

API

C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hで行われています。SWRSTにアクセスする前には必ずIOPGにClock_and_System_Control_Pageを設定してください。

// #include <sysreg.h>
// #include <def2191.h>

sysreg_write(sysreg_IOPG, Clock_and_System_Control_Page)     // クロックページに設定

io_space_write(SWRST, 7)          // ADSP-2191をリセットします。
変数 = io_space_read(SWRST)       // SWRSTの値を取得。無意味です

参照情報

項目 マニュアルのページ等
レジスタ説明 HR B-17
シャドーFIFO HR 5-15
2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |