組込プログラム(基礎)の学習媒体について

お世話になっています。太郎です。

以前投稿させて頂いたテレワーク対応として
R5F563NBDxFCから、RX65N Target Boardへ既存PGの移植を行った際
セクション指定をしている変数へ値が設定できない事象が発生しました。(未初期化セクション領域)
単純に、セクション指定を外せば自動的に割り当てられるかもと試したりしても動作しません。

そもそもセクション指定の意味・意義が分からず。
調べるとやり方は見つかるものの、利点/なぜやるのかは見つけられませんでした。
(おそらくコンパイラ ユーザーズマニュアルが回答に近いのでしょうか)


こういったことについて、1つ1つをQAでお尋ねするのは宜しくないとは思うので、
Web上やQAから出来る限り探しているのですが中々辿り着けなかったり、1つ1つの単語が不明だったりします。
私のようなPC/スマホ/サーバ等の、OSありきのプログラムばかり学んできた者は数多く居ると思うのですが、
その辺りのの人間でもとっつけるような書籍やWebサイトなどがあればご紹介いただけないでしょうか。。。
(スタートアッププログラムとか、ベクタテーブルあたりも学ぶ必要があると思っています。)

Parents
  • 太郎さん、こんにちは。NoMaYです。

    そういう情報をお探しであれば、以下のページから探すのも一手かな、と思うのです。(もっとも、正直なところ、私自身は、ガッツリとは読んだことや受講したことが無かったりというところですので、その点は御容赦下さい。)

    ルネサス エンジニアスクール トップページ
    www.renesas.com/jp/ja/support/engineer-school

    ルネサス 半導体セミナー テキスト閲覧ページ
    www.renesas.com/jp/ja/support/training/seminar/document

    ルネサス アカデミー オンライン開催コース一覧ページ
    academy.renesas.com/?eid=1401

    [追記]

    改めて、今、幾つか中を見てみたのですが、扱っているマイコンがRX62NとかRX63Nとか古いマイコンだったり、RXスマートコンフィグレータのBSPモジュールでは違うことになっていたり、とかビミョーなところはあります、、、

  • NoMaYさん

    こんにちは、太郎です。

    情報ありがとうございます。

    こちらもRX63Nを使用していたりするので、逆に丁度いいです(笑)

    順番に目を通してみます。セミナーもあったりするんですね。

    過去セミナーで使用したであろうテキスト「絵解きマイコンcプログラミング教科書」も購入してみます。

Reply
  • NoMaYさん

    こんにちは、太郎です。

    情報ありがとうございます。

    こちらもRX63Nを使用していたりするので、逆に丁度いいです(笑)

    順番に目を通してみます。セミナーもあったりするんですね。

    過去セミナーで使用したであろうテキスト「絵解きマイコンcプログラミング教科書」も購入してみます。

Children

  • 太郎さん、こんにちは。NoMaYです。

    > 大量の 未初期化 変数に対して、セクションを指定しております。 が、その変数に値を代入しても代入できない状態なのです。(エラーも発生しない) セクションの指定外の所に、その変数を置くと代入できます。 が、セクションから未初期化変数全部を外すと、また代入できなくなります。。。

    そういう時は、リンカが生成する○○○.mapというマップファイルなるものを確認するとヒントが見付かることが多いですよ。もし生成されていなければ、リンカオプションで生成するようにして、CC-RXであれば生成内容を選択出来るようになってますので、詳細モード(だったかな)で生成させると良いです。(もし差し支えなければ、マップファイルをzipファイルに固めてリプライに添付されても良いかと思うのです。どのセクションのどの変数が期待した通りに動作してくれないのか、という説明と一緒に。)

    "そういう時"の例:

    (1) グローバル変数やスタティック変数に代入出来ない
    (2) スタックを沢山使うと暴走する
    (3) グローバル変数やスタティック変数の初期値(main関数の先頭に来た時点での値)が期待した通りではない

    マップファイルを見ても分からない事例:

    (A) パソコン/サーバのコンパイラ/ソフトウェア開発プラットフォームでは滅多に無いと思いますが、組み込みプログラムの世界では、スタートアップルーチン内でグローバル変数やスタティック変数の初期化が始まる前に、何かしらユーザがカスタマイズ出来る(or しないといけない)関数が呼び出されることがあって、そういう関数内でうっかり気付かずにグローバル変数やスタティック変数を使うと期待した動作をしてくれない、というのがあります。

  • NoMaYさん、こんにちは。太郎です。
    ウェブ上にあげるのは承認がおりず。。。ご提案いただいたのに申し訳ありません。
    セクション指定した後、最終的にどうなったかはmapファイル見ればわかりそうですね。。。
    前回コメントで挙げていただいた内容も全部はまだ見切れていないので、
    mapファイルについても探して勉強してみます。