7

Hi3861在特定地址烧录音频文件工具

 2 years ago
source link: https://os.51cto.com/article/706294.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Hi3861在特定地址烧录音频文件工具-51CTO.COM
Hi3861在特定地址烧录音频文件工具
作者:再见南丫岛 2022-04-12 11:07:11
为了更加方便打包程序和烧录固件,想做一个小工具来解决这个问题。不知道是不是重复造轮子。

617d5d3994af49fefe5755a69c6ab136d164c5.png

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://ost.51cto.com​

(1)在openharmony的I2S例子中,有播放特定地址的音频文件的代码,但是没有说明HiBurn怎么操作来向特定的地址烧录内容。查了一些资料,也没有头绪。

(2)因为业务的需要,也需要在特定的地址存放大量数据。如果使用HiBurn烧录,也比繁琐。

所以,为了更加方便打包程序和烧录固件,想做一个小工具来解决这个问题。不知道是不是重复造轮子。

想要在固件中存放数据,目前看有几种方法:

(1)在程序编译的之前添加上。比如在代码中创建一个大的数组等。但是据说在openharmony这么做有bug,会导致莫名其妙的运行问题。于是放弃,没有尝试。

(2)在程序编译数据后,打包数据之前,添加数据。浏览了一下python的源代码,基本的流程了解,但是没敢这么做,担心因为自己的理解不到位,修改错误出bug,导致生成的原生allinone固件都有问题。另外资料有限,自己的能力也有限,不知道工作量有多大。所以,放弃该方案。

(3)在生成的最终固件(allinone)中添加需要的文件,该方案可以保证不影响allinone固件。该方案应该是比较笨的方案,但是是最稳妥的方案。确定了方案之后,开始造轮子。

首选,我们需要温习一下之前整理的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等信息。

4209ac70222cf7623444295a3e9f4a1bb0394d.png

代码通过VS编写,运行需要.net4.7的库。

(1)打开按键,为选择allinone的固件。

(2)参数配置,为选择需要写入的开始地址和结束地址。超出地址范围报错。

(3)添加文件,此处可以添加需要烧录的文件。如音频文件等。

(4)执行生成,执行完成之后,会根据设定的文件名进行存储,跟allinone同目录。

不知道该工具,是否会有小伙伴需要。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://ost.51cto.com​

71eea7105a1cf9982d2996c42d853b97bd50ef.jpg


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK