MTK平台camera(摄像头)调试教程_第1页
MTK平台camera(摄像头)调试教程_第2页
MTK平台camera(摄像头)调试教程_第3页
MTK平台camera(摄像头)调试教程_第4页
MTK平台camera(摄像头)调试教程_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——MTK平台camera(摄像头)调试教程

Contents

一、二、三、四、五、1、2、

手机CAMERA的物理结构:-4-CAMERA的成像原理:-4-CAMERA常见的数据输出格式:-5-阅读CAMERA的规格书(以TRULY模组OV5647_RAW为例):-6-CAMERA的硬件原理图及引脚-7-电源部分:-7-SENSORINPUT部分:-7-

-7--7-

3、SENSOROUTPUT部分:4、I2C部分:SCL,I2C时钟信号线和SDA,I2C数据信号线。六、

MTK平台CAMERA驱动架构:-8-

七、MTK平台CAMERA相关代码文件(以下代码均为MTK6575平台):-9-1、2、3、4、5、6、八、

A)B)C)

CAMERASENSOR驱动相关文件-9-SENSORID和一些枚举类型的定义-9-SENSOR供电-9-KERNELSPACE的SENSORLIST,IMGSENSOR模块注册-9-USERSPACE的SENSORLIST,向用户空间提供支持的SENSORLIST-10-SENSOR效果调整的接口-10-CAMERA模块驱动、设备与总线结构:-11-驱动的注册:-11-设备的注册:-11-总线的匹配:-12-CAMERA驱动工作流程:-13-CAMERA驱动添加、调试流程:-17-

九、十、

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-3-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

一、手机Camera的物理结构:

Sensor:图象传感器

FPC:FlexiblePrintedCircuit可挠性印刷电路板

IR:红外滤波片

Holder:基座

Lens:镜头

二、Camera的成像原理:

景物通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为模

拟的电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片

(DSP)中加工处理,再通过IO接口传输到CPU中处理,通过LCD就可以看到图像了。

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-4-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

图像传感器(SENSOR)是一种半导体芯片,其表面包含有几十万到几百万的光电二极

管。光电二极管受到光照射时,就会产生电荷。目前的SENSOR类型有两种:

CCD(ChargeCoupleDevice),电荷耦合器件,它是目前高像素类sensor中比较成熟

的成像器件,是以一行为单位的电流信号。

CMOS(ComplementaryMetalOxideSemiconductor),互补金属氧化物半导体。CMOS

的信号是以点为单位的电荷信号,更为敏感,速度也更快,更为省电。

ISP的性能是决定影像流畅的关键,JPEGencoder的性能也是关键指标之一。而JPEG

encoder又分为硬件JPEG压缩方式,和软件RGB压缩方式。

DSP控制芯片的作用是:将感光芯片获取的数据及时快速地传到baseband中并刷新感

光芯片,因此控制芯片的好坏,直接决定画面品质(譬如色调饱和度、明了度)与流畅度。

三、Camera常见的数据输出格式:

常见的数据输出格式有:Rawdata格式、YUV格式、RGB格式。

RGB格式:采用这种编码方法,每种颜色都可用三个变量来表示红色、绿色以及蓝色

的强度。每一个像素有三原色R红色、G绿色、B蓝色组成。

YUV格式:其中“Y〞表示敞亮度(Luminance或Luma),就是灰阶值;而“U〞和“V〞表示色度

(Chrominance或Chroma),是描述影像色调及饱和度,用于指定像素的颜色。

RAWDATA格式:是CCD或CMOS在将光信号转换为电信号时的电平高低的原始记录,单纯地将没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理

而得到的。

支持YUV/RGB格式的模组,一般会在模组上集成ISP(ImageSingleProcessor),经过

A/D转换过的原始数据经过ISP处理生成YUV标准格式传到BB。一般来说,这种设计适用于低像素Camera的要求,会在主板上省去一个DSP,可降低成本。在调试过程中,

YUV/RGB格式的摄像头,其所有参数都可在kernel层通过寄放器来控制。调试一般由sensor

的原厂支持。

支持RawData格式的模组,由于感光区域的需求,不会再模组内集成ISP以最大程度的增大感光区域的面积,提高照片质量。模组把原始的数字信号传给BB上的DSP进行处理,MTK自带的DSP一般包含ISP、JPEGencoder、和DSP控制芯片。在调试的时候图像

的效果需要MTK在HAL层的参数进行支持。

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-5-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

四、阅读Camera的规格书(以Truly模组OV5647_Raw为例):

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-6-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

五、Camera的硬件原理图及引脚

