This material exempt per Department of Commerce license exception TSU Software Development.

Slides:



Advertisements
Similar presentations
purpose Search : automation methods for device driver development in IP-based embedded systems in order to achieve high reliability, productivity, reusability.
Advertisements

Program Development Tools The GNU (GNU’s Not Unix) Toolchain The GNU toolchain has played a vital role in the development of the Linux kernel, BSD, and.
9.0 EMBEDDED SOFTWARE DEVELOPMENT TOOLS 9.1 Introduction Application programs are typically developed, compiled, and run on host system Embedded programs.
SYSTEM PROGRAMMING & SYSTEM ADMINISTRATION
1/1/ / faculty of Electrical Engineering eindhoven university of technology Introduction Part 3: Input/output and co-processors dr.ir. A.C. Verschueren.
© 2003 Xilinx, Inc. All Rights Reserved Debugging.
MotoHawk Training Model-Based Design of Embedded Systems.
Figure 2.8 Compiler phases Compiling. Figure 2.9 Object module Linking.
OS Fall ’ 02 Introduction Operating Systems Fall 2002.
Configurable System-on-Chip: Xilinx EDK
OS Spring’03 Introduction Operating Systems Spring 2003.
The Xilinx EDK Toolset: Xilinx Platform Studio (XPS) Building a base system platform.
Chapter 7 Interupts DMA Channels Context Switching.
Midterm Tuesday October 23 Covers Chapters 3 through 6 - Buses, Clocks, Timing, Edge Triggering, Level Triggering - Cache Memory Systems - Internal Memory.
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
Mehmet Can Vuran, Instructor University of Nebraska-Lincoln Acknowledgement: Overheads adapted from those provided by the authors of the textbook.
ECE Department: University of Massachusetts, Amherst Lab 1: Introduction to NIOS II Hardware Development.
Dr. Kimberly E. Newman Hybrid Embedded wk3 Fall 2009.
Lab4 Writing Basic Software Applications Lab: MicroBlaze.
Lab5 Advanced Software Writing Lab : MicroBlaze. for EDK 6.3i1 Objectives Utilize the OPB timer. Assign an interrupt handler to the OBP timer. Develop.
This material exempt per Department of Commerce license exception TSU EDK Introduction.
Lecture 7 Lecture 7: Hardware/Software Systems on the XUP Board ECE 412: Microcomputer Laboratory.
Software Development and Software Loading in Embedded Systems.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Introduction Purpose Objectives Content Learning Time
© 2003 Xilinx, Inc. All Rights Reserved Address Management.
Computer Organization
System Calls 1.
© 2008, Renesas Technology America, Inc., All Rights Reserved 1 Purpose  This training course describes how to configure the the C/C++ compiler options.
Impulse Embedded Processing Video Lab Generate FPGA hardware Generate hardware interfaces HDL files HDL files FPGA bitmap FPGA bitmap C language software.
Enabling the ARM Learning in INDIA ARM DEVELOPMENT TOOL SETUP.
MICROPROCESSOR INPUT/OUTPUT
CHAPTER 3 TOP LEVEL VIEW OF COMPUTER FUNCTION AND INTERCONNECTION
再谈 EDK 赵峰 上海交通大学微电子学院. Knowledge Check What is the MHS file? What does the PlatGen tool do? What tool is used to place executable code in an FPGA block.
© 2005 Xilinx, Inc. All Rights Reserved This material exempt per Department of Commerce license exception TSU Software Development.
This material exempt per Department of Commerce license exception TSU Xilinx Tool Flow.
LAB1 Summary Zhaofeng SJTU.SOME. Embedded Software Tools CPU Logic Design Tools I/O FPGA Memory Logic Design Tools FPGA + Memory + IP + High Speed IO.
© 2003 Xilinx, Inc. All Rights Reserved System Simulation.
© 2004 Xilinx, Inc. All Rights Reserved Embedded Processor Design.
This material exempt per Department of Commerce license exception TSU System Simulation.
This material exempt per Department of Commerce license exception TSU Address Management.
Operating Systems 1 K. Salah Module 1.2: Fundamental Concepts Interrupts System Calls.
Chapter 13 – I/O Systems (Pgs ). Devices  Two conflicting properties A. Growing uniformity in interfaces (both h/w and s/w): e.g., USB, TWAIN.
© 2004 Xilinx, Inc. All Rights Reserved Adding a Processor System to an FPGA Design.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Operating Systems Processes and Threads.
Processor Structure and Function Chapter8:. CPU Structure  CPU must:  Fetch instructions –Read instruction from memory  Interpret instructions –Instruction.
Input/Output Problems Wide variety of peripherals —Delivering different amounts of data —At different speeds —In different formats All slower than CPU.
Implementation of Embedded OS Lab3 Porting μC/OS-II.
Interrupt driven I/O Computer Organization and Assembly Language: Module 12.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
بسم الله الرحمن الرحيم MEMORY AND I/O.
© 2008, Renesas Technology America, Inc., All Rights Reserved 1 Introduction Purpose  This training course demonstrates the Project Generator function.
1 Device Controller I/O units typically consist of A mechanical component: the device itself An electronic component: the device controller or adapter.
LECTURE 3 Translation. PROCESS MEMORY There are four general areas of memory in a process. The text area contains the instructions for the application.
Hello world !!! ASCII representation of hello.c.
Design with Vivado IP Integrator
LonWorks Introduction Hwayoung Chae.
Embedded Real-Time Systems Processing interrupts Lecturer Department University.
Operating Systems A Biswas, Dept. of Information Technology.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Lecture 3 Translation.
DDC 2223 SYSTEM SOFTWARE DDC2223 SYSTEM SOFTWARE.
Muen Policy & Toolchain
Lab 1: Using NIOS II processor for code execution on FPGA
Implementation of Embedded OS
AT91RM9200 Boot strategies This training module describes the boot strategies on the AT91RM9200 including the internal Boot ROM and the U-Boot program.
9.0 EMBEDDED SOFTWARE DEVELOPMENT TOOLS
Lab4 Writing Basic Software Applications Lab: MicroBlaze
Presentation transcript:

This material exempt per Department of Commerce license exception TSU Software Development

Software Design 2 Objectives After completing this module, you will be able to: Identify the functionality included in the GNU tools: GCC, AS, LD, GDB Examine the IP driver’s functionality and design Examine the Xilinx Libraries Determine what is a BSP and what is included

Software Design 3 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Software Design 4 Desktop versus Embedded Desktop development: written, debugged, and run on the same machine OS loads the program into the memory when the program has been requested to run Address resolution takes place at the time of loading by a program called the loader – The loader is included in the OS The programmer glues into one executable file called ELF – Boot code, application code, RTOS, and ISRs – address resolution takes place during the “gluing” stage The executable file is downloaded into the target system through different methods – Ethernet, serial, JTAG, BDM, ROM programmer

Software Design 5 Embedded Development Development takes place on one machine (host) and is downloaded to the embedded system (target) Host Computer Target Computer A cross-compiler is run on the host

Software Design 6 Embedded Development Different set of problems – Unique hardware for every design – Reliability – Real-time response requirement (sometimes) RTOS versus OS – Code compactness – High-level languages and assembly

Software Design 7 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Software Design 8 Simulation Generator Hardware Platform Generation Library Generation Embedded Software Development ISE Tools IP Library or User Repository MSS LibGen.a Compiler (GCC).o Linker (GCC) ELF MHS PlatGen Drivers, MDD MPD, PAO PCore HDL System and Wrapper VHD system.BMM Synthesis (XST) NGC NGDBuildUCF NGD MAP NCD, PCF PAR NCD BitGensystem.BIT BitInit download.BIT iMPACT system_BD.BMM SimGen Behavioral VHD Model SimGen Structural VHD Model SimGen Timing VHD Model Simulation IP ModelsISE Models Testbench Stimulus CompEDKLibCompXLib Application Source.c,.h,.s EDK Tool Flow download.CMD EDK SW Libraries

Software Design Environment The Library Generator (LibGen) utility generates the necessary libraries and drivers for the embedded processors LibGen takes an MSS (Microprocessor Software Specification) file created by the user as input. The MSS file defines the drivers associated with peripherals, standard input/output devices, interrupt handler routines, and other related software features The MSS file is generated by XPS by using the software settings specified

LibGen code directory – A repository for EDK executables include directory – C header files that are required by drivers – xparameters.h Defines base and high addresses of the peripherals in the system Defines the peripheral IDs required by the drivers and user programs Defines the function prototypes LibGen Generated Directories project_directoryProcessor instance directorycode directoryinclude directorylib directorylibsrc directory Note: The number of processor instance directories generated is related to the number of processor instances present in the system

LibGen lib directory – libc.a, libm.a and libxil.a libraries The libxil library contains driver functions that the particular processor can access libsrc directory – Intermediate files and makefiles that compile the libraries and drivers – Peripheral-specific driver files that are copied from the EDK and user driver directories LibGen Generated Directories project_directory processor instance directory code directory include directory lib directory libsrc directory Note: The processor instance directories content is overwritten every time LibGen is run

