gpt4 book ai didi

c - 需要将我的固件镜像迁移到 ROM 掩码

转载 作者:行者123 更新时间:2023-11-30 17:52:22 29 4
gpt4 key购买 nike

我需要创建一个提供一些功能的 ROM 掩码。不过,应该可以覆盖提供固件补丁的功能。因此,补丁表应该位于Flash存储器中,以后固件升级可能会被覆盖,而固件的主要部分位于mask ROM中,以后无法修改。

有人知道这是如何做到的吗?创建补丁表的最佳实践是什么?

最佳答案

补丁表——基本上你的ROM还有一个内置的跳转到内置的RAM(闪存)地址。在 ROM 跳转调用之后,闪存总是会以某种方式跳转回该位置,以返回到原始代码。您现在可以从 RAM 更改程序的行为。当然,这是假设您可以从 RAM 运行代码。如果没有,则只能动态更改数据表。

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

上面应该给你足够的余地来更改自发布以来随时间变化的数据,或者可能修复轻微的逻辑错误,但它不允许你整体销售更改功能。为此,您需要更多代码。更多代码取决于您可以使用多少 RAM。

例如,如果您有足够的 RAM,并且从闪存 RAM 运行不会对性能造成太大影响(并且是允许的),您可以通过在启动时将所有关键 ROM 函数复制到 RAM 中,然后调用来使事情变得非常灵活您的 RAM 补丁跳转如上所述,这将允许存储在 RAM 补丁中其他位置的新代码覆盖任何以前复制的代码。如果您采用这种方法,您还需要确保在原始函数周围留下一些额外的空间,以便为新的填充函数提供一些增长空间。复制到 RAM 的原始代码也可以压缩存储,以节省 ROM 空间。这使您可以在事后更改任何内容。如果允许其他内容写入 RAM,它还引入了一种非常简单的方法来利用您的代码,所以要小心。

希望这有帮助。

关于c - 需要将我的固件镜像迁移到 ROM 掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16242027/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com