【问题标题】:download data on lpc1768在lpc1768上下载数据
【发布时间】:2013-08-05 03:04:46
【问题描述】:

有一个来自 C 项目的 hex 文件。 我想在 LPC1768 的闪存上下载这个十六进制文件,其中包含一些我在运行时代码中使用的原始数据(用于在代码中初始化数据)。 我知道当我在板上写它时,在运行时,LPC1768 会从内存中的闪存复制数据。

问题 1:如何用 hex 文件,用 jflash 下载原始数据?

问题 2:如何找到原始数据在内存中的复制位置,以便在运行时使用它?

【问题讨论】:

    标签: arm lpc


    【解决方案1】:

    这似乎与我的问题相似:

    Include binary file with GNU ld linker script

    linking arbitrary data using GCC ARM toolchain

    您可以将原始数据转换为目标文件,然后将其与您的代码链接以生成包含这两个文件的 hex 文件,然后您可以照常上传该文件。链接器将定义特殊符号,告诉您数据在内存中的开始和结束位置。查看上面的链接以获取更多信息和示例。

    【讨论】:

    • 没有链接器有没有办法做到这一点(分别下载带有jtag的hex文件和二进制数据)?
    • 好吧,您可以编写一个简单的程序,将您的数据附加到所选空地址范围的 hex 文件中,然后上传这样的 hex 文件。 hex 文件的格式很简单en.wikipedia.org/wiki/Intel_HEX 其他的就不知道了。
    • 当您将数据附加到十六进制文件时,您必须指定数据最终将在内存中的哪个地址,只需确保它是一个空范围并且对您的微控制器有效。上传 hex 文件后,您可以访问该地址的数据。
    【解决方案2】:

    您可以将二进制数据转换为C,例如bin2c。然后只需将生成的C 代码添加到您的项目中即可。

    生成的代码如下所示:

    const unsigned char binary_data[] = {
        0x4D, 0x5A, 0x90, 0x00, //...
    }
    

    它将最终成为闪存中的只读数据,除非您使用不寻常的链接器脚本,否则不会将其复制到 RAM 中。

    可以在 Makefile 中自动从二进制文件生成C 代码。例如,我在 OpenOCD 项目中看到了这一点。

    【讨论】:

      【解决方案3】:

      您可以考虑使用Flash Magic 将十六进制文件下载到闪存中。它只下载十六进制。不过,您可能无法调试代码。

      你是在尝试逆向工程吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        • 2016-03-05
        • 2019-03-03
        • 2020-08-30
        • 1970-01-01
        相关资源
        最近更新 更多