0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【XR806开发板试用】实战OpenHarmony固件编译

冬至子 来源:还没吃饭 作者:还没吃饭 2023-11-29 11:44 次阅读

固件编译是一种将源代码转化为可执行文件的过程,其中涉及了多个环节和工具的使用。在这次的学习过程中,我主要了解了设置编译工具链、对代码工程进行配置、关键步骤说明等方面的内容,下面我将结合自己的学习经历和感受,谈谈自己的心得体会。

在深入了解XR806和OpenHarmony的过程中,我领略到了轻量级系统在嵌入式解决方案中的独特地位和潜力。OpenHarmony作为一种通用的轻量级系统,尤其适用于MCU处理器,如Arm Cortex-M和RISC-V 32位设备。在硬件资源极其有限的情况下,它提供了丰富的功能和工具,如多种轻量级网络协议、轻量级的图形框架,以及丰富的IOT总线读写部件等。这样的系统非常适合于智能家居领域的连接类模组、传感器设备、穿戴类设备等产品的开发。

image.png

XR806_OpenHarmony代码的构成部分包括device和vendor两部分。其中,device目录主要包含芯片层驱动,负责承接Harmony系统和芯片驱动库。这部分代码结构清晰,包括适配器、编译脚本、指导文档、动态配置编译环境的脚本、编译工具、例程以及rtos接口层等。而vendor目录则主要包含方案设置,其中,Harmony的主要特点之一是组件的插拔,这是通过vendor/config.json对方案进行裁剪实现的。

获取源码的过程也给我留下了深刻的印象。除了安装码云repo工具,还可以使用pip3安装requests库,并设置镜像源以加快下载速度。这些步骤都展示了在开源社区中获取和使用资源的便捷性。

Device目录主要包括芯片层驱动,负责承接Harmony系统和芯片驱动库。其结构如下:

  • adapter: Harmony接口适配
  • BUILD.gn: gn编译脚本
  • build.sh: 编译脚本,用于搭桥Harmony与原生SDK
  • doc: 指导文档
  • libcopy.py: 编译脚本,用于动态配置编译环境
  • liteos_m: 编译工具,编译选项设置
  • ohosdemo: 例程
  • os: rtos接口层,通过接口层方便后续移植其他rtos
  • target_config.h: liteos系统裁剪
  • xr_skylark: 芯片原生驱动

Vendor目录主要为方案设置,Harmony主要特点之一为组件的插拔,通过vendor/config.json对方案进行裁剪。其结构如下:

  • BUILD.gn: 编译脚本
  • config.json: 方案裁剪
  • hals: 系统信息

获取源码:
安装码云repo工具,可以执行如下命令:

curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo 
#如果没有权限,可下载至其他目录,并将其配置到环境变量中
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

设置镜像源(可选):

vim ~/.bashrc
#在文件的最后输入以下内容
export PATH=~/bin:$PATH
export REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
#设置完成后重启shell
#设置为清华镜像源后,下载源码时如果提示server certificate verification failed,输入export GIT_SSL_NO_VERIFY=1后重新下载即可。

下载源码:

# OpenHarmony通用于各种系统,导致整个系统文件比较多,XR806把部分不必要的代码仓在xml中删除了。
# 如果想要减少或增加需要下载的代码仓,请把manifest仓fork到本地后,自行裁剪。
repo init -u https://gitee.com/awol/open-harmony_-xr806_manifest.git -b master --no-repo-verify -m devboard_xr806.xml 
repo sync -c 
repo forall -c 'git lfs pull'

首先,设置编译工具链是进行固件编译的前提条件。在XR806_SDK中,推荐使用gcc-arm-none-eabi-10-2020-q4-major进行编译。为了方便后续的操作,我们需要将编译工具链下载并保存到“~/tools”目录下。如果该目录不存在,我们还需要先创建它。这个环节让我明白了在编译之前,一定要先确保编译工具链的正确安装和配置。

使用文本格式来模拟鱼骨图的结构。

XR806支持的OpenHarmony系统

