ARM裸機(jī)開發(fā)篇1:Cortex-A7開發(fā)環(huán)境搭建
寫在前面:
本文章為《ARM Cortex-A7裸機(jī)開發(fā)篇》系列中的一篇,全系列總計(jì)11篇。筆者使用的開發(fā)平臺為華清遠(yuǎn)見FS-MP1A開發(fā)板(STM32MP157開發(fā)板)。
針對FS-MP1A開發(fā)板,除了Cortex-A7裸機(jī)開發(fā)篇外,還包括其他多系列教程,包括Cortex-M4開發(fā)篇、FreeRTOS篇、Linux基礎(chǔ)及應(yīng)用開發(fā)篇、Linux系統(tǒng)移植篇、Linux驅(qū)動開發(fā)篇、硬件設(shè)計(jì)篇、人工智能機(jī)器視覺篇、Qt應(yīng)用編程篇、Qt綜合項(xiàng)目實(shí)戰(zhàn)篇等。歡迎關(guān)注,更多stm32mp157開發(fā)教程及視頻,可加技術(shù)交流Q群459754978,感謝關(guān)注。
FS-MP1A開發(fā)板詳情介紹:https://item.taobao.com/item.htm?id=622457259672
Cortex-A7開發(fā)環(huán)境搭建
本章節(jié)主要介紹windows下的開發(fā)環(huán)境搭建。推薦使用win10 64bit系統(tǒng)進(jìn)行安裝。我們將安裝以下軟件。
Xshell 6(免費(fèi)版)
STM32CubeProgrammer
Xshell 6安裝
由于在后續(xù)的實(shí)驗(yàn)中需要使用到串口調(diào)試終端和ssh登陸Linux操作系統(tǒng),因此需要 安裝一個(gè) 調(diào)試工具 ,這里以xshell為例 ,讀者也可以根據(jù)自己的個(gè)人習(xí)慣選擇。
Xshell 6免費(fèi)版安裝包可以從xshell官方網(wǎng)站https://www.netsarang.com/zh/通過郵件申請免費(fèi)版本,也可以使用資料光盤中【華清遠(yuǎn)見-FS-MP1A開發(fā)資料\01-工具軟件】的Xshell-6.0.0197p.exe安裝包進(jìn)行安裝。

雙擊安裝包后會先檢查當(dāng)前系統(tǒng)環(huán)境,如果系統(tǒng)依賴不滿足則會自動安裝缺失的部分。

環(huán)境安裝完成后將會出現(xiàn)如下界面

點(diǎn)擊“下一步”

點(diǎn)擊“我接收許可協(xié)議中的條款”

這里直接點(diǎn)擊“下一步”

選擇要安裝的默認(rèn)目錄后點(diǎn)擊“下一步”

點(diǎn)擊“安裝”

安裝完成會出現(xiàn)如下界面

安裝完成后第一次啟動需要指定一個(gè)配置文件默認(rèn)保存路徑,這里一般默認(rèn)即可。

然后出現(xiàn)如下界面,由于是免費(fèi)版本所以直接點(diǎn)擊“關(guān)閉”即可。

隨后會彈出如下界面,點(diǎn)擊“確定”

至此,xshell 6(免費(fèi)版),就安裝成功了。
STM32CubeProgrammer安裝
STM32CubeProgrammer是STMicroelectronics的官方工具,用于在STM32平臺上的Flash設(shè)備中創(chuàng)建分區(qū)并對各個(gè)分區(qū)進(jìn)行鏡像燒錄。
可以使用STM32CubeProgrammer來燒錄STM32 MPU板上支持的所以Flash設(shè)備。后續(xù) 鏡像燒錄將會用STM32CubeProgrammer工具進(jìn)行eMMC和SDCsrd的鏡像更新。
STM32CubeProgrammer安裝包可以從xshell官方網(wǎng)站https://www.st.com/en/development-tools/stm32cubeprog.html通過郵件申請最新版本,也可以使用資料光盤中【華清遠(yuǎn)見-FS-MP1A開發(fā)資料\01-工具軟件】的en.stm32cubeprog_v2-4-0.zip安裝包進(jìn)行安裝。
首先需要將安裝包解壓,解壓完成后得到如下文件。

雙擊“SetupSTM32CubeProgrammer-2.4.0.exe”允許安裝向?qū)А?/p>

點(diǎn)擊“Next”

點(diǎn)擊“Next”

點(diǎn)擊“I accept the terms of this license agreement”

這里選擇安裝路徑,筆者可以自行指定。點(diǎn)擊Next之后會提示,將要創(chuàng)建一個(gè)安裝目錄。

勾選STM32TrustePackageCreator選項(xiàng)

Next之后會進(jìn)程序安裝。

在安裝的過程中會彈出如下界面,安裝相關(guān)的驅(qū)動程序。
點(diǎn)擊“下一步”

