SlideShare a Scribd company logo
Accelerating Software
Development for MIPI
CSI-2℠ Cameras
Licinio Sousa
Synopsys, Inc.
The Challenge
Developing SW for Multiple HW Configs
•  Nowadays HW platforms are always evolving
•  It is hard for SW to keep up with the changes
•  Using a monolithic approach might be simple to begin,
but harder to mantain
•  To support a new device, the designer then needs to either split the
code or add support for another device in the initial code
•  After a while the code will become “spaghetti code”
•  Each device has specific configuration requirements and
characteristics, which complicates the tasks of providing support
and integration, due to limited code reusability
•  Steep learning curve
2
The Challenge
Developing SW for Multiple HW Configs
3
Complete	MIPI	Camera	and	Display	Solu6on
The Solution
Leverage Linux Resources to Reduce Design Efforts
•  Systems with embedded Linux can leverage existing
libraries, APIs and driver frameworks to reduce effort
and accelerate SW development
•  V4L2 API and modular design approach
•  Media controller
•  Device tree
Agenda
•  Introduce a few Linux concepts and resources
•  Share our experience
•  Conclusion
Linux
# facts
- Linux is a free and open source software
~18 000 000 lines of code
- 5.64 patches accepted in mainline kernel / h
- More than 1000 engineers work in each release
# who is working in Linux
- Only 17.9 % make kernel hacking for free
- The other 82.1% is made by top tech players
Linux
Wearables	Smartphones	
Servers	
Mainframes	
Embedded	systems
When is Linux’s Birthday?
8
From:torvalds@klaava.Helsinki.FI	(Linus	Benedict	Torvalds)	
	Newsgroup:	comp.os.minix	
	Subject:	GCC-1.40	and	a	posix	ques6on	
	Message-ID:	1991Jul13,	100050.9886@klaava.Helsinki.FI	
	Date:	3	Jul	91	10:00:50	GMT		
	Hello	netlanders,		Due	a	project	I'm	working	on	(in	minix),	I'm	interested	in	the	posix		
standard	defini6on.	Could	somebody	please	point	me	to	a	(preferably)		machine-
readable	format	of	the	latest	posix	rules?	Ftp-sites	would	be	
	nice.	
	Linus	Torvalds	torvalds@kruuna.helsinki.fi		
