High Speed Digital Systems Lab. Performed By: Itamar Niddam and Lior Motorin Instructor: Inna Rivkin Bi-Semesterial. Winter 2012/2013 Technion Israel Institute of Technology Department of Electrical Engineering Electronics Computers Communications Core 0 : A9 ARM Core 1 : A9 ARM Processing System running Android Software application AXI4 BUS Peripherals Controllers Hardware accelerator Programmable Logic Standard SOPC approach • The Hardware is constant • The user can only switch between application Task specific - Software 2 Using Dynamic Partial Hardware Reconfiguration Core 0 : A9 ARM Core 1 : A9 ARM Processing System running Android Application #1 #2 AXI4 BUS Peripherals Controllers Custom IP Hardware Acceleratior #1 #2 Programmable Logic New approach • Partial dynamic hardware reconfiguration by OS (Android) • Hardware system dynamically changed & adapted to a specific application. The user controls the software and the hardware • The hardware change is done at runtime by application & OS Task specific - Software & Hardware 3 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; } 4 Sobel Filter 5 6 Core 0 : A9 ARM Core 1 : A9 ARM Processing System running Android Sobel Software application AXI4 BUS Peripherals Controllers Sobel Hardware module Programmable Logic Sobel Filter 7 8 9 HDMI Core 0 : A9 ARM Processing System FMC Core 1 : A9 ARM AXI4 UART LogicBricks HDMI Controller Custom IP Programmable Logic USB 0 10 Processing System • • • • • • • The Xilinx ZC-702 Board for Zynq-7000 have Android apps communicates with hardware the ability Android relies to run on Android Linux kernel OS on 2.6. it. by System services. Android porting Hardware accelerator supplied drivers by Iviea are System service represents an Hardware FMC Touch screen implemented by loadable controller kernel supplied modules. by abstraction layer between the App and the Xylon. interact with hardware by memoryDrivers kernel driver mapped IO. Linux Kernel Programming Logic ARM CPU0 Xylon GPU Driver Xylon Hardware Zynq ZC-702 11 Partial ReConfiguration Service Processing System Custom IP Module Driver Programming Logic Custom IP Linux Kernel ARM CPU0 Xylon GPU Driver Xylon Hardware Partial Configuration Driver Zynq ZC-702 12 App Code Bitstream Processing System Partial ReConfiguration Service Custom IP Module Driver Programming Logic Custom IP Linux Kernel ARM CPU0 Xylon GPU Driver Xylon Hardware Partial Configuration Driver Zynq ZC-702 13 APP System service API Binder System Server Custom Service JAVA JNI C • Make ourbasic system service available The custom service run within Supplies Hardware functions Abstraction on Layer thethe through the SDK.type, using the System server. given hardware API. Supplies abasic basic interface • The end the user application provided Enables system server to driver. interface between Theby custom linux device driver. the APP and the custom the client. reach the HAL. • between Provided the service by and the the driver custom developer. new .ko service file located in /dev/… has been created. • Bridging methods called by A sharedthat hardware. library located in the in JAVA nativethe code in • user /system/lib... Essential for to bridging native order to use the HAL. and Java code. HAL API HAL module Driver module 14 Xilinx Platform Studio Xilinx SDK VIVADO HLS C/C++ for Android Kernel Java Eclipse 15 Xilinx Platform Studio Xilinx SDK VIVADO HLS • 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. 16 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. 17 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. 18 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 • 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. Thank you ! 22