【问题标题】:keil arm - how to share variable between bootloader and user appkeil arm - 如何在引导加载程序和用户应用程序之间共享变量
【发布时间】:2014-05-09 20:00:28
【问题描述】:

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

【问题讨论】:

    标签: arm keil


    【解决方案1】:

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

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

    RW_IRAM0 0x100000000 UNINIT 0x0000001F {
        *(NoInit)
    }
    

    然后在您的启动和应用程序中,您都可以定义一个驻留在该空间中的变量:

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

    希望这有助于您走上正轨!

    【讨论】:

    • 如果你正在做这样的事情,你可能还想保护这个内存范围,以确保它在软复位后仍然有效。例如。计算该块的 CRC
    • 谢谢,帮助很大。此应用程序使用以太网 dhcp 进行连接。 DHCP 在引导加载程序中运行,并在用户应用程序中再次运行。是否也可以使用共享内存在引导加载程序和用户应用程序之间传递以太网连接结构。允许只运行一次 DHCP 的其他建议..?
    • @whitedog 我想你可以让它工作。您必须确保您的 NoInit 部分在 Scatter-loading Description 文件中定义得足够大,然后在定义/初始化结构时使用如上所示的相同属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2020-10-01
    • 2021-05-25
    • 1970-01-01
    相关资源
    最近更新 更多