c6748 map如何解读?
其中 定义的全局数组 (初始化的)是在fardata2中的,出现过全局数据好像被修改过的,请问什么情况会出现该问题?
user4838224:
回复 Shine:
其中 定义的全局数组 (初始化的)是在fardata2中的,出现过全局数据好像被修改过的,请问什么情况会出现该问题?
Ryan BL:
回复 user4838224:
你没有完全初始化嘛,链接的时候会扫描并尝试用copy table做处理,在load后进入main前会执行copy table的再次搬移/memcpy/等操作,以减少链接出来的文件大小。简单来说就是,你定义个1000的数组并初始化了前面的128个头,那么这128个数据会放在cinit段或其他初始化段,并用一个memcpy+memclear操作在运行时完成你的这段数据的初始化,而不需要弄个128初始化+大坨0的段,这样编译出来的镜像会小很多并且加载更快。
当前也可以强制弄成后面这种,在链接时指定RAM mode(-cr)而不是默认的ROM mode即可