跟著BD7OTO學習寶峰K6對講機固件編譯開發
———————————————0.开场白——————————————— 寶峰K6是最近推出的面嚮業餘無綫電群體的一款對講機產品,體積小巧,經濟實惠,可玩性強。 該機使用的MCU型號為KD32F328,128KB Flash,24KB SRAM,相比於友商全盛K5系列的DP32G030(64KB Flash)增加了諸多可玩性。 目前這款KD32F328無任何資料,無任何技術支持,開發略有難度。 ———————————————1.原廠資料——————————————— 寫頻軟件下載: BF-K6 CPS CN. v1.1.1_setup.rar 原廠固件下載: BF_K6_NRF_V0.22_240520.kdhx.rar 固件升級軟件下載: BFK6_Bootloader.rar 對講機原理圖下載: BF_K6_Plus_Open_V1.1.rar ———————————————2.開始開發——————————————— KD32F328是一款Cortex-M0内核的單片機產品,產品Datasheet手冊如下: datasheets.rar 液晶顯示屏Datasheet手冊如下: SC5260_V1.1a.rar 寶峰K6的MCU已含有Bootloder,大家可使用電腦在綫升級固件(以下簡稱APP部分)。這個帖子將教授大家如何開發應用部分的程序。 難點: 1、Bootloder的範圍是0x0-0x2000(即8K),APP部分範圍從0x2000開始,容量120K,所以應用程序部分需要修改Flash起始地址(0x2000)和中斷向量的偏移地址。 但是Cortex-M0内核的MCU產品,設置中斷向量的偏移地址比M3内核的MCU複雜很多(這裏感謝BD4VOW提供的技術支持)。 定義絕對地址類型的數組UserVectors,存儲指向中斷服務函數名的指針。 typedef struct { void (*intHandle)(void); }STR_INTFUN; __IO STR_INTFUN UserVectors[10] attribute((at(0x20001000))); 在初始化階段,將中斷服務函數名賦值到UserVectors數組中。 UserVectors[0].intHandle = SysTickHandler; UserVectors[1].intHandle = USART1_Handler; UserVectors[3].intHandle = DMA1Int_Handler; 在系統中斷服務程序中,調用 UserVectors中指向的回調函數指針即可。 void SysTick_Handler(void) { UserVectors[0].intHandle(); } void USART1_IRQHandler(void) { UserVectors[1].intHandle(); } void DMA1_Channel4_5_IRQHandler(void) { UserVectors[3].intHandle(); } 避坑指南: 如果不設置Flash起始地址會怎樣? 答:開機不亮屏,但不影響按側邊兩按鍵進入BootLoader。 如果不設置中斷向量的偏移地址會怎樣? 答:開機不亮屏,按側邊兩按鍵BootLoader無法進入,這裏必須拔出寫頻綫,拆除電池,並重新安裝才能繼續進入BootLoader。 ———————————————3.目前的源程序下載——————————————— 源程序下載: bf_k6_open_v01.rar (這裏感謝BD4VOW提供的技術支持) ———————————————四、源程序如何編譯——————————————— 作者感覺,玩業餘無綫電的,更多的是年齡偏大的群體,大家或許更習慣經典的集成開發環境,例如IAR、MDK等等。 作爲開源項目,就不能使用這種商業軟件了(這也解釋了大家在github上面下載的單片機類源程序多爲GCC下編譯的)。 在這裏,作者推薦Visual Studio Code + PlatformIO IDE的開發環境(可能新手搭建這個開發環境會遇到諸多困難,走一些彎路)。 1、安裝Git(如果不安裝這個,後續使用命令安裝Plantform會失敗),作者使用的版本為:Git-2.47.1-64-bit,下載地址:https://git-scm.com/ 2、安裝Visual Studio Code,作者使用的版本為VSCodeUserSetup-x64-1.96.2:下載地址:https://code.visualstudio.com/ 3、打開Visual Studio Code,點擊左側Extensions,安裝PlatformIO IDE擴展。 4、安裝寶峰K6開發平臺。 使用瀏覽器打開 https://github.com/amoxu/platform-openradiox ,登錄個人賬號(如果不登錄的話,後續使用命令安裝Plantform會失敗)。 在Visual Studio Code下,點擊左側PlatformIO(外星人頭像)圖標,點擊左下方Quick Access -> Miscellaneous -> PlatformIO Core CLI, 執行如下命令:pio pkg install -g -p https://github.com/amoxu/platform-openradiox 5、新建並編譯工程。 新建一個工程,平臺選擇第4步下載的BaoFeng-UV-K6x,默認情況下系統會在以下目錄中創建新工程: C:\Users\個人的用戶名\Documents\PlatformIO\Projects\工程名 將下載的源程序拷貝到這個路徑下,即可在Visual Studio Code下開展編譯。 編譯安妮在右上方(小勾勾圖標)。 編譯完成后,會在C:\Users\個人的用戶名\Documents\PlatformIO\Projects\工程名\out中生成bin文件,這個就是固件。 ———————————————五、後續工作展望——————————————— 目前開發的這套源程序,與原廠固件相比,并不是完全一樣的,有一些異同點: 1、增加了信道名+頻率 雙顯示功能,這個很贊。 2、開機LOGO、開機信息無顯示,這個是個BUG。 3、信道模式的B區域,關機之後,會重新回到M001信道,這是個BUG。 4、電池電壓顯示,這個尚未開發。 5、其它尚未發現的BUG。 目前作者身體不適,已經很少再有像從前那樣日日夜夜做開發的精力了,修身養性,保住小命要緊。 希望大家能夠再此基礎上,繼續完善,做出一款好的產品,服務廣大業餘無綫電群體。 謝謝大家。 這裏是BD7OTO,2024.12.07在澳門仁伯爵綜合病院住院部,呼吸與危重症科。
BD7OTO
11 16 开源硬件平台