需求
- 方便加入到持續集成工具鏈
- Linux系統中運行armgcc的速度更快,適合較為頻繁的CI驗證過程
- 服務器上多使用Linux系統,比較容易找到裝Linux系統的服務器,用舊電腦、虛擬機或者云服務均可
- 一些客戶需要,要么規避工具鏈的商業付費授權,要么習慣使用Linux系統(歐美開發者)
安裝與配置
配置虛擬機聯網模式
VirtualBox網絡模式,默認是NAT
,可改為橋接模式。
在橋接模式下,虛擬主機同物理主機相互獨立,通過物理主機連接的路由器組網(在Wifi網絡中不需要再輸入無線路由密碼),在同一個局域網網段。橋接模式下的虛擬主機,同在局域網中加入一個物理主機服務器最接近。
為了驗證虛擬主機系統已經聯網成功,可通過ifconfig
命令查看Linux主機的ip地址:
圖x 查看遠程服務器ip地址
前期的一些關于網絡的配置工作,仍需要在虛擬機界面下完成。例如,先要安裝并啟用SSH服務,使得本地主機可以通過SSH連接到遠程主機。
啟用ssh連接
sudo apt install openssh-server # 安裝ssh server
sudo service ssh start # 啟動ssh服務
sudo ufw allow 22 # 更新防火墻規則,開放22號端口
為了方便在本地主機(物理主機)系統中操作服務器,接下來將在本地主機使用SSH終端訪問遠程主機(虛擬主機)系統。
圖x 使用Tera Term建立同遠程主機的SSH連接
登錄后,接下來的配置工作就都可以在Tera Term終端中進行了。如圖x所示。
圖x 使用Tera Term建立同遠程主機的SSH連接2
啟用ftp連接
通過FTP連接,本機主機可以向遠程主機傳送文件和下載文件。如此,可以在本地主機下載好必要的軟件包,例如armgcc的工具鏈軟件包。
在遠程主機安裝并啟用FTP服務:
sudo apt-get install vsftpd # 安裝vsftpd
sudo systemctl start vsftpd # 啟用vsftpd服務
sudo systemctl enable vsftpd
配置vsfptd,啟用讀寫訪問權限:
sudo nano /etc/vsftpd.conf # 修改配置文件
默認僅需要開啟寫使能即可:
write_enable=YES
保存修改配置后,重啟服務:
sudo systemctl restart vsftpd
在本地主機的Windows系統上,可以使用WinSCP作為FTP客戶端。如圖x所示。
圖x 使用FTP向遠程主機傳文件
安裝armgcc編譯工具鏈
Ubuntu 18.04的軟件源中,gcc-arm-none-eabi工具集的版本比較老,通常要使用較新版的編譯器,可以通過直接解壓壓縮包的方式安裝到遠程主機的Linux系統中。
在Arm的官網下載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
文件,上傳至遠程主機的目錄/home/andrew/ytm32-mcu/tools
中,再解壓:
最后,將編譯器程序所在的目錄添加到Linux的環境變量中。
在文件結尾處添加:
保存.bashrc
文件后,重新激活:
此時,在bash中試用arm-none-eabi-gcc
命令,可以看到,bash已經可以檢索到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$
確認make工具
YTM32的SDK使用Makefile組織源碼工程。
PS:Ninja對Windows的支持似乎要好于Linux,因此YTM32的SDK在Windows系統中搭建免費的開發環境,就選用了Ninja。Make在Windows系統上沒有專門的軟件包,不能在Windows原生的命令行環境中直接調用,只得通過mingw環境套用一個兼容性的make工具。
但是,Make在Linux系統環境下是天然被支持的,因此在Linux系統環境下,YTM32的SDK優先使用Make工具。
在bash中,試著運行make命令,確認是否已經安裝。
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$
確認過眼神,是對的人。
驗證
通過WinSCP將SDK的軟件包傳送至遠程主機,解壓軟件包:
然后以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。
鑒于大多數在服務器上做CI(持續集成,Continuous Integration)只是編譯,不做下載和調試,本文暫不繼續介紹下載可執行文件的操作。
實際上,編譯之后的可執行文件,例如flash.elf
,可以通過WinSCP取回到本地主機,在Windows系統下通過各種下載器(例如JLink或者DAPLink)下載到芯片上,或者通過Bootloader的方式更新固件,用戶可以根據需要選用合適的操作方式。
-
無線路由器
+關注
關注
9文章
345瀏覽量
31552 -
FTP
+關注
關注
0文章
110瀏覽量
40635 -
虛擬機
+關注
關注
1文章
917瀏覽量
28197 -
SSH
+關注
關注
0文章
189瀏覽量
16337 -
Ubuntu系統
+關注
關注
0文章
91瀏覽量
3939
發布評論請先 登錄
相關推薦
評論