色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在window下使用VScode搭建ARM開發環境

技術讓夢想更偉大 ? 來源:矜辰所致 ? 作者:矜辰所致 ? 2022-10-24 09:59 ? 次閱讀

本文給出兩種方式:

第一種gcc-arm-none-eabi 來編譯

第二種利用插件導入KEIL工程,可以執行編譯調試燒錄

一、使用 VSCode + gcc + openOCD 開發

文章中所用到的工具版本都可以網上搜索一下找到下載。

1、安裝 gcc-arm-none-eabi-xxx

安裝 gcc-arm-none-eabi-5_4-2016q3-20160926-win32(這只是當時我配置時候用的版本,其他版本也是可以的) 記得最后的第3選項打鉤,因為自動添加環境變量(估計是因為自動添加,所以會添加到用戶的環境變量下面去,一樣可以用,如果自己添加,可以添加到系統的環境變量中去) 最后,只要是在你的終端(終端可以使window自帶的cmd,也可以是你配置過的模擬linux的終端),能夠查詢到arm gcc的版本,就算是正常安裝了,如下所示:

e3797938-52dc-11ed-a3b6-dac502259ad0.pnge3a76fbe-52dc-11ed-a3b6-dac502259ad0.png

2、環境變量添加示意圖

下圖給出環境變量添加的示意圖,下面安裝的工具環境變量配置基本上按照這個圖來就可以:

e3c1226a-52dc-11ed-a3b6-dac502259ad0.png

但是,這個電腦上我的arm-gcc環境變量添加是在用戶變量下面的(gcc-arm-none-eabi安裝時候自自動添加的),應該用戶和系統都是可以的,有待驗證:

e3d63f60-52dc-11ed-a3b6-dac502259ad0.png

3、安裝mingw

安裝mingw-w64-install(根據自己的電腦選擇mingw的版本)

e3f492c6-52dc-11ed-a3b6-dac502259ad0.png

安裝的幾個選項給出說明 Version制定版本號,從4.9.1-8.1.0,按需選擇,沒有特殊要求就用最新版吧;Architecture跟操作系統有關,64位系統選擇x86_64,32位系統選擇i686; Threads設置線程標準可選posix或win32; Exception設置異常處理系統,x86_64可選為seh和sjlj,i686為dwarf和sjlj; Build revision構建版本號,選擇最大即可。

CPU架構 x86_64 64位

CPU架構 i686 32位

操作系統接口協議 win32 開發windows應用程序

操作系統接口協議 posix 開發Linux、Mac應用程序

異常處理模型(32bit CPU) dwarf 版本新,性能較好,不支持64位

異常處理模型(32bit CPU) sjlj 版本低,同時支持32位和64位

異常處理模型(64bit CPU) seh 版本新,性能較好,不支持32位

異常處理模型(64bit CPU) sjlj 版本低,但支持32位和64位

點擊Next ,其實就是自動下載 x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z,如圖:

e4080996-52dc-11ed-a3b6-dac502259ad0.png安裝完成以后如圖所示,我覺得路徑比較深,個人不太喜歡,等下我會調整下路徑:

e423c7c6-52dc-11ed-a3b6-dac502259ad0.png

如果自動下載比較慢,也可以直接從mingw的官網找壓縮包,按照自己需要的版本選擇,直接解壓,都是一樣的:

x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z(用這個壓縮包解壓)解壓出來內容如下圖:

e457003c-52dc-11ed-a3b6-dac502259ad0.png最后根據自己的安裝路徑添加環境變量:系統變量中新建添加 D:Program Filesmingw64in

注意!注意!注意!最后即便這樣了,你會發現還是不能make,只需要在mingw64in目錄下找到mingw32-make.exe將mingw32-make.exe名字改成make.exe即可,如下圖:

e464f3b8-52dc-11ed-a3b6-dac502259ad0.png

至此,使用CubeMX直接可以生成Makefile 工程,直接make進行編譯:上圖就是使用STM32CubeMX直接生成的工程,直接編譯。

4、安裝openocd

OpenOCD(Open On-Chip Debugger)是開源片上調試器,OpenOCD旨在提供針對嵌入式設備的調試、系統編程和邊界掃描功能。OpenOCD的功能是在仿真器的輔助下完成的,仿真器是能夠提供調試目標的電信號的小型硬件單元。仿真器是必須的,因為調試主機(運行OpenOCD的PC)通常不具備這種電信號的直接解析功能。

通過網站下載OpenOCD的windows包OpenOCD下載地址

e48c2410-52dc-11ed-a3b6-dac502259ad0.png

把下載的壓縮包解壓出來,這個OpenOC是免安裝的,比如我解壓在D盤:

e4a58ce8-52dc-11ed-a3b6-dac502259ad0.png

添加環境變量步驟:

e4f58306-52dc-11ed-a3b6-dac502259ad0.png

安裝完成以后可以查看版本號如下圖:

e5441e8a-52dc-11ed-a3b6-dac502259ad0.png

openocd的操作模式 openocd -f <接口配置文件> -f <目標芯片配置文件> -c <要執行的命令> 比如:openocd -f interface/stlink-v2.cfg -f target/stm32l0.cfg openocd -f interface/jlink.cfg -f target/stm32f1x.cfg

如果想了解更多,可以去查看官方的指導手冊:openocd官方手冊

5、Makefile的修改

Makefile 中的有些語法 是 linux下的,例如下面的clean:

#######################################
#cleanup
#######################################
clean:
-rm-fR$(BUILD_DIR)

在window CMD終端中,make clean是不會成功的,這個時候你需要改成CMD下可以執行的操作:

#######################################
clean:
#-rm-fR$(BUILD_DIR)
-del/q$(BUILD_DIR)

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

使用CubeMX生成的Makefile,是不支持浮點數打印的,所以需要加上-u_printf_float -u_sprintf_float,如下圖:

# libraries
LIBS = -lc -lm -lnosys 
LIBDIR = 
LDFLAGS = $(MCU) -u_printf_float -u_sprintf_float -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections

我們目的是使用openocd進行燒錄,指令都是上面openocd 使用指令的集合,我們需要使用一個偽指令make download(名字其實按照自己的習慣命名就可以):

# Generate dependency information
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"
# 這里需要使用絕對路徑,根據自己的環境路徑配置
INTERFACE_CFG="D:Program Filesopenocdshareopenocdscriptsinterfacestlink-v2.cfg"
TARGET_CFG="D:Program Filesopenocdshareopenocdscripts	argetstm32l0.cfg"
# linux下的路徑
# INTERFACE_CFG=/usr/local/share/openocd/scripts/interface/stlink-v2.cfg
# TARGET_CFG=/usr/local/share/openocd/scripts/target/stm32l0.cfg 

#######################################
# LDFLAGS
#######################################
...
#######################################
# clean up
#######################################
clean:
-rm -fR $(BUILD_DIR)

download:
openocd -f $(INTERFACE_CFG) -f $(TARGET_CFG) -c init -c reset -c halt -c
"flash write_image erase $(BUILD_DIR)/$(TARGET).hex" -c reset -c shutdown

# 建議使用program,前面不需要加-c reset,實際測試更加穩定
# download:
# openocd -f $(INTERFACE_CFG) -f $(TARGET_CFG) -c init -c halt -c
# "program $(BUILD_DIR)/$(TARGET).hex" -c reset -c shutdown
 
#######################################
# dependencies
#######################################

6、燒錄過程的說明

make download 的操作:

-f interface/stlink-v2.cfg 根據相關目錄下的文件配置使用J-link還是st_link, 示例中使用的是stlink

-f target/stm32l0.cfg 選擇對應的芯片配置文件 示例中使用的是stm32l0系列

-c init 初始化

-c reset 芯片復位 (因為在實際使用中發現燒錄完成后會給芯片寫保護,導致再次使用此方法無法燒錄,必須復位一次) 經過后來測試發現使用 program xx.hex 指令燒錄是不需要在前面在 reset 的,而且每次都能章程燒錄 使用 flash write_image erase xx.hex 有時候會失敗,寫入以后也會給芯片寫保護,需要加reset

-c halt 掛起,等待燒錄

-c "flash write_image erase xx.hex" 或者 -c "program xx.hex" 燒錄對應的hex文件
如果是燒錄bin文件,需要指定燒錄的起始地址 -c "program xx.bin 0x08000000"

-c reset 芯片復位,自動運行

-c shutdown 自動關閉openocd的操作窗口

7、使用 Jlink 燒錄問題說明

以上的步驟我在使用 ST-LINK 的時候一切正常,但是在用到Jlink 的時候,也是遇到了問題,主要是2個問題,一個是Jlink使用SWD模式的問題,另外一個是openocd不識別jlink的問題。

openocd下無法找到J-Link設備:

e557a608-52dc-11ed-a3b6-dac502259ad0.png

7.1 openocd下如何識別J-Link

openocd無法識別jlink的官方的標準驅動,需要修改驅動,怎么修改我也是參照了網上前輩們的總結,需要用到 zadig 這個工具,下面給出官方下載地址:zadig下載地址如果官方地址下載太慢了,可以到其他網站找找,這個軟件我也放在了我上傳的工具包里面 exe文件直接運行,軟件打開后選擇Options,點擊List ALL Devices:然后再出來的設備中選中Jlink(千萬不要亂選,亂選操作失誤鼠標鍵盤什么都用不了了):e58272de-52dc-11ed-a3b6-dac502259ad0.png

選中后會識別Jlink的版本,點擊下面的Replace Driver就可以(還是記住一下自己的版本,因為這個轉化是不可逆的,就是你用正常的驅動,Keil能正常用,j-scope,j-flash能正常用,換成這個以后,只能在openocd下使用了)先不慌,后面我還會測試下,如何換回去= =!

e59dc3ea-52dc-11ed-a3b6-dac502259ad0.png

換完驅動后,操作試一下,如下圖,可以正常識別出J-Link(其他信息不用在意,下面我們會全部解決):

e5ceea2e-52dc-11ed-a3b6-dac502259ad0.png

7.2 openocd使用 J-Link swd模式

我們在能夠識別J-Link后,發現也不能正常燒錄,這主要是STM32設置的調試模式問題,我們現在開發一般使用的都是SWD模式:e5e88b5a-52dc-11ed-a3b6-dac502259ad0.png

然而我們可以看看 在openocd的相關路徑下面 openocdscriptsinterfacejlink.cfg文件:

e5f8e7ca-52dc-11ed-a3b6-dac502259ad0.png

只是把設備選成了Jlink,沒有做別的任何處理,所以我們選擇swd模式無法調試下載,雖然我們可以在指令中直接加上 transport select swd,但是為了以后方便,我們可以自己做一個cfg文件,如圖:

e61f39e8-52dc-11ed-a3b6-dac502259ad0.png

保存以后再根據我們前面講過的知識,Makefile中添加如下(換了一套電腦,所以路徑有點不一致):

#省略
INTERFACE_CFG="D:OpenOCD-20210729-0.11.0shareopenocdscriptsinterfacejlink-swd.cfg"
TARGET_CFG="D:OpenOCD-20210729-0.11.0shareopenocdscripts	argetstm32f1x.cfg"
#省略
#######################################
clean:
#-rm -fR $(BUILD_DIR)
-del /q $(BUILD_DIR)

down: 
openocd -f $(INTERFACE_CFG) -f $(TARGET_CFG) -c init -c halt -c 
"program $(BUILD_DIR)/$(TARGET).hex" -c reset -c shutdown 

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

最終,使用J-Link正常燒錄:

7.3 J-Link 恢復到 SEGGER J-Flash 使用

點擊卸載設備,勾選刪除此設備的驅動程序軟件進行卸載。

刪除完成后,重新拔插J-link,我這邊測試,因為本身電腦上有官方的驅動,所以居然自動識別出了,然后在Keil下測試了一下,也能識別燒錄OK,這樣我們就還原成功!當然這個時候,openocd是用不了了,不過我這里只是為了測試下如何還原,不至于使得J-Link變磚。

7.4換板子出現的Jlink燒錄問題(未解決)

最近用了另外一塊L051的板子在上次修改的Jlink上面燒錄,發現出現如下問題:e6305854-52dc-11ed-a3b6-dac502259ad0.png

這個網上查了很多,也沒直接得到答案,自己也修改過配置,也沒有得到答案。

網上所謂的改stm32l0.cfg文件中的reset_config srst_nogate或者是set _WORKAREASIZE 0x800都試過沒用的:

e675d000-52dc-11ed-a3b6-dac502259ad0.png

折騰了好一段時間,最后還是換成ST-link燒錄的。

8、gcc下pirntf 的重定義

我們以前在Keil開發STM32的時候,printf都需要重定義才能正常觀察打印結果,在gcc下和Keil下的重定義是不一樣的,我直接給出我使用的方式:

/*USERCODEBEGIN0*/
#if1
#include

#ifdef__GNUC__
#definePUTCHAR_PROTOTYPEint__io_putchar(intch)
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,HAL_MAX_DELAY);
returnch;
}
int_write(intfile,char*ptr,intlen)
{
intDataIdx;
for(DataIdx=0;DataIdxISR&0X40)==0);

/*串口發送完成,將該字符發送*/
USART1->TDR=(uint8_t)ch;

returnch;
}
#endif
#endif

二、使用 VScode插件Embedded IDE進行開發

1、安裝 Embedded IDE插件

這種方法其實PC上還是得安裝一下KEIL,使用這種方式的好處在于,VScode的代碼編輯功能完爆KEIL太多了。在 VScode的 插件中,搜索 Embedded IDE :