├── 轻量系统(Mini System)
│ ├── 硬件资源有限
│ ├── 支持最小内存:128KiB
│ ├── 提供轻量级网络协议
│ ├── 提供轻量级图形框架
│ ├── 提供丰富的IOT总线读写部件
│ └── 可用于智能家居领域的连接类模组、传感器设备、穿戴类设备等
├── XR806_OpenHarmony代码
│ ├── device目录:芯片层驱动,承接Harmony系统和芯片驱动库
│ │ ├── adapter:Harmony接口适配
│ │ ├── BUILD.gn:gn编译脚本
│ │ ├── build.sh:编译脚本,用于搭桥Harmony与原生SDK
│ │ ├── doc:指导文档
│ │ ├── libcopy.py:编译脚本,用于动态配置编译环境
│ │ ├── liteos_m:编译工具,编译选项设置
│ │ ├── ohosdemo:例程
│ │ ├── os:rtos接口层,方便后续移植其他rtos
│ │ ├── target_config.h:liteos系统裁剪
│ │ └── xr_skylark:芯片原生驱动
│ └── vendor目录:方案设置,通过vendor/config.json对方案进行裁剪
└── 其他操作:获取源码、固件编译等步骤

其次,OpenHarmony的编译分为两部分,一部分是编译OpenHarmony的系统库,另一部分是芯片驱动的编译,也叫原生库。这两部分分别使用gn脚本和makefile脚本进行编译。在配置代码工程时,我们需要进入原生SDK目录,并复制配置文件。然后通过图形化界面配置生成静态库和全局头文件。这个过程需要仔细认真,避免出现错误导致编译失败。

最后,关键步骤说明中涉及了一些命令和操作,这些步骤需要按照一定的顺序进行,否则可能会遇到问题。比如在执行make menuconfig命令后,我们需要获取目录下的.config文件并生成图形化配置界面;在hb set命令后,我们需要选择指定的工程并确认;在hb build -f命令后,如果出现了异常提示,可能是因为旧的flash分配方案不再使用,我们需要自动生成文件image_auto_cal.cfg并覆盖image_wlan_ble.cfg或者image.cfg。这些步骤需要我们认真按照说明进行操作,才能确保固件编译的顺利进行。

对固件编译的过程进行详细的讲解,主要包括以下步骤:

  1. 设置编译工具链 :首先需要下载适合编译的gcc编译器,并且推荐使用gcc-arm-none-eabi-10-2020-q4-major版本。下载完成后保存在“~/tools”目录下。
  2. 编译OpenHarmony的系统库 :OpenHarmony的编译分为两部分,一部分是编译OpenHarmony的系统库,这个过程使用gn脚本进行。在OpenHarmony的编译工具配置文件(device/xradio/xr806/liteos_m/config.gni)中设置编译器前缀(board_toolchain_prefix)和编译器类型(board_toolchain_type)。
  3. 编译芯片驱动的原生库 :另一部分是芯片驱动的编译,也叫原生库,这个过程使用makefile脚本进行。原生库的编译工具在device/xradio/xr806/xr_skylark/gcc.mk设置。
  4. 对代码工程进行配置 :首次编译工程,需要对原生库进行配置,否则无法编译通过。配置步骤包括进入原生SDK目录,复制配置文件,通过图形化界面配置,清除旧配置,根据配置生成静态库和全局头文件。
  5. 选择工程并编译 :选择指定的工程进行编译。常见的编译命令包括hb set用于选择工程,hb build -f用于编译。

在编译过程中可能会遇到一些异常情况,例如旧的flash分配方案不再使用。此时需要在自动生成的image_auto_cal.cfg文件中覆盖image_wlan_ble.cfg或者image.cfg的内容。

通过这次学习,我深刻认识到了固件编译的复杂性和细节性。在编译过程中,不仅需要选择合适的编译器和编译选项,还需要根据项目需求进行正确的配置和调试。此外,对于出现的问题需要及时进行处理和解决,否则可能会影响整个编译过程的顺利进行。因此,在进行固件编译时,我们需要有充分的准备和耐心,并不断学习和积累经验。

总之,这次学习让我对固件编译有了更深入的了解和认识。通过设置编译工具链、对代码工程进行配置、关键步骤说明等方面的学习,我不仅掌握了固件编译的基本流程和方法,还学会了如何处理和解决编译过程中可能出现的问题。这些知识将对我今后的学习和工作产生积极的影响。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19259

    浏览量

    229649
  • RTOS
    +关注

    关注

    22

    文章

    811

    浏览量

    119593
  • Cortex-M
    +关注

    关注

    2

    文章

    229

    浏览量

    29752
  • OpenHarmony
    +关注

    关注

    25

    文章

    3713

    浏览量

    16254
  • xr806
    +关注

    关注

    0

    文章

    14

    浏览量

    1321
