OpenHarmony鸿蒙硬件Hi3861-添加应用程序位置、流程 作者:马育民 • 2025-11-13 11:42 • 阅读:10012 # 介绍 在开源鸿蒙(OpenHarmony)Hi3861开发板上添加新功能(如驱动、应用程序、自定义模块等),需要遵循其源码目录结构和构建规则。以下是具体的添加位置、步骤和示例,帮助你快速上手: # 功能类型与添加位置 Hi3861属于OpenHarmony**轻量系统(LiteOS-M内核)**,源码目录结构清晰,不同类型的功能需放在对应目录下: | 功能类型 | 建议添加目录 | 说明 | |------------------|---------------------------------------|----------------------------------------------------------------------| | **应用程序** | `applications/sample/wifi-iot/app` | 如LED控制、传感器采集、UART通信等上层应用(基于系统API开发)。 | | **自定义驱动** | `drivers/peripheral/[新驱动目录]` | 如新增温湿度传感器(DHT11)、OLED屏等硬件驱动(需对接GPIO/I2C等外设)。 | | **系统组件/库** | `utils/native/lite/[自定义库目录]` | 如通用算法库、日志工具等可复用的组件(供多个应用/驱动调用)。 | | **内核定制** | `kernel/liteos_m/` | 如修改任务调度、添加系统调用(需熟悉LiteOS-M内核,谨慎修改)。 | # 添加应用程序 以LED控制为例 ### 1. 目录位置:`applications/sample/wifi-iot/app` 该目录用于存放Hi3861的上层应用程序,每个子目录对应一个独立功能模块。例如: - 已有`led_example`(LED示例)、`button_example`(按键示例)等,可参考其结构添加新功能。 ### 2. 添加步骤: ##### (1)创建功能目录 在`applications/sample/wifi-iot/app`下新建目录(如`my_led_app`),用于存放代码和构建配置: ```bash mkdir -p applications/sample/wifi-iot/app/my_led_app ``` ##### (2)编写功能代码 在`my_led_app`目录下创建源码文件(如`my_led.c`),实现LED闪烁功能: ```c #include #include "ohos_init.h" #include "wifiiot_gpio.h" #include "wifiiot_gpio_ex.h" #include "wifiiot_pwm.h" #include "wifiiot_timer.h" // LED初始化(Hi3861的LED接在GPIO9) static void LedInit(void) { GpioInit(); IoSetFunc(WIFI_IOT_GPIO_9, WIFI_IOT_GPIO_FUNC_GPIO_9_GPIO); // 配置GPIO9为GPIO功能 GpioSetDir(WIFI_IOT_GPIO_9, WIFI_IOT_GPIO_DIR_OUT); // 设置为输出 } // LED闪烁任务 static void LedTask(void) { LedInit(); while (1) { GpioSetOutputVal(WIFI_IOT_GPIO_9, 1); // 点亮LED usleep(500000); // 延时500ms GpioSetOutputVal(WIFI_IOT_GPIO_9, 0); // 熄灭LED usleep(500000); } } // 注册任务到系统初始化流程 APP_FEATURE_INIT(LedTask); ``` ##### (3)编写`BUILD.gn`配置文件 在`my_led_app`目录下创建`BUILD.gn`,定义构建规则(告诉系统如何编译该模块): ```gn # 引入OpenHarmony轻量系统的组件模板 import("//build/lite/config/component/lite_component.gni") # 定义可执行程序目标(目标名为my_led_app) executable("my_led_app") { # 源码文件(当前目录下的my_led.c) sources = [ "my_led.c" ] # 依赖的系统模块(GPIO驱动、初始化框架等) deps = [ "//base/iot_hardware/peripheral:peripheral_api", # 外设API(含GPIO) "//utils/native/lite:utils", # 基础工具库 ] # 编译选项(可选,如开启调试) cflags = [ "-Wall", "-O0" ] # -O0关闭优化,便于调试 } # 将目标添加到系统组件,使其被打包进固件 lite_component("my_led_component") { features = [ ":my_led_app" ] # 关联上面定义的可执行程序 } ``` ##### (4)修改上层组件配置,引入新功能 为了让新功能被系统识别并编译,需要在**上级目录的`BUILD.gn`** 中添加组件依赖: 打开`applications/sample/wifi-iot/app/BUILD.gn`,在`features`中添加新组件: ```gn import("//build/lite/config/component/lite_component.gni") lite_component("app") { features = [ "led_example:led_example", # 已有示例(保留) "my_led_app:my_led_component" # 添加新组件 ] } ``` 原文出处:http://www.malaoshi.top/show_1GW2DcHuZPj0.html