SWRST ( Software Rest )レジスタは、ADSP-2191をソフトウェアリセットするためのレジスタです。このレジスタに0x0007を書き込むと、チップ全体をリセットします。システムボードにはリセットがかかりませんので注意してください。
SWRSTでもっとも注意すべきは、シャドーFIFOのフラッシュです。ADSP-2191コアはプログラマからは見えない書き込み用シャドーFIFOを持っています。ここには最大2回分のメモリー書き込みトランザクションが待ち行列を作っています。SWRSTに対する書き込みは即座にDSPをリセットしますので、このFIFOの内容がメモリーに反映されていない可能性があります。
ハードウェアリセットと異なり、ソフトウェアリセットはメモリーの値を使ってブート後の状態を制御することがあります。その場合、シャドーFIFOの値を失うのは大きな問題になります。この問題を防ぐには、捨て変数に二回連続で書き込みを行ってください。これでFIFOの内容は確実にフラッシュされます。そのあとにSWRSTレジスタに書き込みを行います。
このレジスタは16ビットのレジスタです。内部にビットフィールドなどはありません。また、リセット後は初期化されません。書き込む場合は0x0007を書き込んでください。
図1 レジスタの構造
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 |