2394069_ja-JP

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

2394069_ja-JP

2394069_ja-JP

ブート時にはC40を使用してフラッシュメモリを消去し、書き換えます。

こんにちは。ブートローダーでC40チップを使用してフラッシュメモリへの書き込みに問題が発生しています。300KBのバイナリプログラムを作成しているのですが、9番目のデータパケット(2番目のブロック)で頻繁に失敗し、完全に成功する確率は10分の1程度です。C40チップに問題があるかどうか確認していただけないでしょうか?作成中のメインプログラムは…

Flash_UnlockSectorIfProtected ( cur_sector ) ;

DisableAllInterrupts () ;

DisEnableIrq1 () ;

if ( Flash_Write ( flash_write_addr + offset , & payload [ 2 ] , FIXED_PACKET_DATA_LEN ) != 0 ) {

EnableIrq1 () ;

EnableAllInterrupts () ;

}

EnableIrq1 () ;

EnableAllInterrupts () ;

Power_Ip_MC_ME_SocTriggerResetEvent(POWER_IP_DEST_RESET_MODE) を使用したリセットに問題がありますか? 8 回試行した後に連続リセットを防ぐにはどうすればよいでしょうか?また、ジャンプにはどの関数を使用すればよいでしょうか?

func = * ( uint32_t volatile * )( ADDR_APP + 0xC ) ;

func = * ( uint32_t volatile * )((( uint32_t ) func ) + 0x4 ) ;

func = (((( uint32_t ) func ) & 0xFFFFFFFF U )) ; // Reset_Handler+1 --> ハードフォールトを回避するために必要

リセットジャンプの以前のプログラムの残留データは残りますか? RAMをクリーンアップする必要ありますか? もし必要ならどのようにすればよいですか? よろしくお願いいたします

回复: boot使用C40擦写flash

こんにちは@ LJH1

問題を再現できる簡単なデモを提供してください。そうすれば、私もあなたの問題を再現できます。製品プロジェクト全体や、散在するドライバファイルは必要ありません。

回复: boot使用C40擦写flash

RTD社は標準バージョンとして4.0.0を使用しています。

回复: boot使用C40擦写flash
その後のテストで、C40 の書き込みが断続的に成功していることが判明しました。`status = C40_Ip_MainInterfaceWriteStatus(); ` コマンドは値 2 を返しました。
ErrorFlags = C40_Ip_pFlashBaseAddress -> MCRS & ( FLASH_MCRS_PEG_MASK | FLASH_MCRS_PEP_MASK | FLASH_MCRS_PES_MASK ) ;
ErrorFlagsが最終的に0になった場合、エラーを返します。
回复: boot使用C40擦写flash

2つのプログラムをオフラインで書き込むことで、より迅速な再現が可能になります。最初の起動ではアプリに直接ジャンプし、アプリが30秒間点滅してブートモードに入り、消去/書き込みサイクルが1秒間点滅します。これを合計300回繰り返します。問題がなければリセットされ、問題がある場合はオンまたはオフの状態が維持されます。

回复: boot使用C40擦写flash

こんにちは@ LJH1

あなたのプログラムはあまりにも複雑で、私にはテストする方法がありません。

あなたのテストのロジックに基づいてテストプログラムを作成しました。

アドレス0x1000A000から始まる8KBの領域に、128バイトずつ書き込みが行われ、このアドレスは64回連続して書き込まれ、合計8KB、合計300回書き込まれる。

(128 * 64 * 300)

クロックを変更する必要があります。なぜなら、私は16MHzの外部クロック水晶を搭載したS32K311EVB-Q100を使用しているからです。


Tags (1)
No ratings
Version history
Last update:
‎07-16-2026 02:33 AM
Updated by: