HiSpark3861之 hello world 程序!

一、初识HarmonyOS-HiSpark 3861开发板

1.1 第一个代码:实现WiFi模块的AT指令配置

# 在DevEco的串口终端中,依次执行如下AT命令,启动STA模式,连接指定AP热点,并开启DHCP功能。
AT+STARTSTA                             # 启动STA模式
AT+SCAN                                 # 扫描周边AP
AT+SCANRESULT                           # 显示扫描结果
AT+CONN="DSK33",,2,"123456789"            # 连接指定AP,其中SSID/PASSWORD为待连接的热点名称和密码
AT+STASTAT                              # 查看连接结果
AT+DHCP=wlan0,1                         # 通过DHCP向AP请求wlan0的IP地址

# 查看WLAN模组与网关联通是否正常,如下图所示。
AT+IFCFG                                # 查看模组接口IP
AT+PING=X.X.X.X                         # 检查模组与网关的联通性,其中X.X.X.X需替换为实际的网关地址
AT+STARTSTA
AT+SCAN
AT+SCANRESULT
AT+CONN="DSK33",,2,"123456789"
AT+STASTAT
AT+DHCP=wlan0,1
AT+IFCFG
AT+PING=10.138.39.213

1.2 第二个代码:打印 hello world

1.2.1 修改源码

bugfix和新增业务两种情况,涉及源码修改。下面以新增业务(my_first_app)为例,向开发者介绍如何进行源码修改。

  1. 确定目录结构

    开发者编写业务时,务必先在./applications/sample/wifi-iot/app路径下新建一个目录(或一套目录结构),用于存放业务源码文件。

    例如:在app下新增业务my_first_app,其中hello_world.c为业务代码,BUILD.gn为编译脚本,具体规划目录结构如下:

    .
    └── applications
        └── sample
            └── wifi-iot
                └── app
                    │── my_first_app
                    │  │── hello_world.c
                    │  └── BUILD.gn
                    └── BUILD.gn
    
  2. 编写业务代码

    新建./applications/sample/wifi-iot/app/my_first_app下的hello_world.c文件,在hello_world.c中新建业务入口函数HelloWorld,并实现业务逻辑。并在代码最下方,使用OpenHarmony启动恢复模块接口SYS_RUN()启动业务。(SYS_RUN定义在ohos_init.h文件中)

    #include <stdio.h>
    #include "ohos_init.h"
    #include "ohos_types.h"
    
    void HelloWorld(void)
    {
        printf("[DEMO] Hello world.\n");
    }
    SYS_RUN(HelloWorld);
    
  3. 编写用于将业务构建成静态库BUILD.gn文件。

    新建**./applications/sample/wifi-iot/app/my_first_app下的BUILD.gn**文件,并完成如下配置。

    BUILD.gn文件由三部分内容(目标源文件头文件路径)构成,需由开发者完成填写。

    static_library("myapp") {
        sources = [
            "hello_world.c"
        ]
        include_dirs = [
            "//utils/native/lite/include"
        ]
    }
    
    • static_library中指定业务模块的编译结果,为静态库文件libmyapp.a,开发者根据实际情况完成填写。
    • sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//“则表示绝对路径(此处为代码根路径),若不包含”//"则表示相对路径。
    • include_dirs中指定source所需要依赖的.h文件路径。
  4. 编写模块BUILD.gn文件,指定需参与构建的特性模块。

    配置**./applications/sample/wifi-iot/app/BUILD.gn文件,在features**字段中增加索引,使目标模块参与编译。features字段指定业务模块的路径和目标,以my_first_app举例,features字段配置如下。

    import("//build/lite/config/component/lite_component.gni")
    
    lite_component("app") {
        features = [
            "my_first_app:myapp",
        ]
    }
    
    • my_first_app是相对路径,指向./applications/sample/wifi-iot/app/my_first_app/BUILD.gn。
    • myapp是目标,指向./applications/sample/wifi-iot/app/my_first_app/BUILD.gn中的static_library(“myapp”)。

1.2.2 调测验证

目前调试验证的方法有两种,分别为通过printf打印日志、通过asm文件定位panic问题,开发者可以根据具体业务情况选择。

由于本示例业务简单,采用printf打印日志的调试方式即可。下面开始介绍这两种调试手段的使用方法。

printf打印

代码中增加printf维测,信息会直接打印到串口上。开发者可在业务关键路径或业务异常位置增加日志打印,如下所示。

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

1.2.3 代码的编译

以上代码编辑好以后就可以直接编译了

1、进入到~/harmony/code/code-1.0目录下,找到 build.py文件,执行以下命令:

$ python build.py wifiiot

=== start build ===

Done. Made 57 targets from 53 files in 236ms
ninja: Entering directory `/home/harmony/harmony/code/code-1.0/out/wifiiot'

...### 省略一万字

[section0_compress=0x1][section0_offset=0x3c0][section0_len=0x69480]
[section1_compress=0x0][section1_offset=0x0][section1_len=0x0]
-------------output/bin/Hi3861_wifiiot_app_ota.bin image info print end--------------

< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >
                              BUILD SUCCESS     # 说明编译成功!
< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >

See build log from: /home/harmony/harmony/code/code-1.0/vendor/hisi/hi3861/hi3861/build/build_tmp/logs/build_kernel.log
[198/198] STAMP obj/vendor/hisi/hi3861/hi3861/run_wifiiot_scons.stamp
ohos wifiiot build success!

2、现在我们就能在out/文件夹里我们就能找到刚刚编译好的wifiiot文件了

harmony@harmony-virtual-machine:~/harmony/code/code-1.0/out$ ls
ipcamera_hi3516dv300  wifiiot  wifiiot.bak

3、用vscode专用插件烧录(windows环境下)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、烧录完成后,打开串口,复位开发板,如果有以下结果,则程序烧录成功!

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值