-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathreadme.txt
160 lines (120 loc) · 7.13 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
Feescope Firmware for EZ-USB FX3 HD 720P DAQ board.
Modifications to stock firmware made by Galen Lynch.
CYPRESS SEMICONDUCTOR CORPORATION
EZ-USB FX3 UVC CAMERA KIT
FX3 UVC KIT FIRMWARE
--------------------
1. Introduction:
----------------
This project facilitates implementing a complete 720p Video solution using
the EZ-USB FX3 device and an Image Sensor that supports YUY2 image streaming
over a parallel synchronous interface.
This Eclipse project contains the firmware application code that implements
the Image Sensor interface and the USB Video Class (UVC) control and streaming
logic. This firmware application supports streaming video in the following
formats:
1. Uncompressed HD 720p (1280 * 720) resolution video at 30 frames per
second (fps) over a USB 3.0 link.
2. Uncompressed VGA (640 * 480) resolution video at 15 frames per second
(fps) over a USB 2.0 link.
Please refer to the "AN75779: Interfacing an Image Sensor to EZ-USB FX3 in a USB
video class (UVC) Framework" application note (http://www.cypress.com/?rID=62824)
for a detailed design description of this application.
2. Files:
---------
1. uvc.c : Main source file implementing the UVC control and
streaming logic.
2. uvc.h : Configuration parameters and constant definitions
for the UVC application firmware.
3. cyfxuvcdscr.c : USB descriptors used by the UVC firmware.
4. camera_ptzcontrol.c : Extension stubs for implementation of camera controls
like Pan, Tilt and Zoom.
5. camera_ptzcontrol.h : Variable and function declarations for the Pan, Tilt
and Zoom control stubs.
6. sensor.c : Function placeholders and I2C driver functions to configure/control
the image sensor through the I2C interface on FX3.
7. sensor.h : Interface declarations for the image sensor driver.
8. cyfxgpif2config.h : Configuration data generated by GPIF II Designer.
9. cyfxtx.c : RTOS porting layer for the EZ-USB FX3 SDK.
10. cyfx_gcc_startup.S : Startup file for the GNU ARM tool-chain. This only
clears the BSS segment and then jumps to the main
function.
3. Notes on Application Porting:
--------------------------------
This UVC video streaming application can be ported to work with virtually
any image sensor with parallel interface.
The general procedure for porting the application to a particular sensor is:
1. Identify the sensor control mechanism (I2C, SPI etc.) and make appropriate
changes to the sensor.c file. Code can be added to the SensorI2cBusTest()
function to verify whether the sensor is accessible through the firmware.
Once functionality is verified, implement the sensor initialization function
SensorInit () and the resolution settings functions: SensorScaling_HD720p_30fps ()
and SensorScaling_VGA () or whichever resolution is required.
2. Identify the signal interface between the sensor and FX3, and update the
GPIF-II state machine accordingly. You may require to update the GPIF-II
initialization code in uvc.c (CyFxUvcAppGpifInit and CyFxGpifCB functions)
as well.
3. Update the code for handling UVC controls like brightness, pan, tilt and
zoom (uvc.c and camera_ptzcontrol.c).
Please refer to the AN75779 for a detailed description on the design process.
4. Updating to a new FX3 SDK version:
-------------------------------------
The cyfxtx.c and cyfx_gcc_startup.S files used here are taken from the FX3 SDK
release. This version of the application makes use of FX3 SDK release version
1.3.3.
When updating the application to work with a new SDK version, you need to copy
the latest cyfxtx.c and cyfx_gcc_startup.S files from the new SDK into this
project. You will also need to follow the instructions for porting to the new
SDK that are included in the "Getting started with the FX3 SDK" document.
5. Guidelines to run UVC extension unit host application:
---------------------------------------------------------
The extension unit supports Firmware version control. User can set or get firmware
version. Run the uvc_extension_app_x64/x86 application. The firmware enumerates as
a "FX3" device. If the FX3 device is detected, user can select 1/2 to set/get
firmware version.
1. Set firmware version: By default, application sets the firmware version to
2.2 and build date to 12/20/18. Host application needs to be modified to set
any other firmware version.
2. Get firmware version: Gives the current firmware version
Host application is uploaded on the Cypress Community forum (Refer App note).
Based on the requirements, users can update the UVC host application. If the default
app note firmware is loaded, the host application fails with the following print:
Function: SetGetExtensionUnit, ks_control->KsProperty(...) failed, Error code: 0x80070492
6. Tests done to check video stability:
---------------------------------------
Video stability is important and a video freezing in a UVC host application is
not a good sign. One might have to disconnect and re-connect the device to
recover from such failures. Video may freeze when USB host is slower or
Sensor/Image signal processor goes into a bad shape. The firmware has a commit buffer
failure event and video timer to handle this. There will be a drop in few frames and
the video re-starts. Tests done to recover from such failures:
1. Stream video for 5 hours on a Windows PC in USB2 and USB3 mode.
a. PC: Lenovo modelT530
b. OS: Win 10 Version 1607 (OS Build 14393.1480)
c. Application: eCAMView version 1.0.63.349
d. Hardware: CYUSB3KIT-003, CYUSB3ACC-004 and MT9M114
2. Stream video for 5 hours on a MAC PC in USB2 and USB3 mode.
a. PC: Mac book
b. OS: Mac OS Sierra 10.12
c. Application: Wirecast version 6.0.5
d. Hardware: CYUSB3KIT-003, CYUSB3ACC-004 and MT9M114
7. USB CV test on a Windows PC:
-------------------------------
USB CV test is standard command verifier test from usb.org. This test validates the
descriptor and UVC functionality. Following test were carried out and all the tests
passed successfully.
1. USB 2 CV test. Application: USB2 CV version 1.5.2.3. Tests done:
a. Chapter 9
b. Current Measurement
c. Device summary
d. UVC Descriptor
e. UVC functionality
f. UVC encoding unit test
g. UVC H.264 test
2. USB 3 CV test. Application: USB 3 GenX CV v2.1.5.0. Tests done:
a. Chapter 9
b. Current Measurement
c. Device summary
d. UVC Descriptor
e. UVC functionality
[]