一說Keil難用,很多人都會點頭,界面老舊、自動補全弱。但是一邊吐槽一邊又不得不打開它完成項目。這個又愛又恨的工具,為什么在技術迭代里還是老大屹立不倒?
一、Keil地位為什么這么穩?
1.硬件廠商主動適配它
不管是ST、NXP,還是國內的GD32、AT32、STC一些廠商,發布新芯片時首先就是做Keil支持包。去官網下例程,10個里有8個直接給Keil工程文件。結果就是,用Keil幾乎能開發所有主流單片機,換芯片也基本不用換工具鏈。不得不說Keil的生態太好了,就好像大家都是知道STM32,但是ARM的芯片由太多的品牌和型號。
2.從入門到放棄都是它
學校實驗室基本清一色教的是Keil。從第一堂課接觸的就是它,畢業以后進公司自然繼續用。循環基本就是,課程用Keil → 學生只會Keil → 企業繼續用Keil → 新教程基本還是Keil
3.ARM的加持
2005年ARM收購Keil以后,就成了ARM內核開發工具的嫡系。Keil在底層調試、內核支持上自然就有優勢。用Keil調試Cortex-M的異常、中斷、內存,信息自然要比第三方工具更加直接。
二、Keil自身有沒有優點?
雖然日常編碼體驗一般,但是Keil在專業開發的關鍵環節確實有硬實力。
1.調試信息深度:
寄存器視圖、外設狀態、實時變量這些監控做得很直觀。查一個硬件Bug,在Keil里能直接看到外設寄存器的二進制位變化,其他工具要么不顯示,要么藏得深。
2.對老電腦很友好:
10年前的舊筆記本跑Keil照樣很流暢,但是跑Clion或是新版VS Code就可能卡頓。很多小廠產線或是學校機房設備比較老舊,Keil基本是唯一的選擇。
3.工程兼容性省心:
用Keil4寫的工程,用Keil5打開基本不用改。但是如果換到其他平臺,可能要重新配編譯選項甚至改代碼。
三、為什么大家一邊罵,一邊還在用?
說Keil難用的大多是寫代碼的開發者,但是決定用什么的往往是項目經理。從他們的角度來說,穩定、省事、兼容壓倒一切。
換工具鏈?產線上500臺燒錄機全用Keil腳本控制,換IDE可能就得重寫自動化流程。換工具鏈?客戶不給做方案交付,很多客戶要求必須提供Keil工程。所以就是企業首選還是Keil,穩定壓倒一切。
四、Keil也在悄悄改進
Keil躺平沒躺平。它近幾年的升級都看準了企業級的痛點,雖然普通用戶感知不強:
Keil5的RTE框架:引入了類似VS Code的包管理的概念,硬件驅動、協議棧點選就能用,不用手動移植庫。
MDK v6:性能監控、功耗分析工具更強,適合物聯網復雜項目。
持續強化安全認證:對汽車電子、工業安全一些場景支持更好。
但是這些改進普通開發者、學生基本用不到,所以自然覺得Keil還是老樣子。
五、對比其他工具:
其他工具并不是不優秀,但是突破生態封鎖有點難:
六、老手開發:VSCode+Keil混合開發
編輯體驗的短板,很多老手們早摸索出一種解決方案:用VSCode寫代碼 + Keil負責編譯調試。操作也簡單:安裝VSCode的Keil Assistant插件,關聯Keil安裝路徑,在VSCode里優雅編碼,一鍵調用Keil來編譯。享受了編輯器的便捷,還兼容了現有Keil工程。
Keil裝修有點陳舊,但是地基扎實、位置佳。目前Keil還是最不會出錯的選擇。不過現在VS Code插件生態完善、RISC-V等一些開源架構正在崛起,Keil如果不能解決根本體驗問題,未來也會面臨很多真正的挑戰。
[原文鏈接]