未验证 提交 60cb1c03 编写于 作者: O openharmony_ci 提交者: Gitee

!2603 修改驱动内源问题

Merge pull request !2603 from liyan/master
# AUDIO
# Audio
## Audio驱动概述
......@@ -303,7 +303,7 @@ static int32_t CodecDriverBind(struct HdfDeviceObject *device)
}
```
CodecDriverInit:获取codecServive名字和私有寄存器配置,并通过AudioRegisterCodec插入到链表中。
CodecDriverInit:获取codecService名字和私有寄存器配置,并通过AudioRegisterCodec插入到链表中。
```c
static int32_t CodecDriverInit(struct HdfDeviceObject *device)
......@@ -370,7 +370,7 @@ vendor/hisilicon/hispark_taurus/hdf_config/
```c
root {
platfrom {
platform {
...
controller_0x120c1001 :: card_controller {
//配置私有数据属性名称,与device_info.hcs中的deviceMatchAttr对应
......@@ -433,7 +433,7 @@ ctrlParamsSeqConfig:控制功能寄存器配置组,其中item与controlsConf
```c
root {
platfrom {
platform {
template codec_controller {
match_attr = "";
serviceName = "";
......@@ -763,7 +763,7 @@ int32_t Tfa9879DaiHwParams(const struct AudioCard *card, const struct AudioPcmHw
(void)card;
...
// 匹配采样率
ret = AcessoryDeviceFrequencyParse(param->rate, &frequency);
ret = AccessoryDeviceFrequencyParse(param->rate, &frequency);
...
// 匹配位宽
ret = Tfa9879FormatParse(param->format, &bitWidth);
......
# LCD<a name="ZH-CN_TOPIC_0000001052857284"></a>
- [概述](#section141575391542)
- [接口说明](#section53793327396)
- [开发步骤](#section12394223125615)
- [开发实例](#section7441155155813)
## 概述<a name="section141575391542"></a>
......@@ -164,9 +160,9 @@ LCD器件驱动示例如下:
#define HORIZONTAL_BACK_PORCH 20
#define HORIZONTAL_FRONT_PORCH 20
#define HORIZONTAL_SYNC_WIDTH 10
#define VERTIACL_BACK_PORCH 14
#define VERTIACL_FRONT_PORCH 16
#define VERTIACL_SYNC_WIDTH 2
#define VERTICAL_BACK_PORCH 14
#define VERTICAL_FRONT_PORCH 16
#define VERTICAL_SYNC_WIDTH 2
#define FRAME_RATE 60
/* Panel Info结构体结构体 */
......@@ -305,9 +301,9 @@ static struct PanelInfo g_panelInfo = {
.hbp = HORIZONTAL_BACK_PORCH, /* horizontal back porch */
.hfp = HORIZONTAL_FRONT_PORCH, /* horizontal front porch */
.hsw = HORIZONTAL_SYNC_WIDTH, /* horizontal sync width */
.vbp = VERTIACL_BACK_PORCH, /* vertiacl back porch */
.vfp = VERTIACL_FRONT_PORCH, /* vertiacl front porch */
.vsw = VERTIACL_SYNC_WIDTH, /* vertiacl sync width */
.vbp = VERTICAL_BACK_PORCH, /* vertical back porch */
.vfp = VERTICAL_FRONT_PORCH, /* vertical front porch */
.vsw = VERTICAL_SYNC_WIDTH, /* vertical sync width */
.frameRate = FRAME_RATE, /* frame rate */
.intfType = MIPI_DSI, /* panel interface type */
.intfSync = OUTPUT_USER, /* output timming type */
......
......@@ -5,7 +5,7 @@
### 功能简介
​ Light驱动模型为上层Light硬件服务层提供稳定的灯控制能力接口,包括获取灯类型、配置点灯模式、配置灯闪烁效果、点灯、熄灯等。基于HDF(Hardware Driver Foundation)驱动框架开发的Light驱动模型,实现跨操作系统迁移,器件差异配置等功能。实现Light驱动“一次开发,多系统部署”的目标。Light驱动模型如[图1](#Light驱动模型图)示:
​ Light驱动模型为上层Light硬件服务层提供稳定的灯控制能力接口,包括获取灯类型、配置点灯模式、配置灯闪烁效果、点灯、熄灯等。基于HDF(Hardware Driver Foundation)驱动框架开发的Light驱动模型,实现跨操作系统迁移,器件差异配置等功能。实现Light驱动“一次开发,多系统部署”的目标。Light驱动模型如图1示:
**图 1** Light驱动模型图
......@@ -13,7 +13,7 @@
### 运作机制
通过介绍Light驱动模型的加载以及运行流程,对模型内部关键组件以及关联组件之间的关系进行了划分,整体加载流程如[图2](#Light驱动运行图)所示:
通过介绍Light驱动模型的加载以及运行流程,对模型内部关键组件以及关联组件之间的关系进行了划分,整体加载流程如图2所示:
**图 2** Light驱动运行图
......@@ -36,7 +36,7 @@ Light驱动模型以标准系统Hi3516DV300为例,介绍整个驱动加载及
### 接口说明
Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模式和闪烁时间的能力。Light硬件服务调用GetLightInfo获取Light设备的基本信息;调用TurnOnLight接口启动配置的闪烁效果。Light驱动模型对外开放的API接口能力,参考[表1](#Light驱动模型对外API接口能力介绍)
Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模式和闪烁时间的能力。Light硬件服务调用GetLightInfo获取Light设备的基本信息;调用TurnOnLight接口启动配置的闪烁效果。Light驱动模型对外开放的API接口能力,参考表1
**表1** Light驱动模型对外API接口能力介绍
......@@ -148,7 +148,7 @@ Light驱动模型支持获取系统中所有灯的信息,动态配置闪烁模
HdfWorkDestroy(&drvData->work);
HdfWorkQueueDestroy(&drvData->workQueue);
(void)OsalMutexDestroy(&drvData->mutex);
(void)OsalMemFree(drvData);
OsalMemFree(drvData);
g_lightDrvData = NULL;
}
```
......
# SENSOR
# Sensor
## 概述
......@@ -545,7 +545,7 @@ void HdfSensorTest::SetUpTestCase()
{
g_sensorDev = NewSensorInterfaceInstance();
if (g_sensorDev == nullptr) {
printf("test sensorHdi get Module instace failed\n\r");
printf("test sensorHdi get Module instance failed\n\r");
}
}
/* 用例资源释放 */
......
# HDMI<a name="1"></a>
# HDMI
- [概述](#section1)
- [功能简介](#section2)
- [基本概念](#section3)
- [运作机制](#section4)
- [约束与限制](#section5)
- [使用指导](#section6)
- [场景介绍](#section7)
- [接口说明](#section8)
- [开发步骤](#section9)
- [使用实例](#section10)
## 概述<a name="section1"></a>
## 概述
### 功能简介<a name="section2"></a>
### 功能简介
- HDMI(High-Definition Multiface Interface),即高清多媒体接口,主要用于DVD、机顶盒等音视频Source到TV、显示器等Sink设备的传输。
- HDMI(High Definition Multimedia Interface),即高清多媒体接口,主要用于DVD、机顶盒等音视频Source到TV、显示器等Sink设备的传输。
- HDMI以主从方式工作,通常有一个Source端和一个Sink端。
- HDMI接口定义了完成HDMI传输的通用方法集合,包括:
......@@ -25,9 +15,9 @@
- HDMI读取EDID:读取Sink端原始的EDID数据
- HDMI热插拔:注册/注销热插拔回调函数
### 基本概念<a name="section3"></a>
### 基本概念
HDMI(High-Definition Multiface Interface)是Hitachi、Panasonic、Philips、SiliconImage、Sony、Thomson、Toshiba共同发布的一款音视频传输协议。传输过程遵循TMDS(Transition Minimized Differential Signaling)协议。
HDMI是Hitachi、Panasonic、Philips、Silicon Image、Sony、Thomson、Toshiba共同发布的一款音视频传输协议。传输过程遵循TMDS(Transition Minimized Differential Signaling)协议。
- TMDS(Transition Minimized Differential signal):过渡调制差分信号,也被称为最小化传输差分信号,用于发送音频、视频及各种辅助数据。
- DDC(Display Data Channel):显示数据通道,发送端与接收端可利用DDC通道得知彼此的发送与接收能力,但HDMI仅需单向获知接收端(显示器)的能力。
......@@ -36,29 +26,30 @@ HDMI(High-Definition Multiface Interface)是Hitachi、Panasonic、Philips、
- HDCP(High-bandwidth Digital Content Protection):即高带宽数字内容保护技术,当用户对高清晰信号进行非法复制时,该技术会进行干扰,降低复制出来的影像的质量,从而对内容进行保护。
- EDID(Extended Display Identification Data):扩展显示标识数据, 通常存储在显示器的固件中,标识供应商信息、EDID版本信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串。
### 运作机制<a name="section4"></a>
### 运作机制
HDMI的Source端提供+5V和GND,用于DDC和CEC通信。通过DDC通道,Source端可以读取Sink端的各项参数,如接受能力等;CEC为可选通道,用于同步Source端与Sink端的控制信号,改善用户体验。TMDS通道有四组差分信号,TMDS Clock Channel为TMDS提供时钟信号,其余三组传输音视频数据及各种辅助数据;HDP为热插拔检测端口,当有Sink端接入时,Source端会通过中断服务程序进行响应。
HDMI物理连接如[图1](#fig1)所示:
**图 1** HDMI物理连线示意图<a name="fig1"></a>
HDMI物理连接如图1所示:
**图 1** HDMI物理连线示意图
![](figures/HDMI物理连线示意图.png "HDMI物理连线示意图")
### 约束与限制<a name="section5"></a>
### 约束与限制
HDMI模块当前仅支持轻量和小型系统内核(LiteOS) 。
## 使用指导<a name="section6"></a>
## 使用指导
### 场景介绍<a name="section7"></a>
### 场景介绍
HDMI具有体积小,传输速率高,传输带宽宽,兼容性好,能同时传输无压缩音视频信号等优点。与传统的全模拟接口相比,HDMI不但增加了设备间接线的便捷性,还提供了一些HDMI特有的智能化功能,可用于小体积设备进行高质量音视频传输的场景。
### 接口说明<a name="section8"></a>
### 接口说明
**表 1** HDMI驱动API接口功能介绍
<a name="table1"></a>
| 接口名 | 描述 |
| ----------------------------- | -------------------------- |
......@@ -76,11 +67,12 @@ HDMI具有体积小,传输速率高,传输带宽宽,兼容性好,能同
| HdmiRegisterHpdCallbackFunc | 注册HDMI热插拔检测回调函数 |
| HdmiUnregisterHpdCallbackFunc | 注销HDMI热插拔检测回调函数 |
### 开发步骤<a name="section9"></a>
### 开发步骤
使用HDMI设备的一般流程如[图2](#fig2)所示。
使用HDMI设备的一般流程如图2所示。
**图 2** HDMI设备使用流程图<a name="fig2"></a>
**图 2** HDMI设备使用流程图
![](figures/HDMI使用流程图.png "HDMI使用流程图")
#### 打开HDMI控制器
......@@ -93,8 +85,6 @@ DevHandle HdmiOpen(int16_t number);
**表 2** HdmiOpen参数和返回值描述
<a name="table2"></a>
| 参数 | 参数描述 |
| ---------- | -------------------- |
| number | HDMI控制器号 |
......@@ -123,8 +113,6 @@ int32_t HdmiRegisterHpdCallbackFunc(DevHandle handle, struct HdmiHpdCallbackInfo
**表 3** HdmiRegisterHpdCallbackFunc参数和返回值描述
<a name="table3"></a>
| 参数 | 参数描述 |
| ---------- | ------------------ |
| handle | HDMI控制器句柄 |
......@@ -172,8 +160,6 @@ int32_t HdmiReadSinkEdid(DevHandle handle, uint8_t *buffer, uint32_t len);
**表 4** HdmiReadSinkEdid参数和返回值描述
<a name="table4"></a>
| 参数 | 参数描述 |
| ---------- | ---------------------- |
| handle | HDMI控制器句柄 |
......@@ -203,7 +189,6 @@ int32_t HdmiSetAudioAttribute(DevHandle handle, struct HdmiAudioAttr *attr);
**表 5** HdmiSetAudioAttribute参数和返回值描述
<a name="table5"></a>
| 参数 | 参数描述 |
| ------ | -------------- |
......@@ -238,7 +223,6 @@ int32_t HdmiSetVideoAttribute(DevHandle handle, struct HdmiVideoAttr *attr);
**表 6** HdmiSetVideoAttribute参数和返回值描述
<a name="table6"></a>
| 参数 | 参数描述 |
| ---------- | -------------- |
......@@ -272,7 +256,6 @@ int32_t HdmiSetHdrAttribute(DevHandle handle, struct HdmiHdrAttr *attr);
**表 7** HdmiSetHdrAttribute参数和返回值描述
<a name="table7"></a>
| 参数 | 参数描述 |
| ---------- | -------------- |
......@@ -307,7 +290,6 @@ int32_t HdmiAvmuteSet(DevHandle handle, bool enable);
**表 8** HdmiAvmuteSet参数和返回值描述
<a name="table8"></a>
| 参数 | 参数描述 |
| ---------- | ----------------- |
......@@ -336,7 +318,6 @@ int32_t HdmiDeepColorSet(DevHandle handle, enum HdmiDeepColor color);
**表 9** HdmiDeepColorSet参数和返回值描述
<a name="table9"></a>
| 参数 | 参数描述 |
| ---------- | -------------- |
......@@ -365,7 +346,6 @@ int32_t HdmiDeepColorGet(DevHandle handle, enum HdmiDeepColor *color);
**表 10** HdmiDeepColorGet参数和返回值描述
<a name="table10"></a>
| 参数 | 参数描述 |
| ---------- | -------------- |
......@@ -395,7 +375,6 @@ int32_t HdmiStart(DevHandle handle);
**表 11** HdmiStart参数和返回值描述
<a name="table11"></a>
| 参数 | 参数描述 |
| ---------- | -------------- |
......@@ -423,7 +402,6 @@ int32_t HdmiStop(DevHandle handle);
**表 12** HdmiStop参数和返回值描述
<a name="table12"></a>
| 参数 | 参数描述 |
| ---------- | -------------- |
......@@ -451,7 +429,6 @@ int32_t HdmiUnregisterHpdCallbackFunc(DevHandle handle);
**表 13** HdmiUnregisterHpdCallbackFunc参数和返回值描述
<a name="table13"></a>
| 参数 | 参数描述 |
| ---------- | -------------- |
......@@ -479,7 +456,6 @@ void HdmiClose(DevHandle handle);
**表 14** HdmiClose参数和返回值描述
<a name="table14"></a>
| 参数 | 参数描述 |
| ---------- | -------------- |
......@@ -491,7 +467,7 @@ void HdmiClose(DevHandle handle);
HdmiClose(hdmiHandle);
```
### 使用实例<a name="section10"></a>
### 使用实例
本例程以操作开发板上的HDMI设备为例,详细展示HDMI接口的完整使用流程。
......
# HDMI
- [概述](#1)
- [功能简介](#2)
- [基本概念](#3)
- [运作机制](#4)
- [约束与限制](#5)
- [开发指导](#6)
- [场景介绍](#7)
- [接口说明](#8)
- [开发步骤](#9)
## 概述 <a name="1"></a>
## 概述
### 功能简介<a name="2"></a>
### 功能简介
HDMI(High-Definition Multiface Interface),即高清多媒体接口,主要用于DVD、机顶盒等音视频source到TV、显示器等sink设备的传输。
HDMI(High Definition Multimedia Interface),即高清多媒体接口,主要用于DVD、机顶盒等音视频source到TV、显示器等Sink设备的传输。
### 基本概念<a name="3"></a>
### 基本概念
HDMI(High-Definition Multiface Interface)是Hitachi、Panasonic、Philips、SiliconImage、Sony、Thomson、Toshiba共同发布的一款音视频传输协议。传输过程遵循TMDS(Transition Minimized Differential Signaling)协议。
HDMI是Hitachi、Panasonic、Philips、Silicon Image、Sony、Thomson、Toshiba共同发布的一款音视频传输协议。传输过程遵循TMDS(Transition Minimized Differential Signaling)协议。
- TMDS(Transition Minimized Differential signal):过渡调制差分信号,也被称为最小化传输差分信号,用于发送音频、视频及各种辅助数据。
......@@ -30,25 +21,25 @@ HDMI(High-Definition Multiface Interface)是Hitachi、Panasonic、Philips、
- HDCP(High-bandwidth Digital Content Protection):即高带宽数字内容保护技术,当用户对高清晰信号进行非法复制时,该技术会进行干扰,降低复制出来的影像的质量,从而对内容进行保护。
### 运作机制<a name="4"></a>
### 运作机制
在HDF框架中,HDMI的接口适配模式采用独立服务模式(如[图1](#fig1)),在这种模式下,每一个设备对象会独立发布一个设备服务来处理外部访问,设备管理器收到API的访问请求之后,通过提取该请求的参数,达到调用实际设备对象的相应内部方法的目的。独立服务模式可以直接借助HDFDeviceManager的服务管理能力,但需要为每个设备单独配置设备节点,增加内存占用率。
在HDF框架中,HDMI的接口适配模式采用独立服务模式(如图1),在这种模式下,每一个设备对象会独立发布一个设备服务来处理外部访问,设备管理器收到API的访问请求之后,通过提取该请求的参数,达到调用实际设备对象的相应内部方法的目的。独立服务模式可以直接借助HDFDeviceManager的服务管理能力,但需要为每个设备单独配置设备节点,增加内存占用率。
**图 1** HDMI独立服务模式<a name="fig1"></a>
**图 1** HDMI独立服务模式
![image1](figures/独立服务模式结构图.png)
### 约束与限制<a name="5"></a>
### 约束与限制
HDMI模块当前仅支持轻量和小型系统内核(LiteOS) 。
## 开发指导 <a name="6"></a>
## 开发指导
### 场景介绍 <a name="7"></a>
### 场景介绍
HDMI具有体积小,传输速率高,传输带宽宽,兼容性好,能同时传输无压缩音视频信号等优点。与传统的全模拟接口相比,HDMI不但增加了设备间接线的便捷性,还提供了一些HDMI特有的智能化功能,可用于小体积设备进行高质量音视频传输的场景。
### 接口说明 <a name="8"></a>
### 接口说明
HdmiCntlrOps定义:
```c
......@@ -103,7 +94,7 @@ struct HdmiCntlrOps {
| tmdsModeSet | **cntlr**: 结构体指针,核心层HDMI控制器;<br />**mode**:TMDS模式 | 无 | 无 | 设置TMDS模式 |
|tmdsConfigSet|**cntlr**: 结构体指针,核心层HDMI控制器;<br />**mode**: TMDS参数|无|HDF_STATUS相关状态|配置TMDS参数|
|infoFrameEnable|**cntlr**: 结构体指针,核心层HDMI控制器;<br />**infoFrameType**: packet类型<br />**enable**: bool,使能/去使能|无|无|使能/去使能infoFrame|
|infoFrameSend|**cntlr**: 结构体指针,核心层HDMI控制器;<br />**infoFrameType**: packet类型<br />**data**: infoFrame数据<br />**len**:数据长度|无|HDF_STATUS相关状态|发送inforFrame|
|infoFrameSend|**cntlr**: 结构体指针,核心层HDMI控制器;<br />**infoFrameType**: packet类型<br />**data**: infoFrame数据<br />**len**:数据长度|无|HDF_STATUS相关状态|发送infoFrame|
|cecMsgSend|**cntlr**: 结构体指针,核心层HDMI控制器;<br />**msg**: CEC消息|无|HDF_STATUS相关状态|发送CEC消息|
|audioPathEnable|**cntlr**: 结构体指针,核心层HDMI控制器;<br />**enable**: bool,使能/去使能|无|无|使能/去使能audio通路|
|audioPathSet|**cntlr**: 结构体指针,核心层HDMI控制器;<br />**config**: 配置信息|无|无|设置audio通路配置信息|
......@@ -128,7 +119,7 @@ struct HdmiCntlrOps {
|hdrTimerSet|**cntlr**: 结构体指针,核心层HDMI控制器;<br />**config**: timer配置信息|无|无|设置HDR相关的timer配置信息|
### 开发步骤 <a name="9"></a>
### 开发步骤
HDMI模块适配的三个环节是配置属性文件,实例化驱动入口以及实例化HDMI控制器对象。
......
# IDE<a name="ZH-CN_TOPIC_0000001128361880"></a>
# IDE
- [获取设备开发工具(HUAWEI DevEco Device Tool)](#section2452141120244)
- [获取应用开发工具(HUAWEI DevEco Studio)](#section0904101019258)
## 获取设备开发工具(HUAWEI DevEco Device Tool)<a name="section2452141120244"></a>
## 获取设备开发工具(HUAWEI DevEco Device Tool)
HUAWEI DevEco Device Tool是OpenHarmony面向智能设备开发者提供的一站式集成开发环境,支持OpenHarmony的组件按需定制,支持代码编辑、编译、烧录、调试等功能,支持C/C++语言,以插件的形式部署在Visual Studio Code上。具体可参见[获取工具](https://device.harmonyos.com/cn/ide)[工具使用指南](https://device.harmonyos.com/cn/docs/ide/user-guides/service_introduction-0000001050166905)**。**
HUAWEI DevEco Device Tool是OpenHarmony面向智能设备开发者提供的一站式集成开发环境,支持OpenHarmony的组件按需定制,支持代码编辑、编译、烧录、调试等功能,支持C/C++语言,以插件的形式部署在Visual Studio Code上。具体可参见[获取工具](https://device.harmonyos.com/cn/ide)[工具使用指南](https://device.harmonyos.com/cn/docs/ide/user-guides/service_introduction-0000001050166905)
Huawei DevEco Device Tool支持 OpenHarmony设备开发的演进路标如下:
![](figure/evolution-roadmap.png)
## 获取应用开发工具(HUAWEI DevEco Studio)<a name="section0904101019258"></a>
HUAWEI DevEco Studio(以下简称DevEco Studio)是面向华为终端全场景多设备的一站式集成开发环境(IDE),为开发者提供工程模板创建、开发、编译、调试、发布等E2E的OpenHarmony应用开发服务。通过使用DevEco Studio,开发者可以更高效的开发具备OpenHarmony分布式能力的应用,进而提升创新效率。具体可参见[获取工具](https://developer.harmonyos.com/cn/develop/deveco-studio)[工具使用指南](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/tools_overview-0000001053582387)
## 获取应用开发工具(HUAWEI DevEco Studio)
HUAWEI DevEco Studio(以下简称DevEco Studio)是面向华为终端全场景多设备的一站式集成开发环境(IDE),为开发者提供工程模板创建、开发、编译、调试、发布等E2E的OpenHarmony应用开发服务。通过使用DevEco Studio,开发者可以更高效的开发具备OpenHarmony分布式能力的应用,进而提升创新效率。具体可参见[获取工具](https://developer.harmonyos.com/cn/develop/deveco-studio)[工具使用指南](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-deveco-studio-overview-0000001263280421)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册