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

news2024/10/5 22:22:23

一. 简介

芯片介绍

XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片,支持OpenHarmony轻量设置系统。具有集成度高、硬件设计简单、BOM成本低、安全可靠等优点。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY等领域的无线连接需求。

开发板介绍

XR806_OpenHarmony开发板是基于XR806芯片设计开发的参考评估,板身集成了XR806芯片、WiFi/BT双天线、供电系统、按钮及LED等,并引出了所有可用引脚,可供开发者进行方案评估、DIY或小规模产品研发使用。以下为开发板外观图(更多硬件资料地址

二. 快速上手

1. 环境搭建

开发基础环境由windows 工作台和Linux编译服务器组成。windows 工作台可以通过samba 服务或ssh 方式访问Linux编译服务器。其中windows 工作台用来烧录和代码编辑,Linux编译服务器用来编译OpenHarmony代码,为了简化步骤,Linux编译服务器推荐安装Ubuntu20.04。

搜狗高速浏览器截图20240326151344.png

安装编译依赖基础软件
sudo apt-get install -y build-essential gcc g++ make zlib* libffi-dev
安装和配置Python
  1. 打开Linux编译服务器终端。

  2. 输入如下命令,查看python版本号,需使用python3.7以上版本。

    python3 --version
     

    如果低于python3.7版本,不建议直接升级,请按照如下步骤重新安装。以python3.8为例,按照以下步骤安装python。

    1. 运行如下命令,查看Ubuntu版本:

      cat /etc/issue

    2. 根据Ubuntu不同版本,安装python。

      • 如果Ubuntu 版本为18+,运行如下命令。

        sudo apt-get install python3.8

      • 如果Ubuntu版本为16。

        a. 安装依赖包

        sudo apt update && sudo apt install software-properties-common

        b. 添加deadsnakes PPA 源,然后按回车键确认安装。

        sudo add-apt-repository ppa:deadsnakes/ppa

        c. 安装python3.8

        sudo apt upgrade && sudo apt install python3.8

  3. 设置python和python3软链接为python3.8。

    sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1

  4. 安装并升级Python包管理工具(pip3),任选如下一种方式。

    • 命令行方式:

      sudo apt-get install python3-setuptools python3-pip -y
      sudo pip3 install --upgrade pip

    • 安装包方式:

      curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
      python get-pip.py

安装gn
  1. 打开Linux编译服务器终端。

  2. 在根目录下创建gn文件夹。

    mkdir ~/gn

  3. 解压gn安装包至~/gn路径下。

    tar -xvf gn-linux-x86-1717.tar.gz -C ~/gn

  4. 设置环境变量。

    vim ~/.bashrc

    将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

    export PATH=~/gn:$PATH

  5. 生效环境变量。

source ~/.bashrc
安装ninja
  1. 打开Linux编译服务器终端。

  2. 解压ninja安装包至~/ninja路径下。

    tar -xvf ninja.1.9.0.tar -C ~/

  3. 设置环境变量。

    vim ~/.bashrc

    将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

    export PATH=~/ninja:$PATH

  4. 生效环境变量。

    source ~/.bashrc

安装工具链
  • 编译链工具推荐gcc-arm-none-eabi-10-2020-q4-major。

  • 将gcc-arm-none-eabi-10-2020-q4-major包解压到~/tools目录下

    tar -zxvf gcc-arm-none-eabi-10-2020-q4-major.tar.gz -C ~/tools/

2. 获取源码
安装码云repo工具
cd ~/
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ./repo
chmod a+x ./repo
sudo mv ./repo /usr/local/bin/
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
代码下载
  1. OpenHarmony代码下载,以OpenHarmony 3.1 Beta版本为例,下载方式如下:
mkdir ~/openharmony
cd ~/openharmony

repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Beta --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
  1. 下载板级soc模块

    soc下面是包含芯片SDK和驱动代码、第三方库适配等接口层代码。下载方法如下:

    mkdir ~/xradio
    cd ~/xradio
    git clone git@gitee.com:openharmony-sig/device_soc_allwinner.git

    因为最新的代码未在适配相应的HDF驱动,所以需要将代码回退到指定版本:d5d336941a1ba1ba3b84aebab1d7173d20968ccd

    cd device_soc_allwinner
    git reset --hard d5d336941a1ba1ba3b84aebab1d7173d20968ccd

    将此代码拷贝到soc下并重新命名为allwinner

    cp -raf device_soc_allwinner ~/openharmony/device/soc/allwinner

  2. 下载板级board模块

    board主要存放板级配置,下载方法:

    git clone git@gitee.com:openharmony-sig/device_board_allwinner.git

    将此代码拷贝到board下并重新命名为allwinner

    cp -raf device_board_allwinner ~/openharmony/device/board/allwinner

  3. 下载vendor模块

    vendor存放的都是一些基于XRMCU开发的WiFi模组代码样例,下载方法:

    git clone git@gitee.com:openharmony-sig/vendor_allwinner.git

    将此代码拷贝到vendor下并重新命名为allwinner

cp -raf vendor_allwinner_xr806 ~/openharmony/vendor/allwinner
安装hb
cd ~/openharmony
pip3 install build/lite	# 此语句需要在SDK根目录下执行。
3. 编写自己的hello word

​ 在vendor/allwinner/xradio_wifi_demo创建demo_hello_world文件夹

cd vendor/allwinner/xradio_wifi_demo/
mkdir demo_hello_world

​ 然后创建hello_world.c 以及BUILD.gn

cd demo_hello_world
touch hello_world.c
touch BUILD.gn

在hello_world.c中添加以下代码

#include <stdio.h>
#include <string.h>

#include "ohos_init.h"

int DemoMain(int argc, char **argv)
{
	printf("\r\nhello world!\r\n\r\n");
	return 0;
}

SYS_RUN(DemoMain);

在BUILD.gn中添加以下代码

source_set("hello_world"){
    sources = [
        "hello_world.c"
    ]
}

将helloworld添加到编译中,在 device/soc/allwinner/xradio/xr806/BUILD.gn中添加以下依赖:

module_group(module_name) {
  modules = [
      "src",
      "project",
      "include",
  ]
  configs = [
    ":SdkLdCconfig",
  ]
  deps = [ "//vendor/allwinner/xradio_wifi_demo/demo_hello_world:hello_world" ]
}
4. 编译
  • hb set 选择demo指令,具体命令如下:

hb set -root # 通过键盘选择 xradio_wifi_demo

  • 修改编译工具链地址

    cd kernel/liteos_m
    make menuconfig

    然后选择Compiler->Compiler type(GCC),然后选择路径一行,按回车会弹出路径的输入框,此时输入实际的工具链地址。按ESC返回,最后退出并保存配置即可。

  • 修改配置文件中的工具链路径

    device/board/allwinner/xradio/liteos_m/config.gni

    device/soc/allwinner/xradio/xr806/build/Makefile

  • hb build 全量编译命令

hb build -f

如果编译中出现如下错误:

需要修改device/soc/allwinner/xradio/osal/include/target_config.h

// #define OS_SYS_CLOCK (SystemCoreClock)
#define OS_SYS_CLOCK 160000000
5. 烧录 && 运行
  • 固件和烧录软件位置
  1. 编译生成的固件保存在out/xradio/xradio_wifi_demo目录下,文件名固定为xr_system.img。
  2. 烧录软件保存在device/soc/allwinner/xradio/xr806/tools下,名称为phoenixMC_xxxx.exe。
  • 烧录软件界面

  • 操作步骤

  1. PC安装CP2102驱动。

  2. 串口连接:通过USB-typeC数据线连接开发板和PC。

  3. 串口设置:点击左上角的“刷新”按钮可刷新已连接串口设备列表,勾选开发板对应的COM口。串口波特率最大支持3000000,波特率越高,烧录速度越快。如果高波特率下容易出现烧录失败,可检查串口线、串口驱动是否稳定支持该波特率;或者降低波特率进行尝试。为了避免烧录速度过慢,建议波特率选择3000000。

  4. 固件选择:点击“选择固件”按钮选择需要烧录的固件文件(xr_system.img),固件信息栏会显示出当前固件的详细信息。另外,通过拖拽方式将固件直接拖入工具界面也可以达到同样的效果。

  5. 开启一键烧录功能:点击“设置”按钮调出设置界面,如下图勾选“硬件复位烧写模式”.

  6. 启动烧录:点击“升级固件”按钮启动固件烧录。烧录状态栏显示当前选定串口对应设备的烧录进度和状态。当烧录成功时,进度条会达到100%的进度并显示为绿色;当烧录失败时,进度条显示为红色并报告错误。

  7. 复位设备:固件烧录成功后,开启PC串口调试工具(115200,N,8,1),硬件复位开发板(按下复位按钮),程序将运行且看到以下打印输出。

鸿蒙Next核心技术分享

1、鸿蒙基础知识←《鸿蒙NEXT星河版开发学习文档》

2、鸿蒙ArkUI←《鸿蒙NEXT星河版开发学习文档》

3、鸿蒙进阶技术←《鸿蒙NEXT星河版开发学习文档》

 4、鸿蒙就业高级技能←《鸿蒙NEXT星河版开发学习文档》 

 5、鸿蒙多媒体技术←《鸿蒙NEXT星河版开发学习文档》 

6、鸿蒙南向驱动开发←《鸿蒙NEXT星河版开发学习文档》  

7、鸿蒙南向内核设备开发←《鸿蒙NEXT星河版开发学习文档》  

 8、鸿蒙系统裁剪与移植←《鸿蒙NEXT星河版开发学习文档》  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1592287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NCF代码运行

keras 2.1.4 tensorflow 1.12.0 python 3.6.4 numpy 1.14.5 一、准备工作 1、安装虚拟环境 conda create -n tensorflow python3.6.4conda activate tensorflowconda install tensorflow1.12.0conda install keras2.1.4conda info2、安装相应依赖 cd Py3_Recommender-Syste…

恶意样本溯源法

恶意样本溯源追踪主要去了解攻击者或者团队的意图&#xff1b;&#xff08;有因才有果&#xff0c;这里主要是通过分析结果&#xff0c;去了解攻击者的意图&#xff0c;比如&#xff1a;政治&#xff0c;私怨&#xff0c;业务&#xff0c;经济等&#xff09;。 了解攻击链 恶…

tkinter窗口组件Entry

from tkinter import * 创建主窗口 app Tk() 设置窗口大小为1040x2048(手机) app.geometry(“1040x2048”) 设置窗口背景为灰色 app.configure(bg“gray”) 定义一个函数text()&#xff0c;用于处理输入框内容的变化 def text(): # 获取输入框e1的内容 if e1.get() “…

JVM之JVM的基本介绍

基本介绍 JVM&#xff1a;全称 Java Virtual Machine&#xff0c;即 Java 虚拟机&#xff0c;一种规范&#xff0c;本身是一个虚拟计算机&#xff0c;直接和操作系统进行交互&#xff0c;与硬件不直接交互&#xff0c;而操作系统可以帮我们完成和硬件进行交互的工作 特点&…

【计算机毕业设计】停车场管理系统——后附源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

Chatgpt掘金之旅—有爱AI商业实战篇|虚拟助理|(九)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业在虚拟助理业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随…

java项目之的网上报名系统(源码+文档)

项目简介 网上报名系统的主要使用者分为&#xff1a;管理员模块如下&#xff1a;首页、个人中心、考生管理、级别专业管理、报名信息管理、考生成绩管理、系统论坛、系统管理等。考生模块&#xff1a;首页、个人中心、报名信息管理、考生成绩管理等。前台首页&#xff1a;首页…

关于Ribbon在SpringCloudAlibaba2021.1版本中,找不到服务实例

关于Ribbon在SpringCloudAlibaba2021.1版本中&#xff0c;找不到服务实例 放个妹子 SpringCloudAlibaba在2021.1版本中,spring-cloud-starter-alibaba-nacos-discovery默认已经移除了ribbon模块 手动加上spring-cloud-starter-netflix-ribbon依赖后&#xff0c;项目能正常启动…

【程序分享】MD2D 程序:用于从分子动力学模拟中准确测定扩散系数的 python 模块

分享一篇用于从分子动力学准确测定扩散系数的 python 模块:MD2D 。 感谢论文的原作者&#xff01; 主要内容 “通过将均方位移&#xff08;MSD&#xff09;拟合到爱因斯坦关系中&#xff0c;可以从分子动力学&#xff08;MD&#xff09;模拟中推导出自扩散系数。然而&#…

设计模式——外观(门面)模式10

外观模式&#xff1a;能为系统框架或其他复杂业务流程封装提供一个简单的接口。 例如抽奖过程中 设计模式&#xff0c;一定要敲代码理解 调用1&#xff08;抽奖系统&#xff09; /*** author ggbond* date 2024年04月08日 10:34*/ public class Lottery {public String getId…

使用 HBuilderX自动上传Uniapp 微信小程序代码

HBuilderX内置相关环境&#xff0c;开箱即用&#xff0c;无需配置nodejs。本文只介绍发布微信小程序的步骤。 1.下载和安装 HBuilderX hbuilder首页&#xff1a;https://www.dcloud.io/hbuilderx.html 下载hbuilder编辑器,选择对应的系统,Windows和mac正式版即可,下载后免安…

数字化时代:IT界的致富秘籍 —— 策略×态度×机遇

&#x1f31f; 数字化时代&#xff1a;IT界的致富秘籍&#x1f680; —— 策略态度机遇 在数字化浪潮中冲浪&#x1f3c4;‍♂️&#xff0c;IT行业犹如一片无限可能的蓝海。想要在这片汹涌的海洋中捕获财富&#xff0c;不是一件轻而易举的事。让我们一起深入探索&#xff0c;如…

判断系统是debian、centos、Ubuntu的命令

要确认自己的Linux系统是基于Debian的还是其他发行版&#xff0c;你可以使用几种不同的方法。以下是几种常见的方法&#xff1a; cat /etc/os-releaselsb_release -acat /etc/issueunmae -a os-release文件 cat /etc/os-release&#xff1a;这个文件通常包含了关于你的操作系…

云服务器环境web环境搭建之JDK、redis、mysql

一、Linux安装jdk&#xff0c;手动配置环境 链接: https://pan.baidu.com/s/1LRgRC5ih7B9fkc588uEQ1whttps://pan.baidu.com/s/1LRgRC5ih7B9fkc588uEQ1w 提取码: 0413 tar -xvf 压缩包名 修改配置文件/etc/profile 二、安装redis环境 方案一&#xff1a; Linux下安装配置r…

力扣HOT100 - 56. 合并区间

解题思路&#xff1a; class Solution {public int[][] merge(int[][] intervals) {// 先按照区间起始位置排序Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);int[][] res new int[intervals.length][2];int idx -1;for (int[] interval : intervals) {//直接加入的…

JS控制元素平滑滚动,页面自动滚动锚点实现

使用 scrollIntoView 实现元素内子元素的平滑滚动&#xff0c; 下面是模拟接口list返回&#xff0c;然后通过按钮切换下一个&#xff0c;页面就会滚动到响应的位置 具体 scrollIntoView 有一些其他参数来配置滚动的具体交换&#xff0c;网上去查即可 备注&#xff1a;下面的代码…

cocos creator 实现spine局部换装

1 使用3.7.4版本 2 js代码 3 c Native层修改源码

elasticsearch7安全配置--最低安全等级,用户名密码

上一篇博客在centos7上安装了elasticsearch7 接下来对elasticsearch进行安全方面的配置 minimal security 最低安全等级&#xff0c;用户名密码 首先开启xpack vim config/elasticsearch.yml xpack.security.enabled: true由于我是单机配置的&#xff0c;还加了如下配置 d…

小区烟火AI检测/楼道杂物堆积消防隐患AI智能识别方案

一、背景需求 据新闻报道&#xff0c;今年4月7日&#xff0c;安徽省合肥市肥东县一民房发生火灾&#xff0c;致1死11伤&#xff0c;起火点是“一楼楼道杂物间”。 因为小区居民楼楼道堆积大量杂物而导致的消防火灾事故也不在少数。楼道堆积杂物是一个长期存在的问题&#xff…

【MATLAB】GA_ELM神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 基本定义 GA_ELM&#xff08;Genetic Algorithm and Extreme Learning Machine&#xff09;是一种结合了遗传算法和极限学习机的神经网络时序预测算法。它的核心思想是通过使用遗传算法来优化极限学习机的权重和偏差&…