keil arm-如何在引导加载程序和用户应用程序之间共享变量

keil arm-如何在引导加载程序和用户应用程序之间共享变量,arm,keil,Arm,Keil,Keil ARM uVision4,处理器LPC1768 是否可以在内存中定义的位置共享变量,以便引导加载程序和用户应用程序设置/查看此变量?这是可能的,但您必须正确设置内存空间 一种解决方案是在分散加载描述文件中设置一部分内存,这样就不会在启动和应用程序之间初始化内存。例如,您可以通过留出一段内存来设置一个名为NoInit的部分- RW_IRAM0 0x100000000 UNINIT 0x0000001F { *(NoInit) } 然后,在启动和应用程序中,您可以定义驻留在该空间

Keil ARM uVision4,处理器LPC1768
是否可以在内存中定义的位置共享变量,以便引导加载程序和用户应用程序设置/查看此变量?

这是可能的,但您必须正确设置内存空间

一种解决方案是在分散加载描述文件中设置一部分内存,这样就不会在启动和应用程序之间初始化内存。例如,您可以通过留出一段内存来设置一个名为
NoInit
的部分-

RW_IRAM0 0x100000000 UNINIT 0x0000001F {
    *(NoInit)
}
然后,在启动和应用程序中,您可以定义驻留在该空间中的变量:

static unsigned long system_flags __attribute((section("NoInit"), zero_init));

希望这能帮助你走上正轨

如果您正在执行这些操作,您可能还需要保护此内存范围,以确保在软重置后它仍然有效。例如,在该块上计算CRC谢谢,非常有帮助。此应用程序正在使用以太网dhcp进行连接。DHCP在引导加载程序中运行,并再次在用户应用程序中运行。也可以使用共享内存在引导加载程序和用户应用程序之间传递以太网连接结构。其他建议只允许运行一次DHCP?@whitedog我想你可以让它工作。您必须确保在分散加载描述文件中定义了足够大的
NoInit
节,然后在定义/初始化结构时使用如上所示的相同属性。