# XR806快速上手指导文档 ### 一. 简介 #### 芯片介绍 XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片,支持OpenHarmony轻量设置系统。具有集成度高、硬件设计简单、BOM成本低、安全可靠等优点。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY等领域的无线连接需求。 #### 开发板介绍 XR806_OpenHarmony开发板是基于XR806芯片设计开发的参考评估,板身集成了XR806芯片、WiFi/BT双天线、供电系统、按钮及LED等,并引出了所有可用引脚,可供开发者进行方案评估、DIY或小规模产品研发使用。以下为开发板外观图([更多硬件资料地址](https://gitee.com/openharmony-sig/device_board_allwinner_xr806/tree/master/docs/%E7%A1%AC%E4%BB%B6%E8%B5%84%E6%96%99)):  ![](resources/image-20220104103813141.png) ### 二. 快速上手 #### 1. 环境搭建 开发基础环境由windows 工作台和Linux编译服务器组成。windows 工作台可以通过samba 服务或ssh 方式访问Linux编译服务器。其中windows 工作台用来烧录和代码编辑,Linux编译服务器用来编译OpenHarmony代码,为了简化步骤,Linux编译服务器推荐安装Ubuntu20.04。 ###### 安装编译依赖基础软件 ``` 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工具](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fharmonyos%2Fcompiler%2Fgn%2F1717%2Flinux%2Fgn-linux-x86-1717.tar.gz)。 3. 在根目录下创建gn文件夹。 ``` mkdir ~/gn ``` 4. 解压gn安装包至~/gn路径下。 ``` tar -xvf gn-linux-x86-1717.tar.gz -C ~/gn ``` 5. 设置环境变量。 ``` vim ~/.bashrc ``` 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 ``` export PATH=~/gn:$PATH ``` 6. 生效环境变量。 ``` source ~/.bashrc ``` ###### 安装ninja 1. 打开Linux编译服务器终端。 2. [下载ninja工具](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fharmonyos%2Fcompiler%2Fninja%2F1.9.0%2Flinux%2Fninja.1.9.0.tar)。 3. 解压ninja安装包至~/ninja路径下。 ``` tar -xvf ninja.1.9.0.tar -C ~/ ``` 4. 设置环境变量。 ``` vim ~/.bashrc ``` 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 ``` export PATH=~/ninja:$PATH ``` 5. 生效环境变量。 ``` source ~/.bashrc ``` ###### 安装工具链 - 编译链工具推荐gcc-arm-none-eabi-10-2020-q4-major。点击[下载地址]([https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads](https://gitee.com/link?target=https%3A%2F%2Fdeveloper.arm.com%2Ftools-and-software%2Fopen-source-software%2Fdeveloper-tools%2Fgnu-toolchain%2Fgnu-rm%2Fdownloads%EF%BC%89))进行下载。 - 将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' ``` 2. 下载板级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 ``` 3. 下载板级board模块 board主要存放板级配置,下载方法: ``` git clone git@gitee.com:openharmony-sig/device_board_allwinner.git ``` 将此代码拷贝到board下并重新命名为allwinner ``` cp -raf device_board_allwinner ~/openharmony/device/board/allwinner ``` 4. 下载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 #include #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 ```  ![](resources/image-20220104110848534.png) - 修改编译工具链地址 ``` cd kernel/liteos_m make menuconfig ``` 然后选择Compiler->Compiler type(GCC),然后选择路径一行,按回车会弹出路径的输入框,此时输入实际的工具链地址。按ESC返回,最后退出并保存配置即可。  ![](resources/image-20220104112702635.png)  ![](resources/image-20220104115909366.png) - 修改配置文件中的工具链路径 device/board/allwinner/xradio/liteos_m/config.gni  ![](resources/image-20220104120132370.png) device/soc/allwinner/xradio/xr806/build/Makefile  ![](resources/image-20220104120803650.png) - hb build 全量编译命令 ``` hb build -f ``` 如果编译中出现如下错误:  ![](resources/error.png) 需要修改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。 - 烧录软件界面  ![](resources/image-flash-mainView.png) - 操作步骤 1. PC安装CP2102驱动。([点击下载](https://gitee.com/link?target=https%3A%2F%2Fwww.silabs.com%2Fdevelopers%2Fusb-to-uart-bridge-vcp-drivers)) 2. 串口连接:通过USB-typeC数据线连接开发板和PC。 3. 串口设置:点击左上角的“刷新”按钮可刷新已连接串口设备列表,勾选开发板对应的COM口。串口波特率最大支持3000000,波特率越高,烧录速度越快。如果高波特率下容易出现烧录失败,可检查串口线、串口驱动是否稳定支持该波特率;或者降低波特率进行尝试。为了避免烧录速度过慢,建议波特率选择3000000。 4. 固件选择:点击“选择固件”按钮选择需要烧录的固件文件(xr_system.img),固件信息栏会显示出当前固件的详细信息。另外,通过拖拽方式将固件直接拖入工具界面也可以达到同样的效果。 5. 开启一键烧录功能:点击“设置”按钮调出设置界面,如下图勾选“硬件复位烧写模式”.  ![](resources/image-flash-setView.png) 6. 启动烧录:点击“升级固件”按钮启动固件烧录。烧录状态栏显示当前选定串口对应设备的烧录进度和状态。当烧录成功时,进度条会达到100%的进度并显示为绿色;当烧录失败时,进度条显示为红色并报告错误。 7. 复位设备:固件烧录成功后,开启PC串口调试工具(115200,N,8,1),硬件复位开发板(按下复位按钮),程序将运行且看到以下打印输出。  ![](resources/image-flash-log.png) ​