openharmony使用hb set报错的几种情况以及解决办法

最近在使用小熊派的板子学习openharmony的移植,使用hb set时遇到一些报错,以下分别阐述报错原因及解决办法。

首先简单介绍一下使用hb set后该命令在在后台做的部分工作。

一、hb set背后的部分工作

        hb set在使用后会调出在源码工程/ventor下的所有的厂商及产品找出来并进行罗列。

使用hb set命令后罗列出的部分厂商和产品
使用hb set命令后罗列出的部分厂商和产品

         产品能被罗列出来的前提是产品目录下有config.json文件。以stm32mp157core这个“产品”为例,其config.json文件的部分配置如下所示:

{
"product_name": "stm32mp157core",    
"version": "3.0",                    
"type": "mini",                      
"ohos_version": "OpenHarmony 3.0",    
"device_company": "st",
"board": "stm32mp157",       
"kernel_type": "liteos_m",
"kernel_version": "3.0.0"
}      

         使用hb set后,其会调用相关函数来读取所有产品的config.json中的“product_name”并返回其路径,再以菜单的形式呈现在菜单上(就和上面那张图一样)。选择产品后,hb set命令会继续调用相关函数来读取所选择产品的config.json中的信息,其中“device_company”和“board”信息会生成搜索路径/device/device_company/board用以搜索单板配置文件,“kernel_type”和“kernel_version”信息则会和该搜索路径下内核的配置文件config.gni中的对应信息进行匹配以确定内核选择。

        简单介绍完了hb set做的部分工作,接下来简述以下自己遇到的问题以及解决办法。

二、【OHOS ERROR】invalid path:

        该报错如下图示:

OHOS Which product do you need?  stm32mp157core
[OHOS ERROR] invalid path: /home/numisp/Desktop/harmony/code-v3.0-LTS/OpenHarmony/device/st/stm32mp157
numisp@ubuntu:~/Desktop/harmony/code-v3.0-LTS/OpenHarmony$ 

        如之前所说,“device_company”和“board”信息会生成搜索路径

/device/device_company/board,以我使用的stm32mp157core为例,config.json的相关信息为

{
"device_company": "st",
"board": "stm32mp157"
}

         那么搜索路径应该为:/device/st/stm32mp157core,再看看/device下的目录

device下目录

        错误很明显了,搜索路径和实际路径对不上导致出现错误。对config.json下的相关信息进行修改或修改/deivce目录下相关文件夹名即可解决问题。

三、【OHOS ERROR】cannot find xxx(内核名) in:

        该报错如下所示:

numisp@ubuntu:~/Desktop/harmony/code-v3.0-LTS/OpenHarmony$ hb set -p
OHOS Which product do you need?  stm32mp157core
[OHOS ERROR] cannot find liteos_m_ in /home/numisp/Desktop/harmony/code-v3.0-LTS/OpenHarmony/device/st/stm32mp157core

        同样,之前说过,hb set会读取config.json文件中的“kernel_type”和“kernel_version”信息则会和该搜索路径下内核的配置文件config.gni中的对应信息进行匹配以确定内核选择。config.json下的相关配置如下所示:

{
"kernel_type": "liteos_m",
"kernel_version": "3.0.0"
}

       / device/st/stm32mp157core/liteos_m/config.gni下的相关配置如下所示:

# Kernel type, e.g. "linux", "liteos_a", "liteos_m".
kernel_type = "liteos_m"

# Kernel version.
kernel_version = ""

         问题很明显了,由于config.gni下的"kernel_version"为空无法匹配config.json中的信息导致出错。将config.gni下的相关信息进行补充即可解决问题。

四、总结

        实际遇到的问题都是一些基础但比较细节的问题,个人在平时的学习中时常会忽略此类细节问题导致工作受阻。希望大家在平时的学习工作中一定要对这些问题重视。

        本人才疏学浅,讲的一些东西可能有疏漏或错误,欢迎各位大佬批评指正。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值