初次上手XMC™1000系列必备-选择启动模式BMI

XMC1000微控制器是英飞凌推出的ARM Cortex-M0处理器,功能强大,质量可靠。相比于其他常见的单片机,这款单片机有一个独特的功能,就是引导模式索引-BMI(BOOT MODE INDEX),在这里我将详细讲解一下BMI功能的用法, BMI即是XMC1000系列单片机关于启动配置的一个功能,只针对XMC1000系列单片机。XMC1000系列的单片机,考虑到客户使用的仿真器种类繁多,在出厂后默认的下载方式是ASC BSL模式,也就是串口模式,只能下载不能调试。那么如果想更改下载模式的话,就需要更改引导模式索引BMI。在XMC1000系列的芯片手册中有说明,引导模式索引是储存在Flash中的2字节值,它包含关于启动模式和器件的调试配置信息,也就是说,BMI值存放在Flash的0x10000E00地址中,用户可以通过修改BMI值来选择单片机的启动模式以及调试配置。(在0x10000E10地址中还存放着BMI的反相值,用于检查BMI的正确性)。相比于其他单片机,有了BMI,用户可以通过英飞凌提供的软件,或者直接添加代码来更改单片机的启动模式,相比于市面上常见的MCU,这样不需要专门的BOOT引脚来更改启动模式,可以留给用户更多可以使用的引脚,也更加的方便快捷。
     
在XMC1000系列单片机中,共有5类启动模式可以选择。下面列出的是启动模式的5大类:
1.用户生产模式——在用户生产模式下,代码从Flash存储器启动,debug功能被禁止,单片机只能进行单次烧录,除非代码留有后门。
2.使能了调试功能的用户模式——开启此调试功能即可使用SWD模式的仿真器进行下载和调试程序。
3.使能了调试功能和复位后暂停(HAR)的用户模式——复位后暂停简称HAR,即单片机复位后CPU停机。
4.标准引导加载程序模式(标准BSL模式)——分为两种:
        一是ASC-BSL模式,即XMC1000单片机刚出厂时的启动模式,使用串口下载程序,不能使用debug功能;
        二是SSC-BSL模式,使用SPI下载程序,需要使用EEPROM作为从器件使用。
5.具有超时功能的BSL模式——此模式和模式4一样,分为两种,一是ASC模式,即使用串口进行下载;二是SSC模式,使用SPI协议进行下载。

下面讲解修改BMI的方法,对于出厂全新的XMC1000系列,都是ASC-BSL模式,只能使用串口下载程序,想要使用调试功能的话,需要修改BMI,开启SWD接口。通过英飞凌官方软件,和代码修改寄存器都可以进行修改。那最直接的方法就是使用英飞凌提供的软件Dave4直接修改
1.拿我手中的XMC1302为例,全新的一个板子,空白芯片,使用下载器连接电脑和XMC1302。

2.打开Dave4,找到以下图标。



3.左键单机,会弹出下面的框


4.点击 Get BMI,即可看到当前的BMI模式(注意:请确保连线正确)

5.点击Select,即可选择BMI模式



6.在下拉栏里选择我们想要的模式,这里我们选择User Mode(Debug)SWD,最后点击Set BMI,就完成了设置,完成设置后,我们可以再次点击Get BMI,可以看到BMI有没有更改成功。如果更改成功,那么我们就可以使用SWD的烧录器来进行调试开发了。


除了使用Dave4,还可以使用MemTool和代码修改,这种方法的好处就在于随便使用一个串口就可以完成BMI的修改,甚至于代码的烧录。
下面我就介绍一下如何使用MemTool来更改BMI
1.下载软件,MemTool直接就可以在英飞凌官网免费下载安装,直接点击以下链接也可以
https://www.infineon.com/dgdlc/en?dcId=8a8181663431cb50013431cb500b0000&downloadTitle=Infineon-Memtool-DevelopmentTools-v06_00-EN.exe&download=L2RnZGwvSW5maW5lb24tTWVtdG9vbC1EZXZlbG9wbWVudFRvb2xzLXYwNl8wMC1FTi5leGU/ZmlsZUlkPTU1NDZkNDYyNTE4ZmZkODUwMTUyNTUzN2MxOTcyMDZm
2.找一个串口转TTL模块,连接电脑和XMC1302,PC端的TX连接XMC1302的P0.14,PC端的RX连接P0.15.这两个引脚也就是XMC1302的UART外设。
3.打开MemTool,第一次会弹出配置target的选项,我们点击new创建一个新项目,依次点击下一步选择我们的芯片型号。



4.选择好芯片型号后,下一步选择接口类型,这里我们选择Minimonitor;
   然后点击Setup,选择串口接入的端口,可以看到我这里连接的COM5,使用的市面上常见的CH340 USB转串口驱动,在Monitor还可以选择波特率,我们默认是9600,设置完成后点击下一步。
   在配置完成后会生成一个项目文件,我们保存好即可,下次使用可以直接打开。


5.在配置完成后,回到主页面,我们即可点击左下的connect按钮,如果连接成功,下面会显示Ready for Menmtool Command。

6.在连接成功后,我们点击Setup,在Protection/BMI一栏中,我们即可更改BMI了


最后值得注意的是,在更改BMI之后,想再次更改BMI,要记得切换对应的连接方式。那么到此为止两种更改BMI的方式就介绍完了

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

smaug

smaug

2022年7月1日
是在仿真调试中有进入主程序,但是直接上电不工作吗?具体是那款芯片?这个现象有点奇怪,没有遇到过。可以发邮件给我Smaug.tang@sac.com.hk
smaug

smaug

2022年7月1日
是在仿真调试中有进入主程序,但是直接上电不工作吗?具体是那款芯片?这个现象有点奇怪,没有遇到过。可以联系我邮件Smaug.tang@sac.com.hk
smaug

smaug

2022年7月1日
是在仿真调试中有进入主程序,但是直接上电不工作吗?具体是那款芯片?这个现象有点奇怪,没有遇到过。有需要可以加我微信15637946364交流
acan

acan

2022年7月1日
程序是有在主程序设置了LED灯信号输出的,上电LED信号灯没有工作,所以我是想应该是芯片进入不了主程序导致的;因为有一种情况是上电过一段时间后,程序才正常运行,硬件方面也有测试过供电电压是一直正常的,所以也怀疑起引导程序的问题
smaug

smaug

2022年7月1日
有没有可能是Micrium uC的问题,既然可以读到ADC,那大概率是在运行中的,建议用Dave4仿真使用断点查看全局变量有没有初始化。
acan

acan

2022年6月23日
请问一下,这边选择UserMode Debug SWD0 模式,程序可以正常调试烧录,但是有遇到上电后程序不运行的情况,通过Micrium uC软件监控程序变量,在主函数的全局变量都没有进行初始化,但可以读取到ADC模块转换的数值,这种情况会是BMI引导错误导致的吗?