Latticemico8 Developer User Guide
Total Page:16
File Type:pdf, Size:1020Kb
LatticeMico8 Developer User Guide Lattice Semiconductor Corporation 5555 NE Moore Court Hillsboro, OR 97124 (503) 268-8000 March 2011 Copyright Copyright © 2011 Lattice Semiconductor Corporation. This document may not, in whole or part, be copied, photocopied, reproduced, translated, or reduced to any electronic medium or machine- readable form without prior written consent from Lattice Semiconductor Corporation. Trademarks Lattice Semiconductor Corporation, L Lattice Semiconductor Corporation (logo), L (stylized), L (design), Lattice (design), LSC, CleanClock, E2CMOS, Extreme Performance, FlashBAK, FlexiClock, flexiFlash, flexiMAC, flexiPCS, FreedomChip, GAL, GDX, Generic Array Logic, HDL Explorer, IPexpress, ISP, ispATE, ispClock, ispDOWNLOAD, ispGAL, ispGDS, ispGDX, ispGDXV, ispGDX2, ispGENERATOR, ispJTAG, ispLEVER, ispLeverCORE, ispLSI, ispMACH, ispPAC, ispTRACY, ispTURBO, ispVIRTUAL MACHINE, ispVM, ispXP, ispXPGA, ispXPLD, Lattice Diamond, LatticeCORE, LatticeEC, LatticeECP, LatticeECP-DSP, LatticeECP2, LatticeECP2M, LatticeECP3, LatticeMico8, LatticeMico32, LatticeSC, LatticeSCM, LatticeXP, LatticeXP2, MACH, MachXO, MachXO2, MACO, ORCA, PAC, PAC-Designer, PAL, Performance Analyst, Platform Manager, ProcessorPM, PURESPEED, Reveal, Silicon Forest, Speedlocked, Speed Locking, SuperBIG, SuperCOOL, SuperFAST, SuperWIDE, sysCLOCK, sysCONFIG, sysDSP, sysHSI, sysI/O, sysMEM, The Simple Machine for Complex Design, TraceID, TransFR, UltraMOS, and specific product designations are either registered trademarks or trademarks of Lattice Semiconductor Corporation or its subsidiaries in the United States and/or other countries. ISP, Bringing the Best Together, and More of the Best are service marks of Lattice Semiconductor Corporation. Other product names used in this publication are for identification purposes only and may be trademarks of their respective companies. Disclaimers NO WARRANTIES: THE INFORMATION PROVIDED IN THIS DOCUMENT IS “AS IS” WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND INCLUDING WARRANTIES OF ACCURACY, COMPLETENESS, MERCHANTABILITY, NONINFRINGEMENT OF INTELLECTUAL PROPERTY, OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT WILL LATTICE SEMICONDUCTOR CORPORATION (LSC) OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER (WHETHER DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT OF THE USE OF OR INABILITY TO USE THE INFORMATION PROVIDED IN THIS DOCUMENT, EVEN IF LSC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. BECAUSE SOME JURISDICTIONS PROHIBIT THE EXCLUSION OR LIMITATION OF CERTAIN LIABILITY, SOME OF THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU. LSC may make changes to these materials, specifications, or information, or to the products described herein, at any time without notice. LSC makes no commitment to update this documentation. LSC reserves the right to discontinue any product or service without notice and assumes no obligation to correct any errors contained herein or to advise any user of this document LatticeMico8 Developer User Guide ii of any correction if such be made. LSC recommends its customers obtain the latest version of the relevant information to establish, before ordering, that the information being relied upon is current. Type Conventions Used in This Document Convention Meaning or Use Bold Items in the user interface that you select or click. Text that you type into the user interface. <Italic> Variables in commands, code syntax, and path names. Ctrl+L Press the two keys at the same time. Courier Code examples. Messages, reports, and prompts from the software. ... Omitted material in a line of code. Omitted lines in code and report examples. [ ] Optional items in syntax descriptions. In bus specifications, the brackets are required. ( ) Grouped items in syntax descriptions. { } Repeatable items in syntax descriptions. | A choice between items in syntax descriptions. LatticeMico8 Developer User Guide iii LatticeMico8 Developer User Guide iv Contents Chapter 1 LatticeMico System Overview 1 LatticeMico System Design Flow 1 Device Support 3 Design Flow Steps 3 Related Documentation 4 Chapter 2 Using the LatticeMico System Software 7 LatticeMico System Software Overview 7 About the LatticeMico System Tools 7 LatticeMico System Requirements 8 Running LatticeMico System 8 LatticeMico System Perspectives 8 Setting Up Diamond for a LatticeMico8 Platform 13 Creating a New Diamond Project 13 Recommended IP Design Flow 14 Creating the LatticeMico8 Platform in MSB 15 Starting MSB 15 Creating a Platform Description in MSB 17 Connecting Master and Slave Ports 21 Changing Master Port Arbitration Priorities 26 Assigning Component Addresses 26 Assigning Component Interrupt Priorities 28 Performing Design Rule Checks 28 Saving the Microcontroller Platform 29 Generating the Microcontroller Platform 29 Synthesizing the Platform to Create an EDIF File (Linux Only) 31 Design Guidance for Platform Performance 32 Generating the Microcontroller Bitstream 33 Downloading Hardware Bitstream to the FPGA 35 Using C/C++ SPE to Develop Your Software 36 Starting C/C++ SPE 37 LatticeMico8 Developer User Guide v Contents Creating Software Projects 38 Basic Project Operations 42 Understanding the Build Process 46 Building Your Software Project 47 Setting Project Properties 48 Rebuilding Your Software Project 51 Performing Builds Automatically 51 Deploying Your Software to LatticeMico8 Platform 51 On-Chip Memory Deployment 52 Non-Volatile Memory Deployment 55 Performing HDL Functional Simulation of LatticeMico8 61 Configuring the Platform with LatticeMico System Builder 62 Preparing for HDL Functional Simulation 63 Performing HDL Functional Simulation with Aldec Active-HDL 66 Performing HDL Functional Simulation with Mentor Graphics ModelSim 66 Chapter 3 LatticeMico8 Run-Time Environment 69 Build/Compilation Utilities 69 Device Drivers and Services 69 Basic Program Structure 72 Creating a Blank Project 73 Adding a Source File to the Project 75 Adding Source to the Source File 77 Building the Application 78 Boot Sequence 80 Reset Address 82 Boot Code Sequence Flow 83 Interrupt Handling Sequence 84 Interrupt Handlers 84 Interrupt Handling Sequence Flow 86 Chapter 4 Managed Build Process and Directory Structure 89 Creating Managed Build Applications 89 LatticeMico8 C/C++ Project Build Flow 90 The Build Process 91 Build Directory Structure 92 Platform Library-Generated Source Files 99 DDStructs.h File 101 DDStructs.c File 103 DDInit.c File 105 System_Conf.h File 106 Component Software Elements 111 Software Development Utilities 117 Build Tools 117 lm8-elf-ar 117 lm8-elf-as 119 lm8-elf-gcc 121 lm8-elf-ld 123 lm8-elf-nm 128 LatticeMico8 Developer User Guide vi Contents lm8-elf-objcopy 129 lm8-elf-objdump 132 lm8-elf-size 134 Glossary 137 Index 143 LatticeMico8 Developer User Guide vii Contents LatticeMico8 Developer User Guide viii 1 LatticeMico System Overview This software developer's guide describes the flow that is used to create and deploy software application code for the LatticeMico8 microcontroller. In addition, it familiarizes the reader with the LatticeMico8 run time environment, the managed build environment, and it's associated directory structure. This guide is targeted to software programmers who are interested in learning the fundamentals of programming the embedded soft core microcontroller. For a list of related documents on the LatticeMico8 microcontroller, refer to '“Related Documentation” on page 4. LatticeMico System Design Flow This section lists the major steps involved in designing for the LatticeMico8 microcontroller. In addition to running the FPGA flow in Diamond, you will use the integrated LatticeMico System software to build both hardware and software features of the embedded soft core microcontroller. The LatticeMico System software is composed of three bundled applications: Mico System Builder (MSB) C/C++ Software Project Environment (C/C++ SPE) Deployment These applications work in the background through the user interface and can be accessed through different “perspectives” in the LatticeMico System software. Perspectives are a prearranged and predefined set of user functions that can be accessed within the software user interface. You toggle different perspectives on and off by clicking on perspective tabs. Perspectives are described in more detail in “LatticeMico System Perspectives” on page 8. LatticeMico8 Software Developer User Guide 1 LatticeMico System Overview LatticeMico System Design Flow MSB is used by hardware designers to create the microcontroller platform for both hardware and software development. A platform generically refers to the hardware microcontroller configuration, the CPU, its peripherals, and how these components are interconnected. This functionality in the LatticeMico8 System software can be accessed by using the MSB perspective in the interface. The default MSB perspective is completely separate in terms of function from the other two perspectives. You can use the C/C++ Software Project Environment (SPE) to develop the software application code that drives the platform. There is no debugger support for LatticeMico8. Figure 1 shows the interaction of the three LatticeMico8 System applications with Lattice Diamond in the microcontroller development design flow. Figure 1: LatticeMico8 System Development Software Tool Flow As noted earlier, you can learn more about perspectives in “LatticeMico System Perspectives” on page 8. In