1988432_ja-JP

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

1988432_ja-JP

1988432_ja-JP

KEA128 UART Bootloader

こんにちは。KEA128マイクロコントローラの開発中に問題が発生しました。Jlink経由でプログラムをデバッグする際には全く問題ないのですが、ブートローダー経由でプログラムをダウンロードするとメインプログラムがフリーズしてしまいます。

以下のプログラム(デューティサイクルの設定)をブートローダー経由でダウンロードした後、プログラムがフリーズしてしまいます。関数の内容をコメントアウトすると、すべて正常に動作します。この場合、Jlinkプログラミングに問題はありません。この問題のせいで、どこから始めればいいのか全く分かりません。解決策を教えていただけると幸いです。

void heater_output(uint32 duty)
{
if(heater_switch==on)
{
ftm_pwm_duty(ftm0,ftm_ch0,duty);//设置占空比
}
else
{
heater_pwm_duty=0;
ftm_pwm_duty(ftm0,ftm_ch0,0);
}
}

これは私のジャンププログラムです

void bootup_application(uint32_t appEntry, uint32_t appStack)
{
static void (*jump_to_application)(void);
static uint32_t stack_pointer;

//shutdown_drivers();
jump_to_application = (void (*)(void))appEntry;//跳转APP入口地址
stack_pointer = appStack; //堆栈指针
// SCB->VTOR = appEntry;
__set_MSP(appStack); //设置主程序堆栈指针
__set_PSP(appStack); //设置进程堆栈指针
jump_to_application(); //跳转
}

Re: KEA128 UART Bootloader

Hi,

車載グレードチップであるS32Kシリーズを検討することをお勧めします。

https://www.nxp.com/products/processors-and-microcontrollers/s32-automotive-platform/s32k-auto-gener...


先生が hardFault を入力した場合は、スタック割り当てが小さすぎないかどうかを確認してください。

BR

XiangJun Rong

Re: KEA128 UART Bootloaderこんにちは。ご返信ありがとうございます。シミュレーションデバッグでHardFault_Handler関数にダウンロードせずに入ってしまうことが分かりました。呼び出しレベルが深すぎるため、デューティサイクル設定関数がメインループ内で直接呼び出され、スタックが発生していないことが原因だと思います。このチップではこのような状況はよくあるのでしょうか?私のAPPプログラムは約33KBで、0x8000から始まります。プロジェクトで、より高性能でコスト効率が高く、より多くのアルゴリズムを実行できる車載グレードのチップを選択したいのですが、どのように選択すればよいでしょうか?Re: KEA128 UART Bootloader

Hi,

次に、appEntry に 1 を追加します。

BR

XiangJun Rong

Re: KEA128 UART Bootloaderこんにちは。このコード行を挿入すると、エラーが発生します。(jump_to_application = jump_to_application +1;) IARソフトウェアコンパイラを使用しているのですが、エラーメッセージは「Error[Pe852]: 式は完全なオブジェクト型へのポインタである必要があります」です。どうすれば解決できますか?

Re: KEA128 UART Bootloader

Hi,

次のコードを使用してください:

//shutdown_drivers();
jump_to_application = (void (*)(void))appEntry;//跳转APP入口地址

jump_to_application =jump_to_application +1;
stack_pointer = appStack; //堆栈指针
// SCB->VTOR = appEntry;
__set_MSP(appStack); //设置主程序堆栈指针
__set_PSP(appStack); //设置进程堆栈指针
jump_to_application(); //跳转

親指の命令セットなので、試してみて動作するか確認してください。

BR

XiangJunRong

Tags (1)
No ratings
Version history
Last update:
‎01-06-2026 01:09 AM
Updated by: