NXP MCU 技术论坛
直播中

Arvinhw

9年用户 911经验值
擅长:嵌入式技术
私信 关注
[问答]

在MK22FN128上设置Kinetis引导加载程序失败,怎么解决?

在 MK22FN128 上设置 Kinetis 引导加载程序失败。

我有一个带有 MK22FN128VLH10 微控制器的定制 PCB。重要的外设是:
1) 用于连接 SEGGER J-Link 调试器的 20 针 J-Tag 连接器。
2) USB micro-B 端口连接到微控制器。
3) 很少有引脚连接到接头(用于 I/O)。
4) 很少有 LED 作为指示灯。

已经在工作的东西:
我写了一个程序来闪烁 LED,读取模拟输入并通过 USB 作为虚拟 com 端口发送数据。使用 SEGGER J-Link 调试器将该程序闪存到板上并进行了测试。它完全按预期工作。

问题:
我想用USB 烧写程序。但由于某种原因,引导加载程序无法正常工作。

我尝试了什么:
- 从 NXP 网站下载了 Kinetis Bootloader v2。
- 将项目“flashloader”导入 KDS(Kinetis Design Studio)。
- 构建项目(在“发布”配置中)并创建“flashloader.elf”。
- 使用提供并生成“flashloader_image.c”的 python 脚本。
- 将项目“flashloader_loader”导入 KDS。
- 将文件“flashloader_image.c”添加到“flashloader_loader”项目并修复#include 以指向正确的文件。
- 构建项目(发布)并使用 J-Link 调试器刷新微控制器。

到目前为止,一切看起来都很好。我将 USB 连接到我的电脑并使用 blhost 执行以下命令 -
$./blhost -u -- 获取属性 1
这是成功的。我从微控制器得到了预期的响应。

接下来,我执行以下命令以通过引导加载程序刷新微控制器 -
$./blhost -u -- 闪存擦除所有
$./blhost -u -- 写入内存 0xA000 AppICreated.bin
$./blhost -u -- 重置
所有三个命令都成功运行。

就是这样。没有其他事情发生。我重置了控制器,关闭电源并打开它,等待了几分钟。我的程序不执行。此外,引导加载程序不再工作。

我在 0xA000 位置使用 Kinetis FlashTools(在 Windows 系统中)尝试了同样的事情,它给出了相同的结果。但是,引导加载程序在这种情况下继续工作。

我还尝试写入位置 0x0。该程序开始工作,但我很确定引导加载程序已被覆盖并丢失。当我通过虚拟 com 发送一个字符时,我使用“Kinetis Bootloader v2.0.0 参考手册”第 19 页中的代码在我的代码中调用引导加载程序,但控制器只是停止工作,直到我重置它。

如果您需要了解更多信息,请告诉我。我花了很多时间并尝试了很多无用的技巧来尝试修复它。

如果有人知道我做错了什么,我很想知道。谢谢。

更多回帖

发帖
×
20
完善资料,
赚取积分