duanks 发表于 2023-8-18 17:31

发现N32WB031库的一个BUG

在开高优化等级后,发现代码不能运行,检查后发现在system_n32wb03x.c中memcpy被优化掉了,不太清楚编译器为什么会这样做,但可以在110行左右做如下修改解决
void memcpy2(uint8_t *dst, const uint8_t *src, int len){
    uint8_t __IO *dst2 = dst;
    for(int i = 0; i < len; i++){
      dst2 = src;
    }
}
void SystemTrimValueRead(uint8_t* p_data,uint32_t byte_length)
{
    uint32_t ramcode;
    trim_read_cmd_func_t trim_read_cmd_func = (trim_read_cmd_func_t)((uint8_t*)&ramcode + 0x11);
    memcpy2((void*)ramcode,(const void*)TRIM_READ_CMD_CODE,TRIM_READ_CMD_CODE_LEN);
    (*trim_read_cmd_func)(TRIM_STORE_ADDR, p_data, byte_length);
}

xxmmi 发表于 2023-8-27 12:44

这么改下就可以了?

MessageRing 发表于 2023-9-3 23:22

关掉编译器优化行不
页: [1]
查看完整版本: 发现N32WB031库的一个BUG