收藏 人收藏

    评论

    相关推荐

    XR806开发板适用】基于多源信息融合的粮食霉变检测系统设计

    XR806开发板具有强大的数据处理和传输能力,广泛应用于物联网和嵌入式系统开发
    的头像 发表于 10-27 17:06 929次阅读
    【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>适用】基于多源信息融合的粮食霉变检测系统设计

    基于全志XR806开发板的家用环境监测传感器设计

    本文来自全志XR806开发板评测活动文章,作者使用XR806开发板制作一个简单的家用环境监测传感器,可以获取当前的温度、湿度、气压、海拔这四个参数,同时能够通过外部的屏幕实时显示刷新。
    的头像 发表于 12-03 10:20 666次阅读
    基于全志<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>的家用环境监测传感器设计

    XR806开发板试用】+4.OpenHarmony编译顺序

    首先呢,得看看这个"vendor/xradio/xr806/config.json",这可是个关键角色。
    的头像 发表于 12-11 14:02 761次阅读

    如何使用XR806开发板来设计一个粮食霉变检测系统?

    XR806开发板具有强大的数据处理和传输能力,广泛应用于物联网和嵌入式系统开发
    的头像 发表于 01-05 17:30 823次阅读
    如何使用<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>来设计一个粮食霉变检测系统?

    OpenHarmony南向嵌入式:【XR806开发板指导文档】

    XR806_OpenHarmony开发板是基于XR806芯片设计开发的参考评估,身集成了XR806
    的头像 发表于 04-14 09:25 763次阅读
    <b class='flag-5'>OpenHarmony</b>南向嵌入式:【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>指导文档】

    XR806芯片、XR806开源鸿蒙开发板简介

    。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
    发表于 11-15 17:08

    XR806芯片、XR806开源鸿蒙开发板简介

    。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
    发表于 11-15 18:32

    【资料释放】全志XR806开发板全资料释放,连bomlist都给出来了

    ://www.openharmony.cn/#/supportDevices/XR8061.硬件bomlist包含核心和底板两个部分核心:底板:完整excel文档下载:
    发表于 12-06 14:06

    XR806开发板下载代码时遇到错误fatal: Cannot get该怎么办

    XR806开发板试用】下载代码时遇到如下错误 fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle请问大家
    发表于 12-28 06:21

    【直播预告】全志XR806芯片应用实战分享

    /joinXR806优秀开发例程《基于OpenHarmony的棋子分拣机》《用全志XR806开源鸿蒙开发板做一个四足行走机器狗》《【
    发表于 02-28 17:39

    【直播预告】全志XR806芯片应用实战分享会!

    /joinXR806优秀开发例程《基于OpenHarmony的棋子分拣机》《用全志XR806开源鸿蒙开发板做一个四足行走机器狗》《【
    发表于 03-01 09:27

    用deepin进行xr806开发板开发

    为了防止后面一些玄学问题,就放弃在deepin上进行xr806开发了,还是老老实实的在ubuntu上吧.相同的操作,在ubuntu20是,就没有问题。由于下载源码时,正好原官方仓库不可用,就使用了临时
    发表于 11-17 10:50

    XR806开发板试用】留言功能开发

    XR806开源鸿蒙开发板是一款基于XR806芯片设计,高度集成WiFi/BLE/常用外设,可供开发者进行方案评估、DIY或小规模产品研发,可广泛应用于智能家居、智能楼宇、智能城市和工业
    的头像 发表于 10-08 10:58 665次阅读

    XR806开发板试用】FreeRTOS创建任务测试

    这篇来学习下,XR806开发板在FreeRTOS系统下创建两个任务测试,由于没有找到学习的文档,试着参考例程来测试。
    的头像 发表于 10-10 11:47 640次阅读
    【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b><b class='flag-5'>试用</b>】FreeRTOS创建任务测试

    全志XR806开发板原理图

    全志XR806开发板原理图
    发表于 10-19 15:11 12次下载