全志科技
直播中

corkia

5年用户 657经验值
擅长:嵌入式技术
私信 关注
[经验]

全志XR806适配最新鸿蒙3.0_LTS

很荣幸提前拿到了XR806开发板,但是全志只是适配了1.1.2L.TS,而最新的HARMony已经到3.0_LTS了,决定尝试是适配最新的3.0_LES,折腾了大半天,起码还是适配好了。

首先是vendor文件夹,鸿蒙3.0修改了很多文件夹名称和文件路径,需要在config.json中把该修改的都修改了。(security去掉好像对编译没什么影响,添加了还会报错,暂时不知道怎么搞的,先删除)

fb6d35f7-4f9c-4864-bd02-8cba9ede6668-图片.png

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

接下来编译hiview时提示有几个C库没找到,添加了C库还是报错,认真看才发现鸿蒙自身就屏蔽了C库,原因也不知道是为啥,总之先屏蔽掉下面两个编译选项
dfed363f-05bc-4cf7-ae92-23e70ef4d441-图片.png
编译依旧报错。。。提示asmflags重复了,这个全志本身的代码中定义了一个asmflags在旧系统中没有报错,但是新的系统估计是鸿蒙官方补上了漏洞,果断把全志的代码给删了。
之后依旧是愉快的报错bad instruction
14a24dbb-83d2-4374-a8e4-44c2606b5cd8-图片.png
错误说的是汇编没办法识别typedef(废话啊,汇编还能识别typedef不上天),明显是编译汇编时,也包含了.h,导致出错,只能把系统源码再改一改
c6406d8a-ef93-4bae-b9b3-dc895926d158-图片.png
然后把刚刚删掉的asmflags改回来,等于全志的代码先别动。
编译依旧报错,但接下来的报错都是因为鸿蒙系统代码引起的修改,只放图了
c3db3b7a-c16b-4fa8-8a38-972a662fe528-图片.png
96bf474f-e139-45db-8d9c-d67abfee9a0b-图片.png
7f0ca2cc-4d9b-4a52-b91e-bba027bc5a06-图片.png
总算全部编译通过后,ld链接时又报错,提示没有定义snprintf_s,这个库函数确实在部分C库中没有,然后我在鸿蒙的utils/native/base/src文件夹里面找到了原型,正如里面的字面描述,这个文件夹就是个增强型的C库,而从第一个问题报出来我就知道全志用的是gcc的标准C库,改掉SDK的c库我可没那么大能耐,就偷懒把utils/native/base/src里面的snprintf_s复制下来,单独弄成一个静态库了,之后总算编译通过了,对比1.1.2,flash大了5k。。。
3120b13a-44c5-43f6-923c-5127fb255a2e-图片.png
修改点实在太多了,上面的可能也有不少遗漏,还是等全志赶紧放出3.0的SDK吧。

> 原贴链接:https://bbs.aw-ol.com/topic/506/
> 全志在线开发者交流企鹅群(客服机器人24小时在线解答):498263967
> 资源获取、问题讨论可以到全志在线开发者社区进行:https://www.aw-ol.com
> 全志及开发者最新动态可以关注全志在线微信公众号

更多回帖

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