STM32MP157具有A7內核核M4內核,前面介紹的一些文章,都是在A7內核上進行的,本篇來介紹M4內核的開發(fā),以及開發(fā)時要用到的STM32 CubeIDE軟件的使用。
1 STM32 CubeIDE創(chuàng)建LED工程
STM32CubeIDE是一體式多操作系統(tǒng)開發(fā)工具,是STM32Cube軟件生態(tài)系統(tǒng)的一部分。
下載地址:https://www.st.com/zh/development-tools/stm32cubeide.html#st-get-software
首先要先安裝STM32 CubeIDE,普通的exe安裝,這里不展開介紹。
1.1 新建工程
文件,新建,STM32工程
第一次會進行一些文件的下載
等待下載完成后界面如下,有4個窗口切換標簽:
- MCU/MPU Selector:MCU/MPU芯片選擇窗口Board Selector:ST官方的一些開發(fā)板選擇窗口Example Selector:示例程序選擇窗口,ST官方開發(fā)板的一些現(xiàn)有示例Corss Selector:交叉引用工具窗口,選擇對應的CPU型號,會彈出一個相同系統(tǒng)的CPU型號的資源對比界面
在搜索框輸入STM32MP157D后,右邊可以看到4個具體的型號,其中STM32MP157DAC1中描述的是STM32MP157D-DK1開發(fā)板,那就選這個:
點Next之后,設置工程的名稱,例如01_LED,可以勾選Use default location指定位置:
再Next之后,點擊Firmware Updater可修改固件包的位置:
點Finish之后,會彈出Open Associated Perspective的窗口,點Yes即可:
下載某些文件需要登錄ST賬號,沒登錄可能會提示類似如下失敗的彈窗,可以先不管,后面再處理。
然后來到這個界面,又有4個可切換的窗口的標簽:
- Pinout & Configuration:引腳配置窗口Clock & Configuration:時鐘配置窗口Project Manager:項目管理配置窗口Tool:相關工具配置窗口
剛才說到,因為沒登錄ST的賬號,有些文件沒下載成功。現(xiàn)在可以再來下載,點擊菜單Help中的Manage embedded software packsges,彈出如下窗口,找到STM32MP1,勾選Pachage,點擊安裝:
然后就會再次下載:
下載完成,關聯(lián)成功,就會變成綠色的方塊:
可以在下載位置查看下載的文件:
1.2 配置引腳
使用LED中的LD7進行LED控制,根據(jù)文檔,對應的是PH7引腳,高電平點亮:
搜索PH7引腳,設置為Output模式:
然后再右鍵,設置Pin Reserved,選擇Cortex-M4 FW。
點擊左邊的System Core,再點到GPIO,可以進行GPIO配置,如上下拉、速率等:
然后,時鐘可以不用再配置,項目管理這里,注意勾選如下兩項:
-
- Copy only the necessary library files,工程會從 STM32Cube MCU 軟件包中拷貝需要用到的 HAL 庫文件,
-
- 沒用到的不會拷貝Generate peripheral initialization as a pair of '.c/.h' files per peripheral ,表示讓每個外設生成獨立的'.c/.h'文件,如果此項不勾選,那么外設相關的初始化代碼將會生成在 man.c 中了
最后Ctrl+S保存,會提示要生成代碼,點Yes即可:
然后還會有一個彈窗,點Yes即可:
1.3 修改代碼并編譯
在main.cpp中,添加控制LED亮滅邏輯代碼:
HAL_GPIO_WritePin(LD7_GPIO_Port,LD7_Pin,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(LD7_GPIO_Port,LD7_Pin,GPIO_PIN_RESET);
HAL_Delay(500);
注意代碼添加的位置,要添加在成對出現(xiàn)的BEGIN和END的區(qū)域之間:
然后點擊“小錘子”圖標進行編譯,可以看到如上圖0錯誤0警告。
2 燒錄程序測試
2.1 切換BOOT啟動模式
開發(fā)板的BOOT配置BOOT0為OFF,BOOT1為ON,板子的ST-LINK接口連接板子到電腦。
2.2 配置ST-Link
菜單中Run中選擇Debug Configurations...
然后,雙擊STM32 Cortex-M C/C++ Application 就會自動創(chuàng)建和打開名為HAL_LED_CM4 Debug 的配置項:
切換到調試器窗口,選擇thru JTAG/SWD link:
然后點擊 Aply,Debug 開始調試。
第一次在 STM32CubeIDE 用 ST-Link 下載程序的話,系統(tǒng)會提示更新 ST-LINK 固件:
彈出的窗口中,選擇ST-LINK:
然后再重新插拔USB線,點擊Open in update mode,彈出如下界面:
點擊 Upgrade 更新 ST-Link 固件,等待更新完成即可
2.3 調試運行程序
然后繼續(xù)在剛才的調試器窗口,點擊Debug 開始調試
全速運行后,可以看到LD7的橘色燈會循環(huán)亮滅:
2.4 通過Linux系統(tǒng)運行elf固件
將板子的BOOT開關切換到從SD卡啟動Linux系統(tǒng),然后將STM32 CubeIDE編譯出的elf文件:
如01_LED_CM4.elf拷貝到開發(fā)板的/lib/firmware目錄中,添加可執(zhí)行權限,然后使用如下指令即可運行M4內核的程序:
#加載固件
echo 01_LED_CM4.elf >/sys/class/remoteproc/remoteproc0/firmware
#啟動固件
echo start >/sys/class/remoteproc/remoteproc0/state
3 總結
本篇介紹了STM32MP157D-DK1開發(fā)板M核程序的開發(fā)流程,包括STM32CubeIDE創(chuàng)建工程,引腳配置與程序編寫,最終實現(xiàn)了基礎了LED亮滅實驗。