2398130_ja-JP

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

2398130_ja-JP

2398130_ja-JP

NXPS32K358: ブートローダーがアプリケーションにジャンプした後にFreeRTOSタスクが実行されない

サンプルアプリケーションプロジェクトを作成し、それをブートローダーとして使用しています。実際のアプリケーションプロジェクトは同一で、唯一の違いはフラッシュスタートのアドレスだけです。

ブートローダーは無事にアプリケーションにジャンプし、アプリケーションは実行を開始します。しかし、アプリケーション内ではxTaskCreate()関数は実行されません。

ブートローダーからFreeRTOSベースのアプリケーションにジャンプする際に、追加の設定が必要ですか?例えば、FreeRTOSタスクを作成・実行する前に、起動、割り込み、ベクターテーブル、スタックポインタ、スケジューラ関連の設定などを行う必要がありますか?

私はそのことを紹介しました コミュニティからの統一ブートローダーデモ チケット。解決策は得られませんでした。問題はFreeRTOSを含めたときだけで、RTOSなしでアプリケーションは問題なく動作することです。

 S32K344では動作しますが、NXPS32K358では動作しません。


追加情報が必要な場合はお知らせください。

Re: NXPS32K358: FreeRTOS Tasks Not Running After Bootloader Jumps to Application

私たちのプロジェクトで使用されているブートローダーからアプリケーションへのジャンプコード:

void Boot_JumpToApp(uint32 i_AppAddr)
{
uint32_t appStack;
uint32_t 関数;
uint8 i;
 
DisableAllInterrupts();
 
S32_SysTick->CSRr = 0;
S32_SysTick->RVR = 0;
S32_SysTick->CVR = 0;
 
for(i = 0; i < 10; i++)
    {
S32_NVIC->ICER[i] = 0xFFFFFFFFU;
S32_NVIC->ICPR[i] = 0xFFFFFFFFU;
   }
appStack = *(volatile uint32_t *)0x00442000;
__set_MSP(appStack);
S32_SCB->VTOR = 0x00442000;
func = *(uint32_t volatile *)(((uint32_t)0x00442004));
(* (void (*) (void)) func)();
}


Re: NXPS32K358: FreeRTOS Tasks Not Running After Bootloader Jumps to Application

こんにちは、 @Indhumathi さん

根本原因を絞り込むために、以下の割り込みハンドラが実際に実行されているか確認していただけますか?

SVCハンドラ(vPortSVCHandler)—最初のFreeRTOSタスクを開始する役割を担う

PendSVハンドラー(vPortPendSVHandler)—タスク間のコンテキスト切り替えを担当

SysTick ハンドラ (vPortSysTickHandler / xPortSysTickHandler) — FreeRTOS のティック処理を担当


最も簡単な確認方法は、アプリケーション内の各ハンドラのエントリにブレークポイントやGPIOトグルを配置することです。


ありがとうございました。

よろしくお願いいたします。

ダニエル

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