全志科技
直播中

李晨灵

7年用户 1419经验值
私信 关注
[问答]

如何使用XR806适配最新鸿蒙3.0_LTS?

如何使用XR806适配最新鸿蒙3.0_LTS?

回帖(1)

陈炜

2021-12-29 10:15:34
很荣幸提前拿到了XR806开发板,但是全志只是适配了1.1.2L.TS,而最新的Harmony已经到3.0_LTS了,决定尝试是适配最新的3.0_LES,折腾了大半天,起码还是适配好了
首先是vendor文件夹,鸿蒙3.0修改了很多文件夹名称和文件路径,需要在config.json中把该修改的都修改了。(security去掉好像对编译没什么影响,添加了还会报错,暂时不知道怎么搞的,先删除)

hals文件夹的内容也报错,我直接把海思的hals文件夹复制进来了

接下来编译hiview时提示有几个C库没找到,添加了C库还是报错,认真看才发现鸿蒙自身就屏蔽了C库,原因也不知道是为啥,总之先屏蔽掉下面两个编译选项

编译依旧报错。。。提示asmflags重复了,这个全志本身的代码中定义了一个asmflags在旧系统中没有报错,但是新的系统估计是鸿蒙官方补上了漏洞,果断把全志的代码给删了。
之后依旧是愉快的报错bad instruction

错误说的是汇编没办法识别typedef(废话啊,汇编还能识别typedef不上天),明显是编译汇编时,也包含了.h,导致出错,只能把系统源码再改一改
然后把刚刚删掉的asmflags改回来,等于全志的代码先别动。
编译依旧报错,但接下来的报错都是因为鸿蒙系统代码引起的修改,只放图了



。。。。。。。。。。。。。。。。。总算全部编译通过后,ld链接时又报错,提示没有定义snprintf_s,这个库函数确实在部分C库中没有,然后我在鸿蒙的utils/native/base/src文件夹里面找到了原型,正如里面的字面描述,这个文件夹就是个增强型的C库,而从第一个问题报出来我就知道全志用的是gcc的标准C库,改掉SDK的c库我可没那么大能耐,就偷懒把utils/native/base/src里面的snprintf_s复制下来,单独弄成一个静态库了,之后总算编译通过了,对比1.1.2,flash大了5k。。。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分