「ルネサスの本気」、SH-2Aセミナーに行ってきました。LESSON1 SH-2とSH-2Aの比較1 [RX&SH&H8]
まあ色々と変わっています。例えば動作周波数は従来のSH-2の倍以上、100MHz~200MHz動作となっています。
命令も随分と追加され、特にコントローラー系の命令としてはビット操作命令が追加されています。
まあ勿論最近のマイコンではビット操作命令自体は普通なんですが、SH-2にはそれが無かった(笑)。
これ、何がメリットかと言えば、ビット操作命令が存在すると言う事は1命令でビットの操作が可能と言う事です。
従来のSH-2では周辺IOの特定のビットを操作する時、1.読み込んで、2.変更して、3.書き戻してと最低3命令で実現していましたが、その間に割り込まれてしまい、その割り込みの中でも同じ周辺IOに対して操作が行われた場合、割り込みの中で行った操作が保証されない事になってしまいます。
例えばこうです。
1.mainの中でポートのデータレジスタを読み込み。
2.割り込み発生。
3.同じポートのデータレジスタを読み込み。
4.bit1を変更。
5.データレジスタに更新した値を書き戻し。
6.割り込み終了。
7.mainの中でbit0を変更。この時、bit1には割り込み前の値が記憶されている事に注意。
8.データレジスタに更新した値を書き戻し。
と、折角割り込みでbit1の値を更新したにも関わらず、その直後で古い値に戻されてしまいました。
しかしbit操作命令を使用するとこうなります。
1.mainの中でbit操作命令を実行。同時に割り込み要求も発生するがbit操作命令が完了しない限り割り込みには入れない。
2.割り込み発生。
3.bit操作命令の実行。
4.割り込み終了。
と、bit操作命令が実行している間は誰にも邪魔されずに完了する事ができるので、結果、先に挙げたような問題が発生しないと言う事です。
※RTOSを使った場合もSH-2の場合は同様の問題が発生します。
命令も随分と追加され、特にコントローラー系の命令としてはビット操作命令が追加されています。
まあ勿論最近のマイコンではビット操作命令自体は普通なんですが、SH-2にはそれが無かった(笑)。
これ、何がメリットかと言えば、ビット操作命令が存在すると言う事は1命令でビットの操作が可能と言う事です。
従来のSH-2では周辺IOの特定のビットを操作する時、1.読み込んで、2.変更して、3.書き戻してと最低3命令で実現していましたが、その間に割り込まれてしまい、その割り込みの中でも同じ周辺IOに対して操作が行われた場合、割り込みの中で行った操作が保証されない事になってしまいます。
例えばこうです。
1.mainの中でポートのデータレジスタを読み込み。
2.割り込み発生。
3.同じポートのデータレジスタを読み込み。
4.bit1を変更。
5.データレジスタに更新した値を書き戻し。
6.割り込み終了。
7.mainの中でbit0を変更。この時、bit1には割り込み前の値が記憶されている事に注意。
8.データレジスタに更新した値を書き戻し。
と、折角割り込みでbit1の値を更新したにも関わらず、その直後で古い値に戻されてしまいました。
しかしbit操作命令を使用するとこうなります。
1.mainの中でbit操作命令を実行。同時に割り込み要求も発生するがbit操作命令が完了しない限り割り込みには入れない。
2.割り込み発生。
3.bit操作命令の実行。
4.割り込み終了。
と、bit操作命令が実行している間は誰にも邪魔されずに完了する事ができるので、結果、先に挙げたような問題が発生しないと言う事です。
※RTOSを使った場合もSH-2の場合は同様の問題が発生します。
SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる!
- 作者: 鹿取 祐二
- 出版社/メーカー: 電波新聞社
- 発売日: 2005/12
- メディア: 単行本
2010-01-27 00:10
nice!(0)
コメント(0)
トラックバック(0)
コメント 0