Hello world
编写第一个OpenHarmony程序,首先使用VSCode打开vendor\esp\esp32目录,在下面新建一个自己的工作文件夹
BUILD.gn
每一个案例都要去写这个gn文件,gn是Generate ninja的缩写,用于产生ninja文件。
我们对nijia的印象不是很深,因为他是自动执行的,我们作为开发者没有去人工干涉他。
在工作文件夹下创建一个BUILD.gn文件
将内容修改如下:
if (ohos_kernel_type == "liteos_m") {
import("//kernel/liteos_m/liteos.gni")
module_name = get_path_info(rebase_path("."), "name")
module_group(module_name) {
# 001_helloworld 表示要编译的文件夹,后续可以修改成其它文件夹名称
modules = ["001_helloworld"]
}
}
之后在 vendor\esp\esp32\hxy 创建 001_helloworld 文件夹,往里面加入两个文件
BUILD.gn
helloworld.c
其中BUILD.gn用于描述要编译的文件,编译规则等,内容如下:
import("//kernel/liteos_m/liteos.gni")
module_name = get_path_info(rebase_path("."), "name")
kernel_module(module_name) {
sources = [
#要编译的文件
"hello_world.c",
]
}
逐行分析BUILD.gn文件
import("//kernel/liteos_m/liteos.gni")
这一行导入了位于 kernel/liteos_m 目录下的 liteos.gni 文件。导入的文件包含了一些预定义的宏、函数或变量,它们对构建 LiteOS_M 内核模块(或其他与内核相关的组件)非常重要
module_name = get_path_info(rebase_path("."), "name")
这一行定义了一个变量 module_name,其值为调用 get_path_info 函数的结果。get_path_info 函数接受两个参数:rebase_path(".") 和 "name"。rebase_path(".") 返回当前目录相对于项目根目录的路径,而 "name" 参数告诉 get_path_info 函数返回该路径的名字部分。这意味着 module_name 将会被赋值为当前目录的名字,通常用于标识当前模块。
kernel_module(module_name) {
sources = [ ... ]
}
这里定义了一个 kernel_module 类型的模块。kernel_module 是 GN 构建系统中的一个目标类型,它表示一个内核模块。括号内的 module_name 是前一步定义的变量,这里作为模块的名字传递给 kernel_module 函数。花括号 {} 包含了模块的具体配置信息
sources 是 kernel_module 的一个属性,用于指定要编译的源文件列表。这里的列表包含了一个文件 "hello_world.c",这意味着该模块将编译这个 C 语言源文件
Helloworld.c
Helloworld.c 文件是我们要实现功能的c代码文件,内容如下:
#include <stdio.h>
#include "ohos_run.h"
/* HelloWorld例子 */
static void Niobeu4_HelloWorld(void)
{
printf("*************************\n");
printf("* [Openharmony/Niobeu4] *\n");
printf("* Hello world! *\n");
printf("* Huangxiangyang *\n");
printf("*************************\n");
return;
}
/* 声明应用程序函数入口 */
OHOS_APP_RUN(Niobeu4_HelloWorld);
编译
修改hb工具默认编译路径 打开文件源码根目录/device/board/esp/esp32/liteos_m/target/BUILD.gn
kernel_module(module_name) {
sources = [ "src/target_startup.c" ]
deps = [ "//vendor/esp/esp32/目标文件夹名:目标文件夹名" ]
}
在源码根目录下使用hb工具对写好的代码进行编译
选择mini级系统
同理 产品选择esp公司下的esp32
选择完毕后在源码根目录下执行hb build -f 进行编译
编译完成后会有如下界面,并且编译后的代码固件位于:out\esp32\esp32
烧录
打开附录/工具/flash_download_tool_3.9.2.exe 工具,选择esp32
USB线接入USB口
配置软件,如下图,包括升级的镜像,配置,确保COM口是有的点击START
按住boot键不松开,再按一下EN键,0.5秒后松开boot键,可以看到升级成功:
验证结果
打开串口工具->选择COM5->打开串口
按下ESP32开发板上的EN键,即可观察到实验现象打印出Hello world!