1. 引导模式介绍
XMC1000系列的引导模式的程序都放在ROM区域,如下图所示,这个区域的程序时芯片出厂时就存在的,而且用户无法修改。系统上电或者复位后,会从ROM区域的Bootloader开始执行,然后根据不同的BMI(Boot Mode Index)选择不同的Bootloader分支。
XMC1000系列有以下模式:
ASC_BSL:UART引导模式
SSC_BSL:SPI引导模式
CAN_BSL:CAN引导模式(只有XMC1400有这个功能)
User Mode HAR(SWD/SPD):用户模式,但是等在Bootloader程序中
User Mode Debug(SWD/SPD):用户模式,跳到用户程序执行
User Productive Mode:量产模式,上电之后不执行Bootloader程序,直接跳到用户程序执行,此时芯片已经不能进行debug了。
2. 修改BMI
设置Boot Mode Index可以通过修改Boot Mode Index寄存器的HWCFG位实现。XMC1400还可以通过外部引脚启动,当设置Boot Mode Index寄存器的PINDIS位为0后,启动的时候将会根据外部引脚的状态来启动。注意Boot Mode Index寄存器位于0x10000E00,这块区域用户Flash中的代码无法擦写。而用于修改BMI的程序固化在ROM区域,在ROM区域的代码可以擦写0x10000E00开始的这个区域。
Boot Mode由Boot pins对应的值来决定:(CAN_BSL只有XMC1400有)
3. 修改BMI值的工具及方法
3.1 J-link Commander
可从以下链接下载XMC对应的驱动J-LINK:https://www.segger.com/downloads/jlink/
其中包含了很多实用的工具,常用J-LINK Commander来获取/修改BMI值,或者与芯片进行连接,如下图:
获取BMI:
修改BMI:
不同BMI值对应的模式如下:
3.2 DAVE IDE
DAVE中有直接获取BMI和修改BMI的功能。如果找不到这个icon,可以直接在DAVE的Quick access中搜索BMI Set and Get.
3.3 XMC Flasher
下载链接如下:https://www.infineon.com/cms/en/ ... lasher&view=all
点击‘Connect’之后再选择正在使用的设备
3.4 MemTool
下载链接如下:https://www.infineon.com/cms/en/ ... emtool&view=all
使用MemTool与板子进行连接有两种方式:一种是芯片处于ASC模式下,直接用USB cable与板子相连;另一种是芯片处于SWD模式,用miniWiggler与板子相连,具体可以参考MemTool的manual。修改BMI步骤如下图所示:
3.5 还可以利用在ROM table中的XMC1000_BmiInstallationReq()函数来修改MCU的BMI值。
4. 修改BMI过程中的常见问题
在修改BMI的过程中,有可能经常遇到修改不成功或修改之后无法与芯片连接的情况,这时候就可以从以下方面来检查相关配置。
解决方法:
1)首先先确认目前PC是否还能识别出J-LIK设备,打开‘Device Manager’查看。如果无法识别则进行Power on Reset(POR),并检查一下驱动,可以将驱动更新至最新版本。
2)检查板子的电源供电是否正常,‘DBG’LED灯是否常亮,所有的DIP switch是否都在‘ON’状态。
3)如果是在将模式从‘SWD’改成‘SPD’时出错的话,可以使用8-pins cable按照下图的方式来接线,之后再使用DAVE来获取BMI值。
4)如果以上方法无法解决问题,可以尝试使用XMC-LINK与板子相连,有两种连接方式:
(此时所有的DIP switch常开)
(此时所有的DIP switch处于‘OFF’状态)
连接好了之后通过DAVE来获取BMI值。如果连上之后还是无法获取,则可以尝试一下将USB线调换一下方向,或将线接到‘DEBUG & COM’口之后再尝试获取。
5)实际上,不管板子换成什么模式都应该可以在DAVE上直接获取相应的BMI值,如果模式变更后无法获取,则可以先进行POR或者更换连接的工具来进行尝试。
|