harmony 鸿蒙Porting the Driver Subsystem
Porting the Driver Subsystem
The driver subsystem provides OpenHarmony-dedicated APIs for peripheral device operations, including FLASH, GPIO, I2C, PWM, UART, and WATCHDOG APIs.
OpenHarmony provides two driver adaptation modes: using the driver subsystem and using the HDF driver framework. Because the resources of the mini system are limited, the IoT subsystem mode is recommended.
Procedure
Vendors need to implement their functions based on the interface definitions provided by OpenHarmony. The header files defined by the interfaces of the IoT subsystem are as follows:
base/iot_hardware/peripheral/
├── BUILD.gn
└── interfaces
└── kits
├── iot_errno.h
├── iot_flash.h
├── iot_gpio.h
├── iot_i2c.h
├── iot_pwm.h
├── iot_uart.h
├── iot_watchdog.h
├── lowpower.h
└── reset.h
The content of the base/iot_hardware/peripheral/BUILD.gn file is as follows:
import("//build/lite/config/subsystem/lite_subsystem.gni")
import("//build/lite/ndk/ndk.gni")
lite_subsystem("iothardware") {
subsystem_components = [
"$ohos_vendor_adapter_dir/hals/iot_hardware/wifiiot_lite:hal_iothardware",
]
}
if (ohos_kernel_type == "liteos_m") {
ndk_lib("iothardware_ndk") {
deps = [
"$ohos_vendor_adapter_dir/hals/iot_hardware/wifiiot_lite:hal_iothardware", # Vendor dependent adaptation.
]
head_files = [ "//base/iot_hardware/peripheral/interfaces/kits" ]
}
}
As shown above, the directory for storing vendor adaptation interfaces is $ohos_vendor_adapter_dir/hals/iot_hardware/wifiiot_lite, where the target in the BUILD.gn file is hal_iothardware.
Example
- Add the iot_hardware subsystem to the config.json file.
Path: vendor/MyVendorCompany/MyProduct/config.json
The sample code is as follows:
{
subsystem": "iot_hardware",
components": [
{ "component": "iot_controller", "features":[] }
]
},
- Add an adaptation file.
In the vendor/MyVendorCompany/MyProduct/config.json file, set vendor_adapter_dir to //device/MyDeviceCompany/MyBoard/adapter.
Perform adaptation in the vendor_adapter_dir directory.
hals/iot_hardware/wifiiot_lite
├── BUILD.gn
├── iot_flash.c
├── iot_gpio.c
├── iot_i2c.c
├── iot_lowpower.c
├── iot_pwm.c
├── iot_reset.c
├── iot_uart.c
└── iot_watchdog.c
The content of BUILD.gn is as follows:
static_library("hal_iothardware") { # Target name
sources = [ # Source file adapted by the vendor
"iot_watchdog.c",
"iot_reset.c",
"iot_flash.c",
"iot_i2c.c",
"iot_gpio.c",
"iot_pwm.c",
"iot_uart.c"
]
include_dirs = [ ]
}
In the preceding example, include_dirs must contain two paths based on the site requirements:
Path to the header file of the IoT subsystem
Path to the SDK header file used by the IoT subsystem
你可能感兴趣的鸿蒙文章
harmony 鸿蒙Combo Solution – ASR Chip Porting Case
harmony 鸿蒙Mini-System Devices with Screens – Bestechnic SoC Porting Case
harmony 鸿蒙IoT Solution - Chipsea CST85 Chip Porting Case
harmony 鸿蒙Standard System Solution – Rockchip RK3568 Porting Case
harmony 鸿蒙A Method for Rapidly Porting the OpenHarmony Linux Kernel
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