Mid Semester Presentation

advertisement
19/3/2013
Performed By: Itamar Niddam and Lior Motorin
Instructor: Inna Rivkin
Bi-Semesterial.
Winter 2012/2013
Introduction
• Software provides extended flexibility while hardware gives better performance.
• Many applications use software-based algorithms, which suffer from low
Performance and cause bottle-necks. Therefore, the whole application
performance is reduced.
• Hardware-Accelerators are well known solutions , but they are specific for each
Problem and cannot be changed. Moreover, an application cannot supply its
own Hardware accelerator and must rely on existing accelerators.
Introduction
• A Hardware-accelerator for specific application will be provided
(AES encryption/decryption for example).
• An android application which uses the custom Hardware.
Introduction
• The Xilinx ZC-702 Board for Zynq-7000 have the ability to run
Android OS on it.
• Dual ARM A9 – Cortex processors
• DDR3 Memory (1 GB)
Core 0 : A9 ARM
Processing System
Core 1 : A9 ARM
HDMI
FMC
AXI4
LogicBricks
HDMI
Controller
Custom IP
Programmable Logic
UART
USB 0
Project goals
• Understand the structure of the ZC-702 board.
• Understand the structure of the Android OS.
• Run Android OS on the board (without any modifications)
• Implement a custom IP and integrate it on android OS using the
ZC-702 board.
• Analyze the performance improvement for Encryption
hardware-accelerator.
• Documentation and manuals
The development environment.
Xilinx Platform Studio
Xilinx SDK
Linux PC
C/C++ for Android Kernel
Java Eclipse
Xylon
hardware
Custom
IP
AXI4
interconnect
Processing system
The Hardware
Design.
The Hardware Design.
Software Blocks
Android 2.3.2 OS
Linux Kernel
Custom IP
Module
Driver
Custom
IP
Xylon GPU
Driver
ARM
CPU0
Xylon
Hardware
ZC-702
Android Booting
Device Tree Source
• Data structure for describing hardware details (Memory
mapping , Interrupts , Registers …) to the OS.
• Simple human readable text (Before “Compilation”)
Custom IP Driver module
Custom IP Driver module
Integrating Hardware-Software
• Before kernel loading, copying the module driver from SD-Card
to the system.
• Do lsmod to .ko file while still having root privileges (after
loading kernel and just before Android OS loads)
• Driver is now registered as char device (/dev/custom-ip) and
can be used from the OS
Problems…
• Still have licensing problems (until April)
• Android OS privileges – Cannot use custom IP driver from inside
of Android OS applications due to privileges limitations.
• Writing Drivers is hard ! (Missing knowledge to write some
complicated drivers)
• Need also software support (in emphasis of OS driver
development)
Challenges !
• Solving android privileges limitations by writing a service which
will be able to communicate with our char device.
• Writing more complicated drivers to support AXI-4 Streaming
for video processing
• Writing efficient hardware with Vivado HLS and integrate it
So.. What have we done ?
• Fully working Android Kernel which can access (Read / Write)
a custom IP.
• Setting up a development environment to modify and compile
Android OS & Linux kernel.
• Generating all necessary files to provide working system
(BitStream, FSBL , U-Boot , BOOT.BIN , device tree , driver
module)
• Learning Linux Driver development
• Testing Custom IP development & Hardware integration with
Vivado HLS
So.. What have we done ?
Learning the development environment.
Setting up the system (board and OS).
Proof Of Concept.
Developing and implementing the custom hardware
accelerators.
Compiling Android OS from code
Writing Device tree source and compile it
Writing driver module
Integrating Android Kernel with custom IP
What we have to do next (until Project A
final) ?
Solving Android OS privileges problems (9.4.2013)
Developing user Android application which uses the custom IP (16.4.2013)
Questions
Download