e68c54c4-52dc-11ed-a3b6-dac502259ad0.png

**如果自動安裝失敗**,可以到下面這個網址找到插件包,自動安裝:Embedded IDE離線安裝包e6a7599a-52dc-11ed-a3b6-dac502259ad0.png

下載號以后,在VScode插件欄目中,選擇從VSIX安裝,如下圖所示:

e7217e14-52dc-11ed-a3b6-dac502259ad0.png

(對于這個插件的使用,插件的作者本身其實已經寫了很多很詳細的,這里給個傳送門使用文檔)

2、Embedded IDE插件配置操作說明

我這邊分別針對STM32F系列和nRF52832系列做一下簡單演示,找到插件點擊安裝,安裝好以后再VScode左邊的工具欄會多出Embedded IDE 的圖標,點擊打開IDE的工作區域:

e734b286-52dc-11ed-a3b6-dac502259ad0.png

第一步,設置工具鏈路徑,點擊IDE工作區域的 設置工具鏈路徑欄目,在彈出的界面中選擇Keil安裝路徑中的 TOOLS.INI 文件:

e7615a8e-52dc-11ed-a3b6-dac502259ad0.png

上圖操作完會彈出選擇界面,選擇KEIL5 安裝路徑下面的 TOOLS.INI 文件

e7dc1756-52dc-11ed-a3b6-dac502259ad0.png

完成上述配置后,就可以導入項目了,我們先找一個STM32F103的項目測試下:

e7f296a2-52dc-11ed-a3b6-dac502259ad0.png

右下角會彈出項目是否將 EIDE 與原有的KEIL項目存于同一目錄下,我這里作為測試,選擇NO,然后得自己新建一個文件夾放置工程:

e85a3334-52dc-11ed-a3b6-dac502259ad0.png

自己找位置選擇一個文件夾(最好是英文不帶空格),然后在彈出的是否立即切換工作區,選擇繼續:

e86729fe-52dc-11ed-a3b6-dac502259ad0.png

EIDE工程就打開了,打開工程他會自動切換到 左邊 Vscode資源管理器工作區欄目,但是我們的一些配置需要選中 左邊EIDE:

e87b4952-52dc-11ed-a3b6-dac502259ad0.png

3、STM32F103 工程編譯燒錄示例

配置好以后就可以進行編譯了,編譯的小按鈕,編譯成功如下圖:

e894f3a2-52dc-11ed-a3b6-dac502259ad0.png

如果需要單步調試,需要安裝Cortex-Debug,我這邊的ST_linK調試還是有點問題,這里就不演示了,直接點擊燒錄測試:

e8a965da-52dc-11ed-a3b6-dac502259ad0.png

4、nRF52832 工程編譯燒錄示例

下面我們找一個nRF52832的工程,按照步驟導入:

e922cce0-52dc-11ed-a3b6-dac502259ad0.png

還是一樣配置好,其他東西都是默認就可以,還是可以正常編譯和燒錄:

e937cc94-52dc-11ed-a3b6-dac502259ad0.pnge967630a-52dc-11ed-a3b6-dac502259ad0.png

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Window
    +關注

    關注

    0

    文章

    82

    瀏覽量

    37272
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9098

    瀏覽量

    367679
  • 編譯
    +關注

    關注

    0

    文章

    659

    瀏覽量

    32877

原文標題:拋棄IDE — 在window下使用VScode搭建ARM開發環境

