首页
/
每日頭條
/
科技
/
visualstudio桌面程序開發
visualstudio桌面程序開發
更新时间:2024-08-19 04:13:20

我們很高興地宣布,在Visual Studio 2022預覽版中,我們添加了新的對嵌入式系統的開發支持。通過協同使用vcpkg包管理器,你可以快速地搭建好一個嵌入式開發環境并迅速展開工作。

在這篇文章中,我們将會介紹嵌入式工作負載的安裝,如何通過vcpkg獲取相關的依賴包,然後我們會展示在Visual Studio中借助外圍寄存器和RTOS對象視圖來進行代碼編輯,構建,部署和調試一個嵌入式項目。我們将會通過一個Azure RTOS ThreadX項目來展示所有這些新特性。

visualstudio桌面程序開發(Studio進行嵌入式系統開發)1

Azure RTOS ThreadX 是一個在MCU上廣泛使用的RTOS系統。我們還在Visual Studio的幫助文檔中附帶了對Azure IoT DevKit, NXP 1060和STMicro STM32L4 L4 等開發闆的使用說明。如果你使用的是其他廠家的開發闆,則應該可以通過修改相應的配置來快速适配。

安裝過程

首先,你需要下載安裝最新版本的Visual Studio 2022,然後選擇”Linux and embedded development with C workload”。在默認情況下,你所需要的組件都會被選中,如下圖所示:

visualstudio桌面程序開發(Studio進行嵌入式系統開發)2

對于嵌入式開發來說,其中一個難點就是配置好需要的工具和組件。通常不同項目有着不同的編譯工具鍊和調試工具。這就是vcpkg包管理器可以派上用場的地方。下面我們會演示下如何通過vcpkg來搭建我們的嵌入式開發環境,後面我們将會把它們整合到Visual Studio中,從而提供一個更加流暢的用戶體驗。

首先打開PowerShell命令行,然後克隆AZzure RTOS項目代碼。它将會作為我們演示的一個例子項目。

visualstudio桌面程序開發(Studio進行嵌入式系統開發)3

然後導航至開發闆對應的子目錄,我使用的是Azure IoT DevKit,如下圖所示:

visualstudio桌面程序開發(Studio進行嵌入式系統開發)4

如果你還沒有安裝vcpkg,則可以參考下圖進行安裝:

visualstudio桌面程序開發(Studio進行嵌入式系統開發)5

在項目目錄下,有一個vcpkg_configuration.json文件。這個清單文件是由vcpkg創建,主要用來記錄編譯和調試項目所需要用到的工具。可以參考vcpkg文檔來創建你自己的清單文件。執行vcpkg activate命令将會使用這個文件來按需安裝這些工具。

visualstudio桌面程序開發(Studio進行嵌入式系統開發)6

通過上面的三條命令,我們就可以完成嵌入式項目的克隆,vcpkg包管理器的安裝和依賴工具的安裝和激活了。下面開始做正事兒。

使用Visual Studio 進行嵌入式開發

目前vcpkg還沒有整合到Visual Studio中,所以當前我們需要在上面已經激活的命令行窗口中啟動Visual Studio,這樣就可以确保需要使用到的工具對于Visual Studio是可見的。

visualstudio桌面程序開發(Studio進行嵌入式系統開發)7

請注意,如果你的電腦上安裝了多個不同版本的Visual Studio,則你可能需要指定需要預覽版的全路徑,例如:

visualstudio桌面程序開發(Studio進行嵌入式系統開發)8

至此,我們就已經在Visual Studio中打開了例子項目,就和其他CMake項目一樣。Visual Studio可以通過預定義好的CMakePresets文件來運行CMake編譯過程。和往常一樣,可以使用Visual Studio來編寫嵌入式代碼。在這個Azure RTOS項目中,我們會展示代碼導航,IntelliSense,構建,部署和調試等功能。我們還會演示新的寄存器診斷支持和RTOS對象視圖。

