当前位置: 首页 > news >正文

怎样做网站首页微信小程序网站建设推广

怎样做网站首页,微信小程序网站建设推广,网站运营管理的内容有哪些,建筑设计公司起名大全CSI#xff08;Camera Serial Interface#xff09;是由MIPI联盟下Camera工作组指定的接口标准。CSI-2是MIPI CSI第二版#xff0c;主要由应用层、协议层、物理层组成#xff0c;最大支持4通道数据传输、单线传输速度高达1Gb/s。 物理层支持HS#xff08;High Speed…CSICamera Serial Interface是由MIPI联盟下Camera工作组指定的接口标准。CSI-2是MIPI CSI第二版主要由应用层、协议层、物理层组成最大支持4通道数据传输、单线传输速度高达1Gb/s。 物理层支持HSHigh Speed和LPLow Speed两种工作模式。HS模式下采用低压差分信号功耗较大但数据传输速率可以很高数据速率为80M1GbpsLP模式下采用单端信号数据速率很低10Mbps但是相应的功耗也很低。 两种模式的结合保证了MIPI总线在需要传输大量数据如图像时可以高速传输而在不需要传输大数据量时又能够减少功耗。 图1显示了简化的CSI接口。D-PHY采用1对源同步的差分时钟和14对差分数据线来进行数据传输。数据传输采用DDR方式即在时钟的上下边沿都有数据传输。 图 1 CSI发送、接收接口 MIPI CSI标准分为应用层、协议层与物理层协议层又细分为像素字节转换层、低级协议层、Lane管理层。 物理层PHY Layer PHY层指定了传输媒介在电气层面从串行bit流中捕捉“0”与“1”同时生成SoT与EoT等信号。 协议层Protocol Layer 协议层由三个子层组成每个子层有不同的职责。CSI-2协议能够在host侧处理器上用一个单独的接口处理多条数据流。协议层规定了多条数据流该如何标记和交织起来以便每条数据流能够被正确地恢复出来。 像素字节转换层Pixel/Byte Packing/Unpacking LayerCSI-2规范支持多种不同像素格式的图像应用。在发送方中本层在发送数据到Low Level Protocol层之前将来自应用层的像素封包为字节数据。在接收方中本层在发送数据到应用层之前将来自Low Level Protocol层的字节数据解包为像素。8位的像素数据在本层中传输时保持不变。 低级协议层Low Level Protocol LLP主要包含了在SoT和EoT事件之间的bit和byte级别的同步方法以及和下一层传递数据的方法。LLP最小数据粒度是1个字节。LLP也包含了一个字节内的bit值解析即Endian(大小端里的Endian的意思)的处理。 Lane管理层Lane Management CSI-2的Lane是可扩展的。具体的数据Lane的数量规范并没有给出限制具体根据应用的带宽需求而定。发送侧分发distributor功能来自出口方向数据流的字节到1条或多条Lane上。接收侧则从一条或多条Lane中收集字节并合并merge功能到一个数据流上复原出原始流的字节顺序。对于C-PHY物理层来说本层专门分发字节对16 bits到数据Lane或从数据Lane中收集字节对。基于每Lane的扰码功能是可选特性。 协议层的数据组织形式是包packet。接口的发送侧会增加包头header和错误校验error-checking信息到即将被LLP发送的数据上。接收侧在LLP将包头剥掉包头会被接收器中对应的逻辑所解析。错误校验信息可以用来做入口数据的完整性检查。 应用层Application Layer 本层描述了更高层级的应用对于数据中的数据的处理规范并不涵盖应用层。CSI-2规范只给出了像素值和字节的映射关系。 运作机制 MIPI CSI模块各分层的作用为 接口层提供打开设备、写入数据和关闭设备的接口。 核心层主要提供绑定设备、初始化设备以及释放设备的能力。 适配层实现其它具体的功能。 说明 核心层可以调用接口层的函数核心层通过钩子函数调用适配层函数从而适配层可以间接的调用接口层函数但是不可逆转接口层调用适配层函数。 图 2 CSI无服务模式结构图 开发指导 场景介绍 MIPI CSI仅是一个软件层面的概念主要工作是CSI资源管理。开发者可以通过使用提供的CSI操作接口实现对CSI资源管理。当驱动开发者需要将MIPI CSI设备适配到OpenHarmony时需要进行MIPI CSI驱动适配下文将介绍如何进行MIPI CSI驱动适配。 接口说明 为了保证上层在调用MIPI CSI接口时能够正确的操作硬件核心层在//drivers/hdf_core/framework/support/platform/include/mipi/mipi_csi_core.h中定义了以下钩子函数。驱动适配者需要在适配层实现这些函数的具体功能并与这些钩子函数挂接从而完成接口层与核心层的交互。 MipiCsiCntlrMethod定义 struct MipiCsiCntlrMethod {int32_t (*setComboDevAttr)(struct MipiCsiCntlr *cntlr, ComboDevAttr *pAttr);int32_t (*setPhyCmvmode)(struct MipiCsiCntlr *cntlr, uint8_t devno, PhyCmvMode cmvMode);int32_t (*setExtDataType)(struct MipiCsiCntlr *cntlr, ExtDataType* dataType);int32_t (*setHsMode)(struct MipiCsiCntlr *cntlr, LaneDivideMode laneDivideMode);int32_t (*enableClock)(struct MipiCsiCntlr *cntlr, uint8_t comboDev);int32_t (*disableClock)(struct MipiCsiCntlr *cntlr, uint8_t comboDev);int32_t (*resetRx)(struct MipiCsiCntlr *cntlr, uint8_t comboDev);int32_t (*unresetRx)(struct MipiCsiCntlr *cntlr, uint8_t comboDev);int32_t (*enableSensorClock)(struct MipiCsiCntlr *cntlr, uint8_t snsClkSource);int32_t (*disableSensorClock)(struct MipiCsiCntlr *cntlr, uint8_t snsClkSource);int32_t (*resetSensor)(struct MipiCsiCntlr *cntlr, uint8_t snsResetSource);int32_t (*unresetSensor)(struct MipiCsiCntlr *cntlr, uint8_t snsResetSource); }; 表 1 MipiCsiCntlrMethod成员的钩子函数功能说明 成员函数入参出参返回状态功能setComboDevAttrcntlr结构体指针MipiCsi控制器 ;pAttr结构体指针MIPI CSI相应配置结构体指针无HDF_STATUS相关状态写入MIPI CSI配置setPhyCmvmodecntlr结构体指针MipiCsi控制器 ;devnouint8_t类型设备编号;cmvMode枚举类型共模电压模式参数无HDF_STATUS相关状态设置共模电压模式setExtDataTypecntlr结构体指针MipiCsi控制器 ;dataType结构体指针定义YUV和原始数据格式以及位深度无HDF_STATUS相关状态设置YUV和RAW数据格式和位深setHsModecntlr结构体指针MipiCsi控制器 ;laneDivideMode枚举类型Lane模式参数无HDF_STATUS相关状态设置MIPI RX的Lane分布enableClockcntlr结构体指针MipiCsi控制器 ;comboDevuint8_t类型通路序号无HDF_STATUS相关状态使能MIPI的时钟disableClockcntlr结构体指针MipiCsi控制器 ;comboDevuint8_t类型通路序号无HDF_STATUS相关状态关闭MIPI的时钟resetRxcntlr结构体指针MipiCsi控制器 ;comboDevuint8_t类型通路序号无HDF_STATUS相关状态复位MIPI RXunresetRxcntlr结构体指针MipiCsi控制器 ;comboDevuint8_t类型通路序号无HDF_STATUS相关状态撤销复位MIPI RXenableSensorClockcntlr结构体指针MipiCsi控制器 ;snsClkSourceuint8_t类型传感器的时钟信号线号无HDF_STATUS相关状态使能MIPI上的Sensor时钟disableSensorClockcntlr结构体指针MipiCsi控制器 ;snsClkSourceuint8_t类型传感器的时钟信号线号无HDF_STATUS相关状态关闭MIPI上的Sensor时钟resetSensorcntlr结构体指针MipiCsi控制器 ;snsClkSourceuint8_t类型传感器的时钟信号线号无HDF_STATUS相关状态复位SensorunresetSensorcntlr结构体指针MipiCsi控制器 ;snsClkSourceuint8_t类型传感器的时钟信号线号无HDF_STATUS相关状态撤销复位Sensor 开发步骤 MIPI CSI模块适配包含以下四个步骤 实例化驱动入口 实例化HdfDriverEntry结构体成员。 调用HDF_INIT将HdfDriverEntry实例化对象注册到HDF框架中。 配置属性文件 在device_info.hcs文件中添加deviceNode描述。 【可选】添加mipi_csi_config.hcs器件属性文件。 实例化MIPI CSI控制器对象 初始化MipiCsiCntlr成员。 实例化MipiCsiCntlr成员MipiCsiCntlrMethod。 说明 实例化MipiCsiCntlr成员MipiCsiCntlrMethod其定义和成员说明见接口说明。 驱动调试 【可选】针对新增驱动程序建议验证驱动基本功能例如挂载后的信息反馈数据传输的成功与否等。 开发实例 下方将基于Hi3516DV300开发板以//device/soc/hisilicon/common/platform/mipi_csi/mipi_csi_hi35xx.c驱动为示例展示需要厂商提供哪些内容来完整实现设备功能。 实例化驱动入口 驱动入口必须为HdfDriverEntry在hdf_device_desc.h中定义类型的全局变量且moduleName要和device_info.hcs中保持一致。HdfDriverEntry结构体的函数指针成员需要被驱动适配者操作函数填充HDF框架会将所有加载的驱动的HdfDriverEntry对象首地址汇总形成一个类似数组方便调用。 一般在加载驱动时HDF框架会先调用Bind函数再调用Init函数加载该驱动。当Init调用异常时HDF框架会调用Release释放驱动资源并退出。 MIPI CSI驱动入口参考 struct HdfDriverEntry g_mipiCsiDriverEntry {.moduleVersion 1,.Init Hi35xxMipiCsiInit, // 挂接MIPI CSI模块Init实例化.Release Hi35xxMipiCsiRelease, // 挂接MIPI CSI模块Release实例化.moduleName HDF_MIPI_RX, // 【必要且与HCS文件中里面的moduleName匹配】 }; HDF_INIT(g_mipiCsiDriverEntry); // 调用HDF_INIT将驱动入口注册到HDF框架中 配置属性文件 一般来说驱动开发首先需要新增mipi_csi_config.hcs配置文件在其中配置器件属性并在//vendor/hisilicon/hispark_taurus/hdf_config/device_info/device_info.hcs文件中添加deviceNode描述。deviceNode与配置属性的对应关系是依靠deviceMatchAttr字段来完成的。只有当deviceNode下的deviceMatchAttr字段与配置属性文件中的match_attr字段完全相同时驱动才能正确读取配置数据。器件属性值与核心层MipiCsiCntlr成员的默认值或限制范围有密切关系deviceNode信息与驱动入口注册相关。 说明 本例中MIPI控制器配置属性在源文件中没有新增配置文件驱动适配者如有需要可在device_info.hcs文件的deviceNode增加deviceMatchAttr字段同时新增mipi_csi_config.hcs文件并使其match_attr字段与之相同。 无服务模式device_info.hcs文件中设备节点也代表着一个设备对象如果存在多个设备对象则按需添加注意服务名与驱动私有数据匹配的关键字名称必须唯一。其中各项参数如表2所示 表 2 device_info.hcs节点参数说明 成员名值policy驱动服务发布的策略MIPI CSI控制器具体配置为0表示驱动不需要发布服务priority驱动启动优先级0-200值越大优先级越低。MIPI CSI控制器具体配置为160permission驱动创建设备节点权限MIPI CSI控制器具体配置为0664moduleName驱动名称MIPI CSI控制器固定为HDF_MIPI_RXserviceName驱动对外发布服务的名称MIPI CSI控制器服务名设置为HDF_MIPI_RXdeviceMatchAttr驱动私有数据匹配的关键字MIPI CSI控制器没有使用可忽略device_info.hcs配置参考 root {device_info {match_attr hdf_manager;platform :: host {hostName platform_host;priority 50;device_mipi_csi:: device {device0 :: deviceNode {policy 0;priority 160;permission 0644;moduleName HDF_MIPI_RX; // 【必要】用于指定驱动名称需要与期望的驱动Entry中的moduleName一致。serviceName HDF_MIPI_RX; // 【必要且唯一】驱动对外发布服务的名称}}}} } 实例化MIPI CSI控制器对象 完成驱动入口注册之后最后一步就是以核心层MipiCsiCntlr对象的初始化为核心实现HdfDriverEntry成员函数BindInitRelease。 MipiCsiCntlr对象的初始化包括驱动适配者自定义结构体用于传递参数和数据和实例化MipiCsiCntlr成员MipiCsiCntlrMethod让用户可以通过接口来调用驱动底层函数。 自定义结构体参考 从驱动的角度看自定义结构体是参数和数据的载体一般来说config文件中的数值也会用来初始化结构体成员本例的mipicsi器件属性在源文件中故基本成员结构与MipiCsiCntlr无太大差异。 typedef struct {// 数据类型8/10/12/14/16位DataType inputDataType;// MIPI波分复用模式MipiWdrMode wdrMode;// laneId: -1 - 禁用 short laneId[MIPI_LANE_NUM];union {// 用于 HI_MIPI_WDR_MODE_DTshort dataType[WDR_VC_NUM];}; } MipiDevAttr;typedef struct {// 设备号uint8_t devno;// 输入模式: MIPI/LVDS/SUBLVDS/HISPI/DCInputMode inputMode;MipiDataRate dataRate;// MIPI Rx设备裁剪区域与原始传感器输入图像大小相对应ImgRect imgRect;union {MipiDevAttr mipiAttr;LvdsDevAttr lvdsAttr;}; } ComboDevAttr;// MipiCsiCntlr是核心层控制器结构体其中的成员在Init函数中会被赋值。 struct MipiCsiCntlr {// 当驱动程序绑定到HDF框架时将发送此控制器提供的服务。struct IDeviceIoService service;// 当驱动程序绑定到HDF框架时将传入设备端指针。struct HdfDeviceObject *device;// 设备号unsigned int devNo;// 控制器提供的所有接口struct MipiCsiCntlrMethod *ops;// 对于控制器调试的所有接口如果未实现驱动程序则需要null。struct MipiCsiCntlrDebugMethod *debugs;// 控制器上下文参数变量MipiDevCtx ctx;// 访问控制器上下文参数变量时锁定OsalSpinlock ctxLock;// 操作控制器时锁定方法struct OsalMutex lock;// 匿名数据指针用于存储csi设备结构。void *priv; }; MipiCsiCntlr成员钩子函数结构体MipiCsiCntlrMethod的实例化 说明 其他成员在Init函数中初始化。 static struct MipiCsiCntlrMethod g_method {.setComboDevAttr Hi35xxSetComboDevAttr,.setPhyCmvmode Hi35xxSetPhyCmvmode,.setExtDataType Hi35xxSetExtDataType,.setHsMode Hi35xxSetHsMode,.enableClock Hi35xxEnableClock,.disableClock Hi35xxDisableClock,.resetRx Hi35xxResetRx,.unresetRx Hi35xxUnresetRx,.enableSensorClock Hi35xxEnableSensorClock,.disableSensorClock Hi35xxDisableSensorClock,.resetSensor Hi35xxResetSensor,.unresetSensor Hi35xxUnresetSensor }; Init函数开发参考 入参 HdfDeviceObject是整个驱动对外暴露的接口参数具备HCS配置文件的信息。 返回值 HDF_STATUS相关状态 表3为部分展示如需使用其他状态可参考//drivers/hdf_core/interfaces/inner_api/utils/hdf_base.h中HDF_STATUS的定义。 表 3 HDF_STATUS相关状态说明 状态(值)问题描述HDF_ERR_INVALID_OBJECT控制器对象非法HDF_ERR_MALLOC_FAIL内存分配失败HDF_ERR_IOI/O 错误HDF_SUCCESS初始化成功HDF_FAILURE初始化失败函数说明 MipiCsiCntlrMethod的实例化对象的挂载调用MipiCsiRegisterCntlr以及其他驱动适配者自定义初始化操作。 static int32_t Hi35xxMipiCsiInit(struct HdfDeviceObject *device) {int32_t ret;HDF_LOGI(%s: enter!, __func__);g_mipiCsi.priv NULL; // g_mipiTx是定义的全局变量// static struct MipiCsiCntlr g_mipiCsi {// .devNo 0// };g_mipiCsi.ops g_method; // MipiCsiCntlrMethod的实例化对象的挂载 #ifdef CONFIG_HI_PROC_SHOW_SUPPORTg_mipiCsi.debugs g_debugMethod; #endifret MipiCsiRegisterCntlr(g_mipiCsi, device); // 【必要】调用核心层函数和g_mipiTx初始化核心层全局变量if (ret ! HDF_SUCCESS) {HDF_LOGE(%s: [MipiCsiRegisterCntlr] failed!, __func__);return ret;}ret MipiRxDrvInit(); // 【必要】驱动适配者对设备的初始化形式不限。if (ret ! HDF_SUCCESS) {HDF_LOGE(%s: [MipiRxDrvInit] failed., __func__);return ret;} #ifdef MIPICSI_VFS_SUPPORTret MipiCsiDevModuleInit(g_mipiCsi.devNo);if (ret ! HDF_SUCCESS) {HDF_LOGE(%s: [MipiCsiDevModuleInit] failed!, __func__);return ret;} #endifOsalSpinInit(g_mipiCsi.ctxLock);HDF_LOGI(%s: load mipi csi driver success!, __func__);return ret; }// mipi_csi_core.c核心层 int32_t MipiCsiRegisterCntlr(struct MipiCsiCntlr *cntlr, struct HdfDeviceObject *device) {......// 定义的全局变量static struct MipiCsiHandle g_mipiCsihandle[MAX_CNTLR_CNT];if (g_mipiCsihandle[cntlr-devNo].cntlr NULL) {(void)OsalMutexInit(g_mipiCsihandle[cntlr-devNo].lock);(void)OsalMutexInit((cntlr-lock));g_mipiCsihandle[cntlr-devNo].cntlr cntlr; // 初始化MipiCsiHandle成员g_mipiCsihandle[cntlr-devNo].priv NULL;cntlr-device device; // 使HdfDeviceObject与MipiCsiHandle可以相互转化的前提device-service (cntlr-service); // 使HdfDeviceObject与MipiCsiHandle可以相互转化的前提cntlr-priv NULL;HDF_LOGI(%s: success., __func__);return HDF_SUCCESS;}HDF_LOGE(%s: cntlr already exists., __func__);return HDF_FAILURE; } Release函数开发参考 入参 HdfDeviceObject是整个驱动对外暴露的接口参数具备HCS配置文件的信息。 返回值 无 函数说明 该函数需要在驱动入口结构体中赋值给Release接口当HDF框架调用Init函数初始化驱动失败时可以调用Release释放驱动资源该函数中需包含释放内存和删除控制器等操作。 说明 所有强制转换获取相应对象的操作前提是在Init函数中具备对应赋值的操作。 static void Hi35xxMipiCsiRelease(struct HdfDeviceObject *device) {struct MipiCsiCntlr *cntlr NULL;......cntlr MipiCsiCntlrFromDevice(device); // 这里有HdfDeviceObject到MipiCsiCntlr的强制转化// return (device NULL) ? NULL : (struct MipiCsiCntlr *)device-service;......OsalSpinDestroy(cntlr-ctxLock); #ifdef MIPICSI_VFS_SUPPORTMipiCsiDevModuleExit(cntlr-devNo); #endifMipiRxDrvExit(); // 【必要】对设备所占资源的释放MipiCsiUnregisterCntlr(g_mipiCsi); // 空函数g_mipiCsi.priv NULL;HDF_LOGI(%s: unload mipi csi driver success!, __func__); } 驱动调试 【可选】针对新增驱动程序建议验证驱动基本功能例如挂载后的信息反馈。 最后 有很多小伙伴不知道学习哪些鸿蒙开发技术不知道需要重点掌握哪些鸿蒙应用开发知识点而且学习时频繁踩坑最终浪费大量时间。所以有一份实用的鸿蒙HarmonyOS NEXT资料用来跟着学习是非常有必要的。  这份鸿蒙HarmonyOS NEXT资料包含了鸿蒙开发必掌握的核心知识要点内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等鸿蒙HarmonyOS NEXT技术知识点。 希望这一份鸿蒙学习资料能够给大家带来帮助有需要的小伙伴自行领取限时开源先到先得~无套路领取 获取这份完整版高清学习路线请点击→纯血版全套鸿蒙HarmonyOS学习资料 鸿蒙HarmonyOS NEXT最新学习路线 HarmonOS基础技能 HarmonOS就业必备技能  HarmonOS多媒体技术 鸿蒙NaPi组件进阶 HarmonOS高级技能 初识HarmonOS内核 实战就业级设备开发 有了路线图怎么能没有学习资料呢小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙OpenHarmony 学习手册共计1236页与鸿蒙OpenHarmony 开发入门教学视频内容包含ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。 获取以上完整版高清学习路线请点击→纯血版全套鸿蒙HarmonyOS学习资料 《鸿蒙 (OpenHarmony)开发入门教学视频》 《鸿蒙生态应用开发V2.0白皮书》 《鸿蒙 (OpenHarmony)开发基础到实战手册》 OpenHarmony北向、南向开发环境搭建 《鸿蒙开发基础》 ArkTS语言安装DevEco Studio运用你的第一个ArkTS应用ArkUI声明式UI开发.…… 《鸿蒙开发进阶》 Stage模型入门网络管理数据管理电话服务分布式应用开发通知与窗口管理多媒体技术安全技能任务管理WebGL国际化开发应用测试DFX面向未来设计鸿蒙系统移植和裁剪定制…… 《鸿蒙进阶实战》 ArkTS实践UIAbility应用网络案例…… 获取以上完整鸿蒙HarmonyOS学习资料请点击→纯血版全套鸿蒙HarmonyOS学习资料 总结 总的来说华为鸿蒙不再兼容安卓对中年程序员来说是一个挑战也是一个机会。只有积极应对变化不断学习和提升自己他们才能在这个变革的时代中立于不败之地。
http://www.hkea.cn/news/14445988/

