YA157C交叉編譯環境搭建
阿新 • • 發佈:2020-03-06
@[toc]
### 1.開發板簡介
- 開發板型號:MYD-YA157C,512MB DDR3,4GB eMMC
- 主控晶片:STM32MP157AAC
- 光碟資料版本:MYD-YA157C-20191225.iso
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305214128578.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70)
MYD-YA157C開發套件由核心板MYC-YA157C和底板MYB-YA157C組成,主控晶片是ST目前最高配置的MPU——STM32MP157AAC3,雙核Corte-A7+Cortex-M4,主頻最高可達650Mhz。
硬體準備
- 12v電源介面卡
- USB-TTL模組:115200/8/1/無
- 網線
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305214559782.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70)
開發板和主機配置
- 開發板Linux版本:Linux 4.19.9
- 開發板IP:192.168.1.136
- 主機配置:Ubuntu 16.04
- 主機IP:192.168.1.111
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305214955466.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70)
### 2.主機搭建交叉編譯環境
所謂交叉編譯,其實是相對於本地編譯,即在一種平臺上編譯出來的程式,可以在另外一個平臺下執行,即編譯的環境和執行的環境不一樣,屬於交叉的。在進行嵌入式開發時,常常是在PC(x86架構)上使用交叉編譯工具編譯,編譯出來的可執行檔案在開發板(ARM)平臺下執行。
交叉編譯工具包,位於光碟資料的`03-Tools/Complie Toolchain`目錄下,是一個壓縮包,直接右鍵提取,或者使用tar解壓命令都可以把壓縮包解壓。解壓完成之後有以下幾個檔案:
```shell
#解壓sdk
tar xvf qt-sdk.tar.xz
#進入sdk目錄之後可以看到以下檔案
meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.host.manifest
meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.sh
meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.target.manifest
meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.testdata.json
```
因為後面我們會進行Qt應用的開發,所以這裡我們選擇帶Qt圖形庫支援的交叉編譯工具包
安裝交叉編譯工具包:
```shell
#切換到解壓之後的資料夾執行安裝指令碼
./meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.sh
#按[ENTER]鍵選擇預設的安裝配置,預設安裝在/opt目錄下
```
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305181833931.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70)
來看一下是否安裝成功了:
```shell
#切換到安裝目錄
cd /opt/st/stm32mp1/2.6-snapshot/
#臨時設定環境變數
source ./environment-setup-cortexa7t2hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi
#這樣會把GCC交叉編譯器臨時新增到環境變數,退出終端失效
#檢視GCC交叉編譯器版本
arm-openstlinux_eglfs-linux-gnueabi-gcc --version
#或者使用$CC --version
#輸出資訊
arm-openstlinux_eglfs-linux-gnueabi-gcc (GCC) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305183621927.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70)
如果能輸出版本資訊,就說明安裝成功了。
### 3.編譯第一個ARM Linux程式——Hello World
有了交叉編譯工具,和PC平臺的gcc使用方法一樣,就可以直接編譯第一個程式了。
```shell
#切換到使用者目錄
cd ~
#新建一個目錄
mkdir hello
#切換到hello目錄
cd hello
#新建一個C檔案
touch hello.c
#輸入Hello World程式
vim hello.c
```
hello.c檔案的內容:
```c
#