(以W19S项目MainCameraOV5647为例):

从上面可看出,连接Camera的30根Pin脚可大致分为以下几类:

1、电源部分:

a)VCAMD就是DVDD数字供电,主要给ISP供电,由于RAWDATA格

式的sensor其ISP是在BB端,所以将其引脚将其NC。从上面的规格

书上可以看出DVDD是内部BB端供电。模组已将其NC掉了;b)VCAM_IO就是VDDIO数字IO电源主要给I2C部分供电;c)VCAMA就是AVDD模拟供电,主要给感光区和ADC部分供电;d)VCAM_AF是对Camera自动对焦马达的供电。2、SensorInput部分:

a)Reset信号,用于复位、初始化。

b)Standby/PowerDown信号,用于进入待机模式,降低功耗。c)Mclk,即MasterClock信号,是由BB端提供。3、SensorOutPut部分:

a)Pclk,即PixelClock信号,由MCLK分频得到,作为外部时钟控制图像

传输帧率

b)HSYNC,行同步信号,其上升沿表示新一列行图像数据的开始。c)VSYNC,帧同步信号,其下降沿表示新的一帧图片的开始。d)D0-D9一共10根数据线(8/10根等);

4、I2C部分:SCL,I2C时钟信号线和SDA,I2C数据信号线。

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-7-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

六、MTK平台Camera驱动架构:

上图的架构相信大家都有了一定的了解,android将系统大致分为应用层、库文件和硬

件抽象层、Linux内核三层。在底层的内核空间,Camera的driver将其驱动起来以后,将硬件驱动的接口交给硬件抽象层,android上层的Camera应用程序在android实时系统中的虚拟机中,加载android留给Camera公用的一些库文件,调用硬件抽象层的接口来控制Camera

硬件来实现功能。当然,假使是Raw模式的Camera,还需要在硬件抽象层调用一些参数来

控制Camera的效果。

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-8-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

七、MTK平台Camera相关代码文件(以下代码均为MTK6575平台):

1、CameraSensor驱动相关文件

2、SensorID和一些枚举类型的定义

3、Sensor供电

4、KernelSpace的SensorList,imgsensor模块注册

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-9-

CameraDriveranalysisintheplatformofMTK

5、UserSpace的SensorList,向用户空间提供支持的SensorList

PreliminaryInformation

GhongConfidential

6、Sensor效果调整的接口

Revision0.1-Feb.142023

?2023Ghonginc.

-10-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

八、Camera模块驱动、设备与总线结构:

在(\\custom\\common\\kernel\\imgsensor\\src\\Kd_sensorlist.c)CAMERA_HW_i2C_init这个函数里通过Platform_driver_register(&g_stCAMERA_HW_Driver)把Camera模块驱动注册到Platform总线上。而g_stCAMERA_HW_Driver是对结构体Platform_driver这个结构体的

一般在Linux设备驱动模型中,我们只需要关心总线、设备、驱动这三个实体。总线会充当红娘对加载于其上的设备与驱动进行配对,对于Camera模块也不例外,下面从总线、

设备、驱动的角度来分析Camera模块驱动的注册、匹配与加载过程。

a)驱动的注册:

填充。

(Kernel\\include\\linux\\Platform_device.h)

Platform_driver这个结构体包含Probe()、Remove()等函数来完成驱动的填充。

b)设备的注册:

对platform_device的定义寻常在BSP的板级文件:

(kernel\\arch\\sh\\boards\\mach-ap325rxa\\Setup.c)中实现,在板级文件中,将platform_device归纳为一个数组,最终通过platform_add_device()函数统一注册:

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-11-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

c)总线的匹配:

既然是驱动Platform_device那对应的设备必然是挂载Platform总线上的

Platform_device,Platform总线是Linux系统提供的一种机制,不同于I2C、I2S等总线,它是一种虚拟的总线。

Linux系统为Platform总线定义了一个bus_type的实例Platform_bus_type:

(Kernel\\drivers\\base\\platform.c)

Platform总线通过platform_match这个成员函数来确定platform_device与platform_driver如何进行匹配:

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-12-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

九、Camera驱动工作流程:

下载Capture下载Preview

PowerOn参数为拍照

准备

参数为预览做准备做

PowerOff

IICResetPDN

INIT软件Reset

读ID判断是否连接到需要的Sensor

从上图可以明了的了解到Camera的一个工作流程主要分为这么七步:1.开启CameraPowerLDO,让Camera有能量保证。

2.

开启IIC,设置PDN引脚,使Camera退出出Standby模式,依照要求让Reset脚

做一个复位动作。

