chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

為APM32F411打造可自動(dòng)化的命令行工作流

Geehy極海半導(dǎo)體 ? 來(lái)源:21ic論壇極海半導(dǎo)體專(zhuān)區(qū) ? 2025-07-11 10:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

來(lái)源:轉(zhuǎn)載自21ic論壇極海半導(dǎo)體專(zhuān)區(qū)

1 背景

拿到APM32F411的TINY板卡后,在打開(kāi)官方提供的SDK發(fā)現(xiàn),他們提供的MDK、IAR、Eclipse的工程示例。非常不錯(cuò),但是我想著有一些場(chǎng)景下在沒(méi)有安裝IDE的情況下怎么編譯程序呢?

通過(guò)學(xué)習(xí),我發(fā)現(xiàn)可以使用開(kāi)源工具鏈GCC+Makefile編譯程序。經(jīng)過(guò)分析發(fā)現(xiàn)極海的Eclipse工程就是基于GCC工具鏈進(jìn)行編譯的,這樣看來(lái)我只需要搭建GCC+Makefile的本地編譯環(huán)境就可以在不使用IDE的情況下完成對(duì)APM32F411的程序編譯了。

完成程序的編譯后,我們需要對(duì)程序進(jìn)行下載,由于A(yíng)PM32F411的TINY板卡的板載仿真器是基于CMSIS-DAP而來(lái)的,我們可以輕易的就想到使用ARM提供的PyOCD進(jìn)行程序下載。

整體的程序編譯及下載的步驟理論存在,那么我們實(shí)踐開(kāi)始。

2 工具鏈準(zhǔn)備

在實(shí)際進(jìn)行代碼的搬運(yùn)前,我們需要對(duì)我們所需要的環(huán)境進(jìn)行搭建,我這里使用的是window的環(huán)境,注意是下載相關(guān)的工具鏈,然后把工具鏈的路徑添加到我們的系統(tǒng)變量中,從而使得直接調(diào)用CMD命令就能使用我們的目標(biāo)工具鏈程序。

2.1 make工具鏈

make工具鏈?zhǔn)俏覀儽敬尉幾g腳本的基礎(chǔ)工具,make工具也是多種多樣的,我這里選擇,這個(gè)是它的下載頁(yè)面:https://github.com/xpack-dev-tools/windows-build-tools-xpack/releases

這里是它的安裝介紹:https://xpack.github.io/dev-tools/windows-build-tools/install/。

我這里就簡(jiǎn)單描述一下:

1. 先下載我們需要的xPack Windows Build Tools版本,比如說(shuō)我選4.3.0的。

2. 下載下來(lái)是一個(gè)壓縮包,我們把它解壓到一個(gè)合適的路徑,比如我把它放在C盤(pán)。

3. 把make.exe的路徑添加到我們的系統(tǒng)環(huán)境變量,比如我的是:C:xpack-windows-build-tools-4.3.0-1in

4. 我們?cè)赾md命令窗口輸入“make -v”檢查是否make程序已經(jīng)正常添加入我們的系統(tǒng)變量中。

f3927168-5bc5-11f0-baa5-92fbcf53809c.jpg

2.2 GCC工具鏈

GCC工具,因?yàn)锳PM32F411是基于A(yíng)rm Cortex-M4F的芯片,所以我們要選擇的是GNU Arm Embedded Toolchain,

這個(gè)是工具鏈的官網(wǎng):https://developer.arm.com/downloads/-/gnu-rm,也是選擇一個(gè)喜歡的版本進(jìn)行下載,我這里選的是10 2021.10的版本。

需要注意的是,它提供安裝包和壓縮包,使用壓縮包需要自己配置系統(tǒng)環(huán)境變量(可以參考make的工具鏈配置,它的路徑是(我的):C:GNU Arm Embedded Toolchain10 2021.10in,里面有arm-none-eabi-gcc.exe那個(gè)就是),如果是安裝包需要留意勾選“配置至系統(tǒng)變量”的選項(xiàng)。

f39f35b0-5bc5-11f0-baa5-92fbcf53809c.jpg

同樣的,我們也可以在CMD查看支持,僅需要輸入以下命令“arm-none-eabi-gcc -v”,若有打印arm-none-eabi-gcc版本信息即可。

f3a9223c-5bc5-11f0-baa5-92fbcf53809c.jpg

這里也給大家看看系統(tǒng)環(huán)境變量的設(shè)置界面(直接使用WIN+Q 按鍵搜索“環(huán)境變量”即可)。

f3bbed9a-5bc5-11f0-baa5-92fbcf53809c.jpg

2.3 PyOCD 工具鏈

PyOCD的官網(wǎng):https://link.zhihu.com/?target=https%3A//github.com/pyocd/pyOCD,它提供了我們使用命令行的形式配合CMSIS-DAP下載程序至Arm Cortex-M的芯片。

PyOCD這個(gè)工具鏈的安裝是基于Python上的,我們首先需要安裝Python環(huán)境(可以直接在它的官網(wǎng)https://www.python.org/downloads/windows/下載安裝),有了Python環(huán)境后我們直接在CMD上輸入“pip install -i https://pypi.tuna.tsinghua.edu.cn/simpl pyocd”命令等待安裝成功。

安裝成功后我們可以在CMD上輸入“pyocd list”我們可以看到當(dāng)前系統(tǒng)連接的仿真器。

f3cfc978-5bc5-11f0-baa5-92fbcf53809c.jpg

3 源碼選擇

由于我們使用的是GCC的工具鏈環(huán)境,對(duì)于內(nèi)核的源碼我們需要相應(yīng)的版本。即鏈接腳本文件以及啟動(dòng)文件都得選擇GCC版本的。

為了方便我們的后續(xù)程序編寫(xiě),我這里新建一個(gè)文件夾,把我們需要的源碼往里面裝進(jìn)去。

1. 板載文件及庫(kù)文件必不可少。將“Boards”、“Libraries”復(fù)制到我們的新文件夾中。

f4128bc8-5bc5-11f0-baa5-92fbcf53809c.jpg

2. 復(fù)制APM32F4xx_SDK_V1.4APM32F4xx_SDK_V1.4ExamplesSysTick下的文件夾至我們的新文件夾中。

f4282078-5bc5-11f0-baa5-92fbcf53809c.jpg

然后把里面的“Project”給刪除,我們不需要這段IDE工程。

3. 復(fù)制鏈接腳本文件以及啟動(dòng)文件。把APM32F4xx_SDK_V1.4LibrariesDeviceGeehyAPM32F4xxSourcegcc里面的“APM32F4xxxE_FLASH.ld”和“startup_apm32f411.S”復(fù)制到我們的新文件夾中。

f4bc5720-5bc5-11f0-baa5-92fbcf53809c.jpg

至此,我們的源碼準(zhǔn)備完畢。

4 編寫(xiě)makefile腳本

由于我們是使用makefile來(lái)做IDE的角色,我們現(xiàn)在回憶一下我們IDE需要哪些基礎(chǔ)的設(shè)置才能完成程序的編譯?對(duì)是的,有工程名、源碼包含、頭文件包含、宏定義、輸出目錄、輸出內(nèi)容、編譯優(yōu)化等級(jí)等內(nèi)容需要一一設(shè)置。

我們新建一個(gè)txt文件,把它名字改為“Makefile”,同時(shí)刪除后綴。然后我們一步步地將以下內(nèi)容寫(xiě)入文件。

4.1 工程名設(shè)置

首先是工程名設(shè)置,我這里設(shè)置為SysTick_TimeBase。

######################################

# target

######################################

TARGET = SysTick_TimeBase

4.2 編譯設(shè)置

這里設(shè)置編譯是否是debug標(biāo)簽和優(yōu)化等級(jí)。

######################################

# building variables

######################################

# debug build?

DEBUG = 1

# optimization

OPT = -Og

4.3 編譯文件夾設(shè)置

設(shè)置編譯的文件的輸出文件夾

#######################################

# paths

#######################################

# Build path

BUILD_DIR = build

4.4 設(shè)置源碼包含

設(shè)置工程需要包含的源碼路徑。

######################################

# source

######################################

# C sources

C_SOURCES =

SysTick_TimeBase/Source/main.c

SysTick_TimeBase/Source/apm32f4xx_int.c

SysTick_TimeBase/Source/system_apm32f4xx.c

Boards/Board.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_adc.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_can.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_crc.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_cryp.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_cryp_aes.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_cryp_des.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_cryp_tdes.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_dac.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_dbgmcu.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_dci.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_dma.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_dmc.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_eint.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_fmc.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_gpio.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_hash.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_hash_md5.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_hash_sha1.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_i2c.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_iwdt.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_misc.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_pmu.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_rcm.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_rng.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_rtc.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_sdio.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_smc.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_spi.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_syscfg.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_tmr.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_usart.c

Libraries/APM32F4xx_StdPeriphDriver/src/apm32f4xx_wwdt.c

4.5 設(shè)置啟動(dòng)文件

設(shè)置啟動(dòng)文件,將我們的文件夾內(nèi)的startup_apm32f411.S的啟動(dòng)文件后綴名改為小寫(xiě)的“s”。

# ASM sources

ASM_SOURCES =

startup_apm32f411.s

4.6 設(shè)置編譯MCU內(nèi)核

設(shè)置編譯的MCU內(nèi)核及FPU設(shè)置。工具鏈?zhǔn)褂谩癮rm-none-eabi-”,內(nèi)核為Arm Cortex-M4F。

