1957513_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1957513_ja-JP

1957513_ja-JP

S32DS 3.4 の FreeMASTER CAN サンプルS32K144


Hi,

MCUXpressoを持っていませんが、S32DS 3.4を使用しています。ビルド201217(Update3)

S32DSを使ってFreeMasterをCANでS32K144実装してみました。

SDK の例は、UART との通信です。

S32K3xx uCにCANの例があるのを見て、S32K144に移植しようとしましたが、エラーが多すぎました。

144でCANと通信する方法を説明するのに十分な例がないようです。

私の製品は数キロ離れた場所から動作する可能性があるため、UART通信を使用できません。

S32DS上でS32K1xxを使用したCAN通信のサンプルコードを教えてください。

ありがとうございます。

Re:S32DS 3.4のFreeMASTER CAN例S32K144

Hi @CY9,

FreeMASTERドライバには、複数の定義に対するガードがあります。これには、通信インターフェースの定義が含まれます( freemaster_private.h:298参照)


/* only one communication link may be selected */
#if (!(FMSTR_DISABLE)) && FMSTR_COUNT_INTERFACES > 1
#error More than one communication interface selected for FreeMASTER driver.
#endif

コンパイラは、互換性のない定義がある場合にエラーが発生します。
また、FMSTR_USE_FLEXCANが定義されている場合は、プロジェクトにFMSTR_InitSerialシンボルが生成されないようにする必要があります。

これを確認するには、.map ファイルの内容または .elf ファイル シンボルを調べます。
この出力は、CANの場合に生成されます。


C:\NXP\S32DS.3.5\S32DS\build_tools\gcc_v6.3\gcc-6.3-arm32-eabi\arm-none-eabi\bin>readelf.exe C:\fmstr_rtd_fcan_s32k144\Debug_FLASH\fmstr_rtd_fcan_s32k144.elf -s | find "FMSTR_InitCan"
   610: 00000e39    56 FUNC    GLOBAL DEFAULT    3 FMSTR_InitCan

C:\NXP\S32DS.3.5\S32DS\build_tools\gcc_v6.3\gcc-6.3-arm32-eabi\arm-none-eabi\bin>readelf.exe C:\fmstr_rtd_fcan_s32k144\Debug_FLASH\fmstr_rtd_fcan_s32k144.elf -s | find "FMSTR_InitSerial"

2 番目のコマンドは、空の結果を返します。

クリーンタスクが古いelfファイルを削除しないか、デバッグ構成が完全な再構築をトリガーしない可能性があると思われます。これにより、デバッグ セッションは古いバージョンの elf ファイルを再利用します。

Re:S32DS 3.4のFreeMASTER CAN例S32K144

Dear iulian_stan,

プロジェクトには定義が多すぎるようですが、定義が混同されることがありますか?

参照:

CY9_0-1728024003079.png

私はプロジェクトでUSRTを設定および定義していませんが、定義に含まれているFMSTR_InitSerial()‵を呼び出そうとします。

#if FMSTR_USE_SERIAL
    /* initialize communication and start listening for commands */
    if (!FMSTR_InitSerial())
        return FMSTR_FALSE;
#endif 

そして、 'FMSTR_USE_SERIAL'は今= 0です。

#define FMSTR_DISABLE          0    /* ... */
#define FMSTR_USE_LPUART       0    /* !!!!! */
#define FMSTR_USE_FLEXCAN      1    
#define FMSTR_USE_PDBDM        0    
//...
#if (FMSTR_USE_SCI) || (FMSTR_USE_ESCI) || (FMSTR_USE_LPUART) || (FMSTR_USE_JTAG) || (FMSTR_USE_USB_CDC) || (FMSTR_USE_MQX_IO) || (FMSTR_USE_MBED)
  #ifndef FMSTR_USE_SERIAL
    #define FMSTR_USE_SERIAL 1
  #else
    #if FMSTR_USE_SERIAL == 0
      #error "FMSTR_USE_SERIAL macro cannot be configured by user, FreeMASTER serial driver functionality is not garanted."
    #endif
    #endif
#else
    #ifndef FMSTR_USE_SERIAL
        #define FMSTR_USE_SERIAL 0
    #endif
#endif

Re:S32DS 3.4のFreeMASTER CAN例S32K144

Hi @CY9,

1.これは、FreeMASTERドライバーの新しいバージョンで修正されたバグです。その割り当ては、前の{}ブロックの内側にある必要があります。

