【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建 原创 精华

sxfenglei
发布于 2021-12-18 12:54
浏览
2收藏

@toc

Hi3861开发

上一篇大致``描述了收到51cto的HiSpark_Wi-Fi_IoT_Hi3861_CH340G开发板后的组装过程,这一篇正式进入开发的初探。
$\color{#f00}{注:相关设备来源于51CTO鸿蒙技术社区【开发板漂流计划】提供}$

开发环境

我的开发编译环境 mac + git + repo + vscode + docker
我的烧录调试环境 window + HiBurn + 串口调试助手

开发环境的搭建还是有点难度,刚开始还是信心满满对着文档各种操作,最终都以失败告终。。。
最终走了一个自认为最便捷的方式docker + HiBurn和串口助手 (主要devicetools一条龙开发工具没成功过),因为整个开发过程就是git拉取鸿蒙源码,vscode中业务编码,Ubuntu下编译源码成二进制,烧录二进制到开发板,调试测试。

  • docker环境,用来拉取鸿蒙源码编译的环境
  • git环境,需要安装git-lfs和repo工具
  • ide开发工具编码用
  • HiBurn烧录工具
  • 串口调试助手调试用

获取鸿蒙源码

可以直接下载源码开发编译,但是本次从git拉取

1. 安装python3.8

在python官网找到3.8版本安装包

2. 安装git和git-lfs

brew install git
brew install git-lfs

#初始化git-lfs
git lfs install

【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区
如果不安装git-fls的话在后面拉取鸿蒙源码的时候会失败
【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

3. 配置git和码云公钥

#配置git
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store

#配置码云ssh key就是将你电脑的公钥保存到码云
ssh -T git@gitee.com

【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

4. 安装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

5. 获取鸿蒙源码

mkdir harmonyOsDevice
cd harmonyOsDevice
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
#需要git开启git-lfs
repo forall -c 'git lfs pull'

【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

编译环境(采用官方docker镜像包)

1. 安装Docker for mac在docker官网下载

2. 获取编译环境的docker镜像

docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5

3. 在源码根目录运行编译环境

docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5

到此源码和编译环境已经准备完成(后面还有烧录和调试环境)。下面开始运行个Hello world试试。。。

开发初探

1. 编业务代码(hello world)

随便找一个自己顺手的编辑器,这里就用vscode吧,打开上面的源码目录harmonyOsDevice

在源码./applications/sample/wifi-iot/app目录下

  • 创建my_first_app目录并在其内创建
    • hello_world.c业务代码文件
    • UILD.gn编译脚本文件

hello_world.c文件内容

#include <stdio.h>
#include "ohos_init.h"
#include "ohos_types.h"

void HelloWorld(void)
{
    printf("[DEMO] Hello world sxfenglei.\n");
}
SYS_RUN(HelloWorld);

UILD.gn文件内容

static_library("myapp") {
    sources = [
        "hello_world.c"
    ]
    include_dirs = [
        "//utils/native/lite/include"
    ]
}

最后修改./applications/sample/wifi-iot/app/UILD.gn文件的features数组(注意区别刚自己创建的UILD.gn文件)

import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
    features = [
        #"startup",
        "my_first_app:myapp",
    ]
}

2. 编译源码成二进制文件

进入docker环境下执行

//设置环境
hb set
//指定源码目录为当前目录
.
//编译 完成后会在out目录生成对应目录和文件
hb build -f

【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

3.烧录二进制文件到开发板

以上都是在mac下完成的下来的操作都在在windows上完成的

  • 可以将编译后的out目录复制到windows下或者共享,我用的共享目录;
    【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

  • 安装USB转串口驱动
    【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

  • 将HiSpark_Wi-Fi_IoT_Hi3861_CH340G通过连接到windows上并在设备管理中查看串口号
    【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

  • 打开HiBurn烧录(烧录完成后一定要断开)
    连接上后点击 reset按键便开始烧录
    【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

4.运行查看调试

打开调试助手 按reset就可以运行的日志信息 就可以看到刚才写的[demo] hello world sxfenglei.
【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

5.控制WiFi版LED灯闪烁

上面输出了日志下面在控制下板子LED试试

hello_world.c文件内容

#include <stdio.h>
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "iot_gpio.h"

#define LED_GPIO 9 //查阅开发板原理图明确接线关系 LED与9号管脚相连

static void LedTask(void *arg)
{
    (void)arg;
    //GPIO管脚初始化
    IoTGpioInit(LED_GPIO);
    //配置9号管脚为输出
    IoTGpioSetDir(LED_GPIO, IOT_GPIO_DIR_OUT);

    while (1)
    {
        //设置引脚输出状态
        IoTGpioSetOutputVal(LED_GPIO, 0);
        osDelay(50);
        IoTGpioSetOutputVal(LED_GPIO, 1);
        osDelay(50);
    }
}

static void LedEntry(void)
{
    osThreadAttr_t attr = {0};
    attr.name = "LedTask";
    attr.stack_size = 512;
    attr.priority = 25;

    //创建线程 启动任务
    if (NULL == osThreadNew((osThreadFunc_t)LedTask, NULL, &attr))
    {
        printf("[LedExample] Falied to create LedTask! By sxfenglei.\n");
    }

    return NULL;
}

SYS_RUN(LedEntry);

BUID.gn文件内容

#定义myapp静态库
static_library("myapp"){
    #静态库源码
    sources = ["led.c"]
    #静态库包含的目录
    include_dirs = [
        "//utils/native/lite/include",
        "//kernel/liteos_m/kal/cmsis",
        "//base/iot_hardware/peripheral/interfaces/kits",
    ]
}

【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建-鸿蒙开发者社区

开发感受

对于新手来说开发环境的搭建还是有一定难度,安装过device tool2 也安装了device tool 3前前后后搞了快一周也没搞成功(尴尬)能力限制了去体验一条龙服务,等有空了在研究下。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
2
收藏 2
回复
举报
1条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

烧录3861真是八仙过海,各显神通。

 

感谢楼主分享思路。

回复
2021-12-20 10:16:26
回复
    相关推荐