C项目中有一个hex文件。 我想在LPC1768的flash上下载这个hex文件,其中包含一些原始数据,我在运行时的代码中使用它(用于初始化代码中的数据)。 我知道当我在电路板上写它时,在运行时,LPC1768会从存储器中的闪存中复制数据。
问题1:如何使用hex文件下载原始数据,使用jflash?
问题2:如何在内存中找到原始数据的复制位置,以便在运行时使用它?
答案 0 :(得分:1)
这似乎与我的问题类似:
Include binary file with GNU ld linker script
linking arbitrary data using GCC ARM toolchain
您可以将原始数据转换为目标文件,然后将其与代码链接以生成包含两者的hex文件,然后照常上传。链接器将定义特殊符号,告诉您数据在内存中的开始和结束位置。查看上面的链接以获取更多信息和示例。
答案 1 :(得分:0)
您可以将二进制数据转换为C
,例如使用bin2c。然后,只需将生成的C
代码添加到项目中。
生成的代码将如下所示:
const unsigned char binary_data[] = {
0x4D, 0x5A, 0x90, 0x00, //...
}
它最终将作为flash中的只读数据,除非您使用不常见的链接器skript,否则不会将其复制到RAM中。
可以在Makefile中自动生成二进制文件中的C
代码。我在OpenOCD项目中见过这个例子。
答案 2 :(得分:0)
您可能会考虑使用Flash Magic将hex文件下载到闪存中。它只下载十六进制。但是,您可能无法调试代码。
你是想尝试逆向工程吗?