ARM技术论坛
直播中

谷禹志

2年用户 4经验值
擅长:嵌入式技术
私信 关注
[问答]

该如何将程序烧入到flash内,或者其他可掉电保存的内存中?

SoC是am437x,cortex-a9内核,现在想把程序烧入到flash(或者其他可掉电保存的内存)内,而不是RAM,请问应当修改哪部分程序呢?

编译器为CCS9.3,下图为TI例程:
image.png

已退回1积分

回帖(1)

蒲泛粟

2023-10-18 10:02:51
首先,要将程序烧入到flash内,需要使用一个烧录器。TI的C2000系列MCU有一个称为“Flash API”的工具,该工具可用于在Flash中编写应用程序。而对于该SoC,TI提供了称为“UniFlash”的工具,可以用来烧录程序到Flash中。它可以通过JTAG、UART和USB等接口以各种方式与目标设备通信。您可以在这里下载官方文档来了解更多信息。

其次,必须要确保程序能够正确烧录到Flash中,应当修改程序源代码,将程序存储在Flash中,而不是RAM中。有几种方法可以实现。

一种方法是使用链接脚本文件。链接脚本文件包含有关可执行程序如何布局在RAM或Flash中的信息。要将程序烧录到Flash中,您需要调整链接脚本以指定代码段和数据段的位置。以下是一个示例链接脚本文件:

```
MEMORY {
   FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 2M
   RAM (rwx) : ORIGIN = 0x80000000, LENGTH = 256K
}

SECTIONS {
   .text : {
      *(.text)
   } > FLASH

   .data : {
      *(.data)
   } > RAM

   .bss : {
      *(.bss)
   } > RAM
}
```

在以上示例中,我们将`.text`段和`.const`常量段放置在Flash中,而将`.data`和`.bss`段放置在RAM中。

另一种方法是直接在代码中使用芯片内存映射寄存器访问Flash。因为SoC有大量可用的闪存,可以使用它们来存储应用程序和数据。可以使用底层程序库中提供的函数或直接使用ARM Cortex-A系列内核的寄存器来编写代码,这比使用链接脚本文件更具控制性。然后在烧录时,将可执行文件通过烧录器编写到Flash中。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分