Software Design 12 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Software Design 13 Software Platform Settings Software settings can be assigned to individual processor instance by selecting Software  Software Platform Settings or clicking button on the toolbar In case of multiple processors in the design software platform settings allow you to select each processor instance and set parameters

Software Design 14 Software Platform Select Software Platform panel Select processor instance Select OS Check desired libraries and their version

Software Design 15 OS and Libraries Select OS and Libraries panel Select processor instance Set stdin and stdout devices as well as assign fpu, malloc, and profiling related parameters Configure selected libraries parameters

Software Design 16 Drivers 2 1 Select Drivers panel Select drivers and version for each device in the design 2 1

Software Design 17 Interrupt Handlers 2 1 Select Interrupt Handler panel If an interrupt signal is used from any peripheral then a corresponding entry will be listed Enter interrupt handler function name

Software Design 18 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Compiler Settings Compiler settings can be assigned by double-clicking Compiler Options entry under an application in the Application tab Environment tab – Application Mode Executable XmdStub (MicroBlaze™ processor only) – Use Custom Linker Script If checked then provide the path to the linker script – Use default Linker Script Program Start Address Stack Size Heap Size

Compiler Settings Debug and Optimization tab – Optimization Parameters Optimization Level: 0 to 3 Use Global Pointer Optimization – Generate Debug Symbols Checking this option allows the generation of debugging information based on the option selected Create symbol for debugging (-g option) Create symbols for assembly (-gstabs option)

Compiler Settings Paths tab – Search Paths Compiler (-B) Library (-L) Include (-I) – Libraries to Link against List user libraries to be used

Compiler Settings Advanced tab – Other Compiler Options Add additional options – For example: -g – Symbol Definitions field Pass Space Separated Options to – Preprocessor (-Wp) – Assembler (-Wa) – Linker (-Wl)

Software Design 23 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Software Design 24 Simulation Generator Hardware Platform Generation Library Generation Embedded Software Development ISE Tools IP Library or User Repository MSS LibGen.a Compiler (GCC).o Linker (GCC) ELF MHS PlatGen Drivers, MDD MPD, PAO PCore HDL System and Wrapper VHD system.BMM Synthesis (XST) NGC NGDBuildUCF NGD MAP NCD, PCF PAR NCD BitGensystem.BIT BitInit download.BIT iMPACT system_BD.BMM SimGen Behavioral VHD Model SimGen Structural VHD Model SimGen Timing VHD Model Simulation IP ModelsISE Models Testbench Stimulus CompEDKLibCompXLib Application Source.c,.h,.s EDK Tool Flow download.CMD EDK SW Libraries

GNU Tools: GCC GCC translates C source code into assembly language GCC also functions as the user interface to the GNU assembler and to the GNU linker, calling the assembler and the linker with the appropriate parameters Supported cross-compilers: – PowerPC  processor compiler GNU GCC (powerpc-eabi-gcc) Wind River Diab  compiler (dcc) – MicroBlaze  processor compiler GNU GCC (mb-gcc) Command line only; uses the settings set through the GUI C files Cross-compiler Assembly files

Software Design 26 GNU Tools Calls four different executables – Preprocessor (cpp0) – Language specific c-compiler cc1 C-programming language cc1plus C++ language – Assembler mb-as (MicroBlaze  processor) powerpc-eabi-as (PowerPC  processor) – Linker and loader mb-ld (MicroBlaze processor) powerpc-eabi-ld (PowerPC processor)

GNU Tools: AS Input: Assembly language files – File extension:.s Output: Object code – File extension:.o – Contains Assembled piece of code Constant data External references Debugging information Typically, the compiler automatically calls the assembler Use –Wa switch if the source files are assembly only and use gcc Assembly files Cross-assembler Object files

Software Design 28 GNU Tools: LD Linker Inputs: – Several object files – Archived object files (library) – Linker script (mapfile) Outputs: – Executable image (.ELF) – Mapfile (different from linker script) Object files Linker script Linker/Locator ExecutableMap

Software Design 29 Binutils: Binary Utilities AR Archiver – Create, modify, and extract from libraries – Used in EDK to combine the object files of the Board Support Package (BSP) in a library – Used in EDK to extract object files from different libraries OBJDUMP – Display information from object files and executables Header information, memory map Data Disassemble code – GNU executables powerpc-eabi-objdump mb-objdump

Software Design 30 Powerpc-eabi-objdump Memory location Text section Machine code Assembly instructions

