你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
toofree 发表于 2018-11-6 14:55 二进制数据中,包含了命令字,执行参数,参数包括地址、变量值等信息。 堆是从RAM中划出的一部分区域,用来 ...
二进制数据中,包含了命令字,执行参数,参数包括地址、变量值等信息。
堆是从RAM中划出的一部分区域,用来存放程序运行中的各种变量。
变量是放在堆中的,对于全局变量上电后会有堆的初始化代码,将Flash中存放堆的初始值数据(即变量初值)全部搬移到堆中。
对于局部变量,只有在程序执行到相应子程序后,才从Flash取初始值放到RAM中。
局部变量是放在堆中,全局变量是放在外面的,我是在想,就像全局变量,放在RAM中的位置,是怎么实现的?因为Bin文件中,没有变量的地址信息。
比方说,你如果在代码中定义了一个很大的数组,如果你没有赋初值,那么对于芯片来说,FALSH空间不变,因为FLASH只有头地址和尾地址,两个地址值。只是RAM会被占用的大些,如果你给了初始值,那么就要为这个初值分配地FLASH空间,这样会撑大flash.