浅谈RAM 执行应用程序

电子说

1.3w人已加入

描述

许多应用程序需要从 RAM 中执行代码,例如出于安全原因或例如在引导加载程序用于闪存自编程的情况下。通常这样的应用程序必须分为两部分:

将从闪存执行的主要部分。这部分代表主要应用程序,例如引导加载程序

主应用程序中的图像将在运行时复制到 RAM

RAM

软件概念

考虑到上述概念,开发需要考虑几个问题:

如何创建将存储在闪存中但在运行时从 RAM 执行的应用程序?

如何调试在不同项目中构建的应用程序?

公共资源

两个应用程序的分离需要如何处理公共资源,例如 RAM。

RAM
– 堆栈和堆定义(两个应用程序一个堆栈和一个堆;每个应用程序单独的堆栈)
– SADDR 和数据 RAM 应根据应用程序要求进行分区

选项字节
——选项字节将在应用程序之一中定义。此选项字节中的所有配置(例如看门狗)应对两个应用程序都有效,因为它不能在运行时更改

中断
——通过使用自编程库,可以对 RAM 中的所有中断使用通用中断服务程序

下图说明了两个应用程序的内存映射。这里堆栈用作两个应用程序的公共资源。

RAM

两个应用程序的内存映射(ROM、RAM)

创建一个从 RAM 执行的应用程序

本章介绍如何设置一个应用程序,该应用程序将通过主应用程序闪存中的映像加载并从 RAM 执行。请注意,以下描述的配置基于两个应用程序的一个公共堆栈。

内存映射

由于 RAM 中的应用程序是独立应用程序,因此必须相应地定义编译器/汇编器使用的所有标准段,如 RCODE、XCODE、FAR_I、FAR_CONST 等。与普通应用程序相比的不同之处在于,该应用程序将从 RAM 而非闪存执行。这意味着这些段最初位于图像(闪存)中,稍后将逐段复制到 RAM 并从那里执行。请注意,如果应用程序有多个片段,则无法直接复制整个图像。

RAM

这样做的原因是图像中的段位置可能与 RAM 中的位置不同,因此必须逐段复制所有段。由于应用程序将从 RAM 中执行,因此必须通知链接器该段将放置在闪存中,但从 RAM 中执行。这可以通过将在下一章中介绍的链接器功能“分散加载”来完成。

编辑:hfy

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
MISLIU 2022-04-22
0 回复 举报
收起回复
  • 相关推荐
  • RAM

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分