为了适应新算法及简化衍生产品开发的需要,必须对处理器程序固件进行升级。但是,如果将这种程序固件存储在ROM或闪存中,对于某些嵌入式应用将带来一些问题。对可掩膜ROM来说,在芯片制造时将处理器固件“烧死”。在典型的系统级芯片设计流程中,固件是项目的关键一环。掩膜ROM内容的每次改变都需要进行非重复性工程投资,而且还要花费长达数月的时间。另外,基于ROM的存储还增加了库存管理成本。
对许多消费类应用来说,闪存的成本更令人望而却步。与将固件存储在片内相比,读取存储在外接闪存内的固件所需功耗较大。从外接闪存固件,易遭受没有授权的第三方的恶意拦截盗取。而对于片上闪存,通过反向工程,仍能“翻拍”闪存的内容。
相对来说,在处理芯片内嵌入性可编程(OTP)非易失存储器是一个更好的方案。除了能适应数据标准的变化,降低衍生产品成本并缩短衍生产品上市时间外,OTP存储器可通过软件的修改来应对工程变化的需要。从而使产品生命周期得以延长,并且通过在系统研发过程中的固件配置,强化了硬件和软件的协同开发。 固件升级:将固件升级程序放置在未编程的扇区中
应该
1.在可以重新配置存储器的地方考虑采用OTP存储器,即使固件有可能改变。OTP存储器具有编程时的固有稳定性,另外,它不受温度、电压、环境辐射和读取操作的影响。
2.应该预留若干“补丁”空间。在存储现有程序代码的扇区之外,在OTP存储器内留出一个或多个预留扇区。当需要对某一程序代码模块进行升级时,就可以将升级的模块编程到预留的存储扇区,然后利用控制逻辑指向这些升级模块。
3.应该充分估计未来程序固件升级所需的预留存储器空间。预留空间的大小取决于固件的存储器足迹、系统预期的使用寿命和固件升级频率。做此估计时应保守一些,因为OTP存储器存储密度大(特别是相对于闪存),故宁可多预留一些空间,哪怕以后用不上,也不要低估固件升级可能需要的容量。另外,嵌入式OTP存储器的体积也比板上SRAM小。
4.应该选用嵌入式OTP存储器,特别是对于那些成本比较敏感的应用,例如消费类产品。对于这些消费类产品,即便是增加一点成本,也可对整个芯片得成本产生很大影响。选用嵌入式OTP存储器对逻辑CMOS系统级芯片的工艺成本增加很少或基本没有增加。而选用嵌入式闪存将使得芯片成本增加50%。这是因为制造带有闪存的芯片需要额外的掩膜和工艺步骤。
5.应该充分估计OTP存储器的读取时间,以确保能满足特定芯片的要求。将引导代码存储在嵌入式OTP存储器中,而不是外接闪存。这样将省去把内容从闪存到嵌入式SRAM所需的时间。
不应该
1.将固件存储在单独的闪存芯片,然后再往处理器中。单独的闪存芯片不仅增加了系统成本、还加大了设备体积。另外,这种作法还增加了测试成本及复杂性,同时也增加了电路板及多芯片承载的复杂性。,从外接芯片的代码还增加了功耗。
2.在固件的安全性特别关键时,采用浮动门非易失存储器。对开发固件的公司来说,固件价值很高,同时对公司的竞争力也很重要。黑客可采用电压对比或其它扫描技术从嵌入式闪存中窃取固件代码。而外接闪存代码的盗取更容易,因为可以通过截取码流来实现。
3.忽视访问存储在存储器内的固件所需的功耗。功耗有时很重要,特别在芯片的上电周期上。将固件存储在外挂闪存中,然后到片上SRAM的过程尤其耗电。
4.忽视用于存储固件的存储器向新工艺节点的扩展能力。如果能够将芯片升级到更小的工艺节点,就能降低成本(芯片将变得更小),或者可以以相同成本在现有设计上添加进更多功能。基于物理限制,浮动门存储器技术通常落后工艺节点一到两代。
5.忽视你选作固件存储的各种存储器的可靠性——这可是一个不能出差错的地方哟!
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。