二进制实用程序 -> 在 MCUXpresso 中创建十六进制导致 kStatus_FlashAlignmentError FRDM-MCXN947 将 blhost 与生成的版本后十六进制文件一起使用时 出错 我们有两个后期构建步骤来使用 MCUXpresso 生成固件的 bin 和十六进制版本。以下显示了我们的后期版本步骤: arm-none-eabi-size " ${BuildArtifactFileName} " arm-none-eabi-objcopy-v -O ihex " ${BuildArtifactFileName} " " ${BuildArtifactFileBaseName} .hex " arm-none-eabi-objcopy-v-O 二进制 " ${BuildArtifactFileName} " " ${BuildArtifactFileBaseName} .bin " # checksum -p${TargetChip} -d"${BuildArtifactFileBaseName} .bin" 另外,我还使用了在 McuxPresso 中右键单击 axf 文件然后选择 二进制实用程序-> 创建十六进制文件来生成十六进制文件的方法。 我正在尝试使用 blhost 来刷新 FRDM-MCXN947 开发板。使用 bin 文件成功。 但是,在使用十六进制文件时,我收到了 kStatus_FlashAlignmentError 错误。 我尝试了以下两种 blhost 方法: "$ blhost -u 0x1Fc9,0x014F -j -- flash-erase-all { " command":"flash-erase-all", " response": [], " status : { " " description :"0 (0x0) Success." 、 "值": 0 } } $ blhost -u 0x1Fc9,0x014F flash-image ./DevBoard.hex erase Inject command 'flash-image' Response status = 101 (0x65) kStatus_FlashAlignmentError $ blhost -u 0x1Fc9,0x014F -j -- flash-erase-all { " command" :"flash-erase-all", " response": [], " status": { " description":"0 (0x0) Success.", " 值 ": 0 } } $ blhost-u 0x1FC9,0x014F-j — 写入内存 0x0。/devboard.hex { " 命令 ": " 写入内存 ", " 响应 ": [], " 状态 ": { " description ": " 10004 (0x2714) 没有来自目标的响应数据包设备。", "值": 10004 } } 为了使十六进制文件成功运行,我应该在后期版本步骤或blhost命令中使用其他方法吗? 启动 ROM | 启动配置 | 闪存 开发板 Re: Binary Utilities -> Create hex in MCUXpresso results in kStatus_FlashAlignmentError 感谢您分享您的内存配置并确认您能够使用 axf 文件进行调试。
您的内存配置是默认配置,所以这不是问题。
请您尝试使用 .bin 格式的 blhost 闪存。项目的文件?
您可以像生成十六进制文件一样生成文件,但要选择 bin 选项。
我想检查问题是否出在将 .axf 转换为 .hex 时 Re: Binary Utilities -> Create hex in MCUXpresso results in kStatus_FlashAlignmentError 我没有故意更改内存配置。我附上了设置的屏幕快照。 这足以说明有什么变化吗? 当连接到运行固件的 FRDM-MCXN947 时,我可以使用调试器。 Re: Binary Utilities -> Create hex in MCUXpresso results in kStatus_FlashAlignmentError 你好@Don_Adams_HPE
感谢您分享您的发现。
你能否检查一下你的内存配置是默认配置还是你修改了它?
来自 gpio_led_output_cm33_core0 的内存配置如下:
你可以看到它右键点击项目进入属性-> C/C++ 版本-> MCU 设置
这个问题似乎更像是内存对齐的配置问题。
能否确认您是否能在 FRDM-MCXN947 中使用 linkserver 调试代码?
BR Re: Binary Utilities -> Create hex in MCUXpresso results in kStatus_FlashAlignmentError 感谢您的回复。 我没有尝试使用 UART。 不过,我还是通过 USB 试用了您使用的相同 SDK 示例。 我试用了这两个 SDK 示例项目: frdmmcxn947_gpio_led_output_cm33_core0.hex frdmmcxn947_dev_phdc_weighscale_freertos_cm33_core0.hex 我使用 Binary Utilities-> 在 McuxPresso 中创建十六进制方法创建了这些文件。如下文输出所示,这两个文件都使用 USB 运行。 然后,我用同样的方法用我的代码创建 DevBoard.hex 文件,结果出现了kStatus_FlashAlignmentError 错误。 我的代码以 weighscale SDK 示例代码为起点,但后来进行了大量修改。 我不知道如何排除和解决这个问题。 使用 USB 闪存十六进制文件是我们的项目要求之一。 样本输出: "$ blhost -u 0x1Fc9,0x014F -j -- flash-erase-all { " command":"flash-erase-all", " response": [], " status : { " " description :"0 (0x0) Success." 、 "值": 0 } } $ blhost -u 0x1Fc9,0x014F -j -- flash-image ./frdmmcxn947_gpio_led_output_cm33_core0.hex erase { " command":"flash-image", " " response : [], " status": { " description":"0 (0x0) Success." 、 " 值 ": 0 } } $ blhost-u 0x1FC9,0x014F-j — RESET { " 命令 ": "RESET", " 响应 ": [], " 状态 ": {" 描述 ": " 0 (0x0) 成功。", "value": 0 } } $ blhost -u 0x1Fc9,0x014F -j -- flash-erase-all { " command":"flash-erase-all", " response": [], " status": { " description":"0 (0x0) Success." 、 "value": 0 } } $ blhost -u 0x1Fc9,0x014F -j -- flash-image ./frdmmcxn947_dev_phdc_weighscale_freertos_cm33_core0.hex erase { " command":"flash-image", " response": [], " status": { " description":"0 (0x0) Success." 、 " 值 ": 0 } } $ blhost-u 0x1FC9,0x014F-j — RESET { " 命令 ": "RESET", " 响应 ": [], " 状态 ": {" 描述 ": " 0 (0x0) 成功。", "值": 0 } } "$ blhost -u 0x1Fc9,0x014F -j -- flash-erase-all { " command":"flash-erase-all", " response": [], " status : { " " description :"0 (0x0) Success." 、 "值": 0 } } $ blhost -u 0x1Fc9,0x014F -j -- flash-image ./DevBoard.hex erase { " command":"flash-image", " " response : [], " status": { " description":"101 (0x65) kStatus_FlashAlignmentError", " value": 101 } } Re: Binary Utilities -> Create hex in MCUXpresso results in kStatus_FlashAlignmentError 你好@Don_Adams_HPE
感谢您的来信!
我这边无法复制您的问题。我使用 SDK 的一个示例生成 .hex文件,我注意到的区别在于我用 UART 在 ISP 中设置板来做,而你用 USB 来做。您能否尝试通过 UART 进行调试? 另外,您能否调试 .axf你有吗?
让我知道你的结果
BR Re: Binary Utilities -> Create hex in MCUXpresso results in kStatus_FlashAlignmentError 我们发现了解决问题的办法。 删除命令末尾的 "擦除 "即可成功运行: "$ blhost -u 0x1Fc9,0x014F -j -- flash-erase-all { " command":"flash-erase-all", " response": [], " status : { " " description :"0 (0x0) Success." 、 "值": 0 } } $ blhost -u 0x1Fc9,0x014F -j -- flash-image DevBoard.hex { " 命令":"flash-image", " 响应": [], " 状态": { " 描述":"0 (0x0) 成功。" 、 " 值 ": 0 } } $ blhost-u 0x1FC9,0x014F-j — RESET { " 命令 ": "RESET", " 响应 ": [], " 状态 ": {" 描述 ": " 0 (0x0) 成功。", "值": 0 } } 这不起作用: $ blhost -u 0x1Fc9,0x014F -j -- flash-image DevBoard.hex erase { " command":"flash-image", " response": [], " status": { " description":"101 (0x65) kStatus_FlashAlignmentError", " value": 101 } } Re: Binary Utilities -> Create hex in MCUXpresso results in kStatus_FlashAlignmentError 是的,二进制文件能用,十六进制文件不能用。 "$ blhost -u 0x1Fc9,0x014F -j -- flash-erase-all { " command":"flash-erase-all", " response": [], " status : { " " description :"0 (0x0) Success." 、 "值": 0 } } $ blhost -u 0x1Fc9,0x014F -j -- write-memory 0x0 ./DevBoard.bin { " command":"write-memory", " response": [], " status": { " description":"0 (0x0) Success." 、 " 值 ": 0 } } $ blhost-u 0x1FC9,0x014F-j — RESET { " 命令 ": "RESET", " 响应 ": [], " 状态 ": {" 描述 ": " 0 (0x0) 成功。", "值": 0 } }
查看全文