首先我这里下载的是源码文件包的形式,如下图,我们使用 命令 tar xvf code-v3.1-Release.tar.gz进行解压文件。解压完成后如下图,多了code-v3.1-Release文件夹,
然后需要构建我们自己的git配置,首先删除.repo/文件夹,然后修改drivers/adapter/.gitignore,这里把linux全屏蔽了,不然后期修改了文件,无法找到对应的改动。
首先安装下ruby工具,执行如下命令即可 sudo apt-get install ruby,不装可能会报错
FAILED: gen/isa/isa.yaml
[OHOS ERROR] /usr/bin/env ../../ark/runtime_core/isa/combine.rb -d ../../ark/runtime_core/isa/isa.yaml,../../ark/js_runtime/ecmascript/ecma_isa.yaml -o gen/isa/isa.yaml
[OHOS ERROR] /usr/bin/env: ‘ruby’: No such file or directory
具体报错信息如下。
[OHOS INFO] [277/33818] ACTION //ark/runtime_core/isa:isa_combine(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [278/33818] STAMP obj/base/miscservices/screenlock/etc/init/screenlockservice.cfg__notice.stamp
[OHOS INFO] [279/33818] STAMP obj/applications/standard/hap/calc_demo_hap.stamp
[OHOS INFO] [280/33818] ACTION //base/account/os_account/interfaces/kits/napi/osaccount:osaccount__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [281/33818] ACTION //applications/standard/hap:ecg_demo_hap__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [282/33818] ACTION //applications/standard/hap:filepicker_hap__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [283/33818] ACTION //applications/standard/hap:flashlight_demo_hap__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [284/33818] ACTION //applications/standard/hap:airquality_demo_hap__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [285/33818] ACTION //base/telephony/state_registry/sa_profile:state_registry_sa_profile(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [286/33818] ACTION //applications/standard/hap:dynamic.wav__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [287/33818] ACTION //ark/js_runtime:libark_jsruntime__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [288/33818] ACTION //base/miscservices/screenlock/services:screenlock_server__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [289/33818] ACTION //ark/js_runtime/ecmascript/js_vm:ark_js_vm__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [290/33818] ACTION //base/miscservices/screenlock/interfaces/kits/napi:screenlock__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [291/33818] ACTION //developtools/profiler/device/plugins/sample_plugin:sampleplugin__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [292/33818] ACTION //ark/runtime_core/dprof:libdprof__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [293/33818] ACTION //base/powermgr/thermal_manager/application/init:thermal_protector.cfg__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS INFO] [294/33818] ACTION //ark/js_runtime/ecmascript/tooling:libark_ecma_debugger__notice(//build/toolchain/ohos:ohos_clang_arm)
[OHOS ERROR] [277/33818] ACTION //ark/runtime_core/isa:isa_combine(//build/toolchain/ohos:ohos_clang_arm)
[OHOS ERROR] FAILED: gen/isa/isa.yaml
[OHOS ERROR] /usr/bin/env ../../ark/runtime_core/isa/combine.rb -d ../../ark/runtime_core/isa/isa.yaml,../../ark/js_runtime/ecmascript/ecma_isa.yaml -o gen/isa/isa.yaml
[OHOS ERROR] /usr/bin/env: ‘ruby’: No such file or directory
[OHOS ERROR] Please check build log in /home/d1/openHarmony/source/code-v3.1-Release/OpenHarmony/out/hi3516dv300/build.log
=====build error=====
然后先编译下官方已经有的产品,确保环境没有问题。 可以使用sudo apt-get install ccache命令安装 ccache,这样编译会快一点。执行如下命令即可 ./build.sh --product-name Hi3516DV300,等待编译完成,我这边等待了有几十来分钟才编译好吧,编译结果如下,说明我们的环境已经没有问题了,可以开始进行我们的移植 工作了。
首先在源码目录productdefine/common/products下,增加我们产品定义的json文件,我这里直接复制使用Hi3516DV300.json作为我们的模板修改下使用。使用命令cp Hi3516DV300.json zxyNandst.json即可得到我们的产品定义,打开文件,修改如下
{
"product_name": "Hi3516DV300", //这里修改为我们对应的文件名, zxyNandst
"product_company": "hisilicon", //修改为对应的产品,xingyunnand
"product_device": "hi3516dv300", // 使用 xingyunelec
"version": "2.0",
"type": "standard",
"product_build_path": "device/board/hisilicon/hispark_taurus/linux", //这里使用device/xingyunelec/xingyunnand/sdk_linux
所以修改后我们的这部分内容如下
{
"product_name": "zxyNandst",
"product_company": "xingyunelec",
"product_device": "xingyunnand",
"version": "2.0",
"type": "standard",
"product_build_path": "device/xingyunelec/xingyunnand/sdk_linux",
"parts":{
然后把图片中这行删除,这个是与海思相关的文件,我们不需要,所以删除即可。
然后我们使用如下命令尝试编译下 ./build.sh --product-name zxyNandst –ccache,很明显报错
++++++++++++++++++++++++++++++++++++++++
2022-04-24 10:01:06
--product-name zxyNandst –ccache
[OHOS ERROR] /home/d1/openHarmony/source/code-v3.1-Release/OpenHarmony/productdefine/common/device/xingyunnand.json not found
=====build error=====
我们还没有定义我们soc的相关信息,所以我们需要添加上去,同样的使用cp hi3516dv300.json xingyunnand.json得到我们的soc相关配置信息文件
{
"device_name": "hi3516dv300", //同文件名,xingyunnand.json
"device_company": "hisilicon", //device目录下的xingyunelec
"target_os": "ohos",
"target_cpu": "arm",
"kernel_version": "",
"device_build_path": "device/board/hisilicon/hispark_taurus/linux", //修改成自己对应即可
"enable_ramdisk": true
}
修改成我们对应的相关配置信息,
{
"device_name": "xingyunnand",
"device_company": "xingyunelec",
"target_os": "ohos",
"target_cpu": "arm",
"kernel_version": "",
"device_build_path": "device/xingyunelec/xingyunnand/sdk_linux",
"enable_ramdisk": true
}
然后使用 ./build.sh --product-name zxyNandst –ccache 再次编译试试,还是报错了,报错信息如下。
ERROR at //drivers/peripheral/audio/audio.gni:11:5: Unable to load "/home/d1/openHarmony/source/code-v3.1-Release/OpenHarmony/vendor/xingyunelec/zxyNandst/hals/audio/product.gni".
[OHOS INFO] import("//vendor/${product_company}/${product_name}/hals/audio/product.gni")
[OHOS INFO