OS :NORTi4 1.18a
開発環境 :HEW4
コンパイラ:SHC C/C++ Compiler ver.9.01
CPUボード :AP-SH4A-0A(アルファプロジェクト社製)
1.ROMにプログラムを焼く
2.パワーオンリセットでバスの設定、ROMとSDRAMを使用可
3.ROM上の初期化関数へジャンプ
4.初期化領域をゼロクリア、初期化領域データのメモリコピー、
ROM上のプログラムをSDRAMへコピー
5.Cのmain()関数を呼び出し(RAMへジャンプ)
http://www007.upp.so-net.ne.jp/SY-Firm-Ware/hew/ …
http://hitachisoft.jp/Products/SH-C/support/faq_ …
上記のサイト等を参考に行いましたがうまく動きません。
どこで問題が起きているか確認できるようにモトローラSフォーマット
ファイルではなくabsファイルをROMに書き込みデバッグしながら行っています。(ROM上でのデバッグはよくないようなのですが、原因がつかめないので。。。どうしようもなくて。。)
リセットベクターからいきなりGOするとmainに飛んでくれないんです。
付属のサンプルプログラムで試した時もいきなりGOするとmainにいってくれません。
ステップ実行で1ステップづつ実行していってmainループの中を一通り動かしてからGOすると動くような状況です。
初期化領域のゼロクリアや、データコピー、プログラムのコピーはちゃんと行われています。
何が悪いのかわからず困っています。
宜しくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
SH7780はNORTi対応ですし、アルファのボードは割りと使いやすいはずなのですぐ動くと思いますよ。
頑張ってください。ICEでは動きますか?ICEでもmain()が起動しないのですか?
ICE無しで起動しないのなら、boot処理のMMU設定を疑ってください。
チェックすべきところは、
・ライブラリの浮動小数点有り無しをあわせる
・割り込みを止めてsyssta()まで走るまで初期化処理(アセンブラ)を追う
・セクションマップがハードに適合するか調べなおす。
・SDRAMの初期化パラメータを見直す
それでもダメなら、NORTiでサポートする(そのまま動作する)ターゲットボードを買ってきて、まず動作する環境を整えることからはじめてはいかがかと思います。
この回答への補足
>ICEでは動きますか?ICEでもmain()が起動しないのですか?
RAM上で実行した際という事でしょうか?
問題なく実行できます。
>・ライブラリの浮動小数点有り無しをあわせる
現状あっております。
>・割り込みを止めてsyssta()まで走るまで初期化処理(アセンブラ)を追う
アセンブラで追いながらステップ実行していくと
syssta移行マルチタスクのmain関数にジャンプする事はジャンプします。(ステップ実行でないとここまで来れません(泣))
なぜ、微妙な表現かと言いますと1ステップ実行する毎にROM上にある
初期化領域のゼロクリア処理やデータコピー処理が実行されるので
1ステップに約4秒もかかってしまうのです。
動作としては完全におかしいのですがアセンブラ上でそこに処理が飛ぶような記述がないので何が悪いのかわからない状況です。。。
>・セクションマップがハードに適合するか調べなおす。
ROMはP2(ノンキャッシュ領域)、RAMはP0(キャッシュ領域)を使用しております。
FLASH MEMORY 8MBYTE H'A0000000~H'A07FFFFF
イメージ H'A0800000~H'A3FFFFFF
...
DDR-SDRAM H'0C000000~H'0FFFFFFF
【SECTION】
VECT(リセットベクター) H'A0000000~H'A00007D7
INIT(メモリ初期化処理) H'A0001000~H'A0001173
P(プログラム) H'A0002000~H'A008A1A5
C(定数) H'A008A1A8~H'A00AC9A3
D(初期値ありデータ) H'A00AC9A4~H'A0141B37
...
X(プログラムコピー先) H'0C002000~H'0C08A1A5
B(初期化領域) H'0C08A1A8~H'0C6E412F
R(初期値ありデータコピー先) H'0C6E4130~H'0C7792C3
STACK H'0C7792C4~H'0D7792C5
>・SDRAMの初期化パラメータを見直す
SDRAM自体は使用できているので多分大丈夫だと思ってます。
ここが原因なんですかね??
SDRAMを初期化方法はROM化した場合は異なるものなのでしょうか?
この辺りは全くわからなくて。。。
No.2
- 回答日時:
ステップ実行で動いて、goで飛ぶのは、SD-RAMの初期化パラメータがおかしいか、BSCの設定を間違えているからだと思います。
おまけに、ステップ実行に4秒掛かるのは異常ですね。FLASH上のコードにソフトブレークをかける方式になってませんか?
先に、SD-RAM上でデバッグできるように設定することをお勧めします。
すでにご存知のようですが、NORTiのBootでは、SDRAMとMMUやBSCの設定を行って、FLASHからSDRAMにコードや定数を転送してSDRAM上のコードを実行します。だから、SDRAM上で動かないことには話になりません。
ICE利用の際のSD-RAMパラメータは、ICEの初期化マクロに定義します。初期化マクロをいじって完全に動くパラメータを決めたら、NORTiのboot処理を修正したらいいと思います。
SDRAMで動いてしまえば、あとはBootコードを見ながらセルフブートできるようにするだけです。
この回答への補足
返信が遅くなりまして申し訳ありません。
>SD-RAMの初期化パラメータがおかしいか、BSCの設定を間違えているからだと思います。
そうですか。SDRAMかBSC。
確かにノータッチなので怪しいかなとは思ってマニュアル
片手に見たんですが、SDRAMの初期化シーケンスは間違って
ないんですよね。
それとも、ROM化する時はオートリフレッシュからセルフリフレッシュ
にしなければいけないとか、アクセスモードをBANKクローズから
BANKオープンモードにしなければいけないとか、そういったSDRAMを
使用する上での基本ルールみたいなものがあるのでしょうか??
ハードウェアマニュアルに「初期化シーケンス方法を誤ると、デバイス
の破壊を招く可能性がある」なんて書いてあるからおっかなくてあんま触れないんです。
>FLASH上のコードにソフトブレークをかける方式になってませんか?
はい、なっておりましたのではずしました!
>NORTiのBootでは、SDRAMとMMUやBSCの設定を行って・・・
MMUまであるんすか・・・。
あ~、まいった。
>FLASHからSDRAMにコードや定数を転送してSDRAM上のコードを実行します。
定数というのは初期値ありデータでいいんですよね??
>ICE利用の際のSD-RAMパラメータは、ICEの初期化マクロに定義します。
???
ICE:PALMiCE2
デバッガ:CSIDE
を利用しております。
マクロで初期化パラメータを定義。
見直します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
- ノートパソコン Windowsが起動しない状態からデータを回収したい 初質問失礼します。 先日、Windowsのデー 5 2023/06/18 17:50
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
- ゲーム 中華ゲーム機への質問です 先日RG351Mという解体ゲーム機を買いました 色々いじっていたところRO 0 2023/02/10 05:54
- docomo(ドコモ) SO-04EのカスタムROMについて 3 2022/05/07 08:36
- Excel(エクセル) Excel ハイパーリンク設定について 教えてください 例なんですが、 VBAにてファイル1の列Gに 2 2022/11/04 17:52
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
MACで動く実行ファイルをWindow...
-
プログラムの再起動
-
初期化は、main関数の外で...
-
プログラミング ソースコード
-
OPENCVのサンプルプログラムに...
-
バックグラウンドで実行される...
-
なんかC言語でプログラム書いて...
-
C++でCtrl+Cを無効化したい
-
あるプログラム実行中に別のプ...
-
C言語で途中までしか、プログラ...
-
system関数を使用してsuコマン...
-
C言語のFFTについて教えてくだ...
-
プログラム初心者です Pythonで...
-
sendkeysにてALT+CTRL+INSERTを...
-
緯度、経度の 10進法と 60進法...
-
タスクマネージャーのプロセス...
-
Webプログラムってネイティブア...
-
Excelでのセル内容の高速消去方法
-
起動中の他のプログラム(orプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
なんかC言語でプログラム書いて...
-
プログラミング ソースコード
-
MACで動く実行ファイルをWindow...
-
実行時エラー429
-
Windows10でDOSゲーム
-
VB上で実行中の無限ループの止め方
-
他のPC上にあるexeを、そのP...
-
sendkeysにてALT+CTRL+INSERTを...
-
VBAで外部プログラムを非表示で...
-
システム資源とは?
-
プロセス間通信について
-
アクセス[ファイルを開かずに、...
-
C言語でプログラムを再起動
-
C言語で途中までしか、プログラ...
-
system関数を使用してsuコマン...
-
終了してもプログラムが実行し...
-
PIC のデータEEPROMに書き込み...
-
実行中の実行ファイルの上書き
-
他の実行ファイルを実行するプ...
おすすめ情報