フラッシュメモリにオブジェクトを配置する方法

はじめまして。

よろしくお願いいたします。

c言語については理解できていると思っているのですが、

マイコンプログラミングがいまいち理解できていない状態です。

現在、ROM領域に入らない大きさのオブジェクトを外部フラッシュに格納する方法で困惑しております。

リンクディレクティブによって設定できるそうなのですが、リンクディレクティブ事態がよくわかりません。

CubeSuiteのヘルプからサンプルファイルを参照し、

内蔵ROM、内蔵RAMの設定があることは確認できました。

(この部分にどんなことが書いてあってどう設定するのかは理解できていません。)

その後、#pragma 指定で行うようなのですが

ここもどう指定してよいかが理解できません。

#pragma section で変数や関数を置くことはわかっているのですが、

オブジェクトやライブラリを置く方法がわかりません。

リンクディレクティブを設定し、

フラッシュ領域にオブジェクト、ライブラリを格納する方法を

ご教示いただけないでしょうか。

よろしくお願いいたします。

  • masa さん

    最初は誰でも、セクション?、#pragma ?なんのこっちゃ!、なんでこんなのあるの面倒くさい、と思いますが使えるようになると「なかなか便利」と如何にもマイコンのプロになったような気がします、頑張ってください。

  • lKUZO様

    おかげさまで、該当のデータをフラッシュに格納することができたようです。

    (メモリマップを出力し設定したセグメント部分のデータが増えていました)

    ただ、容量オーバ的なメッセージは相変わらずでるのですが、これはリンクディレクティブでは解決できないものなのでしょうか。

    romp850:CA850 error F8425:rompsec section overflowed highedt address of taget machine.

    ヘルプやマニュアルからたどってみたのですが、容量超えています。

    Rom化の部分で躓いているような状態です。

    程度の情報しかなく、どうすればよいのか途方に暮れています・・・

    ErrorでなくWarninngにする方法はあったのですが、デバッグしようとしたところ、マッピングされていないアドレスにアクセスしようとしました。 address:0x100000 E1212288 とでてしまいます。

    そもそもが私の思い違いで、もともとこの症状はリンクディレクティブでは解決できないものだったのでしょうか・・・

  • masa さん

    リンカのマップ情報出力でマップリストを出力させて

    エラーになっている箇所「address:0x100000 E1212288」の配置も確認してみてはいかがでしょうか