文章出處:【微信號:技術讓夢想更偉大,微信公眾號:技術讓夢想更偉大】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CW32 搭建VSCODE+GCC交叉編譯環境

    win10面創建vscode+gcc開發武漢芯源CW32L系列MCU的編譯環境
    的頭像 發表于 06-28 17:02 ?2.6w次閱讀
    CW32 <b class='flag-5'>搭建</b><b class='flag-5'>VSCODE</b>+GCC交叉編譯<b class='flag-5'>環境</b>

    VSCODE+STM32開發環境搭建方式

    史上最簡單的VSCODE+STM32開發環境搭建方式——基于IoT_Link寫在前邊現在用MDK開發STM32越來越惡心了,我天朝向來不缺乏
    發表于 08-03 08:20

    VSCode搭建STM32開發環境

    VSCode搭建STM32開發環境
    發表于 08-24 06:56

    VSCode搭建類似Keil的開發環境

    強大的編輯器之后,就再也回不去了。再次面對Keil時,感覺keil的代碼編輯或者閱讀代碼的功能實在是太不友好了,所以已經習慣不了Keil了。于是,想著能不能在VSCode搭建類似Keil的開發
    發表于 11-19 07:44

    VScode + keil開發環境搭建

    GD32系列總結 - VScode + keil開發環境搭建寫在前面Keil Assistant插件安裝與使用遇見的問題include波浪線警告中文備注亂碼last line of f
    發表于 11-30 07:56

    如何搭建VSCode開發環境?

    如何搭建VSCode開發環境?
    發表于 02-11 08:10

    求WindowsVSCode + kendryte插件 搭建K210開發環境指南

    手上有塊MaixDock K210,想在Windows環境,嘗試用VSCode搭建開發環境。
    發表于 06-04 22:22

    arm開發環境有哪些_使用Eclipse搭建ARM架構MCU開發環境

    本文主要介紹了關于arm開發環境有哪些以及使用Eclipse搭建ARM架構MCU開發
    的頭像 發表于 02-01 16:19 ?2w次閱讀

    嵌入式開發環境搭建

    本文詳細介紹了嵌入式開發環境搭建。這個教程僅使用附帶的光盤鏡像文件里的資料的情況,所搭建
    的頭像 發表于 02-01 16:39 ?8528次閱讀
    嵌入式<b class='flag-5'>開發</b><b class='flag-5'>環境</b>的<b class='flag-5'>搭建</b>

    VSCode搭建STM32單片機開發環境

    強大的編輯器之后,就再也回不去了。再次面對Keil時,感覺keil的代碼編輯或者閱讀代碼的功能實在是太不友好了,所以已經習慣不了Keil了。于是,想著能不能在VSCode搭建類似Keil的開發
    發表于 11-13 11:06 ?15次下載
    <b class='flag-5'>VSCode</b><b class='flag-5'>搭建</b>STM32單片機<b class='flag-5'>開發</b><b class='flag-5'>環境</b>

    GD32系列總結 - VScode + keil開發環境搭建

    GD32系列總結 - VScode + keil開發環境搭建寫在前面Keil Assistant插件安裝與使用遇見的問題include波浪線警告中文備注亂碼last line of f
    發表于 11-21 17:36 ?27次下載
    GD32系列總結 - <b class='flag-5'>VScode</b> + keil<b class='flag-5'>開發</b><b class='flag-5'>環境</b><b class='flag-5'>搭建</b>

    VScode+keil開發環境搭建安裝使用過程

    這篇文章主要介紹了VScode + keil開發環境搭建及安裝使用過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考
    的頭像 發表于 10-21 09:19 ?5222次閱讀

    S3C6410學習筆記:Windows搭建ARM11裸機開發環境

    之前寫過文章,描述Linux環境搭建ARM11的開發環境
    的頭像 發表于 04-06 17:52 ?1401次閱讀

    Windows搭建ARM11裸機開發環境:Eclipse創建工程

    上一篇文章介紹了Windows搭建ARM11的裸機開發環境,需要的朋友可以過去看看。
    的頭像 發表于 04-08 09:36 ?1240次閱讀

    Windows搭建ARM11裸機開發環境:Eclipse+JLink調試代碼

    之前,寫過兩篇文章,介紹了Windows搭建ARM11的裸機開發環境,以及使用Eclipse
    的頭像 發表于 04-08 14:13 ?2157次閱讀
    主站蜘蛛池模板: 91麻豆久久| 亚洲色图激情小说| 亚洲视频一区在线| 大桥未久电影在线观看| 男人J放进女人P全黄网站| 亚洲伊人精品综合在合线| 国产亚洲精品97在线视频一| 四虎精品久久久久影院| 处破女免费播放| 日本高清免费观看| 扒开美女嫩bbb| 青青久在线| 成人中文字幕在线观看| 奇虎成人网| 成人亚洲视频| 色欲AV人妻精品麻豆AV| 姑娘视频日本在线播放| 射漂亮黑b丝女| 国产国产人免费观看在线视频| 色欲久久99精品久久久久久AV| 成人国产在线视频| 日韩在线视频www色| 国产成人无码一区AV在线观看 | 67194成在线观看免费| 美女穿丝袜被狂躁动态图| 97人人超碰国产精品最新蜜芽| 嗯啊不要老师| 大香伊人中文字幕精品| 无人区免费一二三四乱码| 好男人好资源在线观看| 在线看片亚洲| 欧美一区二区VA毛片视频| 国产成人h在线视频| 亚洲国产精品免费观看| 久久久无码精品亚洲A片软件| 91蜜桃视频| 试看2分钟AA片| 精品无码国产自产在线观看| 91情国产l精品国产亚洲区| 日本一卡精品视频免费| 国产制服丝袜91在线|