论坛风格切换切换到宽版
  • 1819阅读
  • 6回复

跟著BD7OTO學習寶峰K6對講機固件編譯開發 [复制链接]

上一主题 下一主题
离线bd7oto
 
发帖
39
只看楼主 倒序阅读 0楼 发表于: 2024-12-17
———————————————零、开场白———————————————

寶峰K6是最近推出的面嚮業餘無綫電群體的一款對講機產品,體積小巧,經濟實惠,可玩性強。
該機使用的MCU型號為KD32F328,128KB Flash,24KB SRAM,相比於友商全盛K5系列的DP32G030(64KB Flash)增加了諸多可玩性。
目前這款KD32F328無任何資料,無任何技術支持,開發略有難度。




———————————————一、原廠資料———————————————
寫頻軟件下載:


原廠固件下載:


固件升級軟件下載:


對講機原理圖下載:



———————————————二、開始開發———————————————
KD32F328是一款Cortex-M0内核的單片機產品,產品Datasheet手冊如下:



液晶顯示屏Datasheet手冊如下:




寶峰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。

———————————————三、目前的源程序下載———————————————
源程序下載:

(這裏感謝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在2024-12-21 12:26重新编辑 ]
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
高级硬件攻城狮+程序猿,擅长DSP、FPGA、ARM
微信:132,三两两八,8051
QQ:344266487
https://shop197337704.taobao.com/
用最严格的规范去创造最可靠的产品,服务社会,创造价值
离线bg7doz
发帖
498
只看该作者 1楼 发表于: 2024-12-18
谢谢分享,学习了
离线bi4jcp
发帖
49
只看该作者 2楼 发表于: 01-14
祝早日康复
离线m7vgn
只看该作者 3楼 发表于: 02-02
I hope you have made a full recovery  bd7oto and are back to being fighting fit! 73
离线chenerbox
发帖
1168
只看该作者 4楼 发表于: 03-18
看来是时候买台K6了
BH4VEP
离线bd8cb/8
发帖
3693
只看该作者 5楼 发表于: 03-18
EX BG8CB BD8CB ,8CB一世,欢迎后人传承、认祖归宗——HAM圈是小众的技术类兴趣爱好团体,为创收敛财而滥竽充数,扼杀了HAM的生存和发展空间!

团结是双方都作出让步,如果一方步步紧逼,另一方无限退让,那不是团结,而是剥削和压榨! ——“以斗争求团结,则团结者存!”

如果我们的军队不愿意尽保护国民、支援盟友的义务,我们就不会有国民和盟友......

当正确与正义不属于同一阵营的时候,要选择站在良知一方......

对吃不上饭的人讲道德是最大的不道德,当人被压迫到濒临死境时,那一切为了生存而采取的行为都是道德的!
离线chenerbox
发帖
1168
只看该作者 6楼 发表于: 03-19
这个貌似是刷到CPU里面了,现在有些K6带4M的存储,这个程序是不是2M 或者 4M的都可以用?

才发现是宝峰K6,我还以为是泉盛那款呢,晕了
[ 此帖被chenerbox在2025-03-19 11:16重新编辑 ]
BH4VEP