首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在进行嵌入式软件更新时,应该擦除整个应用程序代码,还是只部分更新应用程序?

在进行嵌入式软件更新时,应该擦除整个应用程序代码,还是只部分更新应用程序?
EN

Stack Overflow用户
提问于 2022-07-07 00:50:56
回答 3查看 54关注 0票数 0

当公司更新产品的嵌入式C代码应用程序固件(通过微控制器上的引导加载程序或JTAG等)时,它们通常会刷新一个包含新特性+旧软件的全新..hex/..bin文件吗?因此,彻底废除旧的程序?或者通过单独的..hex/..bin文件进行部分应用程序更新是标准的吗?

我问这个问题是因为我想知道发布不同嵌入式软件包的最佳行业实践。理想情况下,在不更新整个程序内存的情况下,能够为项目的一个特性刷新特定的更新是很好的。

例如:让我们假设您的项目的嵌入式C软件有三个特性:

handling

  • displaying输入
  1. 用户输入输出
  2. 电源管理

如果您有许多软件版本的每个功能,并想测试不同版本的组合,您能有单独的..hex/..bin为每个特性闪烁到MCU?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-07 07:01:58

除非您将程序的某些部分设计为独立于位置的代码,然后将这些部分从固定地址链接起来,否则您不能真正地部分更新程序。这是可以做到的,但在设计过程中增加了额外的复杂性。

否则,如果您没有像这样设计您的程序,机器代码将充满绝对地址,并跳转到错误的地方。

通常的方法是立即更新整个程序(可能不包括当前的任何引导加载器部分)。并可选择地分别更新数据闪存/eeprom。

票数 1
EN

Stack Overflow用户

发布于 2022-07-07 06:49:44

它取决于操作系统、体系结构和系统的需求。

如果所有部件都是独立的,则可以部分更新

  • 。这将有助于减少更新firmware/software.
  • If (组件之间的接口可能发生更改)的时间:不建议使用部分更新,因为当接口更改时,它可能导致未定义的行为。如果需要,特别检查需要实现接口的一致性。
票数 0
EN

Stack Overflow用户

发布于 2022-07-07 07:02:47

部分更新非常常用,但使用的方式与您所描述的不同。

最常见的用例是您有一个bootloade+application,并且只有应用程序被更新。

当应用程序完全分离时,这种方法是合适的。

您所描述的情况意味着每个特性都需要彼此或与主应用程序进行通信。在这种情况下,尝试将这些特性分离为单独的闪存区域会带来太大的麻烦。

您必须为每个“功能”提供一个单独的闪存段,从而产生空白(浪费空间),同时希望您的特性不会超过分配的空间。此外,您还必须考虑如何实现不同功能之间的通信、维护兼容性等。

只要把所有的东西连接在一起,并立即更新所有的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72891210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档