相关文章:

  • 哪个网站是专门做兼职的密云网站建设
  • 承德兴隆建设局网站宁波seo推荐推广平台
  • wap企业网站设计工作室韵味的名字
  • 网站开发东莞医院网站备案流程
  • 快三彩票网站开发网络营销属于哪个专业
  • wordpress回收站位置郑州建网站费用
  • 网站建设标语文案做网站网站
  • 网站设计与制作是做什么工作304hk 爱站网
  • 哈尔滨市建设网站wordpress博客如何防止另存为
  • 生成图片链接的网站无锡建站模板系统
  • 专业电商网站建设哪家好乐清英文网站建设
  • 售后服务网站长沙法律咨询网站设计开发
  • 郑州网站推广专员网站备案名称能重复吗
  • 新手建设什么网站好wordpress管理员账号
  • 珠海市网站建设分站怎么样网站配色与布局
  • 贺州招聘网站建设旅游网站设计风格
  • 网站建设推广合同书平面设计发展前景
  • 元素网站手机百度极速版app下载安装
  • 辽阳专业建设网站茶叶公司网站模板
  • 江苏初中课程基地建设网站泊头做网站价格
  • 网站建设微信商城运营人才网站开发
  • 网页设计模板代码网站西安官网seo收费
  • 网站上那些轮播图视频怎么做的总结格式模板
  • 黄村做网站的公司那个网站可以做域名跳转的
  • wordpress自定义页面编码seo推广小分享
  • 台州建设局招标投标网站网站怎么黑
  • 影视自助建站官网淘宝客怎么做网站推广
  • 苏州建网站必去苏州聚尚网络公司做网站 分录
  • 手机页面网站模板怎么卖江门网站建设哪家快
  • xunsearch做搜索网站搜索案例的网站有哪些