Software Design 31 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Device Drivers The Xilinx device drivers are designed to meet the following objectives: – Provide maximum portability The device drivers are provided as ANSI C source code – Support FPGA configurability Supports multiple instances of the device without code duplication for each instance, while at the same time managing unique characteristics on a per- instance basis – Support simple and complex use cases A layered device driver architecture provides both – Simple device drivers with minimal memory footprints – Full-featured device drivers with larger memory footprints – Ease of use and maintenance Xilinx uses coding standards and provides well-documented source code for developers

Software Design 33 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Drivers: Level 0 / Level 1 The layered architecture provides seamless integration with… – (Layer 2) RTOS application layer – (Layer 1) High-level device drivers that are full-featured and portable across operating systems and processors – (Layer 0) Low-level drivers for simple use cases Layer 2, RTOS Adaptation Layer 1, High-level Drivers Layer 0, Low-level Drivers

Drivers: Level 0 Consists of low-level device drivers Implemented as macros and functions that are designed to allow a developer to create a small system Characteristics: – Small memory footprint – Little to no error checking is performed – Supports primary device features only – No support of device configuration parameters – Supports multiple instances of a device with base address input to the API – Polled I/O only – Blocking function calls – Header files have “_l” in their names (e.g. xuartlite_l.h)

Drivers: Level 1 Consists of high-level device drivers Implemented as macros and functions and designed to allow a developer to utilize all of the features of a device Characteristics: – Abstract API that isolates the API from hardware device changes – Supports device configuration parameters – Supports multiple instances of a device – Polled and interrupt driven I/O – Non-blocking function calls to aid complex applications – May have a large memory footprint – Typically, provides buffer interfaces for data transfers as opposed to byte interfaces – Header files do not have “_l” in their names (e.g. xuartlite.h)

Comparison Example Uartlite Level 1 – XStatus XUartLite_Initialize ( XUartLite *InstancePtr, Xuint16 DeviceId) – void XUartLite_ResetFifos ( XUartLite *InstancePtr) – unsigned int XUartLite_Send ( XUartLite *InstancePtr, Xuint8 *DataBufferPtr, unsigned int NumBytes) – unsigned int XUartLite_Recv ( XUartLite *InstancePtr, Xuint8 *DataBufferPtr, unsigned int NumBytes) – Xboolean XUartLite_IsSending ( XUartLite *InstancePtr) – void XUartLite_GetStats ( XUartLite *InstancePtr, XUartLite_Stats *StatsPtr) – void XUartLite_ClearStats ( XUartLite *InstancePtr) – XStatus XUartLite_SelfTest ( XUartLite *InstancePtr) – void XUartLite_EnableInterrupt ( XUartLite *InstancePtr) – void XUartLite_DisableInterrupt ( XUartLite *InstancePtr) – void XUartLite_SetRecvHandler ( XUartLite *InstancePtr, XUartLite_Handler FuncPtr, void *CallBackRef) – void XUartLite_SetSendHandler ( XUartLite *InstancePtr, XUartLite_Handler FuncPtr, void *CallBackRef) – void XUartLite_InterruptHandler ( XUartLite *InstancePtr) Uartlite Level 0 – void XUartLite_SendByte ( Xuint32 BaseAddress, Xuint8 Data) – Xuint8 XUartLite_RecvByte ( Xuint32 BaseAddress)

Software Design 38 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Software Design 39 Exceptions and Interrupts Exceptions are events detected by the processor that require action by the system software – Typically, the result of unexpected error conditions (e.g., bus error) – Some exceptions can be programmed to occur (e.g., FIT, PIT) – Some exceptions are generated by external devices (e.g., CritInt) Interrupts are automatic control transfers as a result of an exception – Execution of the current program is suspended after the current instruction – Some context info is saved so execution can return to the current program – Execution is transferred to the interrupt handler to service the interrupt – The interrupt handler must be registered – The interrupt must be enabled

Software Design 40 Hardware Interrupt Inputs Two external inputs to the IBM PowerPC  405 processor core: – Critical interrupt – External interrupt Enabled and disabled through the Machine State Register (MSR) – MSR(CE) and MSR(EE) – is disabled FPGA design adds an interrupt controller for application-specific requirements – Supports 32 interrupts

Software Design 41 Exceptions and Interrupts Entry Point Save State Call Handler Restore State Return to Program Exception Code HANDLER Registered Handler

Software Design 42 Exceptions and Interrupts Exception library function calls support: – void XExc_Init(void); Initializes vector table, default handlers – void XExc_RegisterHandler (Xuint8 ExceptionId, XExceptionHandler Handler, void *DataPtr); Allows the registration of a handler – void XExc_RemoveHandler (Xuint8 ExceptionId) Replaces the current handler with a default handler – void XExc_mEnableExceptions (EnableMask); Enables Crit, NonCrit interrupts – void XExc_mDisableExceptions (DisableMask); Disables Crit, NonCrit interrupts

