CS+初心者のIKUZOです、先ほど来からRX63NのUSBでターミナル動作とブロック転送ができるようになりましたので、下記のようなことをやろうとしましたが失敗しました
1.DebugBuildを追加します
2.sub.c とsub.h を追加します
3.セクションPSUB,DSUB,0x10000を追加します
4.sub.c中で#pragma section SUBを宣言します
5.sub.c中でint sub_proc(char *str){printf("*");}を作成します
6.これでDebugBuildをビルドします、結果ビルドエラー無し
7.出来上がった.mot 部分から 0x10000 ~0x18000までをバイナリ化してロードモジュールにする
8.DefaultBuildに切り替えてビルド(sub.c関連は無効)
9.DefaultBuildの.motをFDTでROMにプログラム
10.基板を起動、ターミナル起動、USBターミナルからSRAMの0x10000へロードモジュールを転送
11.本プログラムのコマンドラインから0x10000のロードモジュールを呼び出し
12.暴走はしないもののそれらしい動作はいたしません
13.DebugBuildマップ情報を出力させますと、PSUB,DSUBは4Byte程しか出力されていませんでした。
14.これは失敗と判断しました。
良い方法を提案いただけませんでしょうか?
sub.c内は #pragma section SUB char *string="12345678"; int sub_proc(char *str) { printf("sub_procのアドレスは%08lX\r",(long)&sub_proc); return CMD_OK; } ですので、
#pragma section SUB char *string="12345678"; int sub_proc(char *str) { printf("sub_procのアドレスは%08lX\r",(long)&sub_proc); return CMD_OK; }
文字列 "12345678" はリテラル領域である Lセクションに配置され、期待した動作とならないと思います。
#pragma section SUB const char string[]="12345678";
とすると CSUB_1 に置かれるようです。
fujita nozomuさん 有益な情報を調べていただきまして感謝します、CSUB_1のセクションも追加してありましたのでprint_f(string);これもやってみましたが表示はしないです、昨日はもう諦めかけていましたが、 昨日までのやり方は 1.DefaultBuild →最初からいじらないROMのみsub.cは除外 2.DebugBuild→全てのセクションをRAMに割り付けたものsub.cは除外(ロードサイズ大) 3.SubBuild→DefaultBuildからsub.cをRAMに割り付けたもの(ロードサイズ小) にしていますがDefaultBuildの生成.motをFDTで書き込み、SubBuildのsub.cを転送実行していました 今日の新しいアイデアはSubBuildをFDTで書き込み、SubBuildのsub.cを転送実行すればprintfのアドレスを探したりせず、そのままできるのではないかと、FDTがエラーになるなら.motのRAMの部分を削除すれば良いのではないかと思った次第です。
printf() の第 1引数の文字列もあるので
#pragma section SUB const char string[]="12345678"; #define CMD_OK 0 int sub_proc(char *str) { static const char fmt[]="sub_procのアドレスは%08lX\r"; printf(fmt,(long)&sub_proc); return CMD_OK; }
としてコンパイルしたところ、使用されるセクションは PSUB と PCSUB_1 のみとなりました。
皆様、やっと念願の内容がかないました、つまり毎回ROMに書き込むのではなくRAM上でUSBによって高速な実行環境を構築して、ソフト開発をスピードアップするというような、今日第一歩を開始できました、苦労しました、全ては皆さまが教えてくださったおかげです、改めて感謝いたします、やりかたとしては、YRDKRX63N評価ボードはRAM実装できないため、諦めました、RX631ですが手元にあったのでこれのCS1にRAM512KByteを実装いたしました、外部バスが外に出るようにしてRAMが中から見えるようにいたしました、プロジェクトにDebugBuildを追加いたしました、同時にPResetPRGのデフォルトセクション0xFFF00000をCS1セクション07000000 に変更いたしました、そして分割出力ファイルを.mot=07000000-0707FFFFに設定いたしました、USBによりCS1に.motを転送後、制御をsubコマンドで07000000移しますと問題なく動作いたしました(下記画面)後はロード後に自動的にジャンプするように作りこめば、出来上がりとなります
これから十分なスピードで開発できます、重ねて感謝いたします。