(toppers-users 4551) Re: toppers/atk1のSH7147への移植

Masaki Muranaka monamour @ monaka.org
2016年 6月 7日 (火) 21:39:09 JST


みなさま、こんばんは。

SuperH から離れて久しいので、正解は申し上げられませんけれども。

まず、SH系は、広く知られている通り典型的なRISCで遅延スロットを持ちます。
SH2系も後期になると分岐命令が増えてくるのですが、SH7147はAでもeでもないので
考慮しなくても良いはずです。

遅延スロット上でステータスレジスタを弄らないからダメなのかというと
(記憶曖昧なので断言はできませんが)たぶんそれは違うかなと思います。
NCESのwebページに、遅延スロットを無駄にしているコード例があります。
http://www.nces.is.nagoya-u.ac.jp/NEXCESS/blog/index.php?itemid=72
アーキテクチャはSH3系ですが、ご承知の通り、SH2系とは親類関係です。

この辺りを起点にして追いかけていけば、問題の切り分けが(少しだけ)楽に
なるのではと思ったりします。


2016年6月4日 11:23 Y.Yoshimi <bay.dragoon @ gmail.com>:
> 初めまして。 吉見と申します。
> このMLの主旨とは離れる内容なのかもしれませんが、質問(相談)をさせてください。
>
>
> 趣味でマイコンプログラミングをしているのですが、toppersを用いたプログラミングに興味を持ち、見よう見まねでSH7147にtoppers/atk1を移植してみました。
>
>
> 移植したものの、上手く起動せず、
>
> cpu_Support.srcファイル内、activate_rの
>
> jmp @r2
> ldc r3 , sr ; 遅延スロット、割り込み許可
>
>>
> ldc r3 , sr ; 遅延スロット、割り込み許可
> jmp @r2
> nop
>
> としたら、起動するようになりました。
>
> しかし、その後モータを動かしていると、
> 頻繁にフリーズするようになりました。
>
> モータ制御中に止まることがあるので、モータ制御のプログラムが悪い可能性もありますが、
> 上記の変更の結果、「割り込み許可しちゃいけない所で割り込み許可をしてしまったこと」が原因なのかと考えていますが、元に戻すと起動しないという状況で…。
>
> もし、移植時に似たようなトラブルを抱えたことがある方がいらっしゃいましたら
> 何かアドバイスをご教示くださると有難いです。
>
> 以上、よろしくお願いします。