Software Design 43 Timer Facilities Features: – Time base – Fixed Interval Timer (FIT) – Programmable Interval Timer (PIT) – Watchdog timer – These timers share the same time-base clock frequency Uses: – Time-of-day – Data logging – Peripherals requiring periodic service – Recover from faulty hardware or firmware

PowerPC Processor: Sleep Sleep BSP library function calls: – unsigned int usleep(unsigned int __useconds); – unsigned int sleep(unsigned int __seconds); The sleep() or usleep() function in sleep.c delays the execution of a program by __seconds or __useconds seconds Set CORE_CLOCK_FREQUENCY as sleep() and usleep() functions use it compute the delay

PowerPC: Time The xtime_l.c file and corresponding xtime_l.h include file provide access to the 64-bit time-base counter inside the PowerPC  processor core The counter increases by one every processor cycle Declarations: – void XTime_SetTime(XTime xtime); Sets the time-base register to the value in xtime – void XTime_GetTime(XTime *xtime); Writes the current value of the time-base register to variable xtime – void XTime_TSRClearStatusBits(unsigned long Bitmask); Used to clear bits in the Timer Status Register (TSR). The parameter Bitmask designates the bits to be cleared. A one in any position of the Bitmask parameter clears the corresponding bit in the TSR

Software Design 46 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, and Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Integration in EDK When the interrupt generating device is connected to the processor interrupt pin, either through an opb interrupt controller or directly, only the interrupt handler function must be developed (for example, you do not need to explicitly write code to set up the interrupt mechanism) In the Software Platform Setting dialog box, enter the interrupt handler function name for the corresponding device The Interrupt Handler Function section in Interrupt Handler panel provides an entry for the Interrupt function name associated with that peripheral

Software Design 48 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Libraries Xilinx provides three libraries – Math library (libm) The math library is an improvement over the newlib math library – Standard C language support (libc) The functions of this library are automatically available – Xilinx C drivers and libraries ( libxil) Xilinx file support functions LibXilFile Xilinx memory file system LibXilMfs Xilinx networking support LibXilNet

Software Design 50 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Software Design 51 What is a BSP? Board Support Package (BSP): – A set of software modules combined into the libxil.a library – Allows you to use the low-level PowerPC  processor core functions Enable, disable, and flush caches Read/write time-base registers – Allows you to use IP peripheral-device drivers GPIO, IIC controller, PCI controller, UART – Offers glue functionality to link code against standard libraries Time, sleep Files Memory

Software Design 52 Hardware IP Device Drivers Driver – Provides an interface for the software to communicate with the hardware – Designed to be portable across processor architectures and operating systems Delivery format – Delivered as source code, allowing it to be built and optimized – Minimized assembly language – C programming language

Software Design 53 Outline Introduction Software Settings – Software Platform Settings – Compiler Settings GNU Tools: GCC, AS, LD, Binutils Device Drivers – Level 0, Level 1 – PowerPC Processor: Exceptions, Sleep, Time – Integration in EDK Libraries BSP – Boot Files and Sequence

Software Design 54 PowerPC Processor Boot Files Files: boot.S, boot0.S, crt0.S, eabi.S – Application entry point at label _boot in boot.S – _boot is single jump instruction to _boot0 – _boot0 is a few instructions that do a jump to _start in crt0.S – _start Clears.bss and.sbss sections Sets up stack on an eight byte alignment Initializes time-base registers to zero Optionally, enable FPU bit in MSR Calls main() – Calls _eabi to set R13 and R2 registers to point to.sdata and.sdata2 sections respectively – Performs user tasks

Software Design 55 Skills Check

Software Design 56 Review Questions What is included in a BSP? What are some of the differences between a Level 0 and a Level 1 driver?

Software Design 57 Answers What is included in a BSP? – IP drivers – Processor functions – Library functions What are some of the differences between a Level 0 and a Level 1 driver? – Size – Functionality – Ease of use

Where Can I Learn More? Tool documentation – Platform Specification Format Reference Manual Microprocessor Software Specifications Microprocessor Driver Definition Microprocessor Library Definition EDK OS and Libraries Reference Guide  LibXil File, Net, and Kernel Processor IP Reference Guide Xilinx Drivers Processor documentation – PowerPC Processor Reference Guide – PowerPC 405 Processor Block Reference Guide Support website – EDK Home Page: support.xilinx.com/edk