Hi3861开发
上一篇大致``描述了收到51cto的HiSpark_Wi-Fi_IoT_Hi3861_CH340G开发板后的组装过程,这一篇正式进入开发的初探。
注:相关设备来源于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前前后后搞了快一周也没搞成功(尴尬)能力限制了去体验一条龙服务,等有空了在研究下。