0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Ubuntu Server編譯YTM32 SDK工程

冬至子 ? 來源:嵌入式客棧 ? 作者:vesperW ? 2023-10-23 17:22 ? 次閱讀

需求

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地址:

image.png

圖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)。

image.png

圖x 使用Tera Term建立同遠(yuǎn)程主機(jī)的SSH連接

登錄后,接下來的配置工作就都可以在Tera Term終端中進(jìn)行了。如圖x所示。

image.png

圖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所示。

image.png

圖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所示。

image.png

圖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中,再解壓:

1.jpg

最后,將編譯器程序所在的目錄添加到Linux的環(huán)境變量中。

1.jpg

在文件結(jié)尾處添加:

1.jpg

保存.bashrc文件后,重新激活:

1.jpg

此時(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ī),解壓軟件包:

1.jpg

然后以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ù)需要選用合適的操作方式。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 無線路由器
    +關(guān)注

    關(guān)注

    9

    文章

    345

    瀏覽量

    31552
  • FTP
    FTP
    +關(guān)注

    關(guān)注

    0

    文章

    110

    瀏覽量

    40635
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    917

    瀏覽量

    28202
  • SSH
    SSH
    +關(guān)注

    關(guān)注

    0

    文章

    189

    瀏覽量

    16338
  • Ubuntu系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    91

    瀏覽量

    3942
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    YTM32的LIN通信協(xié)議引擎LinFlexD外設(shè)模塊詳解

    YTM32微控制器的LINFlexD外設(shè)模塊,實(shí)現(xiàn)了LIN協(xié)議控制器的功能,可以支持LIN總線協(xié)議的主機(jī)和從機(jī)功能。
    的頭像 發(fā)表于 10-08 11:15 ?1997次閱讀
    <b class='flag-5'>YTM32</b>的LIN通信協(xié)議引擎LinFlexD外設(shè)模塊詳解

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

    YTM32的ADC轉(zhuǎn)換器外設(shè)最多可以集成32個(gè)輸入通道,最高12b轉(zhuǎn)換精度,最快可以支持2M Sps的12b采樣。
    的頭像 發(fā)表于 10-09 16:35 ?1885次閱讀
    <b class='flag-5'>YTM32</b>的模數(shù)轉(zhuǎn)換器ADC外設(shè)模塊詳解

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

    YTM32微控制器上集成的eTMR模塊,是一個(gè)定時(shí)器外設(shè),下轄多至8個(gè)通道
    的頭像 發(fā)表于 10-31 14:18 ?1203次閱讀
    <b class='flag-5'>YTM32</b>的增強(qiáng)型定時(shí)器eTMR外設(shè)模塊簡(jiǎn)介

    Ubuntu Server菜鳥配置手冊(cè)

    Ubuntu Server菜鳥配置手冊(cè)──目錄 1 安裝Ubuntu Server 4 2 簡(jiǎn)單的配置好服務(wù)器網(wǎng)絡(luò)和SSH 12 3 搭建一個(gè)基于 Apache2、PHP 和 Mysq
    發(fā)表于 05-22 00:54 ?54次下載

    opencv編譯安裝筆記(Linux、Ubuntu

    本文介紹了兩種opencv編譯安裝筆記:Linux下編譯安裝OpenCV和Ubuntu 下安裝 OpenCV。有需要的小伙伴可以看看。
    發(fā)表于 12-03 10:33 ?5178次閱讀
    opencv<b class='flag-5'>編譯</b>安裝筆記(Linux、<b class='flag-5'>Ubuntu</b> )

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

    編譯 Ubuntu 固件(GPT) 為了方便用戶的使用與開發(fā),官方提供了Linux開發(fā)的整套sdk,本章詳細(xì)的說明SDK的具體用法。 準(zhǔn)備工作 下載源碼 下載repo工具
    的頭像 發(fā)表于 12-17 16:42 ?3342次閱讀
    firefly3399PRO-JD4<b class='flag-5'>編譯</b><b class='flag-5'>Ubuntu</b> 固件簡(jiǎn)介

    fireflyROC-RK3308B-CC固件編譯工具簡(jiǎn)介

    固件編譯工具(Docker 方式) 說明 SDK編譯工具 - Docker 方式,通過 Firelfy 定制的 Ubuntu 16.04 Docker鏡像,快速搭建
    的頭像 發(fā)表于 12-20 09:30 ?1986次閱讀

    微雪電子RK3308主板CC固件編譯工具介紹

    SDK編譯工具 - Docker 方式,通過 Firelfy 定制的 Ubuntu 16.04 Docker鏡像,快速搭建SDK所需的編譯環(huán)
    的頭像 發(fā)表于 12-23 15:40 ?2163次閱讀

    fireflyAIO-3288J主板編譯Ubuntu16.04固件簡(jiǎn)介

    編譯 Ubuntu16.04 固件(GPT) 前言 本 SDK 開發(fā)環(huán)境是在 Ubuntu 上開發(fā)測(cè)試的。我們推薦使用 Ubuntu
    的頭像 發(fā)表于 12-26 14:54 ?3280次閱讀
    fireflyAIO-3288J主板<b class='flag-5'>編譯</b><b class='flag-5'>Ubuntu</b>16.04固件簡(jiǎn)介

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

    linux編譯源碼的小伙伴說說。Ubuntu版本: Ubuntu 20.04.3 LTS。 在收到時(shí)擎科技提供的SDK后目錄結(jié)構(gòu)如下: 一個(gè)為sdk
    的頭像 發(fā)表于 11-22 14:31 ?617次閱讀
    【時(shí)擎科技AT1000開發(fā)板試用體驗(yàn)】官方Linux <b class='flag-5'>sdk</b><b class='flag-5'>編譯</b>配置

    RK3568 SDK編譯

    RK3568 SDK編譯
    的頭像 發(fā)表于 12-13 11:46 ?1638次閱讀
    RK3568 <b class='flag-5'>SDK</b> 的<b class='flag-5'>編譯</b>

    RK3568 SDK編譯

    SDK的開發(fā)環(huán)境是在Ubuntu系統(tǒng)上開發(fā)測(cè)試的。推薦使用Ubuntu18.04系統(tǒng)進(jìn)行編譯。其它的Linux版本可能需要對(duì)軟件包做相應(yīng)的調(diào)整,除了系統(tǒng)外,還有其它硬件方面的要求。
    發(fā)表于 12-13 11:40 ?59次下載

    SS524V100 SDK安裝編譯

    SS524V100SDK安裝編譯osdrv注意事項(xiàng)(一)一、開發(fā)環(huán)境windows10電腦+虛擬機(jī)15Pro+Ubuntu18.0.4二、在linux服務(wù)器上安裝交叉工具鏈
    發(fā)表于 10-23 17:30 ?6次下載

    RK3568 編譯sdk技巧

    我司RK3568對(duì)外提供源代碼是以sdk的形式提供,包括但不僅限于uboot、kernel、buildroot、debian源碼。在編譯sdk的過程中往往需要安裝大量的第三方安裝包,同時(shí)也要保證宿主
    的頭像 發(fā)表于 08-30 11:44 ?524次閱讀
    RK3568 <b class='flag-5'>編譯</b><b class='flag-5'>sdk</b>技巧

    RK3588 SDK入門之編譯使用篇

    前言:在上一篇文章中,我們已經(jīng)配置好了Ubuntu虛擬機(jī)。本期將重點(diǎn)介紹如何Ubuntu虛擬機(jī)中使用RK3588的SDK。具體內(nèi)容包括SDK的下載與安裝、環(huán)境變量的配置、以及
    的頭像 發(fā)表于 11-22 01:07 ?683次閱讀
    RK3588 <b class='flag-5'>SDK</b>入門之<b class='flag-5'>編譯</b>使用篇