本文主要对于编译成功但是烧录出现问题进行解决,用Hello world 和LED点亮代码作为示范
文章仅为参考网络资料和自身理解,如有不正确之处请多指正
- 首先确定自己根目录在哪,我们都在根目录进行
hb set
和hb build -f
,判断方法是寻找ohos_config.json文件所在目录。
点开可以看见其中的配置信息,记录的信息都能与自身环境对应上 - 值得一提的是,我在按照官方步骤操作发现虽然源码已经编译成功但是无法成功烧录到板子上,我刚刚开始找到的原因是product_path下的BUILD.gn文件,官方说明如下,但是我的该目录下的BUILD.gn文件是空的。原来以为是这个的原因导致烧录不成功,经过试错和询问大佬后一直没解决,后面解决后也没有更改这个BUILD.gn. 所以官方文档可能是想说的从device_path中寻找的BUILD.gn,很是避坑^_^
以下简单说明一下如何将自己的代码添加到编译系统进行编译,详细内容仍旧参考官方文档.
-首先进入 $(root_path)/device/xradio/xr806/ohosdemo,(root_path含义见第一点中提到的oho_config.json),再找到同目录下的BUILD.gn,将其中的依赖(deps)添加或者取消注释,使其加入编译系统的编译过程
-配置的含义是在相同目录下找到一个名为_hello_world和LED 或者 iot_peripheral/wlan_demo的文件夹,在去到该文件夹中寻找BUILD.gn获取相关源代码和包含头文件的信息,BUILD.gn看不懂不要紧,能够明白流程就够了。
完成以上步骤理论上在根目录使用hb set& hb build -f
再使用烧录工具就可以完成烧录,但是总会出现一些意外情况
- 开始我由于看见了一篇博客【XR806开发板试用】编译中的几个问题以及hello跑起来,让我了解到生成可烧录的镜像文件,如何查找后缀为
.a
的文件用来链接生成镜像文件:$(root_path)/device/xradio/xr806/xr_skylark 目录下的ohos.mk记录了查找到的文件,果然,当时并没有显示我已经生成的.a
文件。博客中说可以手动添加,但是我手动添加会报错,大家可以尝试一下。 接下来,我们就要更改生成ohos.mk的配置文件,配置文件是$(root_path)/device/xradio/xr806 下的 libcopy.py
更改完成后,用file libcopy.py
查看文件换行符的格式若显示结果中有with CRLF line terminators,则用
dos2unix libcopy.py
转化成Unix下的换行符格式,如果需要保留源格式,可加上参数-n libcopy_back
将原来格式存为备份更改完成后,可以尝试在跟目录下重新
hb build -f
编译,如果没有报错,并且在ohos.mk中发现了正确的链接文件地址,那么恭喜你可以开始编写任何你想要的代码了。但是如果出现了这样的报错(注意观察是从哪开始报错的,并且检查error.log)[OHOS ERROR] [253/254] ACTION //device/xradio/xr806:libSDK(//build/lite/toolchain:arm-none-eabi-gcc)
[OHOS ERROR] FAILED: obj/device/xradio/xr806/libSDK_build_ext_components.txt
解决方法论坛原文:
$(root_path)/device/xradio/xr806/xr_skylark/project/demo/wlan_ble_demo/image/xr806中的image_auto_cal.cfg复制一份粘贴到$(root_path)/device/xradio/xr806/xr_skylark/project/demo/audio_demo/image/xr806 下面替换掉image.cfg。
原因可以在$(root_path)/device/xradio/xr806/xr_skylark/project/image_cfg/readme.md 中找到
改完之后就可以通过烧录软件烧录到板子上了^_^ :joy: