Ada05 Compiler for ARM Based Systems

Total Page:16

File Type:pdf, Size:1020Kb

Ada05 Compiler for ARM Based Systems Technical University of Łódź Institute of Information Technology Division of Computer Networks MASTER’S THESIS Ada’05 compiler for ARM based systems by Bartłomiej Horn Faculty of Technical Physics, Computer Science and Applied Mathematics Supervisor: dr inż. Michał Morawski Album number: 127218 Łódź, November 30, 2009 Instytut Informatyki 90-924 Łódź, ul. Wólczańska 215, budynek B9 tel. 042 631 27 97, 042 632 97 57, fax. 042 630 34 14, email: offi[email protected] Contents Contents iii 1 Introduction 1 1.1. Microcontrollers . 1 1.2. Ada language . 2 1.3. Aims of the thesis . 3 1.4. Organisation of the thesis . 3 1.5. Another systems . 4 1.6. Acknowledgements . 4 2 ARM based systems 7 2.1. ARM processors . 7 2.2. Memory issues . 9 3 GNAT Ada compiler 11 3.1. GNAT . 11 3.2. GNU Compiler Collection (GCC) . 11 3.2.1. Structure . 12 3.3. GNAT compilation model . 13 4 Compilation of arm-elf-gnat 15 4.1. Basics . 15 4.1.1. Important definitions . 15 4.2. Requirements . 16 iii iv CONTENTS 4.3. configure script options . 18 4.4. Building arm-elf-gnat . 19 5 Structure of the Ada front end 21 5.1. Makefile.in .......................... 22 5.2. C files . 23 5.3. system.ads file . 25 5.4. Corrupted files . 26 5.5. Back end file . 27 6 Demo program 29 7 Summary 33 7.1. Future works . 33 7.2. Summary . 34 A BibTEX 35 B CD Content 37 Bibliography 39 Chapter 1 Introduction 1.1. Microcontrollers Electronic components are present in a growing number of devices: from TV remote controllers and portable music players to car brake systems and life-support apparatus in hospitals. Each of them has specific functions, which are well known during designing. A very convenient way to con- trol them is to use a microcontroller—a small computer build on a single integrated circuit. The microcontroller has its own processor, RAM and some additional peripherals—depending on needs (such as timers or serial output). The microcontroller and a program running on it are integral part of the device. This program is often called firmware, and usually it is not replaceable on finished product. High specialisation allows optimisation of software and hardware to perform specific functions. Requirements con- cerning choice of processor are predictable, there is no need for installing chip which has better parameters than sufficient. For the same reasons, microcontrollers that are chosen for a device have only necessary functions. It is possible because there are various models on the market, with dif- ferent processors, peripherals, RAM size, communication ports or power consumption. Processor’s clock rate does not need to be very high—1 MHz 1 2 CHAPTER 1. INTRODUCTION is enough for many applications, and RAM size of 2 kB is not rare. The most popular are the microcontrollers based on ARM processors, described in chapter 2. A compiler for them is the main goal of this thesis. The question is, which language should the compiler compile? 1.2. Ada language At the very beginning, the most popular language to program microcon- trollers was the assembly language. The programmer is able to utilise 100% of the processors strengths and features, however, the assembly code is dif- ficult to maintain and it takes very long to write one comparing to high- levels languages. They have many advantages over assembler—it is easier to maintain, develop and debug code written in high level language. Those advantages are applicable to microcontrollers programming. Nowadays, the standard language for this objective is C. Although much easier than assembler, C is not perfect; for example, it is not strong-typed and lacks Object Oriented Programming. Writing soft- ware in C is a good idea, albeit it is better to have alternatives. In Author’s opinion one of the best languages for programming microcontrollers is Ada. Ada has been created to meet Department of Defense of the USA spe- cial requirements [12]. Generally, the language should be reliable, easy to maintain and enable minimisation of errors in programs. Ada is such a language. It is very strong typed, allows Object Oriented Programming, generic programming, and has a great concept of modularity using pack- ages. Microcontrollers are to meet similar criteria to military systems, as the reliability of programs is extremely important here. Many more of Ada advantages can be retrieved from its reference manual [7]. Ada has a formal standard—reference manual [7]. The latest standard version has been published in 2005, and the current language name is Ada’05 or Ada 2005 (the previous have been Ada 95 and Ada 83). In this work, simple Ada name is used and it means Ada’05, however, most information 1.3.. AIMS OF THE THESIS 3 is correct for previous versions as well. The compiler sticks to the Ada’05 rules, but it can be switched to work with previous standard. 1.3. Aims of the thesis The goal of the thesis is to provide a working Ada compiler for ARM mi- crocontrollers, basing on the existing GNAT compiler. Next, it is used to compile as an example a simple program for the LPC2148 Edu Board [2]— microcontroller produced by Embedded Artists for educational purposes. The device used in this thesis has been provided by Technical University of Łódź. This program uses FreeRTOS [3]—an operating system destined for industrial purposes employing microcontrollers, where code size is impor- tant. 1.4. Organisation of the thesis This chapter explains the aims of this thesis, defines the microcontroller term and justifies the choice of the Ada language for writing microcontroller software. In chapter 2, ARM processors are briefly described, with the emphasis on special compilation issues. Chapter 3 describes GNAT as a part of the GNU1 Compiler Collection, describes the structure of GCC and explains the compilation model used in GNAT. Chapter 4 defines some important terms referring to GCC compilation, describes its requirements and gives practical advice on the GNAT compi- lation for ARM based systems. In chapter 5 the structure of GNAT and meaning of its most important files are described. 1GNU is Not Unix, http://www.gnu.org/ 4 CHAPTER 1. INTRODUCTION Chapter 6 describes the provided demo application, focusing on the aspects specific to programming microcontrollers. Chapter 7 summarises the thesis and gives suggestion on future works. 1.5. Another systems On the market, there is a large scope of microcontrollers families, such as Microchip Technologies which manufactures PIC microcontrollers: 8, 16 and 32-bits. The other popular solutions are provided by Texas Instru- ments (16-bits MSP430 and 16- or 32-bits TMS320C2xxx families) and Rabbit Semiconductors. Huge part of automotive industry is supplied by Freescale Technologies, which is one of the biggest supplier of engine sys- tems microcontrollers. AVR, Atmel 8-bit microcontrollers are widely used in the electronics industry. Additionally, they are popular among the hobbyists as they are easily programmable. It is notable that there exists an Ada compiler for these systems: AVR-Ada, downloadable from http://sourceforge.net/ projects/avr-ada/. It is also based on GCC and ensures similar function- ality to the compiler developed for this thesis. In July, 2009, AdaCore published GNAT compiler for LEGO MIND- STORMS NXT, educational robotic platform. These small LEGO robots are provided with ARM processors, several different sensors, Bluetooth port, and are perfect for learning embedded programming. The compiler has a binding to a different operating system (nxtOSEK) than the one used in this thesis, and is distributed with libraries helping in taking advantage of robot’s components. The sources are not available to download. 1.6. Acknowledgements I gratefully thank my supervisor, Michał Morawski, who lead me through the dangerous world of microcontrollers and was always able to competently 1.6.. ACKNOWLEDGEMENTS 5 answer all my questions. He spent long time patiently explaining to me the most difficult issues in every single detail. Without his help and advice, the work would have taken at least three times longer to complete. I thank my friend Milena Kuś, who supported me all the time. Thanks to her, and my friend Grzegorz Wróblewski, English language readers can read this work with less irritation, as they have spent long hours finding language errors in this thesis. Finally, and above all, I thank my Mother: for patience. Chapter 2 ARM based systems 2.1. ARM processors ARM is a family of RISC1 processors, the acronym stands for Advanced RISC Machine. The first processor of this type was developed from scratch in Acorn Computers Ltd, in the mid 80’s (named Acorn RISC Machine). The concern’s intention was to build personal computers destined for office purposes. Since they did not have enough resources (neither money nor experience) to produce a complex system, a small and cheap processor was the result. As Lee Smith says, low power consumption, one of the biggest advantages of the ARM family, was in fact caused by accident [9]—as a result of its simplicity. Although personal computers based on the ARM chipset did not succeed on the market, the ARM processor turned out to be the ideal solution for embedded systems. In 1990 Advanced RISC Machine Ltd. was founded and processors family market name was changed to the one known nowadays. ARM processors were becoming more and more popular among device de- velopers, what resulted in their application to hand-held organisers, video games, real-time controllers in the automotive market, etc. At present, ARM based systems are the most popular 32-bit controllers. 1Reduced Instruction Set Computer 7 8 CHAPTER 2.
Recommended publications
  • Linux and Electronics
    Linux and Electronics Urs Lindegger Linux and Electronics Urs Lindegger Copyright © 2019-11-25 Urs Lindegger Table of Contents 1. Introduction .......................................................................................................... 1 Note ................................................................................................................ 1 2. Printed Circuits ...................................................................................................... 2 Printed Circuit Board design ................................................................................ 2 Kicad ....................................................................................................... 2 Eagle ..................................................................................................... 13 Simulation ...................................................................................................... 13 Spice ..................................................................................................... 13 Digital simulation .................................................................................... 18 Wings 3D ....................................................................................................... 18 User interface .......................................................................................... 19 Modeling ................................................................................................ 19 Making holes in Wings 3D .......................................................................
    [Show full text]
  • Riscv-Software-Stack-Tutorial-Hpca2015
    Software Tools Bootcamp RISC-V ISA Tutorial — HPCA-21 08 February 2015 Albert Ou UC Berkeley [email protected] Preliminaries To follow along, download these slides at http://riscv.org/tutorial-hpca2015.html 2 Preliminaries . Shell commands are prefixed by a “$” prompt. Due to time constraints, we will not be building everything from source in real-time. - Binaries have been prepared for you in the VM image. - Detailed build steps are documented here for completeness but are not necessary if using the VM. Interactive portions of this tutorial are denoted with: $ echo 'Hello world' . Also as a reminder, these slides are marked with an icon in the upper-right corner: 3 Software Stack . Many possible combinations (and growing) . But here we will focus on the most common workflows for RISC-V software development 4 Agenda 1. riscv-tools infrastructure 2. First Steps 3. Spike + Proxy Kernel 4. QEMU + Linux 5. Advanced Cross-Compiling 6. Yocto/OpenEmbedded 5 riscv-tools — Overview “Meta-repository” with Git submodules for every stable component of the RISC-V software toolchain Submodule Contents riscv-fesvr RISC-V Frontend Server riscv-isa-sim Functional ISA simulator (“Spike”) riscv-qemu Higher-performance ISA simulator riscv-gnu-toolchain binutils, gcc, newlib, glibc, Linux UAPI headers riscv-llvm LLVM, riscv-clang submodule riscv-pk RISC-V Proxy Kernel (riscv-linux) Linux/RISC-V kernel port riscv-tests ISA assembly tests, benchmark suite All listed submodules are hosted under the riscv GitHub organization: https://github.com/riscv 6 riscv-tools — Installation . Build riscv-gnu-toolchain (riscv*-*-elf / newlib target), riscv-fesvr, riscv-isa-sim, and riscv-pk: (pre-installed in VM) $ git clone https://github.com/riscv/riscv-tools $ cd riscv-tools $ git submodule update --init --recursive $ export RISCV=<installation path> $ export PATH=${PATH}:${RISCV}/bin $ ./build.sh .
    [Show full text]
  • Operating Systems and Applications for Embedded Systems >>> Toolchains
    >>> Operating Systems And Applications For Embedded Systems >>> Toolchains Name: Mariusz Naumowicz Date: 31 sierpnia 2018 [~]$ _ [1/19] >>> Plan 1. Toolchain Toolchain Main component of GNU toolchain C library Finding a toolchain 2. crosstool-NG crosstool-NG Installing Anatomy of a toolchain Information about cross-compiler Configruation Most interesting features Sysroot Other tools POSIX functions AP [~]$ _ [2/19] >>> Toolchain A toolchain is the set of tools that compiles source code into executables that can run on your target device, and includes a compiler, a linker, and run-time libraries. [1. Toolchain]$ _ [3/19] >>> Main component of GNU toolchain * Binutils: A set of binary utilities including the assembler, and the linker, ld. It is available at http://www.gnu.org/software/binutils/. * GNU Compiler Collection (GCC): These are the compilers for C and other languages which, depending on the version of GCC, include C++, Objective-C, Objective-C++, Java, Fortran, Ada, and Go. They all use a common back-end which produces assembler code which is fed to the GNU assembler. It is available at http://gcc.gnu.org/. * C library: A standardized API based on the POSIX specification which is the principle interface to the operating system kernel from applications. There are several C libraries to consider, see the following section. [1. Toolchain]$ _ [4/19] >>> C library * glibc: Available at http://www.gnu.org/software/libc. It is the standard GNU C library. It is big and, until recently, not very configurable, but it is the most complete implementation of the POSIX API. * eglibc: Available at http://www.eglibc.org/home.
    [Show full text]
  • Linux Journal | February 2016 | Issue
    ™ A LOOK AT KDE’s KStars Astronomy Program Since 1994: The Original Magazine of the Linux Community FEBRUARY 2016 | ISSUE 262 | www.linuxjournal.com + Programming Working with Command How-Tos Arguments in Your Program a Shell Scripts BeagleBone Interview: Katerina Black Barone-Adesi on to Help Brew Beer Developing the Snabb Switch Network Write a Toolkit Short Script to Solve a WATCH: ISSUE Math Puzzle OVERVIEW V LJ262-February2016.indd 1 1/21/16 5:26 PM NEW! Agile Improve Product Business Development Processes with an Enterprise Practical books Author: Ted Schmidt Job Scheduler for the most technical Sponsor: IBM Author: Mike Diehl Sponsor: people on the planet. Skybot Finding Your DIY Way: Mapping Commerce Site Your Network Author: to Improve Reuven M. Lerner Manageability GEEK GUIDES Sponsor: GeoTrust Author: Bill Childers Sponsor: InterMapper Combating Get in the Infrastructure Fast Lane Sprawl with NVMe Author: Author: Bill Childers Mike Diehl Sponsor: Sponsor: Puppet Labs Silicon Mechanics & Intel Download books for free with a Take Control Linux in simple one-time registration. of Growing the Time Redis NoSQL of Malware http://geekguide.linuxjournal.com Server Clusters Author: Author: Federico Kereki Reuven M. Lerner Sponsor: Sponsor: IBM Bit9 + Carbon Black LJ262-February2016.indd 2 1/21/16 5:26 PM NEW! Agile Improve Product Business Development Processes with an Enterprise Practical books Author: Ted Schmidt Job Scheduler for the most technical Sponsor: IBM Author: Mike Diehl Sponsor: people on the planet. Skybot Finding Your DIY Way: Mapping Commerce Site Your Network Author: to Improve Reuven M. Lerner Manageability GEEK GUIDES Sponsor: GeoTrust Author: Bill Childers Sponsor: InterMapper Combating Get in the Infrastructure Fast Lane Sprawl with NVMe Author: Author: Bill Childers Mike Diehl Sponsor: Sponsor: Puppet Labs Silicon Mechanics & Intel Download books for free with a Take Control Linux in simple one-time registration.
    [Show full text]
  • Compiler Construction
    Compiler Construction Chapter 11 Compiler Construction Compiler Construction 1 A New Compiler • Perhaps a new source language • Perhaps a new target for an existing compiler • Perhaps both Compiler Construction Compiler Construction 2 Source Language • Larger, more complex languages generally require larger, more complex compilers • Is the source language expected to evolve? – E.g., Java 1.0 ! Java 1.1 ! . – A brand new language may undergo considerable change early on – A small working prototype may be in order – Compiler writers must anticipate some amount of change and their design must therefore be flexible – Lexer and parser generators (like Lex and Yacc) are therefore better than hand- coding the lexer and parser when change is inevitable Compiler Construction Compiler Construction 3 Target Language • The nature of the target language and run-time environment influence compiler construction considerably • A new processor and/or its assembler may be buggy Buggy targets make it difficult to debug compilers for that target! • A successful source language will persist over several target generations – E.g., 386 ! 486 ! Pentium ! . – Thus the design of the IR is important – Modularization of machine-specific details is also important Compiler Construction Compiler Construction 4 Compiler Performance Issues • Compiler speed • Generated code quality • Error diagnostics • Portability • Maintainability Compiler Construction Compiler Construction 5 Compiler Speed • Reduce the number of modules • Reduce the number of passes Perhaps generate machine
    [Show full text]
  • A Model-Driven Development and Verification Approach
    A MODEL-DRIVEN DEVELOPMENT AND VERIFICATION APPROACH FOR MEDICAL DEVICES by Jakub Jedryszek B.S., Wroclaw University of Technology, Poland, 2012 B.A., Wroclaw University of Economics, Poland, 2012 A THESIS submitted in partial fulfillment of the requirements for the degree MASTER OF SCIENCE Department of Computing and Information Sciences College of Engineering KANSAS STATE UNIVERSITY Manhattan, Kansas 2014 Approved by: Major Professor John Hatcliff Abstract Medical devices are safety-critical systems whose failure may put human life in danger. They are becoming more advanced and thus more complex. This leads to bigger and more complicated code-bases that are hard to maintain and verify. Model-driven development provides high-level and abstract description of the system in the form of models that omit details, which are not relevant during the design phase. This allows for certain types of verification and hazard analysis to be performed on the models. These models can then be translated into code. However, errors that do not exist in the models may be introduced during the implementation phase. Automated translation from verified models to code may prevent to some extent. This thesis proposes approach for model-driven development and verification of medi- cal devices. Models are created in AADL (Architecture Analysis & Design Language), a language for software and hardware architecture modeling. AADL models are translated to SPARK Ada, contract-based programming language, which is suitable for software veri- fication. Generated code base is further extended by developers to implement internals of specific devices. Created programs can be verified using SPARK tools. A PCA (Patient Controlled Analgesia) pump medical device is used to illustrate the primary artifacts and process steps.
    [Show full text]
  • Linux Everywhere a Look at Linux Outside the World of Desktops
    Linux Everywhere A look at Linux outside the world of desktops CIS 191 Spring 2012 – Guest Lecture by Philip Peng Lecture Outline 1. Introduction 2. Different Platforms 3. Reasons for Linux 4. Cross-compiling 5. Case Study: iPodLinux 6. Questions 2 What’s in common? 3 All your hardware are belong to us • Linux is everywhere – If its programmable, you can put Linux on it! – Yes, even a microwave CES 2010, microwave running Android: http://www.handlewithlinux.com/linux-washing-cooking 4 Servers • What servers use – Stability, security, free – Examples: ◦ CentOS ◦ Debian ◦ Red Hat 5 Desktop • What you use – Free Windows/Mac alternative – Examples: ◦ Ubuntu ◦ Fedora ◦ PCLinuxOS 6 Gaming Devices • What (white-hat) hackers do – To run “homebrew” software – Examples: ◦ PS3, Wii, XBOX ◦ PS2, GameCube ◦ Dreamcast ◦ PSP, DS ◦ Open Pandora, GP2X 7 Mobile Devices • What distributors are developing – Community contribution – Examples ◦ Android ◦ Maemo/MeeGo/Tizen ◦ Openmoko 8 Embedded Devices • What embedded hardware run – Small footprint, dev tools – Examples ◦ RTLinux (real-time) ◦ μClinux (no MMU) ◦ Ångström (everything) 9 Why? 10 Free! • Free! – As in freedom, i.e. open source – As in beer, i.e. vs paid upgrades 11 Homebrew! • Run own software – Your hardware your software? 12 Support! • Community contribution – “For the greater good” (i.e. users) – Everyone contributes ◦ Specialists from all over the world – Existing hardware support ◦ Many already supported computer architecture ◦ Modify existing drivers 13 Lots of support! 14 Why not? • Because we can – If its hackable, it can run Linux 15 How? • How do we get Linux running on XXX? • Port: A version of software modified to run on a different target platform – The PS3 port of Fedora is a modified build of Fedora compiled to run on the PS3 architecture – e.g.
    [Show full text]
  • Porting and Using Newlib in Embedded Systems William Gatliff Table of Contents Copyright
    Porting and Using Newlib in Embedded Systems William Gatliff Table of Contents Copyright................................................................................................................................3 Newlib.....................................................................................................................................3 Newlib Licenses....................................................................................................................3 Newlib Features ....................................................................................................................3 Building Newlib ...................................................................................................................7 Tweaks ....................................................................................................................................8 Porting Newlib......................................................................................................................9 Onward! ................................................................................................................................19 Resources..............................................................................................................................19 About the Author................................................................................................................19 $Revision: 1.5 $ Although technically not a GNU product, the C runtime library newlib is the best choice for many GNU-based
    [Show full text]
  • Embedded Linux Device Driver Development Sébastien Bilavarn
    Embedded Linux Device driver development Sébastien Bilavarn Polytech’Nice Sophia - Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 1 - Outline Ch1 – Introduction to Linux Ch2 – Linux kernel overview Ch3 – Linux for Embedded Systems Ch4 – Embedded Linux distributions Ch5 – Case study: Xilinx PowerPC Linux Ch5 bis – Case study: Xilinx Zynq-7000 Linux Ch6 – Device driver development Polytech’Nice Sophia - Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 2 - Linux for Embedded Systems Introduction to Embedded Linux Key features Embedded Linux development Linux kernel development Polytech’Nice Sophia - Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 3 - Embedded Linux What is Embedded Linux ? Strictly speaking Embedded Linux is an operating system based on Linux and adapted specifically to the constraints of embedded systems. Unlike standard versions of Linux for Personal Computers, embedded Linux is designed for systems with limited resources Memory: few RAM, sometimes no Memory Management Unit (MMU) Storage: Flash instead of hard disk drive Since embedded systems are often designed for domain specific purposes and specific target platforms, they use kernel versions that are optimized for a given context of application. This results in different Linux kernel variants that are also called Linux distributions Polytech’Nice Sophia - Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 4 - Embedded Linux What is embedded Linux ? Embedded Linux is used in embedded systems such as mobile phones, personal digital assistants (PDA), media players set-top boxes, and other consumer electronics devices networking equipment machine control, industrial automation navigation equipment medical instruments Key features runs in a small embedded system, typically booting out of Flash, no hard disk drive, no full-size video display, and take far less than 2 minutes to boot up, sometimes supports real- time tasks.
    [Show full text]
  • Cross-Compiler Bipartite Vulnerability Search
    electronics Article Cross-Compiler Bipartite Vulnerability Search Paul Black * and Iqbal Gondal Internet Commerce Security Laboratory (ICSL), Federation University, Ballarat 3353, Australia; [email protected] * Correspondence: [email protected] Abstract: Open-source libraries are widely used in software development, and the functions from these libraries may contain security vulnerabilities that can provide gateways for attackers. This paper provides a function similarity technique to identify vulnerable functions in compiled programs and proposes a new technique called Cross-Compiler Bipartite Vulnerability Search (CCBVS). CCBVS uses a novel training process, and bipartite matching to filter SVM model false positives to improve the quality of similar function identification. This research uses debug symbols in programs compiled from open-source software products to generate the ground truth. This automatic extraction of ground truth allows experimentation with a wide range of programs. The results presented in the paper show that an SVM model trained on a wide variety of programs compiled for Windows and Linux, x86 and Intel 64 architectures can be used to predict function similarity and that the use of bipartite matching substantially improves the function similarity matching performance. Keywords: malware similarity; function similarity; binary similarity; machine-learning; bipar- tite matching 1. Introduction Citation: Black, P.; Gondal, I. Cross-Compiler Bipartite Function similarity techniques are used in the following activities, the triage of mal- Vulnerability Search. Electronics 2021, ware [1], analysis of program patches [2], identification of library functions [3], analysis of 10, 1356. https://doi.org/10.3390/ code authorship [4], the identification of similar function pairs to reduce manual analysis electronics10111356 workload, [5], plagiarism analysis [6], and for vulnerable function identification [7–9].
    [Show full text]
  • COSMIC C Cross Compiler for Stmicroelectronics ST7 Family
    COSMIC C Cross Compiler for STMicroelectronics ST7 Family COSMIC’s C cross compiler, cxST7 for the STMicroelectronics ST7 family of microcontrollers, incorporates over fifteen years of innovative design and development effort. Used in the field since 1997, cxST7 is reliable, field-proven, and incorporates many features to help ensure your embedded ST7 design meets and exceeds performance specifications. The C Compiler package for Windows includes: COSMIC integrated development environment (IDEA), optimizing C cross compiler, macro assembler, linker, librarian, object inspector, hex file generator, object format converters, debugging support utilities, run-time libraries and a compiler command driver. The PC compiler package runs under Windows 95/98/ME/NT4/2000 and XP.. Key Features Microcontroller-Specific Design Supports All ST7 Family Microcontrollers cxST7, is designed specifically for the STMicroelectronics ST7 family of microcontrollers; all ST7 family processors are ANSI C Implementation supported. A special code generator and optimizer targeted for the ST7 family eliminates the overhead and complexity of Extensions to ANSI for Embedded Systems a more generic compiler. You also get header file support for Global and Processor-Specific Optimizations many of the popular ST7 peripherals, so you can access their memory mapped objects by name either at the C or assembly Optimized Function Calling language levels. Debug Fully Optimized Code ANSI / ISO Standard C Automatic Checksums This implementation conforms with the ANSI and ISO Real and Simulated Stack models Standard C syntax specifications which helps you protect Smart Linker optimizes RAM usage your software investment by aiding code portability and reliability. C support for Zero Page Data C support for Interrupt Handlers Flexible User Interface The Cosmic C compiler can be used with the included Three In-Line Assembly Methods Windows IDEA or as a Windows 32-bit command line Assembler Supports C #defines and #includes application for use with your favorite editor, make or source code control system.
    [Show full text]
  • Anatomy of Cross-Compilation Toolchains
    Embedded Linux Conference Europe 2016 Anatomy of cross-compilation toolchains Thomas Petazzoni free electrons [email protected] Artwork and Photography by Jason Freeny free electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 1/1 Thomas Petazzoni I CTO and Embedded Linux engineer at Free Electrons I Embedded Linux specialists. I Development, consulting and training. I http://free-electrons.com I Contributions I Kernel support for the Marvell Armada ARM SoCs from Marvell I Major contributor to Buildroot, an open-source, simple and fast embedded Linux build system I Living in Toulouse, south west of France Drawing from Frank Tizzoni, at Kernel Recipes 2016 free electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 2/1 Disclaimer I I am not a toolchain developer. Not pretending to know everything about toolchains. I Experience gained from building simple toolchains in the context of Buildroot I Purpose of the talk is to give an introduction, not in-depth information. I Focused on simple gcc-based toolchains, and for a number of examples, on ARM specific details. I Will not cover advanced use cases, such as LTO, GRAPHITE optimizations, etc. I Will not cover LLVM free electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/1 What is a cross-compiling toolchain? I A set of tools that allows to build source code into binary code for
    [Show full text]