2394069_zh-CN

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

2394069_zh-CN

2394069_zh-CN

boot使用C40擦写flash

你好,我这边使用boot里面使用C40写flash大概率失败,我写300K左右的bin程序,经常在第9包数据,也就是第二个块就失败,1/10可能性完整通过,请帮我看一下是不是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) & 0xFFFFFFFFU)); // Reset_Handler+1 --> required to avoid hard fault

(* (void (*) (void)) func)();复位和跳转后会不会有之前程序的数据残留,需要清理ram吗,如果需要怎么清理。麻烦了

回复: boot使用C40擦写flash

Hi@LJH1

做一个最简单可以复现问题的demo给我,方便我复现你们的问题,我不要你们的完整产品工程或者是零散的驱动文件。

回复: boot使用C40擦写flash

RTD公司统一使用的4.0.0

回复: boot使用C40擦写flash

离线烧录两个程序,一起复现快:首次boot直接跳app,app快闪30s进入boot,擦写1s闪烁,一共300次,没问题复位,有问题就常亮或长灭。

回复: boot使用C40擦写flash
后续测试 ,C40写时好时坏        status = C40_Ip_MainInterfaceWriteStatus();status结果等于2;
ErrorFlags = C40_Ip_pFlashBaseAddress->MCRS & (FLASH_MCRS_PEG_MASK | FLASH_MCRS_PEP_MASK | FLASH_MCRS_PES_MASK);
ErrorFlags最终等于0;返回error
回复: boot使用C40擦写flash

Hi@LJH1

你的程序太乱了,我完全没办法帮你测试。

我按照你测试的逻辑,写了一个测试程序

从地址0x1000A000开始的8KB空间,每次写入128byte,地址连续写入64次共8KB,连续300次。

(128 * 64 * 300)。

你要改一下时钟,因为我用的是S32K311EVB-Q100,外部时钟晶振是16MHz.


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