Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "This material exempt per Department of Commerce license exception TSU Software Development."— Presentation transcript:

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

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 Software Design 14 Software Platform 1 2 3 4 1 2 3 4 Select Software Platform panel Select processor instance Select OS Check desired libraries and their version

15 Software Design 15 OS and Libraries 3 4 1 2 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 1 2 3 4

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

17 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 2 1 3 3

18 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

19 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

20 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)

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

22 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)

23 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

24 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

25 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

26 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)

27 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

28 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

29 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

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

31 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

32 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

33 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

34 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

35 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)

36 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)

37 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)

38 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

39 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

40 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) – Default @RESET is disabled FPGA design adds an interrupt controller for application-specific requirements – Supports 32 interrupts

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

42 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

43 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

44 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

45 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

46 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

47 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

48 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

49 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

50 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

51 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

52 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

53 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

54 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

55 Software Design 55 Skills Check

56 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?

57 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

58 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


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

Similar presentations


Ads by Google