前記
雖然藍牙芯片現在非常多,可是一旦想做一些差異化的產品時候,能用的非常少。在和客戶的反復斟酌中,最終選擇了BES2500來開發這款新的產品。這里面是基於自身的實力,產品定位和芯片訴求多重考量的結果。
核心技能:團隊的積累是軟件算法,這就要求產品中一定要有不少算法在,這樣才能凸顯團隊的價值和算法的價值。
產品定位:這個客戶對產品的性能要求比較高,所以,選擇好的芯片平台和做差異化的開發是必須要的。
芯片實力:bes2500有幾點吸引了我們,支持藍牙5.2雙模,功耗低於5ma,sram空間大的驚人,並且已經有幾個大廠已經使用了。
綜合起來,BES2500就成該產品的首選。
代碼熟悉
由於該芯片的文檔特別少,代碼量比較大,結構又比較復雜,代碼熟悉這塊,團隊花了不少時間來梳理這些代碼邏輯。
用戶接口部分流程:這部分主要牽扯到幾點,用戶信息配置,這個一般的在config目錄下的工程配置里面尋找,比如,特征宏,音量,電源管理,GPIO映射等。這部分代碼比較簡潔,很多初級工程師很快都能熟悉的。
音樂部分流程熟悉:音樂流程相對2300的代碼,改動不大,就是針對aac做了一個優化,這個部分一般不會出問題,畢竟,已經迭代次數那么多了,這個已經相當成熟了。
電話部分流程梳理:SCO部分涉及到的算法比較多,芯片自帶算法,第三方算法,降噪算法,回聲消除算法,這些加起來,顯得系統有點臃腫,再加上需要增加自身的算法,所以這部分需要花費不少時間來研究。
硬件接口流程梳理:bes2500的硬件接口配置比較豐富,雙串口,雙I2C接口,I2S接口,這些接口的熟悉和使用,需要花一些時間研究的,畢竟,這些沒文檔,並且參數沒有說明。不過,這些難度還算是可以克服的范圍之內。
算法移植
使用BES2500,最重要的就是添加自己的算法。做出差異化的產品,這里移植算法需要花費不少工作量的。想要優化算法,必須要對芯片的整體接口和特性做一個比較深入的理解,這部分花了不少時間來研究的。
內存分配:bes2500使用的是靜態內存,內存管理這塊做的不是很好,使用外界算法的,這部分花了不少時間去解決bug。
算法加速:這里面涉及到怎么把主頻修改,怎么使用輔核,怎么把讓代碼運行變得更快,這部分需要比較深厚的功力了,也是團隊中吃虧最多的地方。
后記
項目雖然做成了,但是踩坑也是非常的多啊。同時也暴露了團隊不少問題。整體的技術實力還需要不斷地歷練,內部配合要不斷地去磨合。有了這次的歷練,后面的項目開發會順利很多。