基于stm32mp157l linux開發(fā)板ARM裸機開發(fā)教程Cortex-A7 開發(fā)環(huán)境搭建(連載中)
前言:
目前針對ARM Cortex-A7裸機開發(fā)文檔及視頻進行了二次升級持續(xù)更新中,使其內(nèi)容更加豐富,講解更加細致,全文所使用的開發(fā)平臺均為華清遠見FS-MP1A開發(fā)板(STM32MP157開發(fā)板)
針對對FS-MP1A開發(fā)板,除了Cortex-A7裸機開發(fā)篇外,還包括其他多系列教程,包括Cortex-M4開發(fā)篇、FreeRTOS篇、Linux基礎(chǔ)及應(yīng)用開發(fā)篇、Linux系統(tǒng)移植篇、Linux驅(qū)動開發(fā)篇、硬件設(shè)計篇、人工智能機器視覺篇、Qt應(yīng)用編程篇、Qt綜合項目實戰(zhàn)篇等。除此之外計劃針對Linux系統(tǒng)移植篇、Linux驅(qū)動開發(fā)篇均會進行文檔及視頻的二次升級更新敬請關(guān)注!
開發(fā)板更多資料領(lǐng)取可關(guān)注華清遠見在線實驗室領(lǐng)取
進入正題 先來簡單介紹一下該款開發(fā)板的Cortex-A 處理器
ARM 在 Cortex-A 系列處理器大體上按性能可以排序為:Cortex-A77 處理器、Cortex-A75 處理器、Cortex-A73 處理器、Cortex-A57 處理器、Cortex-A53 處理器、Cortex-A15 處理器、Cortex-A9 處理器、CortexA7 處理器、Cortex-A5 處理器等。需要指出的是,單從命名數(shù)字來看,Cortex-A7 似乎比 A9 低端,但是從ARM 的官方數(shù)據(jù)看,A7 的架構(gòu)和工藝都是仿照 A15 來做的,單個性能超過 A9 并且能耗控制更好。截止2017 年 ARM 公司的 Cortex-A 系列處理器產(chǎn)品如下圖所示。


處理器學(xué)習(xí)概括
STM32MP1 除了有 Cortex-M4 內(nèi)核外,還包含 2 個 Cortex-A7 核心。接下來開始學(xué)習(xí) STM32MP1 的Cortex-A7 核心相關(guān)知識。ARM Cortex-A 核的學(xué)習(xí)方法和 Cortex-M 核心有比較大的差別?;?Cortex-M4的開發(fā),因為有 STM32CubeMX 工具和 HAL 庫函數(shù)的支持,基本上可以滿足大部分開發(fā)者的需求,很少需要了解處理器的體系結(jié)構(gòu)、匯編指令和匯編編程的內(nèi)容。但 Cortex-A 核的復(fù)雜度高、靈活度高,需要有比較復(fù)雜的引導(dǎo)程序(例如:UBoot)和操作系統(tǒng)(例如:Linux)的支持。如果要深入學(xué)習(xí)嵌入式 Linux底層開發(fā)技術(shù),需要很好的了解 Cortex-A 核的特性和匯編編程。后續(xù)章節(jié)會結(jié)合實驗和仿真環(huán)境,陸續(xù)學(xué)習(xí) Cortex-A7 內(nèi)核的工作模式、寄存器組織、程序狀態(tài)寄存器、存儲系統(tǒng)、流水線、異常處理等處理器相關(guān)知識,以及匯編指令、匯編編程、C 混合編程等內(nèi)容。?
Cortex-A7 開發(fā)環(huán)境搭建
本章節(jié)主要介紹 windows 下的開發(fā)環(huán)境搭建。推薦使用 win10 64bit 系統(tǒng)進行安裝。我們將安裝以下軟件。
Xshell 7(免費版)
STM32CubeProgrammer
Windows 下交叉編譯工具鏈
Eclispse 與 OpenOCD
Xshell 7 安裝
由于在后續(xù)的實驗中需要使用到串口調(diào)試終端和 ssh 登陸 Linux 操作系統(tǒng),因此需要安裝一個調(diào)試工具,這里以 xshell 為例,讀者也可以根據(jù)自己的個人習(xí)慣選擇。
Xshell 7 免費版安裝包可以從 xshell 官方網(wǎng)站 https://www.netsarang.com/zh/通過郵件申請免費版本,也可以使用資料光盤中【華清遠見-FS-MP1A 開發(fā)資料\01-工具軟件】的 Xshell-7.0.0108p.exe 安裝包進行安裝。
雙擊安裝包后會先檢查當(dāng)前系統(tǒng)環(huán)境,如果系統(tǒng)依賴不滿足則會自動安裝缺失的部分。

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

點擊“下一步”

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

選擇要安裝的默認目錄后點擊“下一步”

點擊“安裝”

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

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

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

隨后會彈出如下界面,點擊“確定”

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

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

點擊“Next”

點擊“I accept the terms of this license agreement”

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

勾選 STM32TrustePackageCreator 選項


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

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

點擊“完成”

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

安裝完成界面

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

點擊 Next

繼續(xù)點擊 Next



點擊 Install

點擊 Next

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

點擊 Next

點擊 Next

點擊 Next

選擇安裝路徑,然后點擊 Next

點擊 Install 進行安裝


點擊 Finish,完成安裝
安裝 JRE
雙擊【華清遠見-FS-MP1A 開發(fā)資料\01-工具軟件】目錄下的文件 jre-6u7-windows-i586-p-s.exe 進行安裝
?
點擊“接受”,過程可能需要一段時間


點擊“完成”即完成安裝
Eclipse 與 OpenOCD 的安裝
Eclipse 為我們后面學(xué)習(xí)裸機編程的主要開發(fā)工具,Eclipse 是一套集成的 IDE,可進行程序的編輯、編譯、調(diào)試等操作。
資料光盤【華清遠見-FS-MP1A 開發(fā)資料\01-工具軟件\eclipse\ eclipse-cpp-helios-SR1-win32.zip】下的eclipse-cpp-helios-SR1-win32.zip 是一套已經(jīng)安裝好各種插件的開發(fā)包,是一個綠色版的 eclipse,我們可以將它解壓到電腦的任何位置,之后雙擊 eclipse.exe 就可以使用了。

OpenOCD 是用來連接各種仿真器的一款工具,通過該工具我們就可以控制目標(biāo) CPU 的運行了。該工具位于【華清遠見-FS-MP1A 開發(fā)資料\01-工具軟件\OpenOCD-STM32MP1.zip】同樣也是一個綠色版本,我們可以將它解壓到電腦的任何位置即可。在該壓縮包的 bin 目錄下的 openocd.exe 即為可執(zhí)行程序,在后面的章節(jié)里我們講述如何使用該工具。
