初次上手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引导错误导致的吗?