2389958_ja-JP

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

2389958_ja-JP

2389958_ja-JP

S32K344 FreeRTOS サンプルはリンクに失敗します

こんにちは;

私はS32K344 EVK(S32K344MINI-EVB)を始めたばかりで、IDE 3.6.5とFreeRTOS 7.0.0を使っています(D2511)は、パッケージマネージャーによって作成されたFRDM自動車バンドルに含まれていました。

私は「S32DS Project from Example」という344用のサンプルアプリケーションの一つを作ろうとしています。FreeRTOS_Toggle_Led_Example_S32K344...

ConfigToolsを使ってコードを更新したことはありますが、今のところそれだけがコードの修正です。

しかし、そのままの状態では、コードはリンク段階で失敗します。

c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/GCC-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:./FreeRTOS/Source/ポータブル/GCC/ARM_CM7/r0p1/port.o: in function 'vPortStoreTaskMPUSettings':

C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890:未定義の「__FreeRTOS_code_data_start__」参照

c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/GCC-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1890: 「__FreeRTOS_code_data_end__」に関する未定義の参照

c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/GCC-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:./FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.o: 関数 'prvSetupMPU':

C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/portable/GCC/ARM_CM7/r0p1/port.c:1723: 「__FreeRTOS_code_data_end__」に関する未定義の参照

c:/nxp/s32ds.3.6.5/s32ds/build_tools/gcc_v10.2/GCC-10.2-arm32-eabi/bin/../lib/gcc/arm-none-eabi/10.2.0/../../../../arm-none-eabi/bin/real-ld.exe:C:\Workspaces-35\FreeRTOS_Toggle_Led_Example_S32K344\Debug_FLASH/../FreeRTOS/Source/ポータブル/GCC/ARM_CM7/r0p1/port.c:1723:未定義の「__FreeRTOS_code_data_start__」参照


freertos_error.png


これらはリンカーセクションだと思いますが、サンプルコード内やパッケージ内のFreeRTOSフォルダ、その他の場所のどこにも定義されていないようです。

「S32DSプロジェクト例」のサンプルプロジェクトは古くなっていますか?それとも、私が気づいていない簡単な解決策があるのでしょうか?

前もって感謝します、
ジョー・シドル


Re: S32K344 FreeRTOS example fails to link

こんにちは、ジョー・シドルさん。

ご迷惑をおかけして申し訳ございません!

Ldエラーが原因でサンプルが正しくビルドされないという問題を再現できました。そして、彼らの解決策は正しいものでした。

根本原因:S32CTではMPUがデフォルトで有効になっています。これにより、コードジェネレータはMPU対応コード(FreeRTOS MPUリンカーシンボルへの参照を含む)を出力するようになります。しかし、 Toggle_Led_Example_S32K344のリンカー スクリプト (linker_flash_s32k344.ld) では、これらの MPU メモリ領域やその境界シンボルは定義されていません。これらは MPU 固有のサンプル (例: FreeRTOS_MPU_Example_S32K389/linker_flash_s32k389.ld) にのみ存在します。MPUシンボルを想定して生成されたコードと、MPU非対応のリンカスクリプトとの間の不一致が、未定義参照エラーの原因となります。

「use mpu」を無効にすると、サンプルが正しくコンパイルされます。

Toggle_Led_Example_S32K344 disable MPU.png

副次的な注意:MPUをデフォルトで無効にすると、MPUが必要なユーザーはS32CTで明示的にMPUを有効にし、メモリ領域を設定する必要があります。

よろしくお願いいたします
ロビン

Tags (1)
No ratings
Version history
Last update:
yesterday
Updated by: