本帖最后由 小恩GG 于 2022-1-10 18:09 编辑
有客户在移植 AN12373(LPC804 I2C Secondary Bootloader)时,遇到不知道如何在MCUXpresso IDE中定义”Image header”问题。借此机会介绍如何在startup文件中配置某地址的值。 所使用环境: MCUXpresso IDEv11.4.0 LPC804
MCUXpresso IDE v11.4.0中,没有直接设定某地址值的功能,可以仿照crp进行配置。例如,在LPC804 地址0x00000100处设定值为 {0xFEEDA5A5,0x24010200,0x06230e0c,0,0,0x00000001};
步骤如下:
1. 添加 #define __IM __attribute__ ((used,section(".im"))) 利用 __attribute__ 关键字,指定到地址.im处,为了方便使用,用宏定义包装到__IM.
2. 添加 __IM const unsigned int IMG_HEADER[] ={0xFEEDA5A5,0x24010200,0x06230e0c,0,0,0x00000001}; 配置需要写到.im地址处的值。
3.打开lpcxpresso804_gpio_Debug.ld 文件,定义.im真实地址。 注意,手动修改.ld文件前,需要关闭“Manage linker script”选项,否则下次编译时,手动添加的代码会被覆盖,无效。 地址0x100在.isr_vector段后,所以添加如下:
/* MAIN TEXT SECTION */ .text : ALIGN(4) { FILL(0xff) __vectors_start__ = ABSOLUTE(.) ; KEEP(*(.isr_vector)) . = 0x100 ; PROVIDE(__IM_WORD_START__ = .) ; KEEP(*(.im)) PROVIDE(__IM_WORD_END__ = .) ;
4.重新编译工程,查看结果。 编译工程后,默认生成的是.axf文件,可以转换成hex或者S-Record 文件查看。 转化方法:右键.axf文件-> Binary Utilities ->Create hex
可以看到地址0x100处的值与前面配置的一样:
{0xFEEDA5A5,0x24010200,0x06230e0c,0,0,0x00000001};
|