2349428_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2349428_zh-CN

2349428_zh-CN

二进制实用程序 -> 在 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 选项。

carlos_o_0-1775859230341.png


我想检查问题是否出在将 .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 的内存配置如下:

carlos_o_0-1775855141099.png


你可以看到它右键点击项目进入属性-> 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你有吗?

carlos_o_0-1775847375326.png

让我知道你的结果

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
}
}

Tags (1)
No ratings
Version history
Last update:
‎04-15-2026 02:53 AM
Updated by: