提交 ab5cf8bb 编写于 作者: D duxbbo

fix bugs

Signed-off-by: Nduxbbo <duxiaobo@huawei.com>
Change-Id: I71ba5a815fbbfc1d3fee0149bead25c5a04304dc
上级 2969611b
...@@ -22,7 +22,7 @@ repo init -u https://gitee.com/openharmony-sig/manifest.git -b master -m devboar ...@@ -22,7 +22,7 @@ repo init -u https://gitee.com/openharmony-sig/manifest.git -b master -m devboar
# 2. 开始移植你的开发板 # 2. 开始移植你的开发板
- [轻量级系统](lite_system_port_guide.md) - [轻量级系统](lite-system-porting-guide.md)
- 小型系统(待发布) - 小型系统(待发布)
- [标准系统](standard_system_porting_guide.md) - [标准系统](standard-system-porting-guide.md)
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
`./build.sh --product-name MyProduct ` `./build.sh --product-name MyProduct `
构建完成后,可以在如下目录看到构建出来的OpenHarmony镜像文件 构建完成后,可以在如下目录看到构建出来的OpenHarmony镜像文件
`//out/ohos-arm-release/packages/phone/images` `//out/ohos-arm-release/packages/phone/images`
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
}, },
``` ```
接着需要修改定义产品的配置文件`//productdefine/common/products/MyProduct.json`。将刚刚定义的子系统加入到产品中 接着需要修改定义产品的配置文件`//productdefine/common/products/MyProduct.json`。将刚刚定义的子系统加入到产品中
### 2. 编译内核 ### 2. 编译内核
...@@ -107,7 +107,7 @@ ...@@ -107,7 +107,7 @@
目前OpenHarmony源码中提供了Linux 4.19的内核,归档在`//kernel/linux-4.19`。请尽可能使用这个内核。 目前OpenHarmony源码中提供了Linux 4.19的内核,归档在`//kernel/linux-4.19`。请尽可能使用这个内核。
每个SOC必然需要对内核做一些修改或扩展,建议采用补丁的方式。 每个SOC必然需要对内核做一些修改或扩展,建议采用补丁的方式。
建议的目录结构 建议的目录结构如下:
``` ```
├── build ├── build
│   ├── kernel │   ├── kernel
...@@ -181,7 +181,7 @@ root { ...@@ -181,7 +181,7 @@ root {
} }
``` ```
更详细的驱动开发指导,请参考 [LCD](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/LCD.md) 更详细的驱动开发指导,请参考 [LCD](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/LCD.md)
### 2. 触摸屏 ### 2. 触摸屏
本节描述如何移植触摸屏驱动。触摸屏的驱动被放置在`//drivers/framework/model/input/driver/touchscreen`目录中。移植触摸屏驱动主要工作是向系统注册ChipDevice模型实例。 本节描述如何移植触摸屏驱动。触摸屏的驱动被放置在`//drivers/framework/model/input/driver/touchscreen`目录中。移植触摸屏驱动主要工作是向系统注册ChipDevice模型实例。
...@@ -189,7 +189,7 @@ root { ...@@ -189,7 +189,7 @@ root {
- 创建触摸屏器件驱动 - 创建触摸屏器件驱动
在目录中创建名为`touch_ic_name.c`的文件。代码模板如下: 在目录中创建名为`touch_ic_name.c`的文件。代码模板如下:
注意:请替换ic_name为你所适配芯片的名称 注意:请替换ic_name为你所适配芯片的名称
```C ```C
#include "hdf_touch.h" #include "hdf_touch.h"
...@@ -213,7 +213,7 @@ struct HdfDriverEntry g_touchXXXXChipEntry = { ...@@ -213,7 +213,7 @@ struct HdfDriverEntry g_touchXXXXChipEntry = {
HDF_INIT(g_touchXXXXChipEntry); HDF_INIT(g_touchXXXXChipEntry);
``` ```
其中ChipDevice中要提供若干方法 其中ChipDevice中要提供若干方法
| 方法| 实现说明| | 方法| 实现说明|
|------|------| |------|------|
|int32_t (*Init)(ChipDevice *device)| 器件初始化| |int32_t (*Init)(ChipDevice *device)| 器件初始化|
...@@ -239,16 +239,16 @@ HDF_INIT(g_touchXXXXChipEntry); ...@@ -239,16 +239,16 @@ HDF_INIT(g_touchXXXXChipEntry);
} }
``` ```
更详细的驱动开发指导,请参考 [TOUCHSCREEN](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/TOUCHSCREEN.md) 更详细的驱动开发指导,请参考 [TOUCHSCREEN](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/TOUCHSCREEN.md)
### 3. WLAN ### 3. WLAN
![tu](./figures/HDF_WIFI.png) Wi-Fi驱动分为两部分,一部分负责管理WLAN设备,另一个部分负责处理WLAN流量。`HDF WLAN`分别为这两部分做了抽象。目前支持SDIO接口的WLAN芯片。
Wi-Fi驱动分为两部分,一部分负责管理WLAN设备,另一个部分负责处理WLAN流量。`HDF WLAN`分别为这两部分做了抽象。目前支持SDIO接口的WLAN芯片 <img src="./figures/HDF_WIFI.png" alt="Wi-Fi结构图" width="800"/>
主要需要实现的接口有: 支持一款芯片的主要工作是实现一个ChipDriver驱动。实现HDF_WLAN_CORE和NetDevice提供的接口。主要需要实现的接口有:
| 接口| 定义头文件| 说明| | 接口| 定义头文件| 说明|
|------|------|------| |------|------|------|
...@@ -259,7 +259,9 @@ Wi-Fi驱动分为两部分,一部分负责管理WLAN设备,另一个部分 ...@@ -259,7 +259,9 @@ Wi-Fi驱动分为两部分,一部分负责管理WLAN设备,另一个部分
建议适配按如下步骤操作: 建议适配按如下步骤操作:
1. 创建HDF驱动 1. 创建HDF驱动
建议将代码放置在`//device/MySoCVendor/peripheral/wifi/chip_name/`
建议将代码放置在`//device/MySoCVendor/peripheral/wifi/chip_name/`
文件模板如下:
```C ```C
static int32_t HdfWlanHisiChipDriverInit(struct HdfDeviceObject *device) { static int32_t HdfWlanHisiChipDriverInit(struct HdfDeviceObject *device) {
...@@ -282,7 +284,7 @@ struct HdfDriverEntry g_hdfXXXChipEntry = { ...@@ -282,7 +284,7 @@ struct HdfDriverEntry g_hdfXXXChipEntry = {
HDF_INIT(g_hdfXXXChipEntry); HDF_INIT(g_hdfXXXChipEntry);
``` ```
在CreateChipDriverFactory中,需要创建一个HdfChipDriverFactory 在CreateChipDriverFactory中需要创建一个HdfChipDriverFactory,接口如下:
| 接口| 说明| | 接口| 说明|
|------|------| |------|------|
|const char *driverName| 当前driverName | |const char *driverName| 当前driverName |
...@@ -306,9 +308,10 @@ HdfChipDriver需要实现的接口有 ...@@ -306,9 +308,10 @@ HdfChipDriver需要实现的接口有
2. 编写配置文件,描述驱动支持的设备 2. 编写配置文件,描述驱动支持的设备
在产品配置目录下创建芯片的配置文件`//vendor/MyProductVendor/MyProduct/config/wifi/wlan_chip_chip_name.hcs`
注意: 路径中的vendor_name、product_name、chip_name请替换成实际名称 在产品配置目录下创建芯片的配置文件`//vendor/MyProductVendor/MyProduct/config/wifi/wlan_chip_chip_name.hcs`
注意: 路径中的vendor_name、product_name、chip_name请替换成实际名称。
模板如下:
```hcs ```hcs
root { root {
wlan_config { wlan_config {
...@@ -330,6 +333,7 @@ root { ...@@ -330,6 +333,7 @@ root {
产品的所有设备信息被定义在文件`//vendor/MyProductVendor/MyProduct/config/device_info/device_info.hcs`中。修改该文件,在名为network的host中,名为device_wlan_chips的device中增加配置。 产品的所有设备信息被定义在文件`//vendor/MyProductVendor/MyProduct/config/device_info/device_info.hcs`中。修改该文件,在名为network的host中,名为device_wlan_chips的device中增加配置。
注意:moduleName 要与触摸屏驱动中的moduleName相同。 注意:moduleName 要与触摸屏驱动中的moduleName相同。
模板如下:
```hcs ```hcs
deviceN :: deviceNode { deviceN :: deviceNode {
...@@ -354,21 +358,21 @@ config DRIVERS_WLAN_XXX ...@@ -354,21 +358,21 @@ config DRIVERS_WLAN_XXX
Answer Y to enable XXX Host driver. Support chip xxx Answer Y to enable XXX Host driver. Support chip xxx
``` ```
接着修改文件 `//drivers/adapter/khdf/linux/model/network/wifi/Kconfig`,在文件末尾加入如下代码将配置菜单加入内核中 接着修改文件 `//drivers/adapter/khdf/linux/model/network/wifi/Kconfig`,在文件末尾加入如下代码将配置菜单加入内核中。如:
``` ```
source "../../../../../device/MySoCVendor/peripheral/Kconfig" source "../../../../../device/MySoCVendor/peripheral/Kconfig"
``` ```
- 创建构建脚本 - 创建构建脚本
`//drivers/adapter/khdf/linux/model/network/wifi/Makefile` 文件末尾增加配置,模板如下 `//drivers/adapter/khdf/linux/model/network/wifi/Makefile` 文件末尾增加配置,模板如下
``` ```
HDF_DEVICE_ROOT := $(HDF_DIR_PREFIX)/../device HDF_DEVICE_ROOT := $(HDF_DIR_PREFIX)/../device
obj-$(CONFIG_DRIVERS_WLAN_XXX) += $(HDF_DEVICE_ROOT)/MySoCVendor/peripheral/build/standard/ obj-$(CONFIG_DRIVERS_WLAN_XXX) += $(HDF_DEVICE_ROOT)/MySoCVendor/peripheral/build/standard/
``` ```
当在内核中开启`DRIVERS_WLAN_XXX`开关时,会调用`//device/MySoCVendor/peripheral/build/standard/`中的makefile 当在内核中开启`DRIVERS_WLAN_XXX`开关时,会调用`//device/MySoCVendor/peripheral/build/standard/`中的makefile
更多详细的开发手册,请参考[WLAN开发](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/WLAN.md) 更多详细的开发手册,请参考[WLAN开发](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/WLAN.md)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册