This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:NOINIT RAM 部分在软件复位后复位

Guru**** 2042950 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/707908/tms570lc4357-noinit-ram-section-is-reset-after-software-reset

器件型号:TMS570LC4357

我在 RAM 中将一个区域配置为项目的 NOINIT 区域。

但是当我执行软件复位时,整个 RAM 会自动复位(PC 跳转至  LDR PC,OS_ResetAddr)

链接器脚本。 在调试复位或软件复位后、RAM 区域0x08030000直接复位。 不是在内存初始化之后  

如何防止该区域复位

MEMORY
{
/* MEMORY 区域全部映射到 RAM (512KB)以在 RAM 中加载和执行应用*
/ EXCTABLE (Rx):origin = 0x00000000,length = 0x1000
flash (Rx):origin = 0x00001000、length = 0x3f000
RAM (RWX):origin = 0x08000000,length = 0x30000
RAMNONINIT (RW):origin = 0x08030000、length = 0x10000
}
--entry_point=boardResetStart

段
{
.ExceptionTable:> EXCTABLE
.text :>闪存
.const :>闪存
.section_noinit:> RAMNONINIT、type=NOINIT
.os_stack :
{
*(.os_kernstack*)
*(.os_taskstack*)
} run=RAM、palign = 8
.bss :
{
*(.bss)
} run = RAM、run_start (__STARTbSS)、run_end (_ENDBSS)、palign = 4
.data :
{
*(.data)
} load=flash、run=RAM、run_start (__STARTDATA)、run_end (__ENDDATA)、load_start (__INITDATA)、 palign = 4 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    上电复位后 CPU L2 SRAM 的内容未知。 为了避免读取 RAM 时出现 ECC 故障、必须初始化 RAM。 RAM 可通过写入已知值来初始化。 当已知值被写入时、相应的 ECC 位将自动计算为和
    更新了。 因此、SRAM 自动初始化在系统启动时(sys_startup.c)被启用。

    CPU 复位仅复位处理器、而调试复位仅复位调试逻辑和调试 APB 接口。