|
本帖最后由 sharkgao 于 2019-10-1 19:53 编辑
在dtcm区域,没用dma,没用cache,但数据同步问题如下:
int v = rdclock();
memset(&bl_data, v, sizeof(bl_data)); // 故意写入整块随机数,重启后还存在,没问题
// save BL parameters
bl_data.bl_stay = rebooter->bl_stay;
if(rebooter->reason!=RBT_BL){
KTRACES("fill %d", rebooter->reason);
bl_data.bl_upmode = rebooter->reason; // 此处写入的单字节数据,重启后丢失
}
__DSB();
KTRACES("\r\n%-0*h", 0x60, &bl_data); // 检查当前数据,正确,见下图
__NVIC_SystemReset(); // 重启cpu
重启前后的数据跟踪如下图
发现重启之前写入的单字节数据05,并没有真正写入sram中。
同时,写入4字节数据没发现问题。
|
|