需求
在Linux系統(tǒng)環(huán)境下搭建SDK的編譯環(huán)境:
- 方便加入到持續(xù)集成工具鏈
- Linux系統(tǒng)中運行armgcc的速度更快,適合較為頻繁的CI驗證過程
- 服務(wù)器上多使用Linux系統(tǒng),比較容易找到裝Linux系統(tǒng)的服務(wù)器,用舊電腦、虛擬機或者云服務(wù)均可
- 一些客戶需要,要么規(guī)避工具鏈的商業(yè)付費授權(quán),要么習(xí)慣使用Linux系統(tǒng)(歐美開發(fā)者)
安裝與配置
配置虛擬機聯(lián)網(wǎng)模式
VirtualBox網(wǎng)絡(luò)模式,默認(rèn)是NAT
,可改為橋接模式。
在橋接模式下,虛擬主機同物理主機相互獨立,通過物理主機連接的路由器組網(wǎng)(在Wifi網(wǎng)絡(luò)中不需要再輸入無線路由密碼),在同一個局域網(wǎng)網(wǎng)段。橋接模式下的虛擬主機,同在局域網(wǎng)中加入一個物理主機服務(wù)器最接近。
為了驗證虛擬主機系統(tǒng)已經(jīng)聯(lián)網(wǎng)成功,可通過ifconfig
命令查看Linux主機的ip地址:
圖x 查看遠程服務(wù)器ip地址
前期的一些關(guān)于網(wǎng)絡(luò)的配置工作,仍需要在虛擬機界面下完成。例如,先要安裝并啟用SSH服務(wù),使得本地主機可以通過SSH連接到遠程主機。
啟用ssh連接
sudo apt install openssh-server # 安裝ssh server
sudo service ssh start # 啟動ssh服務(wù)
sudo ufw allow 22 # 更新防火墻規(guī)則,開放22號端口
為了方便在本地主機(物理主機)系統(tǒng)中操作服務(wù)器,接下來將在本地主機使用SSH終端訪問遠程主機(虛擬主機)系統(tǒng)。
圖x 使用Tera Term建立同遠程主機的SSH連接
登錄后,接下來的配置工作就都可以在Tera Term終端中進行了。如圖x所示。
圖x 使用Tera Term建立同遠程主機的SSH連接2
啟用ftp連接
通過FTP連接,本機主機可以向遠程主機傳送文件和下載文件。如此,可以在本地主機下載好必要的軟件包,例如armgcc的工具鏈軟件包。
在遠程主機安裝并啟用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
在本地主機的Windows系統(tǒng)上,可以使用WinSCP作為FTP客戶端。如圖x所示。
圖x 使用FTP向遠程主機傳文件
安裝armgcc編譯工具鏈
Ubuntu 18.04的軟件源中,gcc-arm-none-eabi工具集的版本比較老,通常要使用較新版的編譯器,可以通過直接解壓壓縮包的方式安裝到遠程主機的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
文件,上傳至遠程主機的目錄/home/andrew/ytm32-mcu/tools
中,再解壓:
最后,將編譯器程序所在的目錄添加到Linux的環(huán)境變量中。
在文件結(jié)尾處添加:
保存.bashrc
文件后,重新激活:
此時,在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對Windows的支持似乎要好于Linux,因此YTM32的SDK在Windows系統(tǒng)中搭建免費的開發(fā)環(huán)境,就選用了Ninja。Make在Windows系統(tǒng)上沒有專門的軟件包,不能在Windows原生的命令行環(huán)境中直接調(diào)用,只得通過mingw環(huán)境套用一個兼容性的make工具。
但是,Make在Linux系統(tǒng)環(huán)境下是天然被支持的,因此在Linux系統(tǒng)環(huán)境下,YTM32的SDK優(yōu)先使用Make工具。
在bash中,試著運行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)過眼神,是對的人。
驗證
通過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。
鑒于大多數(shù)在服務(wù)器上做CI(持續(xù)集成,Continuous Integration)只是編譯,不做下載和調(diào)試,本文暫不繼續(xù)介紹下載可執(zhí)行文件的操作。
實際上,編譯之后的可執(zhí)行文件,例如flash.elf
,可以通過WinSCP取回到本地主機,在Windows系統(tǒng)下通過各種下載器(例如JLink或者DAPLink)下載到芯片上,或者通過Bootloader的方式更新固件,用戶可以根據(jù)需要選用合適的操作方式。
-
無線路由器
+關(guān)注
關(guān)注
9文章
350瀏覽量
32230 -
FTP
+關(guān)注
關(guān)注
0文章
115瀏覽量
41189 -
虛擬機
+關(guān)注
關(guān)注
1文章
962瀏覽量
29018 -
SSH
+關(guān)注
關(guān)注
0文章
193瀏覽量
16786 -
Ubuntu系統(tǒng)
+關(guān)注
關(guān)注
0文章
91瀏覽量
4233
發(fā)布評論請先 登錄
YTM32的LIN通信協(xié)議引擎LinFlexD外設(shè)模塊詳解

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

Ubuntu Server菜鳥配置手冊
opencv編譯安裝筆記(Linux、Ubuntu )

firefly3399PRO-JD4編譯Ubuntu 固件簡介

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

【時擎科技AT1000開發(fā)板試用體驗】官方Linux sdk編譯配置

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

RK3588 SDK入門之編譯使用篇

評論