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

Y.Yoshimi bay.dragoon @ gmail.com
2016年 6月 8日 (水) 22:17:17 JST


邑中さま、今井様

ご回答、ありがとうございます。
一つ、原因を潰すことができました。ありがとうございます。

まだトラブルは解決できていませんが、ご教示いただいたURLも参考にしつつ、
1つずつ潰せるところを潰して、直していきたいと思います。


2016年6月8日 9:36 Masaki Muranaka <monamour @ monaka.org>:
> みなさま、おはようございます。
>
> 寝て起きても気に掛かったので、調べました。
>
> | SH7147 グループ ハードウェアマニュアル 32 Rev.3.00
> |
> | 5.8.4 スロット不当命令例外処理に関する注意事項
> | 本 LSI のスロット不当命令例外処理の仕様で、従来の SH-2 と異なる点があります。
> |  • 従来のSH-2:LDC Rm,SR、LDC.L @Rm+,SRをスロット不当命令の対象としません。
> |  • 本LSI :LDC Rm,SR、LDC.L @Rm+,SRをスロット不当命令の対象とします。
>
> …とのことで、分岐前後の命令並び替えは、適切です。
>
> さらにググると、SH-Tiny が出た辺りからのSH-2 コアは、いずれも SH7147 グループと
> 同じ挙動になっているっぽい? という話が見つかります。
> https://osdn.jp/projects/hos/forums/696/12988/35109/
> // 個人的には、その頃から SH-2 コアに触らなくなったので知りませんでした。
>
> 2016年6月7日 21:39 Masaki Muranaka <monamour @ monaka.org>:
>> みなさま、こんばんは。
>>
>> 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
>>>
>>> としたら、起動するようになりました。
>>>
>>> しかし、その後モータを動かしていると、
>>> 頻繁にフリーズするようになりました。
>>>
>>> モータ制御中に止まることがあるので、モータ制御のプログラムが悪い可能性もありますが、
>>> 上記の変更の結果、「割り込み許可しちゃいけない所で割り込み許可をしてしまったこと」が原因なのかと考えていますが、元に戻すと起動しないという状況で…。
>>>
>>> もし、移植時に似たようなトラブルを抱えたことがある方がいらっしゃいましたら
>>> 何かアドバイスをご教示くださると有難いです。
>>>
>>> 以上、よろしくお願いします。