需求
在Linux系統(tǒng)環(huán)境下搭建SDK的編譯環(huán)境:
- 方便加入到持續(xù)集成工具鏈
- Linux系統(tǒng)中運(yùn)行armgcc的速度更快,適合較為頻繁的CI驗(yàn)證過(guò)程
- 服務(wù)器上多使用Linux系統(tǒng),比較容易找到裝Linux系統(tǒng)的服務(wù)器,用舊電腦、虛擬機(jī)或者云服務(wù)均可
- 一些客戶(hù)需要,要么規(guī)避工具鏈的商業(yè)付費(fèi)授權(quán),要么習(xí)慣使用Linux系統(tǒng)(歐美開(kāi)發(fā)者)
安裝與配置
配置虛擬機(jī)聯(lián)網(wǎng)模式
VirtualBox網(wǎng)絡(luò)模式,默認(rèn)是NAT
,可改為橋接模式。
在橋接模式下,虛擬主機(jī)同物理主機(jī)相互獨(dú)立,通過(guò)物理主機(jī)連接的路由器組網(wǎng)(在Wifi網(wǎng)絡(luò)中不需要再輸入無(wú)線路由密碼),在同一個(gè)局域網(wǎng)網(wǎng)段。橋接模式下的虛擬主機(jī),同在局域網(wǎng)中加入一個(gè)物理主機(jī)服務(wù)器最接近。
為了驗(yàn)證虛擬主機(jī)系統(tǒng)已經(jīng)聯(lián)網(wǎng)成功,可通過(guò)ifconfig
命令查看Linux主機(jī)的ip地址:
圖x 查看遠(yuǎn)程服務(wù)器ip地址
前期的一些關(guān)于網(wǎng)絡(luò)的配置工作,仍需要在虛擬機(jī)界面下完成。例如,先要安裝并啟用SSH服務(wù),使得本地主機(jī)可以通過(guò)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ī)則,開(kāi)放22號(hào)端口
為了方便在本地主機(jī)(物理主機(jī))系統(tǒng)中操作服務(wù)器,接下來(lái)將在本地主機(jī)使用SSH終端訪問(wèn)遠(yuǎn)程主機(jī)(虛擬主機(jī))系統(tǒng)。
圖x 使用Tera Term建立同遠(yuǎn)程主機(jī)的SSH連接
登錄后,接下來(lái)的配置工作就都可以在Tera Term終端中進(jìn)行了。如圖x所示。
圖x 使用Tera Term建立同遠(yuǎn)程主機(jī)的SSH連接2
啟用ftp連接
通過(guò)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,啟用讀寫(xiě)訪問(wèn)權(quán)限:
sudo nano /etc/vsftpd.conf # 修改配置文件
默認(rèn)僅需要開(kāi)啟寫(xiě)使能即可:
write_enable=YES
保存修改配置后,重啟服務(wù):
sudo systemctl restart vsftpd
在本地主機(jī)的Windows系統(tǒng)上,可以使用WinSCP作為FTP客戶(hù)端。如圖x所示。
圖x 使用FTP向遠(yuǎn)程主機(jī)傳文件
安裝armgcc編譯工具鏈
Ubuntu 18.04的軟件源中,gcc-arm-none-eabi工具集的版本比較老,通常要使用較新版的編譯器,可以通過(guò)直接解壓壓縮包的方式安裝到遠(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)的開(kāi)發(fā)環(huán)境,就選用了Ninja。Make在Windows系統(tǒng)上沒(méi)有專(zhuān)門(mén)的軟件包,不能在Windows原生的命令行環(huán)境中直接調(diào)用,只得通過(guò)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)過(guò)眼神,是對(duì)的人。
驗(yàn)證
通過(guò)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
,可以通過(guò)WinSCP取回到本地主機(jī),在Windows系統(tǒng)下通過(guò)各種下載器(例如JLink或者DAPLink)下載到芯片上,或者通過(guò)Bootloader的方式更新固件,用戶(hù)可以根據(jù)需要選用合適的操作方式。
-
無(wú)線路由器
+關(guān)注
關(guān)注
9文章
348瀏覽量
31851 -
FTP
+關(guān)注
關(guān)注
0文章
111瀏覽量
40836 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
954瀏覽量
28637 -
SSH
+關(guān)注
關(guān)注
0文章
190瀏覽量
16501 -
Ubuntu系統(tǒng)
+關(guān)注
關(guān)注
0文章
91瀏覽量
4088
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
YTM32的LIN通信協(xié)議引擎LinFlexD外設(shè)模塊詳解

YTM32的模數(shù)轉(zhuǎn)換器ADC外設(shè)模塊詳解

YTM32的增強(qiáng)型定時(shí)器eTMR外設(shè)模塊簡(jiǎn)介

Ubuntu Server菜鳥(niǎo)配置手冊(cè)
opencv編譯安裝筆記(Linux、Ubuntu )

firefly3399PRO-JD4編譯Ubuntu 固件簡(jiǎn)介

fireflyROC-RK3308B-CC固件編譯工具簡(jiǎn)介
微雪電子RK3308主板CC固件編譯工具介紹
fireflyAIO-3288J主板編譯Ubuntu16.04固件簡(jiǎn)介

【時(shí)擎科技AT1000開(kāi)發(fā)板試用體驗(yàn)】官方Linux sdk編譯配置

RK3568 SDK 的編譯
SS524V100 SDK安裝編譯
RK3568 編譯sdk技巧

RK3588 SDK入門(mén)之編譯使用篇

評(píng)論