前言
项目背景
前一段时间做过一个项目,相对于单片机内部资源(ram,rom)来说,项目功能较复杂,内部资源主要消耗在两路的串口功能,主要原因在于通信协议很复杂。整个工程代码量较大,16k的flash和1k的ram几乎被榨干了,由于后续还要增加新功能,所以必须要想办法减少代码量,代码重新架构的话,工作量太大,不太现实,于是我把目标放在了变量初始化的函数上,大部分变量都是初始化为0,于是我便想不如直接通过启动代码把它给初始化为0,这样可以省掉一部分空间。
单片机选型简述
分类 | 详情 |
---|---|
型号 | SC92F8463B |
内核 | 51内核 |
主要资源 | 1k ram + 16k rom |
如何通过启动代码初始化变量
要知道的事儿
首先,单片机中的所有变量,不论是局部变量还是全局变量,都是在ram空间中的,51内核的单片机的启动文件基本都是startup.a51,这个文件中,其实是有对ram空间进行初始化的语句的,但是由于各个单片机平台不同,ram空间基本也都不一样,
所以在具体操作时,需要自己去修改一下。
第一步——修改ram空间长度
; <o> IDATALEN: IDATA memory size <0x0-0x100>
; <i> Note: The absolute start-address of IDATA memory is always