对于Windows 8.x或Windows 10来说,大多数NXP OpenSDA引导加载程序都比较脆弱:Windows的写入访问可能会使出厂的引导加载程序混乱,并使得调试固件和引导加载程序失去作用。在本文中,我将介绍如何使用MCUXpresso IDE和P&E Universal Multilink恢复引导加载程序。
前言
在本文中,我将介绍如何使用P&E Universal Multilink和MCUXpresso IDE V10.0.2重新编程OpenSDA V2.x引导加载程序。JTAG / SWD仿真器是必不可少的,否则无法重新烧写并修复Kinetis K20上的OpenSDA引导加载程序。
我使用的是恩智浦FRDM-K22F开发板。
注意:旧版OpenSDA v1.x(例如FRDM-KL25Z)是无法更新的,因为这些开发板上的引导加载程序使用无法重新编程的引导加载程序。
Bootloader固件
开发板对应的引导加载程序和固件可以在http://www.nxp.com/opensda上找到。
FRDM-K64F开发板是第一个具有开放引导加载程序(OpenSDA V2.0)的电路板,调试固件应用程序从0x5000地址开始。
后来的板卡(如FRDM-K22F)使用的是OpenSDA V2.1,应用程序从0x8000地址开始。
这两个原有的引导程序都存在Windows 8.x / 10问题。我修复Windows 8/10问题的方法是使用GitHub上的OpenSDA 2.2 Daplink BOOTLOADER for K20DX.bin(应用程序基地址位于0x8000)。
转换Bootloader
因为P&E调试器加载程序不能加载bin文件,所以我们必须将文件转换为支持的S19 / S-Record。有多种方法可以实现这一点,其中一种是使用GNU二进制实用程序。
以下是一个示例命令行(更新您的文件名):
注意:在MCUXpresso IDE中,objcopy程序位于<IDE Installation Path> \ ide \ tools \ bin中。
创建项目
要烧写引导加载程序,最简单的方法是使用MCUXpresso IDE创建一个虚拟项目(哪个CPU并不重要)。
注意:逻辑上该项目的CPU选择应该是50 MHz的K20DX128M5,但是因为恩智浦还没有发布该CPU的带有所有文件的SDK,所以我们不能使用它。而是创建一个您具有SDK的任何CPU的项目,例如FRDM-K22F。我们将在调试配置中更改MCU。
调试连接
将P&E Multilink Universal连接到K20的调试接口(OpenSDA)。检查您的电路板原理图,并确保电缆正确连接。通常是紧挨着K20 MCU的SWD插头。
启动配置
然后使用项目中的上下文菜单创建一个新的P&E调试连接:
双击创建的调试启动配置,并打开它。在P&E调试连接的Debug选项卡中使用“Select Device”按钮将器件设置为OpenSDA电路板上使用的K20DX128M5:
在调试配置中,不使用正常的.axf,而是指定.s19文件。在下面的示例中,我已将该.s19文件添加到项目的根文件夹。
保存并关闭该对话框。
烧写S19文件
要将文件下载到K20DX128M5,请使用我们修改的启动配置中的“Debug as”上下文菜单:
然后会将S19下载到电路板上。调试会话不显示任何有用的东西(因为我们正在调试一个没有源代码或调试信息的二进制S19文件),所以我们可以结束调试会话。
检查Bootloader版本
按住复位按钮打开电源。该设备应枚举为DAPLINKBOOT设备,其中的DETAILS.TXT显示:
在主板上恢复引导加载程序后,现在您可以加载调试固件(例如从SEGGER或P&E,可从http://www.nxp.com/opensda获取)。
总结
使用DAPLink仿真器很容易实现更新NXP OpenSDA V2.x引导加载程序。 更新完成后可以修复Windows 8.x / 10问题。 需要用到的工具是一个二进制/ s19文件加上一个JTAG / SWD仿真器。 由于P&E调试连接只支持.elf / .axf和S19文件,我必须先将二进制(.bin)转换为S19文件,然后在调试连接中指定该文件,器件选择使用K20DX128M5。 这样,我就可以恢复OpenSDA引导加载程序。
没有评论:
发表评论