3.读一下sensor的版本ID,这样可以让你确认是否连接上你想要的sensor。4.对Sensor进行初始化下载最基本的参数让Sensor工作起来,可能包括软复位。5.下载preview的参数,为预览动作准备。6.下载Capture的参数,为拍照动作准备。

7.

设置PDN引脚,使Sensor进入Standby模式,或者关掉LDO等动作,退出Camera。

我们都知道,Linux内核是通过模块的机制来加载设备驱动的,那么接下来我们就从设

备模块加载的角度来看下Camera工作流程的驱动代码是如何工作的。

在-alps\\mediatek\\custom\\common\\kernel\\imgsensor\\src\\kd_sensorlist.c中可以看到:

module_init(CAMERA_HW_i2C_init);module_exit(CAMERA_HW_i2C_exit);在这里Linux内核加载和卸载Camera模块。

-13-

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

};

}

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

staticstructplatform_driverg_stCAMERA_HW_Driver={

.probe.remove

=CAMERA_HW_probe,=CAMERA_HW_remove,

.suspend=CAMERA_HW_suspend,.resume.driver

.name

=CAMERA_HW_resume,={

=\

.owner=THIS_MODULE,

Camera模块初始化开始向总线注册驱动,在Platform_driver的成员函数.probe()中,通

过i2c_add_driver(对设备进行初始化,并将g_stCAMERA_HW_fops这个文件操作函数作为上层对Camera设备操作的接口留给上层进行调用:

-14-

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

驱动的入口:

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

其中成员函数open()只是初始化一个原子变量留给系统调用。ioctl()才是整个Camera

CAMERA_HW_Ioctl()是上层文件操作系统操作底层硬件的方法,它先对Camera需要的Buffer做一个初始化,然后建立对Cameraopen、getinfo等操作的接口:

通过判断Sensor状态的规律值来进行具体的操作,对于这个值的定义在:Mediatek\\custom\\common\\kernel\\imgsensor\\inc\\Kd_imgsensor.h中

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-15-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

在KdSetDriver()中通过判断name和ID匹配具体型号的sensor的驱动,判断它是主摄还是次摄,并对它进行初始化:

通过NAME和ID匹配完成后会将PSENSOR_FUNCTION_STRUCT*pfFunc这个结构体匹配到具体型号的驱动代码中:

到这里,整个Camera驱动从总线注册到完成具体sensor的初始化的流程就完成了,

CAMERA_HW_Ioctl()中其他的ioctl操作函数最终都会在$sensor$_sensor.c中实现。

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-16-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

十、Camera驱动添加、调试流程:

1、修改系统配置文件ProjectConfig.mk:

-alps\\mediatek\\config\\$project$\\ProjectConfig.mk

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-17-

CameraDriveranalysisintheplatformofMTK

2、检查、配置供电文件:

PreliminaryInformation

-alps\\mediatek\\custom\\$project$\\Kernel\\Camera\\Camera\\kd_camera_hw.c

Camera供电流程(以3M前摄MT9V114+5M后摄OV5647为例):

其实在kd_camera_hw.c中只有一个函数kdCISModulePowerOn(),在这个函数中需要注意的是通过GPIO口控制PDN和RST引脚的时候,对于其相关的

定义,由其在切换平台的时候。例如MT6573和MT6575的定义顺序就不同。

-18-

GhongConfidentialRevision0.1-Feb.142023

?2023Ghonginc.

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

3、添加Camera驱动(以ov5647为例):

创立SensorFuncOV5647这样一个数据结构SENSOR_FUNCTION_STRUCTSensorFuncOV5647={OV5647Open,

OV5647GetInfo,OV5647GetResolution,OV5647FeatureControl,

OV5647Control,OV5647Close};

-19-

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

CameraDriveranalysisintheplatformofMTK

a)OV5647Open

PreliminaryInformation

初始化操作就是对SensorIC中寄放器的操作,调试主要由IC原厂支持。Open函数结

束后返回ERROR_NONE表示初始化成功,可以正常使用。

b)OV5647GetInfo

UINT32OV5647GetInfo(MSDK_SCENARIO_ID_ENUMScenarioId,MSDK_SENSOR_INFO_STRUCT*pSensorInfo,

MSDK_SENSOR_CONFIG_STRUCT*pSensorConfigData)

第一个参数ScenarioId来自于MSDK_SCENARIO_ID_ENUM这个数组,在

kd_imgsensor_define.h中是这样定义的:#defineMSDK_SCENARIO_ID_ENUMtypedefenum{

ACDK_SCENARIO_ID_CAMERA_PREVIEW=0,ACDK_SCENARIO_ID_VIDEO_PREVIEW,ACDK_SCENARIO_ID_VIDEO_CAPTURE_MPEG4,ACDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG,ACDK_SCENARIO_ID_CAMERA_CAPTURE_MEM,ACDK_SCENARIO_ID_CAMERA_BURST_CAPTURE_JPEG,ACDK_SCENARIO_ID_VIDEO_DECODE_MPEG4,ACDK_SCENARIO_ID_VIDEO_DECODE_H263,ACDK_SCENARIO_ID_VIDEO_DECODE_H264,ACDK_SCENARIO_ID_VIDEO_DECODE_WMV78,ACDK_SCENARIO_ID_VIDEO_DECODE_WMV9,ACDK_SCENARIO_ID_VIDEO_DECODE_MPEG2,ACDK_SCENARIO_ID_IMAGE_YUV2RGB,

ACDK_SCENARIO_ID_ENUM

ACDK_SCENARIO_ID_IMAGE_RESIZE,

ACDK_SCENARIO_ID_IMAGE_ROTATE,GhongConfidentialRevision0.1-Feb.142023

?2023Ghonginc.

-20-

CameraDriveranalysisintheplatformofMTK

ACDK_SCENARIO_ID_IMAGE_POST_PROCESS,ACDK_SCENARIO_ID_JPEG_RESIZE,ACDK_SCENARIO_ID_JPEG_DECODE,ACDK_SCENARIO_ID_JPEG_PARSE,ACDK_SCENARIO_ID_JPEG_ENCODE,

ACDK_SCENARIO_ID_JPEG_ENCODE_THUMBNAIL,ACDK_SCENARIO_ID_DRIVER_IO_CONTROL,ACDK_SCENARIO_ID_DO_NOT_CARE,

ACDK_SCENARIO_ID_IMAGE_DSPL_BUFFER_ALLOC,ACDK_SCENARIO_ID_TV_OUT,

PreliminaryInformation

ACDK_SCENARIO_ID_MAX,

ACDK_SCENARIO_ID_VIDOE_ENCODE_WITHOUT_PREVIEW,ACDK_SCENARIO_ID_CAMERA_CAPTURE_JPEG_BACK_PREVIEW,ACDK_SCENARIO_ID_VIDEO_DECODE_RV8,ACDK_SCENARIO_ID_VIDEO_DECODE_RV9,

}ACDK_SCENARIO_ID_ENUM;