程序?qū)詣影惭b所需的驅(qū)動程序,安裝完成后會彈出如下界面。

點(diǎn)擊“完成”

切換到“STM32CubeProgrammer”界面后點(diǎn)擊“Next”,創(chuàng)建桌面快捷鍵。

安裝完成界面

出現(xiàn)上述界面后點(diǎn)擊“Done”。至此STM32CubeProgrammer就安裝完成了。
CORTEXA7相關(guān)工具安裝
安裝GCC編譯工具
雙擊【資料光盤\華清遠(yuǎn)見-FS-MP1A開發(fā)資料-2020-11-06\01-工具軟件\Yagarto工具包】目錄下的yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_20111119.exe進(jìn)行安裝

點(diǎn)擊 Next

繼續(xù)點(diǎn)擊Next



點(diǎn)擊Install

點(diǎn)擊Next

點(diǎn)擊Finish,完成安裝
安裝Yagarto工具包
雙擊【資料光盤\華清遠(yuǎn)見-FS-MP1A開發(fā)資料-2020-11-06\01-工具軟件\Yagarto工具包】目錄下的yagarto-tools-20100703-setup.exe進(jìn)行安裝

點(diǎn)擊Next

點(diǎn)擊Next

點(diǎn)擊Next

選擇安裝路徑,然后點(diǎn)擊Next

點(diǎn)擊Install進(jìn)行安裝


點(diǎn)擊Finish,完成安裝
安裝JRE
雙擊【資料光盤\華清遠(yuǎn)見-FS-MP1A開發(fā)資料-2020-11-06\01-工具軟件】目錄下的文件jre-6u7-windows-i586-p-s.exe進(jìn)行安裝

點(diǎn)擊“接受”,過程可能需要一段時(shí)間

點(diǎn)擊“完成”即完成安裝
Eclipse for ARM 安裝與使用
選擇路徑:【資料光盤\華清遠(yuǎn)見-FS-MP1A開發(fā)資料-2020-11-06\01-工具軟件\eclipse\ eclipse-cpp-helios-SR1-win32.zip】文件解壓后,然后運(yùn)行eclipse.exe文件。
Eclipse for ARM是一個(gè)標(biāo)準(zhǔn)的窗口應(yīng)用程序,可以單擊程序按鈕開始運(yùn)行,打開后需先指定一個(gè)工程存放路徑,如圖所示。


第一次打開后出現(xiàn)這種界面,點(diǎn)擊“workbench”進(jìn)入工程界面,可以彈出工作界面

創(chuàng)建一個(gè)C工程
進(jìn)入主界面后,選擇“File、New、C Project”命令,Eclipse將打開一個(gè)標(biāo)準(zhǔn)對話框,輸入你新建工程的名字然后單擊“Finish”按鈕即可創(chuàng)建一個(gè)新的工程。

創(chuàng)建成功后,會在工程工作界面中有你創(chuàng)建的工程名,之后添加工程必要文件。
新建一個(gè)Makefile文件
選擇“File、New、Other”命令,在彈出的對話框New中的“General”下單擊File,然后單擊Next,選擇所要指定的工程后,在文件名文本框中輸入文件名Makefile,然后單擊“Finish”按鈕。


新建一個(gè)腳本文件
選擇“File、New、Other”命令,在彈出的對話框New中的“General”下單擊File,然后單擊Next,選擇所要指定的工程后,在文件名文本框中輸入文件名STM32MP1.init,然后單擊“Finish”按鈕。

新建一個(gè)鏈接腳本文件
選擇“File、New、Other”命令,在彈出的對話框New中的“General”下單擊File,然后單擊Next,選擇所要指定的工程后,在文件名文本框中輸入文件名led.lds,然后單擊“Finish”按鈕。

新建一個(gè)匯編源文件
選擇“File、New、Other”命令,在彈出的對話框New中的“General”下單擊File,然后單擊Next,選擇所要指定的工程后,在文件名文本框中輸入文件名led_light.S,然后單擊“Finish”按鈕。

新建一個(gè)main文件
選擇“File、New、Other”命令,在彈出的對話框New中的“General”下單擊File,然后單擊Next,選擇所要指定的工程后,在文件名文本框中輸入文件名main.c,然后單擊“Finish”按鈕。

至此工程及所需文件已經(jīng)基本創(chuàng)建完成,為了能夠?qū)崿F(xiàn)工程的相關(guān)功能,還必須在對應(yīng)文件中添加相應(yīng)的代碼,在這一步時(shí),你可以參考已有工程的文件。
所有文件編譯完成后,保存文件,創(chuàng)建好的工程如圖所示

點(diǎn)擊如下圖所示的編譯圖標(biāo)進(jìn)行編譯

編譯完成后顯示結(jié)果如圖所示,表示編譯沒有問題

此時(shí)工程下所有文件如下