#######################################

# binaries

#######################################

PREFIX = arm-none-eabi-

# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)

# either it can be added to the PATH environment variable.

ifdef GCC_PATH

CC = $(GCC_PATH)/$(PREFIX)gcc

AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp

CP = $(GCC_PATH)/$(PREFIX)objcopy

SZ = $(GCC_PATH)/$(PREFIX)size

else

CC = $(PREFIX)gcc

AS = $(PREFIX)gcc -x assembler-with-cpp

CP = $(PREFIX)objcopy

SZ = $(PREFIX)size

endif

HEX = $(CP) -O ihex

BIN = $(CP) -O binary -S

#######################################

# CFLAGS

#######################################

# cpu

CPU = -mcpu=cortex-m4

# fpu

FPU = -mfpu=fpv4-sp-d16

# float-abi

FLOAT-ABI = -mfloat-abi=hard

# mcu

MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)

4.7 設(shè)置宏定義

設(shè)置工程所需的宏定義。

# C defines

C_DEFS =

-DAPM32F411

-DAPM32F411_TINY

4.8 設(shè)置工程頭文件包含

設(shè)置工程所需的頭文件路徑。

# C includes

C_INCLUDES =

-ILibraries/APM32F4xx_StdPeriphDriver/inc

-ILibraries/Device/Geehy/APM32F4xx/Include

-ILibraries/CMSIS/Include

-IBoards

-ISysTick_TimeBase/Include

4.9 設(shè)置鏈接腳本文件

設(shè)置鏈接腳本文件路徑。

4.10 其他

這個(gè)部分內(nèi)容是編譯的一些指令及操作,直接使用即可這里由于篇幅關(guān)系就不一一舉例,大家拿到附件后可自行了解。

5 編譯程序

在工程目錄下啟動(dòng)CMD,輸入“make”便可以開(kāi)始編譯我們的代碼。最終編譯結(jié)果如下:

f4d17376-5bc5-11f0-baa5-92fbcf53809c.jpg

6 下載程序

