Hi3861在特定地址燒錄音頻文件工具
1、背景
(1)在openharmony的I2S例子中,有播放特定地址的音頻文件的代碼,但是沒有說明HiBurn怎么操作來向特定的地址燒錄內容。查了一些資料,也沒有頭緒。
(2)因為業務的需要,也需要在特定的地址存放大量數據。如果使用HiBurn燒錄,也比繁瑣。
所以,為了更加方便打包程序和燒錄固件,想做一個小工具來解決這個問題。不知道是不是重復造輪子。
2、規劃
想要在固件中存放數據,目前看有幾種方法:
(1)在程序編譯的之前添加上。比如在代碼中創建一個大的數組等。但是據說在openharmony這么做有bug,會導致莫名其妙的運行問題。于是放棄,沒有嘗試。
(2)在程序編譯數據后,打包數據之前,添加數據。瀏覽了一下python的源代碼,基本的流程了解,但是沒敢這么做,擔心因為自己的理解不到位,修改錯誤出bug,導致生成的原生allinone固件都有問題。另外資料有限,自己的能力也有限,不知道工作量有多大。所以,放棄該方案。
(3)在生成的最終固件(allinone)中添加需要的文件,該方案可以保證不影響allinone固件。該方案應該是比較笨的方案,但是是最穩妥的方案。確定了方案之后,開始造輪子。
3、思路
首選,我們需要溫習一下之前整理的allinone.bin固件格式。原文如下:
https://ost.51cto.com/posts/10816。
基本的方案為:
(1)解析bin文件,將數據拆分成數據頭,以及三個文件(Hi3861_loader_signed.bin、Hi3861_wifiiot_app_burn.bin、Hi3861_boot_signed_B.bin)。
(2)在第二個文件(Hi3861_wifiiot_app_burn.bin)的后面特定地址(程序配置界面設定的開始地址)添加需要燒錄的文件數據。
(3)按照規則合成文件。修改數據長度,CRC等信息。
4、成果
代碼通過VS編寫,運行需要.net4.7的庫。
(1)打開按鍵,為選擇allinone的固件。
(2)參數配置,為選擇需要寫入的開始地址和結束地址。超出地址范圍報錯。
(3)添加文件,此處可以添加需要燒錄的文件。如音頻文件等。
(4)執行生成,執行完成之后,會根據設定的文件名進行存儲,跟allinone同目錄。
5、總結
不知道該工具,是否會有小伙伴需要。