代碼導航和IntelliSense

通過Ctrl T可以打開”Go to All and type”按鈕,然後選擇對應的按鈕進行代碼導航。請注意,我們可以将光标懸浮在這個函數上,然後它會展開TIM3->CCR1這個寄存器的值,如下圖所示:

visualstudio桌面程序開發(Studio進行嵌入式系統開發)9

構建,部署和調試

下面我們演示如何在RGB_LED_SET_R()這個函數上設置斷點。要查看如何控制啟動,請選擇查看解決方案資源管理器中的所有文件并打開 .VS\launch.vs.json。 你可以看到 miDebuggerPath 設置為使用 arm-none-eabi-gdb,而 debugServerPath 設置為使用 debugServerArgs 中的配置腳本調用 openocd。 用于描述外設寄存器的信息由 MCU 制造商在我們用 svdPath 指向的 SVD 文件中提供。 該項目被配置在入口處中斷,具有屬性 stopAtConnect。

現在,将你的開發闆插入 PC(并安裝 ST-LINK 驅動程序),将調試目标設置為 Launch,F5 将使用 vcpkg 獲取的 openocd 進行工作,以刷新和調試連接的電路闆。 執行在入口函數處停止,所以在這裡我們看到了它的彙編代碼。 我們還可以通過轉到菜單 Debug > Windows > Disassembly 來查看反彙編,如下圖所示:

visualstudio桌面程序開發(Studio進行嵌入式系統開發)10

外圍寄存器

現在按下開發包闆上的 A 按鈕。 這觸發了我們的斷點。 我們現在可以轉到菜單 Debug > Windows > Embedded Registers。 這将使用啟動配置中指定的 SVD 文件中的信息打開外設寄存器視圖。 我們現在可以滾動這個列表來找到我們感興趣的寄存器,這裡是 TIM3->CCR1,當我們跳過 RGB_LED_SET_R 函數時它會更新。

下圖是斷點觸發時的界面:

visualstudio桌面程序開發(Studio進行嵌入式系統開發)11

下圖是步進調試:

visualstudio桌面程序開發(Studio進行嵌入式系統開發)12

RTOS 對象視圖

我們的例子項目中的應用程序有多個線程,但你不會在現有線程窗口中看到它們。

visualstudio桌面程序開發(Studio進行嵌入式系統開發)13

有關這個的解釋請看下面的描述:“實時操作系統是為應用程序提供服務和管理處理器資源的系統軟件。 這些資源包括處理器周期、内存、外設和中斷。 實時操作系統的主要目的是在嵌入式軟件必須執行的各種任務之間分配處理時間。 這通常涉及将軟件分成多個部分,通常稱為“任務”或“線程”,并創建一個運行環境,為每個線程提供自己的虛拟微處理器(“多線程”)。 基本上,虛拟微處理器由一組虛拟的微處理器資源組成,例如寄存器組、程序計數器、堆棧存儲區和堆棧指針。 線程僅在執行時才使用物理微處理器資源,但每個線程都保留這些資源内容的副本,就好像它們是自己的私有資源(線程的“上下文”)。”

因此,理想情況下,對于嵌入式開發,你将擁有可以向您顯示有關這些 RTOS 對象的信息的視圖。 要查看新的可用 RTOS 對象視圖,請轉到菜單 Debug > Windows > RTOS Objects。 在這裡你将看到 ThreadX 提供的對象的選項,在這裡我們将選擇線程。

visualstudio桌面程序開發(Studio進行嵌入式系統開發)14

線程視圖一目了然地顯示了你在嵌入式開發過程中通常需要的許多信息、線程 ID 和名稱、它們運行的次數、堆棧的開始、結束位置、堆棧大小以及最大堆棧使用量。

visualstudio桌面程序開發(Studio進行嵌入式系統開發)15

還有其他 ThreadX 對象的其他視圖,如塊和字節池、事件、互斥鎖、隊列和計時器。 我們也有 FreeRTOS 的 RTOS 對象視圖,盡管那裡的可用對象因其支持的内容而異。