ACDK_SCENARIO_ID_CAMERA_ZSD,

通过这个数组定义Camera的各种模式,并且给他们从0开始给一个模拟的ID,通过这个

ScenarioID来控制Camera的工作模式是在拍照、摄像等等。

想要了解*pSensorInfo这个指针的内容就得看MSDK_SENSOR_INFO_STRUCT的定义

#defineMSDK_SENSOR_INFO_STRUCTACDK_SENSOR_INFO_STRUCTtypedefstruct{

MUINT16SensorPreviewResolutionX;MUINT16SensorPreviewResolutionY;MUINT16SensorFullResolutionX;MUINT16SensorFullResolutionY;MUINT8SensorClockFreq;

/*MHz*/

MUINT8SensorCameraPreviewFrameRate;MUINT8SensorVideoFrameRate;MUINT8SensorStillCaptureFrameRate;

MUINT8SensorWebCamCaptureFrameRate;MUINT8

SensorClockPolarity;

/*

SENSOR_CLOCK_POLARITY_HIGH/SENSOR_CLOCK_POLARITY_Low*/

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

-21-

CameraDriveranalysisintheplatformofMTK

MUINT8SensorClockFallingPolarity;MUINT8SensorClockRisingCount;MUINT8SensorClockFallingCount;MUINT8SensorClockDividCount;MUINT8SensorPixelClockCount;MUINT8SensorDataLatchCount;MUINT8SensorHsyncPolarity;MUINT8SensorVsyncPolarity;MUINT8SensorInterruptDelayLines;MINT32SensorResetActiveHigh;MUINT32SensorResetDelayCount;

ACDK_SENSOR_INTERFACE_TYPE_ENUMSensroInterfaceType;

/*0..15*/

PreliminaryInformation

/*0..15*/

/*0..15*/

/*0..15*/

/*0..15*/

ACDK_SENSOR_OUTPUT_DATA_FORMAT_ENUMSensorOutputDataFormat;ACDK_SENSOR_MIPI_LANE_NUMBER_ENUMSensorMIPILaneNumber;CAMERA_ISO_BINNING_INFO_STRUCTSensorISOBinningInfo;MUINT32CaptureDelayFrame;MUINT32PreviewDelayFrame;MUINT32VideoDelayFrame;MUINT16SensorGrabStartX;MUINT16SensorGrabStartY;MUINT16SensorDrivingCurrent;MUINT8MUINT8