From:torvalds@klaava.Helsinki.FI	(Linus	Benedict	Torvalds)	
Newsgroup:	comp.os.minix	
Subject:	What	would	you	like	to	see	most	in	minix?	
Summary:	small	poll	for	my	new	operaIng	system	
Message-ID:	1991Aug25,	20578.9541@klaava.Helsinki.FI	
Date:	25	Aug	91	20:57:08	GMT	
OrganizaIon:	University	of	Helsinki.		
Hello	everybody	out	there	using	minix-	I'm	doing	a	(free)	operaIng	system	(just	a	
hobby,	won't	be	big	and	professional	like	gnu)	for	386(486)	AT	clones.	
(…)	
Any	suggesIons	are	welcome,	but	I	won't	promise	I'll	implement	them	:-)		
Linus	Torvalds	torvalds@kruuna.helsinki.fi		
From:	torvalds@klaava.Helsinki.FI	(Linus	Benedict	Torvalds)	
Newsgroups:	comp.os.minix	
Subject:	Free	minix-like	kernel	sources	for	386-AT	
Message-ID:	<1991Oct5.054106.4647@klaava.Helsinki.FI>	
Date:	5	Oct	91	05:41:06	GMT	
Organiza6on:	University	of	Helsinki	
Do	you	pine	for	the	nice	days	of	minix-1.1,	when	men	were	men	and	wrote	their	own	
device	drivers?	Are	you	without	a	nice	project	and	just	dying	
to	cut	your	teeth	on	a	OS	you	can	try	to	modify	for	your	needs?	Are	you	finding	it	
frustra6ng	when	everything	works	on	minix?	No	more	all-	
nighters	to	get	a	ni`y	program	working?	Then	this	post	might	be	just	for	you	:-)	
As	I	menIoned	a	month(?)	ago,	I'm	working	on	a	free	version	of	a	minix-lookalike	
for	AT-386	computers.	It	has	finally	reached	the	stage	where	it's	even	usable	
(though	may	not	be	depending	on	what	you	want),	
and	I	am	willing	to	put	out	the	sources	for	wider	distribuIon.	It	is	just	version	0.02	
(+1	(very	small)	patch	already),	but	I've	successfully	run	bash/gcc/gnu-make/gnu-
sed/compress	etc	under	it.	 There	are	actually	three	
"birthdays"	one	can	
idenIfy	for	Linux!!
Inside Linux – Architecture
User Space vs. Kernel Space
•  User Space
•  If SW is running in userspace it’s usually called an Application
•  Memory area where application software will run
•  Kernel Space
•  Strictly reserved for running privileged OS kernel
•  Runs kernel extensions and device drivers
•  A driver has direct access to the HW
User-Kernel Interface
•  User-kernel
interaction is made
via Linux APIs
•  Linux provides APIs in
order to allow
programmers to write
applications
consistent with the
operating environment
•  Some APIs can be
divided in 2 parts,
which run in two
different areas
•  Kernel space
•  User space
Video4Linux2 API
API for Video capture
•  One of the Linux APIs is V4L (Video4Linux) a.k.a. V4L2
•  V4L2 is an API for supporting real-time video capture in
Linux
•  V4L2 is used to build drivers for many USB webcams,
TV tuners, smartphone cameras, and related devices
•  With V4L2, applications can easily add video support in
a standard way
V4L2 API
Kernel	Space						
ApplicaIon	Space	
V4L2	Linux	Drivers	
V4L2	IOCTLs	
mplayer	 ffmpeg	 vlc	
V4L2	IOCTLs	
Hardware	
Hardware
V4L2 Devices and Subdevices
Modular Approach to Model the HW
•  Hardware is often
made of several
integrated circuits that
need to interact with
each other
•  This can lead to complex
drivers.
•  The drivers must
reflect the hardware
model in software
•  Modelling the different
hardware components as
software blocks called
sub-devices.
		V4L2	device	
		V4L2	sub-device	
		V4L2	sub-device	
		V4L2	sub-device	 		V4L2	sub-device
Media Controller
API to Define Relation Between Device/Sub-Devices
•  Allows to discover a platform configuration and
configure it
•  Devices are described as building blocks
•  Connected through pads
•  Pads can be either sinks or sources
•  No limit for pads and sinks on each entity
Device/Sub-device and Media Entity
Source & Sink Pads to Represent Data Flow
Media Device - HW Pipeline
V4L2 Device/Sub-Devices Structured Using
MediaController API
Media	
Device	
Camera	
CSI-2	
Host	
Colorspace	
converter	
Video	
Device	
/dev/video
Device Driver Interaction
Only High-Level Interaction is Needed
•  The main driver will call the sub-device drivers to
•  power on,
•  start streaming,
•  change video mode,
•  and many more.
•  All this without needing to know anything about the HW
it is talking to
Video	
Device	
/dev/video	 mplayer	
Kernel	Space						
ApplicaIon	Space
Device Tree
Describes the HW Configuration
•  The format is expressive and
able to describe most board
design aspects including
•  the number and type of CPUs
•  base addresses and size of RAM
•  busses and bridges
•  peripheral device connections
•  interrupt controllers and IRQ line
connections
•  and others
Device Tree
Hardware Details Listed
•  The HW specific details will be available in the Device
Tree
•  HW addresses, IRQs and more are always available in
the Device Tree
•  In the case of V4L2 cameras, information like number
of lanes, frequency and others is also available
V4L2, Media Controller and Device Tree
Putting it All Together
21
V4L2, Media Controller and Device Tree
Putting it All Together
•  Device driver is designed using V4L2 API – API for
video capture
•  It is modular and captures the HW elements – Sub-
devices
•  Media controller API is used to define the relationship
between the device and sub-devices, forming a HW
pipeline that represents the actual HW platform
•  Device tree describes the HW platform and individual
block specific details (address, interrupts, version,
number of lanes)
22
V4L2, Media Controller and Device Tree
Putting it All Together
•  When kernel starts, it will look at the device tree and
configure it self
•  The sub-device drivers will be loaded if present in the device tree
and will get the necessary details from it
•  The device driver HW pipeline will be formed
•  Application interacts with video device using high level
commands
•  The video device is accessible under /dev
•  The application will open /dev/videoX and interact using the high
level commands (such as change resolution, shutdown, power on,
start capture, etc.)
•  Commands will be translated into low-level commands, specific to
each individual sub-device (CSI-2 controller, camera, etc.)
23
V4L2, Media Controller and Device Tree
Putting it All Together
•  If a change in the platform is required (replace camera
or controller, etc.)
•  The new individual sub-devices need to be added to the kernel
•  The device tree needs to be updated and recompiled to reflect the
HW changes
•  By re-starting the Kernel, the Device driver HW pipeline will be
updated automatically
24
OUR EXPERIENCE
CSI-2 SW Development
The Media Device HW Pipeline
26
CSI-2 SW Development
The Device Tree
Camera	
PHY	
Video	DMA	
CSI	
Controller
CSI-2 SW Development
Simple to Change CSI-2 Camera
Camera
MIPI CSI-2 Host IP Prototyping Kit
•  Synopsys offers an integrated HW/SW solution that
takes advantage of all these concepts
Visit	Synopsys	booth		
to	see	demo!
Leverage Kernel Tools to Accelerate CSI-2
SW Development
•  Application interacts with driver only using high level
Commands
•  No need to use specific commands for each HW element
•  The same kernel can serve for several HW platforms
by simple changing the Device Tree
•  No effort in recompiling the kernel
•  Modular code is easily split among team members
•  Each driver just needs to provide standard interaction commands
•  Easy to maintain and add support for new HW
All this accelerates driver development by reducing
the code complexity and turnaround time!
30
Thank You!
Synopsys’	broad	porkolio	of	DesignWare	MIPI	IP	soluIons	
synopsys.com/mipi

More Related Content

DOCX
linux file sysytem& input and output
PDF
Yocto: Training in English
PPT
Digital Camera Hardware and software architecture
ODP
The Theory and Implementation of DVFS on Linux
PPTX
Bootloaders (U-Boot)
DOCX
Single board computer options
PPT
PPTX
Android audio system(audioflinger)
linux file sysytem& input and output
Yocto: Training in English
Digital Camera Hardware and software architecture
The Theory and Implementation of DVFS on Linux
Bootloaders (U-Boot)
Single board computer options
Android audio system(audioflinger)

What's hot (20)

PDF
OFDMA MATLAB CODE.pdf
PDF
Arm device tree and linux device drivers
PPTX
Audio compression
PPT
linux device driver
PPTX
Frequency translation
DOCX
Insertar iconos en la tabla
PDF
Audio Drivers
PPTX
What is Bootloader???
PPTX
Linux Device Tree
PPTX
The bus interface unit (biu)
PDF
Embedded Linux Kernel - Build your custom kernel
PDF
Embedded Operating System - Linux
PPTX
Overview of Nios II Embedded Processor
PPT
Hilbert
PPT
ARM - Advance RISC Machine
PPSX
System on chip buses
PPTX
Unit 4 _ ARM Processors .pptx
PPT
Presentación1 De Zocalos
PPT
Study on 32-bit Cortex - M3 Powered MCU: STM32F101
OFDMA MATLAB CODE.pdf
Arm device tree and linux device drivers
Audio compression
linux device driver
Frequency translation
Insertar iconos en la tabla
Audio Drivers
What is Bootloader???
Linux Device Tree
The bus interface unit (biu)
Embedded Linux Kernel - Build your custom kernel
Embedded Operating System - Linux
Overview of Nios II Embedded Processor
Hilbert
ARM - Advance RISC Machine
System on chip buses
Unit 4 _ ARM Processors .pptx
Presentación1 De Zocalos
Study on 32-bit Cortex - M3 Powered MCU: STM32F101
Ad

Viewers also liked (8)

PDF
Video Drivers
PDF
Low-level Accesses
PDF
Network Drivers
PDF
USB Drivers
PDF
Block Drivers
PDF
Interrupts
PDF
Introduction to Linux Drivers
PDF
Character Drivers
Video Drivers
Low-level Accesses
Network Drivers
USB Drivers
Block Drivers
Interrupts
Introduction to Linux Drivers
Character Drivers
Ad

Similar to MIPI DevCon 2016: Accelerating Software Development for MIPI CSI-2 Cameras (20)

PPSX
Embedded project
PDF
Camera Architecture from Failure to Success
PDF
C44081316
PDF
Embedded Recipes 2018 - Upstream multimedia on amlogic so cs from fiction t...
PDF
Identifying and Supporting 'X-compatible' Hardware Blocks
PDF
"Building Complete Embedded Vision Systems on Linux—From Camera to Display," ...
PPTX
Add sale davinci
PPT
Pcie drivers basics
PDF
Iaetsd arm based remote surveillance and motion detection
PPTX
Lect 1_Embedded Linux Embedded RTOS ppt
PDF
Kernel Recipes 2014 - Testing Video4Linux Applications and Drivers
PDF
MIPI DevCon Seoul 2018: Powering AI and Automotive Applications with the MIPI...
PDF
Linux Kernel and Multimedia
PDF
The move from a hardware centric design to a software centric design: GStream...
PPTX
Embedded linux
PPT
Linux io
PDF
Kernel Recipes 2018 - Overview of SD/eMMC, their high speed modes and Linux s...
PPTX
Understanding Modern Device Drivers
PPTX
Allwinner Kernel Upstreaming Experiences
PDF
Open_IoT_Summit-Europe-2016-Building_an_IoT-class_Device_0
Embedded project
Camera Architecture from Failure to Success
C44081316
Embedded Recipes 2018 - Upstream multimedia on amlogic so cs from fiction t...
Identifying and Supporting 'X-compatible' Hardware Blocks
"Building Complete Embedded Vision Systems on Linux—From Camera to Display," ...
Add sale davinci
Pcie drivers basics
Iaetsd arm based remote surveillance and motion detection
Lect 1_Embedded Linux Embedded RTOS ppt
Kernel Recipes 2014 - Testing Video4Linux Applications and Drivers
MIPI DevCon Seoul 2018: Powering AI and Automotive Applications with the MIPI...
Linux Kernel and Multimedia
The move from a hardware centric design to a software centric design: GStream...
Embedded linux
Linux io
Kernel Recipes 2018 - Overview of SD/eMMC, their high speed modes and Linux s...
Understanding Modern Device Drivers
Allwinner Kernel Upstreaming Experiences
Open_IoT_Summit-Europe-2016-Building_an_IoT-class_Device_0

More from MIPI Alliance (20)

PDF
MIPI DevCon 2021: MIPI I3C Under the Spotlight: A Fireside Chat with the I3C ...
PDF
MIPI DevCon 2021: MIPI I3C Application and Validation Models for IoT Sensor N...
PDF
MIPI DevCon 2021: MIPI I3C Signal Integrity Challenges on DDR5-based Server P...
PDF
MIPI DevCon 2021: MIPI I3C interface for the ETSI Smart Secure Platform
PDF
MIPI DevCon 2021: MIPI Security for Automotive and IoT – Initial Focus on MASS
PDF
MIPI DevCon 2021: MIPI HTI, PTI and STP: The Bases for Next-Generation Online...
PDF
MIPI DevCon 2021: Meeting the Needs of Next-Generation Displays with a High-P...
PDF
MIPI DevCon 2021: MIPI CSI-2 v4.0 Panel Discussion with the MIPI Camera Worki...
PDF
MIPI DevCon 2021: MIPI D-PHY and MIPI CSI-2 for IoT: AI Edge Devices
PDF
MIPI DevCon 2021: Enabling Long-Reach MIPI CSI-2 Connectivity in Automotive w...
PDF
MIPI DevCon 2021: Latest Developments within MIPI Automotive SerDes Solutions...
PDF
MIPI DevCon 2021: The MIPI Specification Roadmap: Driving Advancements in Mob...
PDF
MIPI DevCon 2021: State of the Alliance
PDF
MIPI DevCon 2020 | Snapshot of MIPI RFFE v3.0 from a System-Architecture Per...
PDF
MIPI DevCon 2020 | The Story Behind the MIPI I3C HCI Driver for Linux
PDF
MIPI DevCon 2020 | Interoperability Challenges and Solutions for MIPI I3C
PDF
MIPI DevCon 2020 | Why an Integrated MIPI C-PHY/D-PHY IP is Essential
PDF
MIPI DevCon 2020 | MIPI to Bluetooth LE: Leveraging Mobile Technology for Wir...
PDF
MIPI DevCon 2020 | MIPI Alliance: Enabling the IoT Opportunity
PDF
MIPI DevCon 2020 | MIPI DevCon 2020 | How MIPI Interfaces Solve Challenges in...
MIPI DevCon 2021: MIPI I3C Under the Spotlight: A Fireside Chat with the I3C ...
MIPI DevCon 2021: MIPI I3C Application and Validation Models for IoT Sensor N...
MIPI DevCon 2021: MIPI I3C Signal Integrity Challenges on DDR5-based Server P...
MIPI DevCon 2021: MIPI I3C interface for the ETSI Smart Secure Platform
MIPI DevCon 2021: MIPI Security for Automotive and IoT – Initial Focus on MASS
MIPI DevCon 2021: MIPI HTI, PTI and STP: The Bases for Next-Generation Online...
MIPI DevCon 2021: Meeting the Needs of Next-Generation Displays with a High-P...
MIPI DevCon 2021: MIPI CSI-2 v4.0 Panel Discussion with the MIPI Camera Worki...
MIPI DevCon 2021: MIPI D-PHY and MIPI CSI-2 for IoT: AI Edge Devices
MIPI DevCon 2021: Enabling Long-Reach MIPI CSI-2 Connectivity in Automotive w...
MIPI DevCon 2021: Latest Developments within MIPI Automotive SerDes Solutions...
MIPI DevCon 2021: The MIPI Specification Roadmap: Driving Advancements in Mob...
MIPI DevCon 2021: State of the Alliance
MIPI DevCon 2020 | Snapshot of MIPI RFFE v3.0 from a System-Architecture Per...
MIPI DevCon 2020 | The Story Behind the MIPI I3C HCI Driver for Linux
MIPI DevCon 2020 | Interoperability Challenges and Solutions for MIPI I3C
MIPI DevCon 2020 | Why an Integrated MIPI C-PHY/D-PHY IP is Essential
MIPI DevCon 2020 | MIPI to Bluetooth LE: Leveraging Mobile Technology for Wir...
MIPI DevCon 2020 | MIPI Alliance: Enabling the IoT Opportunity
MIPI DevCon 2020 | MIPI DevCon 2020 | How MIPI Interfaces Solve Challenges in...

Recently uploaded (6)

DOC
证书学历UoA毕业证,澳大利亚中汇学院毕业证国外大学毕业证
PDF
Lesson 13- HEREDITY _ pedSAWEREGFVCXZDSASEWFigree.pdf
PDF
6-UseCfgfhgfhgfhgfhgfhfhhaseActivity.pdf
PDF
heheheueueyeyeyegehehehhehshMedia-Literacy.pdf
PPTX
ASMS Telecommunication company Profile
DOC
Camb毕业证学历认证,格罗斯泰斯特主教大学毕业证仿冒文凭毕业证
证书学历UoA毕业证,澳大利亚中汇学院毕业证国外大学毕业证
Lesson 13- HEREDITY _ pedSAWEREGFVCXZDSASEWFigree.pdf
6-UseCfgfhgfhgfhgfhgfhfhhaseActivity.pdf
heheheueueyeyeyegehehehhehshMedia-Literacy.pdf
ASMS Telecommunication company Profile
Camb毕业证学历认证,格罗斯泰斯特主教大学毕业证仿冒文凭毕业证

MIPI DevCon 2016: Accelerating Software Development for MIPI CSI-2 Cameras

  • 1. Accelerating Software Development for MIPI CSI-2℠ Cameras Licinio Sousa Synopsys, Inc.
  • 2. The Challenge Developing SW for Multiple HW Configs •  Nowadays HW platforms are always evolving •  It is hard for SW to keep up with the changes •  Using a monolithic approach might be simple to begin, but harder to mantain •  To support a new device, the designer then needs to either split the code or add support for another device in the initial code •  After a while the code will become “spaghetti code” •  Each device has specific configuration requirements and characteristics, which complicates the tasks of providing support and integration, due to limited code reusability •  Steep learning curve 2
  • 3. The Challenge Developing SW for Multiple HW Configs 3 Complete MIPI Camera and Display Solu6on
  • 4. The Solution Leverage Linux Resources to Reduce Design Efforts •  Systems with embedded Linux can leverage existing libraries, APIs and driver frameworks to reduce effort and accelerate SW development •  V4L2 API and modular design approach •  Media controller •  Device tree
  • 5. Agenda •  Introduce a few Linux concepts and resources •  Share our experience •  Conclusion
  • 6. Linux # facts - Linux is a free and open source software ~18 000 000 lines of code - 5.64 patches accepted in mainline kernel / h - More than 1000 engineers work in each release # who is working in Linux - Only 17.9 % make kernel hacking for free - The other 82.1% is made by top tech players
  • 8. When is Linux’s Birthday? 8 From:torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroup: comp.os.minix Subject: GCC-1.40 and a posix ques6on Message-ID: 1991Jul13, 100050.9886@klaava.Helsinki.FI Date: 3 Jul 91 10:00:50 GMT Hello netlanders, Due a project I'm working on (in minix), I'm interested in the posix standard defini6on. Could somebody please point me to a (preferably) machine- readable format of the latest posix rules? Ftp-sites would be nice. Linus Torvalds torvalds@kruuna.helsinki.fi From:torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroup: comp.os.minix Subject: What would you like to see most in minix? Summary: small poll for my new operaIng system Message-ID: 1991Aug25, 20578.9541@klaava.Helsinki.FI Date: 25 Aug 91 20:57:08 GMT OrganizaIon: University of Helsinki. Hello everybody out there using minix- I'm doing a (free) operaIng system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. (…) Any suggesIons are welcome, but I won't promise I'll implement them :-) Linus Torvalds torvalds@kruuna.helsinki.fi From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: Free minix-like kernel sources for 386-AT Message-ID: <1991Oct5.054106.4647@klaava.Helsinki.FI> Date: 5 Oct 91 05:41:06 GMT Organiza6on: University of Helsinki Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers? Are you without a nice project and just dying to cut your teeth on a OS you can try to modify for your needs? Are you finding it frustra6ng when everything works on minix? No more all- nighters to get a ni`y program working? Then this post might be just for you :-) As I menIoned a month(?) ago, I'm working on a free version of a minix-lookalike for AT-386 computers. It has finally reached the stage where it's even usable (though may not be depending on what you want), and I am willing to put out the sources for wider distribuIon. It is just version 0.02 (+1 (very small) patch already), but I've successfully run bash/gcc/gnu-make/gnu- sed/compress etc under it. There are actually three "birthdays" one can idenIfy for Linux!!
  • 9. Inside Linux – Architecture
  • 10. User Space vs. Kernel Space •  User Space •  If SW is running in userspace it’s usually called an Application •  Memory area where application software will run •  Kernel Space •  Strictly reserved for running privileged OS kernel •  Runs kernel extensions and device drivers •  A driver has direct access to the HW
  • 11. User-Kernel Interface •  User-kernel interaction is made via Linux APIs •  Linux provides APIs in order to allow programmers to write applications consistent with the operating environment •  Some APIs can be divided in 2 parts, which run in two different areas •  Kernel space •  User space
  • 12. Video4Linux2 API API for Video capture •  One of the Linux APIs is V4L (Video4Linux) a.k.a. V4L2 •  V4L2 is an API for supporting real-time video capture in Linux •  V4L2 is used to build drivers for many USB webcams, TV tuners, smartphone cameras, and related devices •  With V4L2, applications can easily add video support in a standard way
  • 14. V4L2 Devices and Subdevices Modular Approach to Model the HW •  Hardware is often made of several integrated circuits that need to interact with each other •  This can lead to complex drivers. •  The drivers must reflect the hardware model in software •  Modelling the different hardware components as software blocks called sub-devices. V4L2 device V4L2 sub-device V4L2 sub-device V4L2 sub-device V4L2 sub-device
  • 15. Media Controller API to Define Relation Between Device/Sub-Devices •  Allows to discover a platform configuration and configure it •  Devices are described as building blocks •  Connected through pads •  Pads can be either sinks or sources •  No limit for pads and sinks on each entity
  • 16. Device/Sub-device and Media Entity Source & Sink Pads to Represent Data Flow
  • 17. Media Device - HW Pipeline V4L2 Device/Sub-Devices Structured Using MediaController API Media Device Camera CSI-2 Host Colorspace converter Video Device /dev/video
  • 18. Device Driver Interaction Only High-Level Interaction is Needed •  The main driver will call the sub-device drivers to •  power on, •  start streaming, •  change video mode, •  and many more. •  All this without needing to know anything about the HW it is talking to Video Device /dev/video mplayer Kernel Space ApplicaIon Space
  • 19. Device Tree Describes the HW Configuration •  The format is expressive and able to describe most board design aspects including •  the number and type of CPUs •  base addresses and size of RAM •  busses and bridges •  peripheral device connections •  interrupt controllers and IRQ line connections •  and others
  • 20. Device Tree Hardware Details Listed •  The HW specific details will be available in the Device Tree •  HW addresses, IRQs and more are always available in the Device Tree •  In the case of V4L2 cameras, information like number of lanes, frequency and others is also available
  • 21. V4L2, Media Controller and Device Tree Putting it All Together 21
  • 22. V4L2, Media Controller and Device Tree Putting it All Together •  Device driver is designed using V4L2 API – API for video capture •  It is modular and captures the HW elements – Sub- devices •  Media controller API is used to define the relationship between the device and sub-devices, forming a HW pipeline that represents the actual HW platform •  Device tree describes the HW platform and individual block specific details (address, interrupts, version, number of lanes) 22
  • 23. V4L2, Media Controller and Device Tree Putting it All Together •  When kernel starts, it will look at the device tree and configure it self •  The sub-device drivers will be loaded if present in the device tree and will get the necessary details from it •  The device driver HW pipeline will be formed •  Application interacts with video device using high level commands •  The video device is accessible under /dev •  The application will open /dev/videoX and interact using the high level commands (such as change resolution, shutdown, power on, start capture, etc.) •  Commands will be translated into low-level commands, specific to each individual sub-device (CSI-2 controller, camera, etc.) 23
  • 24. V4L2, Media Controller and Device Tree Putting it All Together •  If a change in the platform is required (replace camera or controller, etc.) •  The new individual sub-devices need to be added to the kernel •  The device tree needs to be updated and recompiled to reflect the HW changes •  By re-starting the Kernel, the Device driver HW pipeline will be updated automatically 24
  • 26. CSI-2 SW Development The Media Device HW Pipeline 26
  • 27. CSI-2 SW Development The Device Tree Camera PHY Video DMA CSI Controller
  • 28. CSI-2 SW Development Simple to Change CSI-2 Camera Camera
  • 29. MIPI CSI-2 Host IP Prototyping Kit •  Synopsys offers an integrated HW/SW solution that takes advantage of all these concepts Visit Synopsys booth to see demo!
  • 30. Leverage Kernel Tools to Accelerate CSI-2 SW Development •  Application interacts with driver only using high level Commands •  No need to use specific commands for each HW element •  The same kernel can serve for several HW platforms by simple changing the Device Tree •  No effort in recompiling the kernel •  Modular code is easily split among team members •  Each driver just needs to provide standard interaction commands •  Easy to maintain and add support for new HW All this accelerates driver development by reducing the code complexity and turnaround time! 30