使用VisualGDB將Keil專案匯入VisualStudio
前言
本教程展示瞭如何使用新的Keil專案匯入器將Keil ARM專案自動轉換為使用MSBuild和GCC構建的VisualGDB專案。在開始之前,安裝VisualGDB 5.3或更高版本。
我們將展示如何為STM32F746-Discovery board(附帶STM32CubeMX SDK)轉換STM32演示專案。雖然大多數轉換是自動執行的,但是專案需要進行一些小的調整才能正常工作。我們將概述這些調整,並解釋為什麼需要這些調整。
步驟
1、 下載並解壓STM32Cube SDK用於STM32F7,並找到Keil的演示專案檔案(通常在STM32Cube_FW_F7_Vx.y.zProjectsSTM32746G-DiscoveryDemonstrationMDK-ARM)
2、 啟動Visual Studio並開啟 VisualGDB Embedded Project Wizard
3、選擇“自動匯入不同格式的專案->匯入現有Keil專案”。然後指定位於前面的.uvprojx檔案
4、點選“下一步”,VisualGDB會自動從專案中檢測裝置型別並選擇相應的裝置,點選“下一步”繼續:
5、連線你的板到USB埠。VisualGDB會自動檢測ST-Link型別並顯示在Debug方法頁面:
6、按“Finish”生成專案。VisualGDB將自動匯入原始檔,包括Keil專案中的目錄和前處理器巨集。但是STM32F746NG-Discovery演示專案檔案缺少一個include目錄,因此初始構建將失敗。然而VisualGDB將自動發現丟失的目錄,並讓您只需按“新增現在”即可將其新增到設定中:
7、另一個錯誤是lwIP庫重新定義了gcc已經定義的時間值結構:
8、這是很容易修復通過設定LWIP_TIMEVAL_PRIVATE通過VisualGDB專案屬性-> MSBuild設定:
9、另一個構建錯誤將由預設的軟體浮點模式和專案中包含的FreeRTOS埠之間的不相容引起:
error : selected processor does not support `vstmdbeq r0!,{s16-s31}' in Thumb mode error : instruction not allowed in IT block -- `stmdb r0!,{r4-r11,r14}' error : selected processor does not support `vldmiaeq r0!,{s16-s31}' in Thumb mode error : instruction not allowed in IT block -- `msr psp,r0'
10、要解決這個問題,可以通過VisualGDB專案屬性將“浮點支援”設定為“硬體”:
11、最後連結原專案會導致“FLASH溢位”錯誤:
這是因為專案包含了一個特殊的資料部分,該部分需要放入QSPI記憶體中,而Keil匯入器不能自動轉換它。
12、解決這個問題的一種方法是使用VisualGDB專案屬性的附加記憶體頁面,讓VisualGDB自動編輯連結器指令碼,但是由於ST演示專案已經包含了正確格式的GCC連結器指令碼,我們可以簡單地將VisualGDB指向它的位置(通常情況下 ProjectsSTM32746G-DiscoveryDemonstrationSW4STM32STM32F7-DISCOSTM32F746NGHx_FLASH.ld):
13、最後,我們需要配置VisualGDB來自動程式設計QSPI記憶體內容。這是通過使用本教程中描述的VisualGDB FLASH程式設計外掛實現的。將載入FLASH外掛教程中描述的命令載入到OpenOCD命令列中,並按“OK”儲存設定:
14、現在你只需點選F5, VisualGDB就會自動將專案載入到面板中:
15、載入完成後,您應該在裝置螢幕上看到STM32程式: