Department of Electrical Engineering Electronics Computers Communications

Post on 23-Feb-2016

40 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

High Speed Digital Systems Lab. Dynamic Hardware Reconfiguration Controlled by ANDROID OS On ZYNQ . Performed By: Itamar Niddam and Lior Motorin Instructor: Inna Rivkin Bi- Semesterial . Winter 2012/2013. Department of Electrical Engineering Electronics Computers - PowerPoint PPT Presentation

Transcript

Department of Electrical EngineeringElectronicsComputersCommunications

Technion Israel Institute of Technology

High Speed Digital Systems Lab.

DYNAMIC HARDWARE RECONFIGURATION

CONTROLLED BY ANDROID OS

ON ZYNQ

Performed By: Itamar Niddam and Lior MotorinInstructor: Inna Rivkin

Bi-Semesterial.Winter 2012/2013

2

SOPC on ZYNQ running AndroidApplication performance acceleration

Programmable Logic

Peripherals ControllersCore 1 : A9 ARM

Core 0 : A9 ARM

Dynamic Hardware

AXI4 BUSSoftware applicationProcessing System

running Android

Hardwareaccelerator

Standard SOPC approach• The Hardware is constant• The user can only switch between application

Task specific - Software

3

SOPC on ZYNQ running AndroidPerformance Acceleration of applications

Using Dynamic Partial Hardware Reconfiguration

• Partial dynamic hardware reconfiguration by OS (Android)

• Hardware system dynamically changed & adapted to a specific application.

• The hardware change is done at runtime by application & OS

Programmable Logic

Peripherals ControllersCore 1 : A9 ARM

Core 0 : A9 ARM

Dynamic Hardware

AXI4 BUSProcessing Systemrunning Android

Custom IPHardware

Acceleratior #1

Application

#1

Custom IPHardware

Acceleratior #2

Application

#2

New approach

The user controls the software and the hardware

Task specific - Software & Hardware

4

Sobel Edge Detection Filter Example

for(i = 0; i < height, i++){for(j=0; j < width; j++){

x_dir = 0;y_dir = 0;if((i > 0 && (i < (height-1)) && (j > 0) && (j < (width-1))){for(rowOffset = -1; rowOffset <= 1; rowOffset++){

for(colOffset = -1; colOffset <=1; colOffset++){x_dir = x_dir + input_image[i+rowOffset][j+colOffset]* Gx[1+rowOffset][1+colOffset];y_dir = y_dir + input_image[i+rowOffset][j+colOffset]* Gy[1+rowOffset][1+colOffset];}

}edge_weight = ABS(x_dir) + ABS(y_dir);output_image[i][j] = edge_weight;

}

6

Sobel Filter Software Implementation

7

Sobel Filter

Programmable Logic

Peripherals ControllersCore 1 : A9 ARM

Core 0 : A9 ARM

Dynamic Hardware

AXI4 BUS

Sobel Filter Software & Hardware Specific Accelerator

Sobel Software

applicationProcessing Systemrunning Android

Sobel Hardware

module

8

Sobel Filter Using Hardware Specific Accelerator

9

INTEGRATING ANDROID WITH ZYNQ

10

SYSTEM COMPONENTS

Processing System

Programmable Logic

LogicBricksHDMI

ControllerCustom IP

Core 1 : A9 ARM

Core 0 : A9 ARM

USB 0

AXI4

HDMI

FMC

UART

11

Processing System

Programming Logic

Linux Kernel

Zynq ZC-702

Xylon GPU Driver

Xylon HardwareARM CPU0

• The Xilinx ZC-702 Board for Zynq-7000 have the ability to run Android OS on it.

• Android porting supplied by Iviea• FMC Touch screen controller supplied by

Xylon.

• Android relies on Linux kernel 2.6.• Hardware accelerator drivers are

implemented by loadable kernel modules.• Drivers interact with hardware by memory-

mapped IO.

• Android apps communicates with hardware by System services.

• System service represents an Hardware abstraction layer between the App and the kernel driver

12

Processing System

Programming Logic

Linux Kernel

Zynq ZC-702

Xylon GPU Driver

Custom IP Xylon HardwareARM CPU0

Custom IP Module Driver

Partial Re-Configuration

Service

Partial Configuration

Driver

13

Processing System

Programming Logic

Linux Kernel

Zynq ZC-702

Xylon GPU Driver

Custom IP Xylon HardwareARM CPU0

Custom IP Module Driver

Partial Re-Configuration

Service

Partial Configuration

Driver

App

Code Bitstream

14Driver

module

HAL API

HAL module

The custom linux device driver..ko file located in /dev…/

System Server

• Supplies basic functions on the given hardware type, using the driver.

• Provided by the driver developer.• A shared library located in

/system/lib...

• The Hardware Abstraction Layer API.

• Supplies basic interface between the service and the custom new hardware.

• Essential for bridging the native and Java code.

CustomService

JAVA

CJNI

APP

System service API

Binder

• The custom service run within the System server.

• Enables the system server to reach the HAL.

• Bridging methods called by the user in JAVA to native code in order to use the HAL.

• Make our system service available through the SDK.

• Supplies a basic interface between the APP and the custom service that has been created.

• The end user application provided by the client.

HOW DOES THE APPLICATION ACCESS THE HARDWARE?

15

THE DEVELOPMENT ENVIRONMENT

Xilinx Platform Studio

Xilinx SDK

VIVADO HLS

C/C++ for Android Kernel

Java Eclipse

16

• XPS & SDK - Setup and configure the base system (which can run Android OS).

• Xilinx Vivado HLS - implement a custom IP module using a native programming language (C).

• XPS & SDK - Integrate the custom IP with the system.

Xilinx Platform Studio

Xilinx SDK

VIVADO HLS

17

C/C++ for Android Kernel

• Developing the custom device driver in C.

• Developing the HAL (Hardware Abstraction Layer) which supplies a simple interface between the user App and the custom hardware.

• Customizing the Android Kernel in order to provide the partial reconfiguration OS support.

18

Java Eclipse

• Developing a custom android application in java, which can use the HAL in order to get the services provided by the custom IP we implemented.

• Developing the system service which is a part of the HAL.

SO.. WHAT HAVE WE DONE SO FAR? Setting up a development environment to modify and compile

Android OS & Linux kernel.

Configuring a Fully working Android OS system on ZYNQ with a touch

screen.

Custom IP development & Hardware integration using Xilinx tools.

Developing a simple Linux device driver (char device) which can be

accessed (Read / Write) by the Android on Zynq.

Solving Android privileges limitations by writing a service which can

communicate with our char device.

Enabling a smooth access to the custom hardware from any typical

Android JAVA code.

20

THE SYSTEM

• Learning the partial reconfiguration technology deeply in

order to get the ability to operate it by the OS.

• Developing the Partial reconfiguration driver and service in

order to support Dynamic Hardware.

• Writing more complicated Android drivers to support AXI-4

Streaming for video processing

• Writing efficient hardware with Vivado HLS and integrate it

with the system.

NEXT STEPS …

22

Thank you!

top related