ROM(Read-Only Memory)简称只读存储器,是一种只能读取数据的存储器。把代码存入ROM可以保证程序不被篡改,但是这种方法也存在一些问题。
ROM的空间是固定的,无法动态扩展,因此在存放代码时需要充分考虑空间的利用率。尤其是在嵌入式系统中,存放固件程序占用的ROM空间要比存放普通应用程序占用的ROM空间更为有限。
为充分利用有限的ROM空间,程序员需要对代码进行优化,选择程序最小化的数据类型和算法,去除冗余代码。
将代码存放在ROM中,就意味着代码不可修改,如果需要对代码进行更新,就需要重新烧录ROM。这个过程需要将整个ROM清空,再重新烧录程序。对于嵌入式设备或者需要频繁更新的程序而言,这种方式会增加成本和时间。
因此,在实际应用中,一些程序员会将一些固定的代码(如启动代码和配置代码)存放在ROM中,而将其他代码存放在RAM中。这样修改起来更加方便。
ROM中存储的代码只有一份,因此当ROM出现故障时就会影响整个程序的稳定性。而SRAM(Static Random Access Memory)等其他存储方式包含多个不同的存储单元,当某一个单元出现故障时,程序可以通过其他单元进行恢复和修复。
每次烧录都会对ROM进行一定的损伤,因此ROM的烧写次数是有限制的。一旦ROM烧写次数达到上限,就无法再进行烧录,导致程序无法更新。因此,程序员需要平衡ROM的利用率和烧写次数。
在实际应用中,一些程序员会使用EEPROM(Electrically Erasable Programmable Read-Only Memory)代替ROM,因为EEPROM可以通过电子信号进行擦除和重写,而不需要重新烧录ROM,因此可以减少ROM的损伤次数。