需求
在Linux系統(tǒng)環(huán)境下搭建SDK的編譯環(huán)境:
- 方便加入到持續(xù)集成工具鏈
- Linux系統(tǒng)中運(yùn)行armgcc的速度更快,適合較為頻繁的CI驗(yàn)證過程
- 服務(wù)器上多使用Linux系統(tǒng),比較容易找到裝Linux系統(tǒng)的服務(wù)器,用舊電腦、虛擬機(jī)或者云服務(wù)均可
- 一些客戶需要,要么規(guī)避工具鏈的商業(yè)付費(fèi)授權(quán),要么習(xí)慣使用Linux系統(tǒng)(歐美開發(fā)者)
安裝與配置
配置虛擬機(jī)聯(lián)網(wǎng)模式
VirtualBox網(wǎng)絡(luò)模式,默認(rèn)是NAT
,可改為橋接模式。
在橋接模式下,虛擬主機(jī)同物理主機(jī)相互獨(dú)立,通過物理主機(jī)連接的路由器組網(wǎng)(在Wifi網(wǎng)絡(luò)中不需要再輸入無線路由密碼),在同一個(gè)局域網(wǎng)網(wǎng)段。橋接模式下的虛擬主機(jī),同在局域網(wǎng)中加入一個(gè)物理主機(jī)服務(wù)器最接近。
為了驗(yàn)證虛擬主機(jī)系統(tǒng)已經(jīng)聯(lián)網(wǎng)成功,可通過ifconfig
命令查看Linux主機(jī)的ip地址:
圖x 查看遠(yuǎn)程服務(wù)器ip地址
前期的一些關(guān)于網(wǎng)絡(luò)的配置工作,仍需要在虛擬機(jī)界面下完成。例如,先要安裝并啟用SSH服務(wù),使得本地主機(jī)可以通過SSH連接到遠(yuǎn)程主機(jī)。
啟用ssh連接
sudo apt install openssh-server # 安裝ssh server
sudo service ssh start # 啟動(dòng)ssh服務(wù)
sudo ufw allow 22 # 更新防火墻規(guī)則,開放22號(hào)端口
為了方便在本地主機(jī)(物理主機(jī))系統(tǒng)中操作服務(wù)器,接下來將在本地主機(jī)使用SSH終端訪問遠(yuǎn)程主機(jī)(虛擬主機(jī))系統(tǒng)。
圖x 使用Tera Term建立同遠(yuǎn)程主機(jī)的SSH連接
登錄后,接下來的配置工作就都可以在Tera Term終端中進(jìn)行了。如圖x所示。
圖x 使用Tera Term建立同遠(yuǎn)程主機(jī)的SSH連接2
啟用ftp連接
通過FTP連接,本機(jī)主機(jī)可以向遠(yuǎn)程主機(jī)傳送文件和下載文件。如此,可以在本地主機(jī)下載好必要的軟件包,例如armgcc的工具鏈軟件包。
在遠(yuǎn)程主機(jī)安裝并啟用FTP服務(wù):
sudo apt-get install vsftpd # 安裝vsftpd
sudo systemctl start vsftpd # 啟用vsftpd服務(wù)
sudo systemctl enable vsftpd
配置vsfptd,啟用讀寫訪問權(quán)限:
sudo nano /etc/vsftpd.conf # 修改配置文件
默認(rèn)僅需要開啟寫使能即可:
write_enable=YES
保存修改配置后,重啟服務(wù):
sudo systemctl restart vsftpd
在本地主機(jī)的Windows系統(tǒng)上,可以使用WinSCP作為FTP客戶端。如圖x所示。
圖x 使用FTP向遠(yuǎn)程主機(jī)傳文件
安裝armgcc編譯工具鏈
Ubuntu 18.04的軟件源中,gcc-arm-none-eabi工具集的版本比較老,通常要使用較新版的編譯器,可以通過直接解壓壓縮包的方式安裝到遠(yuǎn)程主機(jī)的Linux系統(tǒng)中。
在Arm的官網(wǎng)下載Linux版本的gcc-arm-none-eabi
工具集,如圖x所示。
圖x 下載Linux版本的gcc-arm-none-eabi工具集
使用WinSCP將下載好的gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
文件,上傳至遠(yuǎn)程主機(jī)的目錄/home/andrew/ytm32-mcu/tools
中,再解壓:
最后,將編譯器程序所在的目錄添加到Linux的環(huán)境變量中。
在文件結(jié)尾處添加:
保存.bashrc
文件后,重新激活:
此時(shí),在bash中試用arm-none-eabi-gcc
命令,可以看到,bash已經(jīng)可以檢索到armgcc的編譯器:
andrew@andrew-pc:~/ytm32-mcu$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release)
Copyright (C) 2020 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.
andrew@andrew-pc:~/ytm32-mcu$
確認(rèn)make工具
YTM32的SDK使用Makefile組織源碼工程。
PS:Ninja對(duì)Windows的支持似乎要好于Linux,因此YTM32的SDK在Windows系統(tǒng)中搭建免費(fèi)的開發(fā)環(huán)境,就選用了Ninja。Make在Windows系統(tǒng)上沒有專門的軟件包,不能在Windows原生的命令行環(huán)境中直接調(diào)用,只得通過mingw環(huán)境套用一個(gè)兼容性的make工具。
但是,Make在Linux系統(tǒng)環(huán)境下是天然被支持的,因此在Linux系統(tǒng)環(huán)境下,YTM32的SDK優(yōu)先使用Make工具。
在bash中,試著運(yùn)行make命令,確認(rèn)是否已經(jīng)安裝。
andrew@andrew-pc:~/ytm32-mcu$ make --version
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later < http://gnu.org/licenses/gpl.html >
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
andrew@andrew-pc:~/ytm32-mcu$
確認(rèn)過眼神,是對(duì)的人。
驗(yàn)證
通過WinSCP將SDK的軟件包傳送至遠(yuǎn)程主機(jī),解壓軟件包:
然后以hello_world
工程為例,切換至hello_world工程的Makefile文件所在目錄,試著編譯一下:
andrew@andrew-pc:~/ytm32-mcu/YTM32Bx_SDK_RTM_1.1.0/sdk/demos/YTM32B1MD1/hello_world/GCC$ make
======================================================================
Checked for uname, found: Linux
Assuming Unix like environment
======================================================================
Creating directory for object files
======================================================================
Compiling FLASH/flash/YTM32B1MD1_startup_gcc.o
======================================================================
Compiling FLASH/flash/dma_driver.o
======================================================================
Compiling FLASH/flash/dma_hw_access.o
======================================================================
Compiling FLASH/flash/dma_irq.o
======================================================================
Compiling FLASH/flash/interrupt_manager.o
======================================================================
Compiling FLASH/flash/pins_driver.o
======================================================================
Compiling FLASH/flash/pins_port_hw_access.o
======================================================================
Compiling FLASH/flash/linflexd_uart_driver.o
======================================================================
Compiling FLASH/flash/linflexd_uart_irq.o
======================================================================
Compiling FLASH/flash/clock_YTM32B1Mx.o
======================================================================
Compiling FLASH/flash/osif_baremetal.o
======================================================================
Compiling FLASH/flash/printf.o
======================================================================
Compiling FLASH/flash/startup.o
======================================================================
Compiling FLASH/flash/system_YTM32B1MD1.o
======================================================================
Compiling FLASH/flash/clock_config.o
======================================================================
Compiling FLASH/flash/peripherals_config.o
======================================================================
Compiling FLASH/flash/pin_mux.o
======================================================================
Compiling FLASH/flash/main.o
======================================================================
Linking to FLASH/flash.elf
text data bss dec hex filename
6604 84 9324 16012 3e8c FLASH/flash.elf
======================================================================
Build complete!
Bingo。
鑒于大多數(shù)在服務(wù)器上做CI(持續(xù)集成,Continuous Integration)只是編譯,不做下載和調(diào)試,本文暫不繼續(xù)介紹下載可執(zhí)行文件的操作。
實(shí)際上,編譯之后的可執(zhí)行文件,例如flash.elf
,可以通過WinSCP取回到本地主機(jī),在Windows系統(tǒng)下通過各種下載器(例如JLink或者DAPLink)下載到芯片上,或者通過Bootloader的方式更新固件,用戶可以根據(jù)需要選用合適的操作方式。
-
無線路由器
+關(guān)注
關(guān)注
9文章
345瀏覽量
31552 -
FTP
+關(guān)注
關(guān)注
0文章
110瀏覽量
40635 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
917瀏覽量
28202 -
SSH
+關(guān)注
關(guān)注
0文章
189瀏覽量
16338 -
Ubuntu系統(tǒng)
+關(guān)注
關(guān)注
0文章
91瀏覽量
3942
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論