我們這里將使用PyOCD下載程序,我們把“Geehy.APM32F4xx_DFP.1.0.4.pack”復(fù)制到我們的工程目錄,然后在目錄下啟動(dòng)CMD,輸入:

pyocd flash --erase chip --target apm32f411ve --pack=Geehy.APM32F4xx_DFP.1.0.4.pack build/SysTick_TimeBase.hex

最終效果如下,程序下載完畢后板卡將閃燈,并在串口輸出當(dāng)前的延時(shí)速度。

f4e99dca-5bc5-11f0-baa5-92fbcf53809c.jpg

亮燈效果:

f4f9d780-5bc5-11f0-baa5-92fbcf53809c.gif

注:文章作者在原帖中提供了例程文件,有需要請(qǐng)至原文21ic論壇下載

原文地址:
https://bbs.21ic.com/icview-3329116-1-1.html

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

    關(guān)注

    14

    文章

    1045

    瀏覽量

    86386
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3875

    瀏覽量

    45214
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    682

    瀏覽量

    34775
  • 極海半導(dǎo)體
    +關(guān)注

    關(guān)注

    0

    文章

    177

    瀏覽量

    4825

原文標(biāo)題:APM32芯得 EP.59 | 為APM32F411打造可自動(dòng)化的命令行工作流