導(dǎo)入一個(gè)已有工程
本文提供了相關(guān)項(xiàng)目實(shí)驗(yàn)源碼,在實(shí)驗(yàn)中可以直接導(dǎo)入相應(yīng)工程即可。
1. 打開 打開 Eclipse 開發(fā)工具,在Project Explorer 中添加 LED 工程
(注意:工程要放在英文路徑下 ,不能有中文路徑 )
拷貝【 資料光盤\華清遠(yuǎn)見-FS-MP1A開發(fā)資料-2020-11-06\02-程序源碼\03-ARM體系結(jié)構(gòu)與接口技術(shù)\Cortex-A7\c_led】 到 eclipse 工作目錄下。
如:C:\Users\FSARSIGHT-IOT-01\Desktop\eclipse-example目錄。
(注意:如果從光盤介質(zhì)直接拷貝出來的目錄可能會出現(xiàn)文件有只讀屬性的情況,建議查看文件夾的只讀屬性是否選中,確保在未勾選的狀態(tài)下)

如圖所示,在 Project Explorer 窗口中右擊鼠標(biāo),選擇“Import…”,如下圖所示

選擇“Import…”后,出現(xiàn)如下圖所示的窗口,選中“Existing Projects Into Workpace”然
后點(diǎn)擊“Next”

選擇“Next”后出現(xiàn)如下窗口,點(diǎn)擊“Browse…”后出現(xiàn)“瀏覽文件夾”窗口,在“瀏覽文件
夾”窗口中選中實(shí)驗(yàn)“c_led”后點(diǎn)擊“確定”

點(diǎn)擊“確定”后出現(xiàn)如下窗口,直接點(diǎn)擊“Finish”即可。

添加成功后可以在“ Project Explorer ”中看到“c_led”工程成功導(dǎo)入。


工程成功導(dǎo)入后,如暫時(shí)不使用該工程時(shí)我們可以Close project,下次使用時(shí)再Open project(同時(shí)只能有一個(gè)工程是打開的),該工程相關(guān)配置不變。

openOCD使用
由于在后續(xù)的實(shí)驗(yàn)中需要使用到openOCD調(diào)試軟件,可以從資料光盤中【華清遠(yuǎn)見-FS-MP1A開發(fā)資料-2020-11-06\01-工具軟件】下載OpenOCD-STM32MP1.zip壓縮包。進(jìn)行解壓后,進(jìn)入bin目錄下,按住Shift鍵,右擊鼠標(biāo),如圖所示

點(diǎn)擊“在此處打開Powershell窗口”選項(xiàng),然后可以出現(xiàn)如下窗口

Eclipse Debug調(diào)試
準(zhǔn)備完畢,在Eclipse進(jìn)行Debug調(diào)試時(shí),在window PowerShell窗口中輸入如下指令
.\openocd.exe -s .\scripts\ -f board\stm32mp15x_fsmp1a.cfg
點(diǎn)擊回車,顯示結(jié)果如下

打開Xshell 6軟件后,連接MP1,如圖所示


此時(shí)按一下開發(fā)板復(fù)位鍵,在倒計(jì)時(shí)到0之前按下回車,最終顯示界面如下

在Eclipse 中首先進(jìn)行Debug調(diào)試配置,點(diǎn)擊

按鈕,然后選擇“Debug Configurations..”,點(diǎn)擊,然后出現(xiàn)如下界面

然后雙擊“Zylin Embedded debug(Native)”,可以出現(xiàn)所創(chuàng)建的工程,配置如下

在紅框內(nèi)選擇所建工程中生成的elf文件


配置完成后點(diǎn)擊Apply,然后再點(diǎn)擊Debug,會出現(xiàn)如下提示框

點(diǎn)擊Yes,然后進(jìn)入Debug調(diào)試界面,如圖所示

點(diǎn)擊

按鈕,程序開始運(yùn)行,首次會卡住在main處,然后再次點(diǎn)擊

按鈕,程序全速運(yùn)行,此時(shí)可以發(fā)現(xiàn)LED燈正常閃爍。

當(dāng)點(diǎn)擊

按鈕后,程序結(jié)束運(yùn)行,如圖所示


當(dāng)退出Debug界面時(shí),選中上圖紅框中內(nèi)容,按下Del鍵刪除掉,此一步主要防止出現(xiàn)不知名錯誤。
另外,在測試時(shí),由于沒有關(guān)閉看門狗,程序運(yùn)行32秒后,會自動進(jìn)行復(fù)位。
硬件平臺:華清遠(yuǎn)見FS-MP1A開發(fā)板(STM32MP157)
部分開發(fā)教程下載:加QQ群459754978,群文件里有。
部分視頻課程收看:華清遠(yuǎn)見研發(fā)中心的個(gè)人空間_嗶哩嗶哩_Bilibili
淘寶購買鏈接:https://item.taobao.com/item.htm?id=622457259672
手機(jī)淘寶分享碼:復(fù)制本行文字打開手淘?T4FPXn3YYJ2?