SmartConfiguratorでlibraryを作るやり方を試してみた

こんにちは。NoMaYです。#2連投の1つ目です。

どうやればRXスマートコンフィグレータで生成したソースを使ってCC-RXのライブラリファイル(libファイル)を作れるか試してみました。まだ、ライブラリを使う側で、本意でないobjファイルをリンクする必要があったり、よく分からないリンクワーニングメッセージが表示されたり、といった点はありますけれども、プロジェクトのファイル一式を以下のzipファイルに固めました。

rxsc_ccrx_lib_20220114.zip
rxsc_ccrx_lib_20220114_2.zip    実行プロジェクト側でmcu_interrupts.objのリンクを削除しました

手順は次の投稿の通りです。(e2 studioの画面コピーがあります。)

以下、e2 studioの画面コピーの1つです。


 

Parents
  • こんにちは。NoMaYです。

    RXスマートコンフィグレータで生成したソースを使ってCC-RXのライブラリファイル(libファイル)を作る場合に気になる点に気付きました。

    気になる点

    ・ (FITモジュールやCGコンポーネントのソースの構造に依存しますが)割り込みベクタが設定されないものがあるかも知れません

    理由

    ・ 割り込みベクタが記述されたソースファイルのどの関数もどの変数も、アプリケーション側コードから直接的にも間接的にも使われることが無い状況が発生する(そのFITモジュールやCGコンポーネントが使われているのにも関わらず)という可能性のあるソースの構造になっていた場合、そのような状況になると、ライブラリファイルというものの仕様として、割り込みベクタが記述されたそのソースファイル(というかオブジェクトファイル(というかライブラリモジュール))がリンク対象から除外される為です

    対処方法

    ・ そういう状況が発生しないように、「ライブラリ全体の初期化関数」といった感じの名目の関数を用意するようにして、その関数の中で、割り込みベクタが記述されたソースファイルの何かしらの関数か何かしらの変数を直接的にせよ間接的にせよ必ず使用する、ように下回り側のAPIライブラリを設計してしておく

    補足

    ・ RXマイコンの初期の頃にはPDG2というバイナリライブラリが提供されていましたが、たぶんこのようなことが起きないように注意して開発されていたのではないかと思うのですが、FITやCGになってからはアプリケーション側コードと一体でビルドされるようになって、このようなことはケアされなくなっていると思うのです

Reply
  • こんにちは。NoMaYです。

    RXスマートコンフィグレータで生成したソースを使ってCC-RXのライブラリファイル(libファイル)を作る場合に気になる点に気付きました。

    気になる点

    ・ (FITモジュールやCGコンポーネントのソースの構造に依存しますが)割り込みベクタが設定されないものがあるかも知れません

    理由

    ・ 割り込みベクタが記述されたソースファイルのどの関数もどの変数も、アプリケーション側コードから直接的にも間接的にも使われることが無い状況が発生する(そのFITモジュールやCGコンポーネントが使われているのにも関わらず)という可能性のあるソースの構造になっていた場合、そのような状況になると、ライブラリファイルというものの仕様として、割り込みベクタが記述されたそのソースファイル(というかオブジェクトファイル(というかライブラリモジュール))がリンク対象から除外される為です

    対処方法

    ・ そういう状況が発生しないように、「ライブラリ全体の初期化関数」といった感じの名目の関数を用意するようにして、その関数の中で、割り込みベクタが記述されたソースファイルの何かしらの関数か何かしらの変数を直接的にせよ間接的にせよ必ず使用する、ように下回り側のAPIライブラリを設計してしておく

    補足

    ・ RXマイコンの初期の頃にはPDG2というバイナリライブラリが提供されていましたが、たぶんこのようなことが起きないように注意して開発されていたのではないかと思うのですが、FITやCGになってからはアプリケーション側コードと一体でビルドされるようになって、このようなことはケアされなくなっていると思うのです

Children
No Data