お世話になっております
e2studioを使用しCC-RXでFlash API for RXを使うと問題なくできました。
そこで試しに、同じファームでGCCを使用し、セクションの設定だけ
CC-RXと同じようにはできないので
RXファミリ フラッシュモジュールFirmware Integration Technology の資料の
「5.3.2 GCC for Renesas RXを使用する場合」を参考にリンカ設定ファイル(linker_script.ld)に追加しました。
それ以外はCC-RXと同じようにしたので問題ないかと思ったのですが、
それでビルドをすると
undefined reference to `R_FLASH_Open()'
このようなエラーが出てしまい困っております。
設定を見直したり、設定を少し変えるなど、いろいろ試してみたのですが解決には至りませんでした。
何か分かる方おりましたら、ご教授願います。
よろしくお願い致します。
わわいです
コンパイラがかわると、設定するオプションやコマンドラインの設定文法が違ってきます
そのまんまコンパイラを替えるってのではなく、新規にプロジェクトを作成して、GCCのプロジェクトとして最初からやり直しましょう
そうじゃないと無理です
それでもどうにかしたいってことなら、CC-RXとGCCのコンパイラのマニュアルを読み、コマンドラインオプションの違いを把握して、それぞれに合わせたオプション設定を行う必要があります
わわいさん
回答ありがとうございます
書き方がまずかったです
そのままコンパイラを書き換えたのではなく、
新規にGCCのプロジェクトを作成し、ファームのメインの部分だけファームをコピペしたということです。
わかりにくい文章で申し訳ありません。
ってことなら真面目にエラーメッセージを読んでデバッグしましょう
> undefined reference to `R_FLASH_Open()'
R_FLASH_Openという名前の関数が存在しない、とおっしゃってます。
ってことは、ビルドするソースが不足している、か、ライブラリの指定が不足しているか、です。
まずはその関数がどこに定義されてるのかを確認しましょう
ありがとうございます。
もう少し見直してみたいと思います。
ただ、
エラーメッセージを読んで散々考えてたのですが、それでも不明だったので質問していました。
3日あれこれ考えました。
というのも
・CC-RX同様にスマート・コンフィグレータで登録し設定しています。
・「#include "r_flash_rx_if.h"」「#include "r_flash_rx.h"」「#include "r_flash_fcu.h"」「#include "r_flash_group.h"」このように定義しており、また、プログラム中のR_FLASH_Openを「Ctrl を押しながらマウスの左クリック」をすると、きちんとその定義されているライブラリへ跳び、表示されます。
・また、RXファミリ フラッシュモジュールFirmware Integration Technology の資料を穴が開くほど眺めてみたつもりですが、セクション関係の個所以外は基本CC-RXと同じやり方でいけるようで、CC-RXの方では問題なく出来ています。また、セクションの設定も資料に従い設定しました。
このように定義され、正常に認識しているように見えるのですがビルドすると弾かれるという状況になっており悩んでおりました。
エラー内容だとそのシンボル(オブジェクト)そのものが見つからないということですね。コード生成はされていますよね?
私のところでr_flash_rx (5.11)のみ作ってmain()でR_FLASH_Open()を呼ぶだけをビルドしましたが、ビルドされます。GCCはGCC for Renesas RX 8.3.0.20311
解決しました
はっきり言って何が原因だったのかは不明ですが
念のためと思いe2studioやGCCなど、入れなおして再度同じことをしてみたところ今度はきちんと通りました。
ソースとしては全く同じことをしていましたので、
もしかするとですが何かインストール時にファイルが壊れてしまったとか何かしらの不具合でもあったのかもしれません。
ちょっとモヤッとしますが正常いなりましたので、解決とさせていただきます。
ありがとうございました
私もCC-RXで作ったプロジェクトをGCCベースに何度となく移行したいと作業しているのですが、LED点滅程度ならすんなり動くけどDTCを使ったプロジェクトがビルド通ってもDTCの中でうまく動いてなさそうな・・・道は険しいです。動機はCC-RXだとWindows上での開発に縛られる点。GCCならE2studioのLinux版でビルドとおるしE2Liteも動くので何とかしたいなと思っています。