Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
a453eff3
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
a453eff3
编写于
8月 10, 2023
作者:
O
openharmony_ci
提交者:
Gitee
8月 10, 2023
浏览文件
操作
浏览文件
下载
差异文件
!22039 【挑单4.0-Beta2】modify driver framework path
Merge pull request !22039 from liveery/cherry-pick-1691464960
上级
46e56d45
44e610d7
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
36 addition
and
37 deletion
+36
-37
zh-cn/device-dev/porting/porting-smallchip-driver-oom.md
zh-cn/device-dev/porting/porting-smallchip-driver-oom.md
+16
-16
zh-cn/device-dev/porting/standard-system-porting-guide.md
zh-cn/device-dev/porting/standard-system-porting-guide.md
+20
-21
未找到文件。
zh-cn/device-dev/porting/porting-smallchip-driver-oom.md
浏览文件 @
a453eff3
...
...
@@ -8,12 +8,12 @@
移植LCD驱动的主要工作是编写一个驱动,在驱动中生成模型的实例,并完成注册。
这些LCD的驱动被放置在源码目录//drivers/framework/model/display/driver/panel中。
这些LCD的驱动被放置在源码目录//drivers/
hdf_core/
framework/model/display/driver/panel中。
1.
创建Panel驱动
创建HDF驱动,在驱动初始化中调用RegisterPanel接口注册模型实例。如:
```
int32_t LCDxxEntryInit(struct HdfDeviceObject *object)
{
...
...
@@ -41,7 +41,7 @@
> ![icon-caution.gif](public_sys-resources/icon-caution.gif) **注意:**
> moduleName 要与panel驱动中的moduleName相同。
```
root {
...
...
...
@@ -61,14 +61,14 @@
## TP驱动移植
本节描述如何移植触摸屏驱动。触摸屏的器件驱动被放置在源码目录//drivers/framework/model/input/driver/touchscreen中。 移植触摸屏驱动主要工作是向系统注册ChipDevice模型实例。
本节描述如何移植触摸屏驱动。触摸屏的器件驱动被放置在源码目录//drivers/
hdf_core/
framework/model/input/driver/touchscreen中。 移植触摸屏驱动主要工作是向系统注册ChipDevice模型实例。
详细的驱动开发指导,请参考
[
TOUCHSCREEN开发指导
](
../driver/driver-peripherals-touch-des.md
)
。
1.
创建触摸屏器件驱动
在上述touchscreen目录中创建名为touch_ic_name.c的文件。编写如下内容
```
#include "hdf_touch.h"
...
...
@@ -108,7 +108,7 @@
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> moduleName 要与触摸屏驱动中的moduleName相同。
```
deviceN :: deviceNode {
policy = 0;
...
...
@@ -130,11 +130,11 @@ WLAN驱动分为两部分,一部分负责管理WLAN设备,另一个部分负
如图1,左半部分负责管理WLAN设备,右半部分负责WLAN流量。HDF WLAN分别为这两部分做了抽象,驱动的移植过程可以看做分别实现这两部分所需接口。这些接口有:
| 接口 | 定义头文件 | 接口说明 |
| 接口 | 定义头文件 | 接口说明 |
| -------- | -------- | -------- |
| HdfChipDriverFactory | drivers
\
f
ramework
\i
nclude
\w
ifi
\h
df_wlan_chipdriver_manager.h | ChipDriver的Factory,用于支持一个芯片多个WLAN端口 |
| HdfChipDriver | drivers
\
f
ramework
\i
nclude
\w
ifi
\w
ifi_module.h | 每个WLAN端口对应一个HdfChipDriver,用来管理一个特定端口 |
| NetDeviceInterFace | drivers
\
f
ramework
\i
nclude
\w
ifi
\n
et_device.h | 与协议栈之间的接口,如发送数据、设置网络接口状态等 |
| HdfChipDriverFactory | drivers
\
h
df_core
\f
ramework
\i
nclude
\w
ifi
\h
df_wlan_chipdriver_manager.h | ChipDriver的Factory,用于支持一个芯片多个WLAN端口 |
| HdfChipDriver | drivers
\
h
df_core
\f
ramework
\i
nclude
\w
ifi
\w
ifi_module.h | 每个WLAN端口对应一个HdfChipDriver,用来管理一个特定端口 |
| NetDeviceInterFace | drivers
\
h
df_core
\f
ramework
\i
nclude
\w
ifi
\n
et_device.h | 与协议栈之间的接口,如发送数据、设置网络接口状态等 |
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 详细的接口开发指导,请参考[WLAN开发](../driver/driver-peripherals-external-des.md)。
...
...
@@ -144,9 +144,9 @@ WLAN驱动分为两部分,一部分负责管理WLAN设备,另一个部分负
1.
创建HDF WLAN 芯片驱动
在目录/device/vendor_name/peripheral/wifi/chip_name/ 创建文件 hdf_wlan_chip_name.c。内容模板如下:
```
static int32_t HdfWlan
Hisi
ChipDriverInit(struct HdfDeviceObject *device) {
static int32_t HdfWlan
XXX
ChipDriverInit(struct HdfDeviceObject *device) {
static struct HdfChipDriverFactory factory = CreateChipDriverFactory(); // 需要移植者实现的方法
struct HdfChipDriverManager *driverMgr = HdfWlanGetChipDriverMgr();
if (driverMgr->RegChipDriver(&factory) != HDF_SUCCESS) { // 注册驱动工厂
...
...
@@ -193,7 +193,7 @@ WLAN驱动分为两部分,一部分负责管理WLAN设备,另一个部分负
该文件模板如下:
```
root {
wlan_config {
...
...
@@ -219,7 +219,7 @@ WLAN驱动分为两部分,一部分负责管理WLAN设备,另一个部分负
3.
编写配置文件,加载驱动
产品的所有设备信息被定义在源码文件//vendor/vendor_name/product_name/config/device_info/device_info.hcs中。修改该文件,在名为network的host中,名为device_wlan_chips的device中增加配置。模板如下:
```
deviceN :: deviceNode {
policy = 0;
...
...
@@ -236,7 +236,7 @@ WLAN驱动分为两部分,一部分负责管理WLAN设备,另一个部分负
4.
修改Kconfig文件,让移植的WLAN模组出现再内核配置中
在device/vendor_name/drivers/Kconfig中增加配置菜单,模板如下
```
config DRIVERS_HDF_WIFI_chip_name
bool "Enable chip_name Host driver"
...
...
@@ -251,7 +251,7 @@ WLAN驱动分为两部分,一部分负责管理WLAN设备,另一个部分负
5.
修改构建脚本,让驱动参与内核构建
在源码文件//device/vendor_name/drivers/lite.mk末尾追加如下内容
```
ifeq ($(LOSCFG_DRIVERS_HDF_WIFI_chip_name), y)
# 构建完成要链接一个叫hdf_wlan_chipdriver_chip_name的对象,建议按这个命名,防止冲突
...
...
zh-cn/device-dev/porting/standard-system-porting-guide.md
浏览文件 @
a453eff3
...
...
@@ -15,7 +15,7 @@
//vendor/MyProductVendor/MyProduct/config.json
```
{
"product_name": "MyProduct",
...
...
@@ -74,7 +74,7 @@ product_company:不体现在配置中,而是目录名,vendor下一级目
### 移植验证
至此,你可以使用如下命令,启动你产品的构建了:
```
./build.sh --product-name MyProduct
```
...
...
@@ -91,7 +91,7 @@ product_company:不体现在配置中,而是目录名,vendor下一级目
修改文件 //build/subsystem_config.json增加一个子系统. 配置如下:
```
"MySOCVendor_products": {
"project": "hmf/MySOCVendor_products",
...
...
@@ -112,7 +112,7 @@ product_company:不体现在配置中,而是目录名,vendor下一级目
建议的目录结构
```
├── build
│ ├── kernel
...
...
@@ -172,13 +172,13 @@ BUILD.gn是subsystem构建的唯一入口。
HDF为LCD设计了驱动模型。支持一块新的LCD,需要编写一个驱动,在驱动中生成模型的实例,并完成注册。
这些LCD的驱动被放置在//drivers/framework/model/display/driver/panel目录中。
这些LCD的驱动被放置在//drivers/
hdf_core/
framework/model/display/driver/panel目录中。
-
创建Panel驱动
在驱动的Init方法中,需要调用RegisterPanel接口注册模型实例。如:
```
int32_t XXXInit(struct HdfDeviceObject *object)
{
...
...
@@ -203,7 +203,6 @@ HDF_INIT(g_xxxxDevEntry);
-
配置加载panel驱动产品的所有设备信息被定义在文件//vendor/MyProductVendor/MyProduct/config/device_info/device_info.hcs中。修改该文件,在display的host中,名为device_lcd的device中增加配置。注意:moduleName 要与panel驱动中的moduleName相同。
```
root {
...
...
...
@@ -225,13 +224,13 @@ root {
### 触摸屏
本节描述如何移植触摸屏驱动。触摸屏的驱动被放置在//drivers/framework/model/input/driver/touchscreen目录中。移植触摸屏驱动主要工作是向系统注册ChipDevice模型实例。
本节描述如何移植触摸屏驱动。触摸屏的驱动被放置在//drivers/
hdf_core/
framework/model/input/driver/touchscreen目录中。移植触摸屏驱动主要工作是向系统注册ChipDevice模型实例。
-
创建触摸屏器件驱动
在目录中创建名为touch_ic_name.c的文件。代码模板如下:注意:请替换ic_name为你所适配芯片的名称。
```
#include "hdf_touch.h"
...
...
@@ -294,20 +293,20 @@ Wi-Fi驱动分为两部分,一部分负责管理WLAN设备,另一个部分
支持一款芯片的主要工作是实现一个ChipDriver驱动。实现HDF_WLAN_CORE和NetDevice提供的接口。主要需要实现的接口有:
| | | |
| | | |
| -------- | -------- | -------- |
| 接口 | 定义头文件 | 说明 |
| HdfChipDriverFactory | //drivers/
framework/include/wifi/hdf_wlan_chipdriver_manager.h | ChipDriver的Factory,用于支持一个芯片多个Wi-Fi端口 |
| HdfChipDriver | //drivers/
framework/include/wifi/wifi_module.h | 每个WLAN端口对应一个HdfChipDriver,用来管理一个特定的WLAN端口 |
| NetDeviceInterFace | //drivers/
framework/include/net/net_device.h | 与协议栈之间的接口,如发送数据、设置网络接口状态等 |
| 接口 | 定义头文件 | 说明 |
| HdfChipDriverFactory | //drivers/
hdf_core/framework/include/wifi/hdf_wlan_chipdriver_manager.h | ChipDriver的Factory,用于支持一个芯片多个Wi-Fi端口 |
| HdfChipDriver | //drivers/
hdf_core/framework/include/wifi/wifi_module.h | 每个WLAN端口对应一个HdfChipDriver,用来管理一个特定的WLAN端口 |
| NetDeviceInterFace | //drivers/
hdf_core/framework/include/net/net_device.h | 与协议栈之间的接口,如发送数据、设置网络接口状态等 |
建议适配按如下步骤操作:
1.
创建HDF驱动建议将代码放置在//device/MySoCVendor/peripheral/wifi/chip_name/,文件模板如下:
```
static int32_t HdfWlan
Hisi
ChipDriverInit(struct HdfDeviceObject *device) {
static int32_t HdfWlan
XXX
ChipDriverInit(struct HdfDeviceObject *device) {
static struct HdfChipDriverFactory factory = CreateChipDriverFactory();
struct HdfChipDriverManager *driverMgr = HdfWlanGetChipDriverMgr();
if (driverMgr->RegChipDriver(&factory) != HDF_SUCCESS) {
...
...
@@ -359,7 +358,7 @@ HdfChipDriver需要实现的接口有
模板如下:
```
root {
wlan_config {
...
...
@@ -381,7 +380,7 @@ root {
产品的所有设备信息被定义在文件//vendor/MyProductVendor/MyProduct/config/device_info/device_info.hcs中。修改该文件,在名为network的host中,名为device_wlan_chips的device中增加配置。注意:moduleName 要与触摸屏驱动中的moduleName相同。
```
deviceN :: deviceNode {
policy = 0;
...
...
@@ -406,15 +405,15 @@ config DRIVERS_WLAN_XXX
Answer Y to enable XXX Host driver. Support chip xxx
```
接着修改文件//drivers/adapter/khdf/linux/model/network/wifi/Kconfig,在文件末尾加入如下代码将配置菜单加入内核中,如:
接着修改文件//drivers/hdf_core/adapter/khdf/linux/model/network/wifi/Kconfig,在文件末尾加入如下代码将配置菜单加入内核中,如:
```
source "../../../../../device/MySoCVendor/peripheral/Kconfig"
```
-
创建构建脚本
在//drivers/adapter/khdf/linux/model/network/wifi/Makefile文件末尾增加配置,模板如下:
在//drivers/
hdf_core/
adapter/khdf/linux/model/network/wifi/Makefile文件末尾增加配置,模板如下:
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录