ESP32移植Openharmony设备开发---(2)Hello world

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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值