2386379_ja-JP

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

2386379_ja-JP

2386379_ja-JP

S32K344でApp1からApp2にジャンプする方法

こんにちは、

FRDM A S32K344上でユーザーApp 1からユーザーApp 2へのカスタムジャンプをテストしています

app1とapp2のリンカーファイルは以下に添付されています。

#define APP_START_ADDRESS 0x00500000

void Bootup_Application ( const uint32_t app_StarAddress)

{

uint32_t appEntry、appStack;

static void (*jump_to_application)( void );

/* アプリケーションの初期スタックポインタ値を取得 */

appStack = *(( uint32_t *)(app_StarAddress));

/* アプリケーションのリセットハンドラー(エントリポイント)アドレスを取得する */

appEntry = *(( uint32_t *)(app_StarAddress + 4));

/* アプリケーションのエントリアドレスを関数ポインタに割り当てる */

jump_to_application = ( void (*)( void ))appEntry;

/* 割り込みベクターテーブルをアプリケーションに再配置する */

S32_SCB-> VTOR = ( uint32_t )app_StarAddress;

/* グローバル割り込みを無効にする (ASM_KEYWORD(" cpsid i");) */

__asm volatile ( " cpsid i" : : : "memory" );

/* メインスタックポインタ (MSP) を設定します */

__asm volatile ( "MSR msp , %0\n" : : "r" (appStack) : "memory" );

/* プロセススタックポインタ(PSP)を設定します */

__asm volatile ( "MSR psp , %0\n" : : "r" (appStack) : "memory" );

/* アプリケーションへジャンプ */

jump_to_application();

1)

{

/* ここに到達した場合は、エラーが発生したことを示します */

Siul2_Dio_Ip_WritePin(LED_RED_PORT, LED_RED_PIN, 1U);

}

}

Bootup_Application funcがapp2に確実にジャンプできるか確認してもらえますか?他に何か必要な手順があれば、お知らせください。

Re: How to Jump from App1 to App2 on the S32K344

こんにちは、 @ganavi1さん


原則としては、問題はないと思います。ただ、グローバル割り込みを無効にするだけでは不十分な場合がある。私はいつも、使用済みのペリフェラルはすべて初期化解除することをおすすめします。すべての割り込みは、周辺レジスタを通じてローカルでも無効化されているか確認してください。これにより、App2でグローバル割り込みが有効化された後に再び割り込みがトリガーされないようにしてください。


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

ルーカス

Tags (1)
No ratings
Version history
Last update:
6 hours ago
Updated by: