基于hispark_taurus开发板示例学习OpenHarmony编译构建系统(2)

3、hispark_taurus产品解决方案-Vendor

产品解决方案为基于开发板的完整产品,主要包含产品对OS的适配、组件拼装配置、启动配置和文件系统配置等。产品解决方案的源码路径规则为:vendor/{产品解决方案厂商}/{产品名称}_。_产品解决方案也是一个特殊的组件。

hispark_taurus对应的产品解决方案目录在vendor\hisilicon\hispark_taurus,主要包含init进程启动配置init_configs(可选,仅linux内核需要)、产品解决方案OS适配hals、产品编译脚本BUILD.gn、产品配置文件config.json、文件系统打包配置fs.yml、hb构建配置文件ohos.build、内核特性裁剪配置文件kernel_configs。当前的文件树如下:

vendor\hisilicon\hispark_taurus
                    ├── BUILD.gn
                    ├── config.json
                    ├── fs.yml
                    ├── hals
                    ├── hdf_config
                    ├── init_configs
                    ├── kernel_configs
                    │   ├── debug.config
                    │   ├── debug_tee.config
                    │   ├── release.config
                    │   └── release_tee.config
                    └── ohos.build

3.1 产品编译脚本BUILD.gn

产品编译的入口,主要用于编译解决方案厂商源码和拷贝启动配置文件。如果某个产品被选择为要编译的产品,那么对应产品目录下的BUILD.gn会默认编译。文件vendor\hisilicon\hispark_taurus\BUILD.gn的内容如下。group[ target名称hispark_taurus需要为所在目录的名称。
文件中依赖init_configs目录下BUILD.gn里定义的targets。

# Copyright (C) 2020 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved.

group("hispark_taurus") {
  deps = [
    "init_configs:init_configs",
    "init_configs:init_configs_mksh",
  ]
}

3.2 产品配置文件config.json

config.json为编译构建的主入口,包含了开发板、OS组件和内核等配置信息。文件vendor\hisilicon\hispark_taurus\config.json的内容如下。

  • “product_name”: “ipcamera”, # 产品名称,h b set时会显示这个名称
  • “version”: “3.0”, # config.json的版本号, 固定"3.0"
  • “type”: “small”, # 系统类型, 可选[mini, small, standard]
  • “ohos_version”: “OpenHarmony 1.0”, # 选择的OS版本
  • “device_company”: “hisilicon”, # 芯
### Linux 系统移植教程及解决方案 #### 创建必要的文件结构 在 RK3399 平台下,Linux 内核的移植需要创建特定的引导配置文件。例如,可以通过以下命令来完成 `extlinux` 文件夹及其配置文件的初始化: ```bash mkdir boot/extlinux touch boot/extlinux/extlinux.conf ``` 这一步骤是为了确保系统能够通过 ExtLinux 引导加载器正常启动[^1]。 #### 目录树设计 对于 HiSilicon 的 Hispark Taurus 开发板,其目录树的设计通常遵循一定的层次结构。以下是典型的目录布局示例: ``` device └── hisilicon └── hispark_taurus ├── BUILD.gn ├── hals ├── ... └── linux └── config.gni ``` 这种结构有助于管理设备驱动程序、硬件抽象层 (HALs) 内核配置文件等组件[^2]。 #### 处理编译错误 如果在编译过程中遇到类似于以下的错误信息: ``` In file included from /usr/local/arm-linux/arm-linux-gnueabihf/include/stdlib.h:959:0, from include/libbb.h:24, from libbb/login.c:14: /usr/local/arm-linux/arm-linux-gnueabihf/include/bits/stdlib.h: In function 'wctomb': /usr/local/arm-linux/arm-linux-gnueabihf/include/bits/stdlib.h:90:3: error: #error "Assumed value of MB_LEN_MAX wrong" ``` 可以尝试调整工具链中的宏定义设置。具体来说,修改或重新安装交叉编译工具链时需注意 `MB_LEN_MAX` 参数的一致性。一种可能的解决办法是在 Makefile 或 CFLAGS 中显式指定 `-DMB_LEN_MAX=...` 来覆盖默认值[^3]。 #### OpenHarmony 小型系统移植注意事项 针对 OpenHarmony 的小型系统移植场景,表 2 提供了一些关键参数的信息汇总: | **类别** | **描述** | |----------------|--------------------------------------------------------------------------| | 支持架构 | ARMv7 及以上版本 | | ROM 需求 | 至少大于 2MB | | Flash 类型 | SPINOR、NAND、eMMC | 这些数据表明,即使目标平台运行的是较轻量级的操作系统(如 LiteOS-A),也需要满足最低存储需求并适配相应的闪存介质类型[^4]。 #### 总结 无论是基于传统 Linux 还是新兴框架如 OpenHarmony 的嵌入式开发项目,都需要仔细规划软件栈各部分之间的交互关系,并妥善处理可能出现的各种技术障碍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值