Skip to content

第二章 IDE开发

基于官方IDE开发就是搭建一套Windows+Ubuntu混合开发的环境,其中使用Windows平台的DevEco Device Tool可视化界面进行相关操作,通过远程连接的方式对接Ubuntu下的DevEco Device Tool(可以不安装Visual Studio Code),然后对Ubuntu下的源码进行开发、编译、烧录等操作。

2.1 Windows环境

华为集成开发环境IDE DevEco Device Tool下载

一路默认配置即可,然后打开Vscode即可看到插件

image-20241226132019302

2.2 Ubuntu环境

2.2.1 准备Ubuntu虚拟机

官方Ubuntu系统要求:Ubuntu18.04~21.10版本,推荐为 20.04 版本,因此我们也是有此版本。

Ubuntu安装指导链接

image-20241226132410424

2.2.2 配置Ubuntu环境

将Ubuntu Shell环境修改为bash

Bash
ls -l /bin/sh

image-20241226132741762

Bash
sudo dpkg-reconfigure dash

image-20241226132824430

修改结果:

image-20241226132851553

下载DevEco Device Tool最新Linux版本软件包,注意和Windows的版本一样

解压DevEco Device Tool软件包并安装,第三步需要签署同意用户协议和隐私声明才能进行下一步的安装

Bash
#解压
unzip devicetool-linux-tool-{Version}.zip
#赋权
chmod u+x devicetool-linux-tool-{Version}.sh
#执行安装
sudo ./devicetool-linux-tool-{Version}.sh

2.3 配置远程访问环境

2.3.1 Ubuntu配置SSH服务

安装ssh服务

Bash
sudo apt-get install openssh-server
sudo systemctl start ssh

查看虚拟机IP地址

Bash
#安装插件
sudo apt install net-tools
#查看IP
ifconfig

image-20241226133543727

2.3.2 Windows配置远程访问

Vscode 安装 Remote SSH 插件

image-20241226133719561

连接虚拟机:ssh 用户名@IP

image-20241226133829724

一路默认,输入密码即可成功连接,点击打开文件就可以选择要打开的虚拟机文件夹

image-20241226134038130

2.4 创建工程获取源码

选择源码的版本,这里我选择与官网示例同样的OpenHarmony-v3.1-Release ,即OpenHarmony-v3.1正式版,也可以使用其他版本一样的操作。开发板我选用的小熊派,芯片HI3861,这里SOC和开发板都选用hi3861。

Danger

之前选用开发板为BreaPi但是串口输出结果不对,所以又改用这个比较正常,原因暂未知,所以就用hi3861吧。

image-20241228213458999

点击确定,会自动开始下载源码,源码比较大所以需要挺多的时间。

2.5 第一个程序(基于HI3861)

2.5.1 编写程序

找到目录./applications/sample/wifi-iot/app,在app文件夹下一个文件夹my_first_app,代码文件hello_world.c,编译脚本BUILD.gn。具体目录结构如下:

Text Only
.
└── applications
    └── sample
        └── wifi-iot
            └── app
                └── my_first_app
                  │── hello_world.c
                  └── BUILD.gn
Note

官方称呼:新增业务my_first_app,其中hello_world.c为业务代码,BUILD.gn为编译脚本。

hello_world.c文件中添加代码

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

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

在编译脚本BUILD.gn中添加编译配置

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

添加新组件,组件配置文件为build/lite/components/applications.json

Danger

若源码版本大于等于OpenHarmony 3.2 Beta2时,组件配置文件为build/lite/components/communication.json

JSON
{
  "components": [
    {
      "component": "camera_sample_communication",
      "description": "Communication related samples.",
      "optional": "true",
      "dirs": [
        "applications/sample/camera/communication"
      ],
      "targets": [
        "//applications/sample/camera/communication:sample"
      ],
      "rom": "",
      "ram": "",
      "output": [],
      "adapted_kernel": [ "liteos_a" ],
      "features": [],
      "deps": {
        "components": [],
        "third_party": []
      }
    },
##start##
    {
      "component": "hello_world_app",
      "description": "hello world samples.",
      "optional": "true",
      "dirs": [
        "applications/sample/wifi-iot/app/my_first_app"
      ],
      "targets": [
        "//applications/sample/wifi-iot/app/my_first_app:myapp"
      ],
      "rom": "",
      "ram": "",
      "output": [],
      "adapted_kernel": [ "liteos_m" ],
      "features": [],
      "deps": {
        "components": [],
        "third_party": []
      }
    },
##end##
    {
      "component": "camera_sample_app",
      "description": "Camera related samples.",
      "optional": "true",
      "dirs": [
        "applications/sample/camera/launcher",
        "applications/sample/camera/cameraApp",
        "applications/sample/camera/setting",
        "applications/sample/camera/gallery",
        "applications/sample/camera/media"
      ],

修改单板配置文件vendor/hisilicon/hispark_pegasus/config.json,新增hello_world_app组件的条目

JSON
      {
        "subsystem": "applications",
        "components": [
##start##
          { "component": "hello_world_app", "features":[] },
##end##
          { "component": "wifi_iot_sample_app", "features":[] }
        ]
      },

Note

这里就跟着修改文件即可,具体关于编译脚本和组件添加问题,会在编译原理章节进一步解释。

2.5.2 编译

点击Build即可编译,若由工具缺失则点击工程配置选择缺失工具链会自动下载,一般第一次不会出错。

image-20241228133912265

2.5.3 烧录

DevEco Device Tool左下角查看连接状态,若未连接则点击连接按键。

  • 如果Local PC右边连接按钮为zh-cn_image_0000001326512673,则远程计算机与本地计算机为已连接状态,不需要执行其他操作。
  • 如果Local PC右边连接按钮为zh-cn_image_0000001275432904,则点击绿色按钮进行连接。连接时DevEco Device Tool会重启服务,因此请不要在下载源码或源码编译过程中进行连接,否则会中断任务。

image-20241228134248310

连接以后可以看到工具链是完整的,所以上一步编译,没问题。

image-20241228134502873

选择烧录端口,确保自己已经安装相关开发板的串口驱动,其他默认即可。

image-20241228134555975

点击Upload烧录,根据终端提示按一下开发板的 复位键

image-20241228134748970

烧录成功!

image-20241228134853374

2.5.4 运行查看程序

打开串口检测器,并复位开发板。

image-20241228140439463

在串口中端依次输入下列命令,注意命令前后均不可以有多余空格,返回ok即单个命令执行正确。

Text Only
AT+STARTSTA             # 启动STA模式
AT+SCAN                     # 扫描周边AP
AT+SCANRESULT               # 显示扫描结果
AT+CONN="OpenHarmony",,2,"123456789" # 连接指定AP(修改自己热点即可)
AT+STASTAT                  # 查看连接结果
AT+DHCP=wlan0,1             # 通过DHCP向AP请求wlan0的IP地址
AT+IFCFG                    # 查看开发板的IP地址
AT+PING=www.baidu.com

AT+CONN="",,,"passwd"

  • ssid,passwd为热点名称密码。
  • bssid为热点的MAC地址。
  • auth_type为认证方式
    • 0即OPEN
    • 1即WEP加密
    • 2即WPA2_PSK加密
    • 3即WPA和WPA2混合加密

完成最后一步,即WLAN模组联网成功:

image-20241228140334054

再次复位可以看到输出结果:

image-20241228143201648