/*Theframeofsettingshutterdefault0forTG

SensorMasterClockSwitch;AEShutDelayFrame;

int*/MUINT8MUINT8MUINT8MUINT8MUINT8MUINT8MUINT8MUINT8

AESensorGainDelayFrame;AEISPGainDelayFrame;

/*Theframeofsettingsensorgain*/

MIPIDataLowPwr2HighSpeedTermDelayCount;MIPIDataLowPwr2HighSpeedSettleDelayCount;MIPICLKLowPwr2HighSpeedTermDelayCount;SensorWidthSampling;SensorHightSampling;SensorPacketECCOrder;

MUINT8SensorDriver3D;

}ACDK_SENSOR_INFO_STRUCT,*PACDK_SENSOR_INFO_STRUCT;

GhongConfidentialRevision0.1-Feb.142023

?2023Ghonginc.

-22-

CameraDriveranalysisintheplatformofMTK

PreliminaryInformation

这个结构体列取了Sensor的时钟频率、预览时的帧率、行同步/帧同步频率等参数。第三个参数*pSensorConfigData同样根据MSDK_SENSOR_CONFIG_STRUCT结构体#defineMSDK_SENSOR_CONFIG_STRUCTACDK_SENSOR_CONFIG_STRUCTtypedefstruct{

ACDK_SENSOR_IMAGE_MIRROR_ENUMSensorImageMirror;MINT32EnableShutterTansfer;MINT32EnableFlashlightTansfer;

/*Capture时的快门设置*/

/*有闪光灯的SensorCapture时的快门设置*/

ACDK_SENSOR_OPERATION_MODE_ENUMSensorOperationMode;MUINT16ImageTargetWidth;MUINT16ImageTargetHeight;MUINT16MUINT16MUINT16MUINT16MUINT16

CaptureShutter;FlashlightDuty;FlashlightOffset;FlashlightShutFactor;

/*Capture的图像宽度*//*Capture的图像高度*/

/*Capture时的快门设置*/

/*有闪光灯的SensorCapture时的快门设置*//*有闪光灯的SensorCapture时的快门设置*//*有闪光灯的SensorCapture时的快门设置*/

FlashlightMinShutter;/*有闪光灯的SensorCapture时的快门设置*/

ACDK_CAMERA_OPERATION_MODE_ENUMMetaMode;MUINT32DefaultPclk;MUINT32Pixels;MUINT32Lines;MUINT32Shutter;

//Sensor默认的像素时钟频率(Ex:24000000)

MUINT32FrameLines;

}ACDK_SENSOR_CONFIG_STRUCT;

c)OV5647GetResolution

UINT32OV5647GetResolution(MSDK_SENSOR_RESOLUTION_INFO_STRUCT*pSensorResolution)此函数只有一个参数*pSensorResolution,找到结构体:MSDK_SENSOR_RESOLUTION_INFO_STRUCT#defineMSDK_SENSOR_RESOLUTION_INFO_STRUCTACDK_SENSOR_RESOLUTION_INFO_STRUCT

typedefstruct{

MUINT16SensorPreviewWidth;//预览时的图像宽度MUINT16SensorPreviewHeight;//预览时的图像高度

-23-

GhongConfidential

Revision0.1-Feb.142023

?2023Ghonginc.

CameraDriveranalysisintheplatformofMTK

MUINT16SensorFullWidth;MUINT16SensorFullHeight;

PreliminaryInformation

}ACDK_SENSOR_RESOLUTION_INFO_STRUCT,*PACDK_SENSOR_RESOLUTION_INFO_STRUCT;

到这里可以发现同样是获取Sensor的信息,GetInfo函数获取并设置了Sensor所处的模式、设置好需要的各种时钟、快门和拍照获取图像的信息整个流程的参数,而GetResolution函

数却是设置图像在预览模式下的参数,实际上是通过对实际捕获的图像缩放来提高预览时图像的解析度。

d)OV5647FeatureControl

UINT32OV5647FeatureControl(MSDK_SENSOR_FEATURE_ENUMFeatureId,UINT8*pFeaturePara,UINT32

*pFeatureParaLen)

在FeatureControl这个函数中有三个参数:#define

ACDK_SENSOR_FEATURE_ENUMtypedefenum

MSDK_SENSOR_FEATURE_ENUM

{

S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论