文章出處:【微信號(hào):geehysemi,微信公眾號(hào):Geehy極海半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    極海APM32F411微控制器硬件FPU使用指南

    APM32F411是一款基于32位Arm Cortex-M4F內(nèi)核的微控制器。硬件FPU是Arm Cortex-M4F的一大優(yōu)勢(shì)。合理應(yīng)用硬件FPU可以大大縮短運(yùn)算時(shí)間。
    的頭像 發(fā)表于 06-28 11:23 ?1357次閱讀
    極海<b class='flag-5'>APM32F411</b>微控制器硬件FPU使用指南

    在STM32實(shí)現(xiàn)命令行

    工作中的開(kāi)發(fā)環(huán)境都是基于linux命令行交互,作為命令行的重度使用者,玩單片機(jī)也要使用命令行工具,百度了一些命令行工具,有幾個(gè)不錯(cuò)的開(kāi)源 c
    發(fā)表于 12-09 11:32 ?3356次閱讀

    TinyMaix框架的內(nèi)存需求超過(guò)了APM32F411的可用內(nèi)存,導(dǎo)致運(yùn)行失敗,怎么能成功優(yōu)化?

    TinyMaix框架的內(nèi)存需求超過(guò)了APM32F411的可用內(nèi)存,導(dǎo)致運(yùn)行失敗。怎么能成功優(yōu)化?
    發(fā)表于 09-27 09:44

    cmd網(wǎng)絡(luò)經(jīng)典命令行

    cmd網(wǎng)絡(luò)經(jīng)典命令行:
    發(fā)表于 06-11 15:17 ?36次下載
    cmd網(wǎng)絡(luò)經(jīng)典<b class='flag-5'>命令行</b>

    caxa命令行中的應(yīng)用

    caxa命令行中的應(yīng)用 命令行對(duì)于大多用戶(hù)來(lái)說(shuō)往往只是輸入數(shù)據(jù)的作用,但是其中的奧妙還有很多,下面就給大家
    發(fā)表于 10-18 18:18 ?2495次閱讀

    CMD的命令行高級(jí)教程

    CMD的命令行高級(jí)教程
    發(fā)表于 10-24 08:31 ?30次下載
    CMD的<b class='flag-5'>命令行</b>高級(jí)教程

    XenServer2016命令行方式自動(dòng)化安裝

    命令行+自動(dòng)化的顧問(wèn)XE 2016
    的頭像 發(fā)表于 05-31 11:42 ?2159次閱讀

    Shell命令行解釋器簡(jiǎn)介

    Shell 是一個(gè)命令行解釋器,Shell 用戶(hù)提供了與設(shè)備進(jìn)行命令行交互的方式,用戶(hù)通過(guò)串口、以太網(wǎng)、無(wú)線(xiàn)等方式將命令傳輸給具有 Shell 功能的設(shè)備,設(shè)備會(huì)解析
    的頭像 發(fā)表于 08-19 17:20 ?3808次閱讀

    Fcoder從命令行批量轉(zhuǎn)換為T(mén)IFF

    何應(yīng)用程序中,讓您只需一個(gè)命令即可自動(dòng)執(zhí)行重復(fù)的轉(zhuǎn)換任務(wù)。 命令行語(yǔ)法和用法 2TIFF圖像轉(zhuǎn)換器軟件可以從Windows 命令提示符、PowerShell或任何其他
    的頭像 發(fā)表于 05-22 14:13 ?1378次閱讀
    Fcoder從<b class='flag-5'>命令行</b>批量轉(zhuǎn)換為T(mén)IFF

    通過(guò)TPT命令行自動(dòng)化執(zhí)行測(cè)試

    作者|Poplar小編|吃不飽隨著DevOps、CI/CT在汽車(chē)行業(yè)日趨成熟和普及,TPT支持通過(guò)命令行的方式完成測(cè)試執(zhí)行過(guò)程。TPT作為德國(guó)PikeTec公司的嵌入式軟件模型測(cè)試工具,具有很高
    的頭像 發(fā)表于 02-02 11:07 ?1145次閱讀
    通過(guò)TPT<b class='flag-5'>命令行</b><b class='flag-5'>自動(dòng)化</b>執(zhí)行測(cè)試

    linux命令行與shell編程實(shí)戰(zhàn)

    Linux命令行與Shell編程實(shí)戰(zhàn)主要涉及以下內(nèi)容: Linux命令行基礎(chǔ):學(xué)習(xí)Linux命令行的基本操作,如文件管理、進(jìn)程管理、網(wǎng)絡(luò)配置等。熟悉使用命令行能夠提高
    的頭像 發(fā)表于 11-08 10:57 ?1274次閱讀

    linux虛擬機(jī)怎么調(diào)出命令行

    快捷鍵組合Ctrl+Alt+F1 6來(lái)切換到命令行界面。如果系統(tǒng)在虛擬機(jī)中,則可以使用Ctrl+Alt+shift+F1 6組合鍵來(lái)切換到命令行界面。在
    的頭像 發(fā)表于 11-08 11:28 ?4038次閱讀

    linux切換到命令行模式

    在Linux中,可以通過(guò)以下步驟切換到命令行模式: 打開(kāi)終端??梢栽趹?yīng)用菜單中找到終端或命令行終端。 在終端中輸入命令“exit”或“l(fā)ogout”,然后按回車(chē)鍵。 系統(tǒng)會(huì)提示您輸入管理員密碼。輸入
    的頭像 發(fā)表于 11-13 16:47 ?2528次閱讀

    APM32F411板的python+pyocd命令行操作

    前段時(shí)間學(xué)習(xí)了一下如何使用pyocd配合APM32F411VCTINY板在命令行下給它進(jìn)行各種騷操作,在使用一段時(shí)間后就想著:pyocd是基于python的,那是不是也可以使用python腳本+pyocd使用起來(lái)呢?
    的頭像 發(fā)表于 10-18 16:21 ?1356次閱讀
    <b class='flag-5'>APM32F411</b>板的python+pyocd<b class='flag-5'>命令行</b>操作

    AI工作流自動(dòng)化是做什么的

    AI工作流自動(dòng)化是指利用人工智能技術(shù),對(duì)工作流程中的重復(fù)性、規(guī)則明確的任務(wù)進(jìn)行自動(dòng)化處理的過(guò)程。那么,AI工作流
    的頭像 發(fā)表于 01-06 17:57 ?1137次閱讀