你好,Andy。
按照你的说法,我做了一下仿真。修改代码如下:
*(volatile char*)0x220000=0;
*(volatile char*)0x220002=0;}MVJHYW3M[{$CQZ4.jpg)
*(volatile char*)0x220001=0;
temp = 0x12345678;
memcpy((char*)0x220001,(char*)&temp, 1);
temp = 11;
对传入memcpy函数作了指针强制转换为(char*)类型,但是实际上结果仍然和之前一样,0x220001地址里面的值被改写为0x12345678了而不是理所当然的低字节0x78。
PS:我做这个测试是在21489上面做的,并且对于sdram部分的ldf文件配置如下所示:
seg_ext_swco { TYPE(SW RAM) START(0x00600000) END(0x0065FFFD) WIDTH(16) }
seg_ext_nwco { TYPE(PM RAM) START(0x00220000) END(0x005FFFFF) WIDTH(16) }
seg_ext_dmda { TYPE(DM RAM) START(0x00900000) END(0x01DFFFFD) WIDTH(16) }
seg_ext_pmda { TYPE(DM RAM) START(0x01E00000) END(0x032FFFFD) WIDTH(16) }
仿真截图如下所示:
「该帖子被 liangbread 在 2014-06-04 11:48:56 编辑过」