1 环境搭建
1.进入VMware Workstation 16 Player输入ifconfig,用于配置和显示Linux内核中网络接口的网络参数。可以查看到IP地址。
2.
如果出现连接超时
启用控制面板-网络和Internet-网络连接中的VMware Network Adapter和VMware Network Adapter VMnet8
3.输入账号和密码,都为bearpi。如果此时没有出现login as:,打开VMware Workstation 16 Player重新输入ifconfig获取新的IP。输入成功出现下图界面。
4.打开RaiDrive,打开设置,选择简体中文。点击添加,选择SFTP,去掉只读,在sftp出输入刚刚获取的IP,账户密码都为******。
2 Hello_world程序
在VScode中打开源码。
Hello_world程序:
- 新建my_app文件夹,用于存放业务源码文件。
- 在my_app文件夹下新建hello_world.c文件,为业务源码文件。
- 在my_app文件夹下新建BUILD.gn文件,为业务源码编译脚本。
目录结构:
4.编写hello_world.c代码:
APP_FEATURE_INIT()是HarmonyOS启动恢复模块接口,用于启动业务。
定义在ohos_init.h文件中。
#include <stdio.h>
#include "ohos_init.h"
void Hello_World(void){
printf("Hello World!\r\n"); // 输出
}
APP_FEATURE_INIT(Hello_World);
5.在my_app下的BUILD.gn文件中添加代码:
static_library中指定业务模块的编译结果,为静态库文件libmyapp.a。
sources中指定静态库.a所依赖的.c文件及其路径。
include_dirs中指定source所需要依赖的.h(头文件)文件路径。
static_library("myapp"){
sources = [
"hello_world.c"
]
include_dirs = [
"//utils/native/lite/include"
]
}
6.在sample下的BUILD.gn文件中添加代码:
my_app是相对路径,指向my_app/BUILD.gn。
myapp是目标,指向my_app/BUILD.gn中的static_library(“myapp”)。
import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
"my_app:myapp"
]
}
- 进入MobaXterm,进入文件,输入hpm dist,编译成功。
3 点亮LED
- 新建my_led文件夹,用于存放业务源码文件。
- 在my_led路径下新建led_example.c文件,该文件为业务源码文件。
- 在my_led路径下新建BUILD.gn文件,该文件为业务源码编译脚本。
目录结构:
- 编写代码led_example.c文件。
#include "ohos_init.h"
#include "unistd.h"
#include "wifiiot_gpio.h"
#include "wifiiot_gpio_ex.h"
void ledExample(void){
GpioInit(); //初始化GPIO
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO); //设置GPIO_2的复用功能为普通GPIO
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_GPIO_DIR_OUT); //设置GPIO_2为输出模式
for(int i=0; i < 10; i++){ //LED灯闪烁十次
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 1); //设置GPIO_2为高电平,即LED灯亮1s
usleep(1000);
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 0); //设置GPIO_2为低电平,即LED灯灭1s
usleep(1000);
}
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 1); //设置GPIO_2为高电平,即LED灯常亮
}
APP_FEATURE_INIT(ledExample);
- 在my_led下的BUILD.gn文件中添加代码:
static_library中指定业务模块的编译结果,为静态库文件libmyapp.a。
sources中指定静态库.a所依赖的.c文件及其路径。
include_dirs中指定source所需要依赖的.h(头文件)文件路径。
static_library("myled"){
sources = [
"led_example.c"
]
include_dirs = [
"//utils/native/lite/include",
"//base/iot_hardware/interfaces/kits/wifiiot_lite"
]
}
- 在sample下的BUILD.gn文件中添加代码:
my_led是相对路径,指向my_led/BUILD.gn。
myled是目标,指向my_led/BUILD.gn中的static_library(“myled”)。
import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
"my_led:myled",
]
}
4 Harmony编译构建介绍