OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植案例(二)

Combo解决方案之ASR芯片移植案例

本方案基于OpenHarmony LiteOS-M内核,使用ASR582X芯片的 DEV.WIFI.A开发板 进行开发移植。作为典型的IOT Combo(Wi-Fi+BLE)解决方案,本文章介绍ASR582X的适配过程。

编译移植

目录规划

本方案的目录结构使用 Board和Soc解耦的思路 :

device
├── board                                --- 单板厂商目录
│   └── lango                            --- 单板厂商名字:朗国
│       └── dev_wifi_a                   --- 单板名:DEV.WIFI.A
└── soc                                  --- SoC厂商目录
    └── asrmicro                         --- SoC厂商名字:翱捷科技
        └── asr582x                      --- SoC Series名:ASR582X系列芯片

产品样例目录规划为:

vendor
└── asrmicro                             --- 开发产品样例厂商目录,翱捷科技的产品样例
    ├── wifi_demo                        --- 产品名字:Wi-Fi样例代码
    └── xts_demo                         --- 产品名字: XTS测试样例

产品定义

vendor/asrmicro/wifi_demo为例,这里描述了产品使用的内核、单板、子系统等信息。其中,内核、单板型号、单板厂商需要提前规划好,也是预编译指令(hb set)所关注的。这里填入的信息与规划的目录相对应。例如:

{
    "product_name": "wifi_demo",          --- 产品名
    "type": "mini",                       --- 系统类型: mini
    "version": "3.0",                     --- 系统版本: 3.0
    "device_company": "lango",            --- 单板厂商:lango
    "board": "dev_wifi_a",                --- 单板名:dev_wifi_a
    "kernel_type": "liteos_m",            --- 内核类型:liteos_m
    "kernel_version": "3.0.0",            --- 内核版本:3.0.0
    "subsystems": []                      --- 子系统
}

这里的device_company和board用于关联出//device/board/<device_company>/目录。

单板配置

在关联到的目录下,以device/board/lango/dev_wifi_a为例,需要在liteos_m目录下放置config.gni文件,这个配置文件用于描述该单板的信息,包括CPU、toolchain、kernel、compile flags等。例如:

# 内核类型
kernel_type = "liteos_m"

# 内核版本
kernel_version = "3.0.0"

# 单板CPU类型
board_cpu = "cortex-m4"

# 工具链,这里使用arm-none-eabi
board_toolchain = "arm-none-eabi"

# 工具链路径,可以使用系统路径,填"",也可以自定义,如下:
board_toolchain_path = rebase_path("//device/soc/asrmicro/gcc/gcc-arm-none-eabi/Linux64/bin")

# 单板相关的编译参数
board_cflags = []

# 单板相关的链接参数
board_ld_flags = []

# 单板相关的头文件
board_include_dirs = []

预编译

在正确配置好产品的目录、产品定义、单板配置后,在工程根目录下输入预编译指令hb set,在显示的列表中就可以找到相关的产品。

选择好产品后,输入回车就会在根目录下自动生成ohos_config.json文件,这里会将要编译的产品信息列出。

内核移植

Kconfig适配

在//kernel/liteos_m的编译中,需要在相应的单板以及SoC目录下使用Kconfig文件进行索引。

单板目录的Kconfig,以//device/board/lango为例:

├── dev_wifi_a                                   --- dev_wifi_a单板配置目录
│   ├── Kconfig.liteos_m.board                   --- 单板的配置选项
│   ├── Kconfig.liteos_m.defconfig.board         --- 单板的默认配置项
│   └── liteos_m
│       └── config.gni                           --- 单板的配置文件
├── Kconfig.liteos_m.boards                      --- 单板厂商下Boards配置信息
└── Kconfig.liteos_m.defconfig.boards            --- 单板厂商下Boards默认配置信息

在 dev_wifi_a/Kconfig.liteos_m.board中,配置只有SOC_ASR5822S被选后,BOARD_DEV_WIFI_A才可被选:

config BOARD_DEV_WIFI_A
    bool "select board DEV_WIFI_A"
    depends on SOC_ASR5822S

SoC目录的Kconfig,以//device/soc/asrmicro为例:

├── asr582x                                      --- ASR582X系列
│   ├── Kconfig.liteos_m.defconfig.asr5822s      --- ASR5822S芯片默认配置
│   ├── Kconfig.liteos_m.defconfig.series        --- ASR582X系列默认配置
│   ├── Kconfig.liteos_m.series                  --- ASR582X系列配置
│   └── Kconfig.liteos_m.soc                     --- ASR582X芯片配置
├── Kconfig.liteos_m.defconfig                   --- SoC默认配置
├── Kconfig.liteos_m.series                      --- Series配置
└── Kconfig.liteos_m.soc                         --- SoC配置

在 asr582x/Kconfig.liteos_m.series中:

config SOC_SERIES_ASR582X
    bool "ASR582X Series"
    select ARM
    select SOC_COMPANY_ASRMICRO              --- 选择 SOC_COMPANY_ASRMICRO
    select CPU_CORTEX_M4
    help
        Enable support for ASR582X series

只有选择了 SOC_SERIES_ASR582X,在 asr582x/Kconfig.liteos_m.soc中才可以选择SOC_ASR5822S:

choice
    prompt "ASR582X series SoC"
    depends on SOC_SERIES_ASR582X

config SOC_ASR5822S                         --- 选择 SOC_ASR5822S
    bool "SoC ASR5822S"

endchoice

综上所述,要编译单板BOARD_DEV_WIFI_A,则要分别选中:SOC_COMPANY_ASRMICRO、SOC_SERIES_ASR582X、SOC_ASR5822S,可以在kernel/liteos_m中执行make menuconfig进行选择配置

配置后的文件会默认保存在//vendor/asrmicro/wifi_demo/kernel_configs/debug.config,也可以直接填写debug.config:

LOSCFG_BOARD_DEV_WIFI_A=y
LOSCFG_SOC_COMPANY_ASRMICRO=y
LOSCFG_SOC_SERIES_AS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值