2013-04-26 48 views
0

我需要创建一个提供某些功能的ROM掩码。但是,应该可以覆盖提供固件补丁的功能。因此,补丁表应位于闪存中,可能会被稍后的固件升级覆盖,而固件的主要部分位于掩膜ROM中,并且以后无法修改。需要将我的固件映像迁移到ROM掩码

有没有人有任何想法如何做到这一点?创建补丁表的最佳做法是什么?

+1

您需要提供更多信息。 (例如:你在说什么设备等)请更新您的问题并添加相关标签。 – 2013-04-26 17:47:00

回答

0

补丁表 - 基本上你的ROM有一个内置跳转到内置的RAM(Flash)插件。在你的ROM跳转之后,闪存总是会跳回到你的原始代码。您现在可以从RAM中更改程序的行为。这假定你被允许从RAM运行代码当然。如果没有,那么只有数据表可以随时更改。

现在,只需启动一次就可以修改启动状态代码,如版本号或其他全局/常量数据,但这可能不够。您可以添加另一个跳转到闪存,并且每次“经常”运行到您的代码,以便它可以在运行后更新程序状态 - 例如曾经是vblank或曾经是应用程序循环。

上面应该给你足够的方法来改变自发布以来随时间变化的数据或者可能修复一个轻微的逻辑错误,但它不会允许您完成销售更改功能。要做到这一点,你需要更多的代码。而更多的代码取决于你可以使用多少内存。例如,如果你有足够的内存,并且从Flash RAM运行不会太多地损害perforamnce(并且被允许),你可以通过在启动时将所有的关键ROM功能拷贝到RAM中,使得事情变得非常灵活,然后调用上面描述的RAM补丁跳转,这将允许存储在RAM补丁其他地方的新代码覆盖任何以前复制的代码。如果你采取这种方法,你还需要确保在原有功能的周围留出了一些额外的空间,以使新的填充功能有一定的增长空间。要复制到RAM的原始代码也可以压缩存储以节省ROM空间。这可以让你在事后改变任何事情。它还引入了一种非常简单的方法来利用您的代码,如果允许其他内容写入RAM,请注意。

希望这会有所帮助。

+0

“闪存”?它不是Flash *就是*我的经验是RAM ...... – 2013-04-29 14:37:27

+0

我听说EEPROM被称为flash。但是,一般来说,你是对的。 – 2013-04-29 15:45:56

+0

在这种情况下,“从闪存RAM中运行” - 你只是指“从RAM中运行”? – 2013-04-29 16:04:55