酷炫网站模板,山西优化公司,天津网站制作福州,外网图片素材网站接上一篇#xff0c;搭建完环境#xff0c;找个DEMO能跑#xff0c;现在我准备尝试从0开始搬砖。
首先把/device和/vendor之前的代码全删除#xff0c;这个时候用hb set命令看不到任何项目了。
/device目录是硬件设备目录#xff0c;包括soc芯片厂商和board板级支持代码…接上一篇搭建完环境找个DEMO能跑现在我准备尝试从0开始搬砖。
首先把/device和/vendor之前的代码全删除这个时候用hb set命令看不到任何项目了。
/device目录是硬件设备目录包括soc芯片厂商和board板级支持代码。 创建目录规则“device/{芯片厂商}/{芯片开发板}”。
/vendor目录是产品项目定义目录。 创建目录规则“vendor/{产品模组厂商}/{产品模组名称}”。 参考文档zh-cn/device-dev/porting/porting-minichip-prepare.md · OpenHarmony/docs - Gitee.com hb set是扫描/vendor/目录下的config.json所以我们从这个文件开始。 然后根据报错信息一步一步添加代码。
先依葫芦画飘写一个最小配置文件把它放到/vendor/demo/hello目录。
{product_name: hello,ohos_version: OpenHarmony 3.2,type: mini,version: 3.0,device_company: demo,board: demo_board,target_cpu: arm,kernel_type: liteos_m,kernel_version: 3.0.0,subsystems:[{subsystem: kernel,components: [{component: liteos_m, features: []}]}],vendor_adapter_dir: ,product_adapter_dir: ,third_party_dir: //third_party
}这个时候用hb set就能选择hello了。但是会报错
OHOS Which product do you need? hello
[OHOS ERROR] invalid path: /home/openharmony/device/board/demo/demo_board
没关系因为我们device目录还没有东西要按照规则创建/device/board/demo/demo_board。 继续报错
[OHOS ERROR] cannot find liteos_m_3.0.0 in /home/openharmony/device/board/demo/demo_board
是没有找到liteos的目录但我看官方代码也没有这个liteos_m_3.0.0的目录 只有liteos_m这个目录,猜测是config.gni里面的kernel_version3.0.0起了作用。 找来talkweb的配置文件放进/device/board/demo/demo_board/liteos_m/。
# /home/openharmony/device/board/demo/liteos_m/config.gni# Kernel type, e.g. linux, liteos_a, liteos_m.
kernel_type liteos_m# Kernel version.
kernel_version 3.0.0# Board CPU type, e.g. cortex-a7, riscv32.
board_cpu cortex-m4# Board arch, e.g. armv7-a, rv32imac.
board_arch ......
这个时候hb set没有报错了开始编译看看报什么错
[OHOS INFO] ERROR at //kernel/liteos_m/BUILD.gn:140:18: Unable to load /home/openharmony/device/board/demo/BUILD.gn.
OHOS的编译框架是基于gnninja的所以目录下面必须要有BUILD.gn用来指定文件编译。 照着格式写一个最小配置指定依赖bsp模块后面会在bsp目录放启动代码。
# /home/openharmony/device/board/demo/liteos_m/BUILD.gn
# kerndev.blog.csdn.netimport(//kernel/liteos_m/liteos.gni)module_name get_path_info(rebase_path(.), name)
module_group(module_name) {modules [bsp,]
}在bsp目录下面也要创建一个BUILD.gn把配置内容控制到最少。
# /home/openharmony/device/board/demo/liteos_m/bsp/BUILD.gn
# kerndev.blog.csdn.netimport(//kernel/liteos_m/liteos.gni)module_name get_path_info(rebase_path(.), name)
kernel_module(module_name) {}再次编译看看报错
[OHOS INFO] ERROR at //kernel/liteos_m/BUILD.gn:141:18: Unable to load /home/openharmony/device/soc/BUILD.gn.
[OHOS INFO] configs [ //device/soc/$LOSCFG_SOC_COMPANY:public ]
看来liteos_m编译时需要去/device/soc目录下面寻找东西。这个路径取决于LOSCFG_SOC_COMPANY的定义。
根据经验去kernel/liteos_m下面执行make menuconfig看一下果然又报错。
root86cd4274494f:/home/openharmony/kernel/liteos_m# make menuconfig
warning: choice (defined at arch/arm/Kconfig:34) defined with type unknown
warning: choice (defined at Kconfig:204) defined with type unknown
warning: choice (defined at Kconfig:213) defined with type unknown
warning: choice (defined at arch/arm/Kconfig:34) defined with type unknown
warning: choice (defined at Kconfig:204) defined with type unknown
warning: choice (defined at Kconfig:213) defined with type unknown
make: *** [Makefile:113: menuconfig] Error 1
这是因为Kconfig里面要去找/device/soc/*下面的Kconfig文件来决定soc和board的宏定义。
看了一下原来的soc/st目录有好几个配置文件内容有点多重新开文章继续写吧。