【HarmonyOS开发板试用】之二Hi3861开发初探和环境搭建 原创 精华
@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
如果不安装git-fls的话在后面拉取鸿蒙源码的时候会失败
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
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'
编译环境(采用官方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
3.烧录二进制文件到开发板
以上都是在mac下完成的下来的操作都在在windows上完成的
-
可以将编译后的out目录复制到windows下或者共享,我用的共享目录;
-
安装USB转串口驱动
-
将HiSpark_Wi-Fi_IoT_Hi3861_CH340G通过连接到windows上并在设备管理中查看串口号
-
打开HiBurn烧录(烧录完成后一定要断开)
连接上后点击 reset按键便开始烧录
4.运行查看调试
打开调试助手 按reset就可以运行的日志信息 就可以看到刚才写的[demo] hello world sxfenglei.
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",
]
}
开发感受
对于新手来说开发环境的搭建还是有一定难度,安装过device tool2 也安装了device tool 3前前后后搞了快一周也没搞成功(尴尬)能力限制了去体验一条龙服务,等有空了在研究下。
烧录3861真是八仙过海,各显神通。
感谢楼主分享思路。