硬件斷點限制

最後一個需要調用的調試功能是嵌入式硬件目标通常隻有一組有限的可用硬件斷點。 設置過多會破壞調試器狀态。 因此,我們在 launch.vs.json 中添加了 hardwareBreakpoints。 對于這個設置為它支持的值是 6 的開發闆。如果我們設置的更多,我們将看到斷點沒有設置,我們會收到一個警告,它不會被觸發。 這可以防止破壞與電路闆的連接,并使我們有機會取消設置其他一些斷點并繼續不間斷地調試。

visualstudio桌面程序開發(Studio進行嵌入式系統開發)16

總結

說了這麼多,總的來說,就是:終于可以在VS中搞嵌入式開發了。遙想當年,在VI裡瞅着屏幕鼓搗C代碼的熱血年代。

最後

Microsoft Visual C 團隊的博客是我非常喜歡的博客之一,裡面有很多關于Visual C 的知識和最新開發進展。大浪淘沙,如果你對Visual C 這門古老的技術還是那麼感興趣,則可以經常去他們那(或者我這)逛逛。本文來自:《Embedded Software Development in Visual Studio》

最近我寫了個東西

正如你們所知道的,拓撲梅爾智慧辦公平台(Topomel Box)是一款綠色軟件,主要面向經常使用電腦的朋友。它提供了各種提升辦公效率的小功能,同時操作上盡可能地簡單方便。我想:你值得擁有。

visualstudio桌面程序開發(Studio進行嵌入式系統開發)17

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
光纖溫度傳感器的應用領域分析
光纖溫度傳感器的應用領域分析
近年來,傳感器朝着精确、靈敏、适應性強、小巧和智能化的方向發展。在這一過程中,光纖傳感器這一新興産業倍受關注。光纖傳感器是伴随着光通信技術的發展而逐步形成的,它是把外界被測量(溫度、壓力、位移、電磁場等)轉換為光纖傳輸光波的特征參量(振幅、...
2024-08-19
用友做賬需要什麼軟件
用友做賬需要什麼軟件
聽身邊好多财務朋友說用友财務軟件難用?我請教了公司前輩,給了我一份用友系統操作手冊,說道:你學完以後,可以輕松做賬,不再擔心操作流程怎麼做,今天也給大家分享一下這套用友系統操作手冊,不會的朋友抓緊學起來!目錄展示用友系統操作手冊(内容過多,...
2024-08-19
怎樣在我的世界釣魚教程
怎樣在我的世界釣魚教程
怎樣在我的世界釣魚教程?在我的世界手機版更新0.11.0大版本之後,釣魚成為了我們MC日常生活的一部分,那麼在我的世界手遊中到底該如何釣魚呢?,現在小編就來說說關于怎樣在我的世界釣魚教程?下面内容希望能幫助到你,我們來一起看看吧!怎樣在我的...
2024-08-19
聯想青春版怎樣配耳機
聯想青春版怎樣配耳機
近期由宋茜、張佳甯、盧靖姗主演的電視劇《他其實沒有那麼愛你》在愛奇藝熱播。劇中聯想拯救者電競手機Pro出鏡,張佳甯和王栎鑫倆人使用聯想拯救者電競手機Pro共同體驗《王者榮耀》。這部遊戲手機是聯想今年下半年推出的電競旗艦。它配備6.65英寸A...
2024-08-19
寶利通會議一體式終端
寶利通會議一體式終端
寶利通會議一體式終端?我們想用原有的思科,寶利通等視頻會議設備參加騰訊會議,是否能夠實現?,我來為大家講解一下關于寶利通會議一體式終端?跟着小編一起來看一看吧!寶利通會議一體式終端我們想用原有的思科,寶利通等視頻會議設備參加騰訊會議,是否能...
2024-08-19
Copyright 2023-2024 - www.tftnews.com All Rights Reserved