ケロリといいます。
現在RL78G14で音声を再生を試みています。
ケロリさん、こんにちは。シェルティさんも、こんにちは。NoMaYです。> バイナリのリンクの話なのですが、ROMに読み込ませた情報はどのように引き出せばよろしいのでしょうか。RL78ですので変数はfarになります。また、サイズ不定でも以下のような感じに出来る筈ですよ。リンカ側で変数の実体が確保されますので、リンカオプションでのシンボルを例えば_voice_data_1とすれば、Cソース側は以下のようにextern __farでの宣言になります。定義側extern __far uint8_t voice_data_1[];参照側1バイト目 voice_data_1[0]2バイト目 voice_data_1[1]3バイト目 voice_data_1[2]。。。
ケロリさん、こんにちは。NoMaYです。これは、R_tfat_f_read()関数が記述されたソースファイルがプロジェクトに追加されていない、またはソースファイルは追加されているけれどもR_tfat_f_read()関数の記述部分が#if ~ #endif条件コンパイル文等でコンパイル対象から外れている、のではないでしょうか?なので、ソースを検索して、R_tfat_f_read()関数が記述されているソースファイルがどれか、また条件コンパイル文などが無いか、それを調べる必要があると思います。> R_tfat_f_openなどのファイルを扱う関数を使用したいのですが、以下のようなエラーコードの対処ができていません。一番最初の話に戻ってしまうみたいで恐縮なのですが、このような場合はどのような原因が考えられるでしょうか。> (E) E0562310 E0562310:Undefined external symbol "_R_tfat_f_read" referenced in "DefaultBuild\r_s2_decode.obj" serial.mtpj[追記]以下は対処されたとのことですが、まだ必要なソースファイルでプロジェクトに追加されていないものがある、のだと思うのです。> Undefined external symbol "_R_tfat_f_stat" referenced in "DefaultBuild\r_main.obj"> とエラーメッセージが表示され、ビルドが完了できません。> 上記エラー後ライブラリtfat_rl78.libを入れていないことが原因と考え、プロジェクトに入れた後にビルドすると以下のエラーが出てきます。> external symbol "_R_tfat_disk_write" referenced in "r_TinyFAT"
NoMaYさん
シェルティです、こんにちは。
ご支援ありがとうございます。R_tfat_f_xxxxxxx() は TFATというファイルシステムのAPIですね。
ミドルウェア系のものは色々な人が作ったものを1個のシステムとしてプロジェクト登録する必要があり、
ソースコードが見えているとヘッダ同士がぶつかったりするので、
私が作ったアプリケーションノートではバイナリ化してサンプルコードに組み込んであることが多いですね。
ケロリさん
NoMaYさんの仰る通りで、上記エラーはR_tfat_f_xxxxxxx() という関数を持つコード(バイナリかもしれないしソースコードかもしれない)がプロジェクト中に存在しないときに出ます。
このアプリケーションノートのサンプルコード現物を改めて確認しました。無改造状態では問題なくビルドが通ります。
https://www.renesas.com/jp/ja/software/D3017501.html
ビルド確認したプロジェクト:\an_r20an0194jj0102_rl78_s2_sound\workspace\sample\yrdkrl78g14\CS+ for CC
それで、エラー原因のR_tfat_f_xxxxxxx() は、TFATのバイナリ(tfat_rl78.lib)の内側に存在しておりまして、
ケロリさんの環境ではこのファイルがプロジェクト・ツリーに存在しないか、ビルド対象から外れてしまっているか、どちらかかと思います。
> Undefined external symbol "_R_tfat_f_stat" referenced in "DefaultBuild\r_main.obj"
この関数については、私の前のポストに書いたように、r_tfat_drv_if.c に存在します。
このエラーは私の前のポストを見たケロリさんがこのファイルをプロジェクト・ツリーに登録したので解消したのだと思います。
いずれにしても、何か色々自分で手を入れる前に、配布されているサンプルをとにかく無改造で動くことを確認することをお勧めします。
いったん動いてしまえば、自分で新たに作った環境が動かなくても、動いている環境と比較しながら詰めていけば原因がすぐ見つかります。
以上です