if (discard > 0U)
{
...
  /* buffer is for sure not full */
  pbuff->flags.flg.bIsFull = 0;
  pbuff->nRP               = rp;
}

S32K1ファミリのライブラリを更新する予定ですが、現時点ではETAはありません。

2.まず、プロジェクトをクリーンアップし(安全のために、Debug_FLASHフォルダを手動で削除します)、再構築します。問題が解決しない場合は、新しい DS への移行中に、一部のファイルが重複したことを意味します。問題のある関数 (例: SystemInit) を検索すると、プロジェクト ファイル内の定義が重複し、冗長なソース パスが削除されます。

Re:S32DS 3.4のFreeMASTER CAN例S32K144

Dear iulian_stan ,

CANバスでテストします、それは動作します!

よろしくお願いします。



2つの質問があります。

1.  

FMSTR_PipeDiscardBytes() {
    if(discard > 0) {
        rp = ...;
    }
    pbuff->nRP = rp;
}

So, if (discard<=0) , rp = ??


2. 

S32DS 3.5をダウンロードして、最新のものにアップデートしました。

プロジェクトをクリーンアップして再構築しようとすると、エラーメッセージ:

建物対象:fmstr_rtd_fcan_s32k144.elf
起動時:標準S32DS Cリンカ
arm-none-eabi-gcc -o "fmstr_rtd_fcan_s32k144.elf""@fmstr_rtd_fcan_s32k144.args"
c:/nxp/s32ds.3.5/s32ds/build_tools/gcc_b1620/gcc-6.3-arm32-eabi/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/bin/real-ld.exeに追加します。./SDK/platform/devices/S32K144/startup/system_S32K144.o: 関数 'SystemInit' 内:
D:\Project\TYC\S32DS35\fmstr_rtd_fcan_s32k144\Debug_FLASH/../SDK/platform/devices/S32K144/startup/system_S32K144.c:69: 'SystemInit' の複数の定義; ./SDK/S32K144_SDK_4.0.1/platform/devices/S32K144/startup/system_S32K144.o:D:\Project\TYC\S32DS35\fmstr_rtd_fcan_s32k144\Debug_FLASH/../SDK/S32K144_SDK_4.0.1/platform/devices/S32K144/startup/system_S32K144.c:69:ここで最初に定義
c:/nxp/s32ds.3.5/s32ds/build_tools/gcc_b1620/gcc-6.3-arm32-eabi/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/bin/real-ld.exeに追加します。./SDK/platform/devices/S32K144/startup/system_S32K144.o: 関数 'SystemCoreClockUpdate' 内:
D:\Project\TYC\S32DS35\fmstr_rtd_fcan_s32k144\Debug_FLASH/../SDK/platform/devices/S32K144/startup/system_S32K144.c:128: 'SystemCoreClockUpdate' の複数の定義; ./SDK/S32K144_SDK_4.0.1/platform/devices/S32K144/startup/system_S32K144.o:D:\Project\TYC\S32DS35\fmstr_rtd_fcan_s32k144\Debug_FLASH/../SDK/S32K144_SDK_4.0.1/platform/devices/S32K144/startup/system_S32K144.c:128:ここで最初に定義
c:/nxp/s32ds.3.5/s32ds/build_tools/gcc_b1620/gcc-6.3-arm32-eabi/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/bin/real-ld.exeに追加します。./SDK/platform/devices/S32K144/startup/system_S32K144.o: 関数 'SystemSoftwareReset' 内:
D:\Project\TYC\S32DS35\fmstr_rtd_fcan_s32k144\Debug_FLASH/../SDK/platform/devices/S32K144/startup/system_S32K144.c:179: 'SystemSoftwareReset' の複数の定義; ./SDK/S32K144_SDK_4.0.1/platform/devices/S32K144/startup/system_S32K144.o:D:\Project\TYC\S32DS35\fmstr_rtd_fcan_s32k144\Debug_FLASH/../SDK/S32K144_SDK_4.0.1/platform/devices/S32K144/startup/system_S32K144.c:179:ここで最初に定義

...... 

ビルドに失敗しました。エラーが 57、警告が 5 件。(6秒272msかかった)

何か提案はありますか、ありがとう。


Re:S32DS 3.4のFreeMASTER CAN例S32K144

Hi @CY9

S32 Design Studioプロジェクトに添付されています。

注: このプロジェクトは S32DS 3.5 および S32SDK 4.0.1 でビルドされました。

Tags (1)
No ratings
Version history
Last update:
‎01-05-2026 08:41 AM
Updated by: