Picolibc a C Library for Smaller Systems

Total Page:16

File Type:pdf, Size:1020Kb

Picolibc a C Library for Smaller Systems picolibc A C Library for Smaller Systems Keith Packard -9 Senior Principal Technologist Amazon [email protected] c Hello !y name is Keith Packard" # $ork in the De&ice 'S gro(p at Amazon as a Senior Principal )ngineer. Today" #*m going to talk abo(t picolibc" a C library designed for embedded +,- and ./- bit microcontrollers. picolibc ● 0hy start another C library pro1ect2 ● How picolibc $as de&eloped? ● 0hat are the results2 ● 0ho is using picolibc2 ● 0here is picolibc going in the future2 #n this presentation" #*ll describe $hat # see as the re3(irements for an embedded C library" the pieces from $hich picolibc $as b(ilt" ho$ de&elopment progressed" res(lts of that de&elopment along $ith se&eral pro1ects that ha&e picolibc s(pport integrated into them. Finally" #*ll brie5y to(ch on f(t(re $ork that # hope to see done in picolibc. Small System Considerations ● Small !emory 6think k7" not 879 – RA! is more constrained than :'! – A&oid using the heap ● Limited 5oating point – !ay have only +,-bit 5oats – !ay have none at all ● 8etting started is hard Small systems are small. They can be really small. The embedded hard$are # 5y (ses systems $ith +,k7 to ;,<k7 or :'! and /k7 to +,k7 of :A!. They often (se lo$-performance +,-bit cores" some have a +,-bit 4P=" b(t many ha&e no 4PU at all. De&elopers $riting long-r(nning embedded soft$are often $ant to a&oid depending on dynamic allocation as it*s easist to pro&e malloc $ill ne&er fail if malloc is not linked into the application. As a developer" one of the steepest learning c(rves $ith embedded de&elopment is getting the very >rst *hello-$orld* application compiled" linked" installed and r(nning. Ard(ino has had tremendo(s s(ccess by making that process easy eno(gh for me to teach to middle school kids. )mbedded Libc Needs ● String 4(nctions 6strcpy" memset9 – Ideally accelerated for architect(re ● !ath Functions 6acos" 1@" sqrt9 – 'ften for soft-5oat processors ● Stdio 6printf" sscanf9 – deb(gging – data eAchange ● Licensing – Share-alike licenses are challenging )mbedded systems generally make modest demands on the C library. The most commonly (sed f(nctions are string and memory AP#sB things like strcpy" memmove and the like. Applications doing comp(tation may need some math f(nctions" like s3rt" sin or e&en bessel f(nctions. Standard #C' $ill often be only (sed d(ring deb(gging to send o(tp(t to a serial console to help diagnose soft$are and hard$are iss(es. Ho$ever" applications may also (se these f(nctions to handle DSO?" EAML or other teAt interchange formats and so strict standards conformance can be critical. While # am a strong proponent of share-alike licenses" a C library needs a pragmatic approach to be (sef(l to all de&elopers. A clear !#T or 7SD license is best practice in this space. Developer First Steps ● Startup code – #nitialize RA!" setup clocks and interrupts ● Linker script – !emory layout ● %ebug output – Serial ports require dri&ers and $orking clocks To make starting $ith a ne$ embedded platform easier" de&elopers $ill bene>t from eAtra s(pport in the C library. First" the processor" memory and library need to be initialized. Second" the linker needs to kno$ ho$ to lay o(t the application in :'! and :AM. This incl(des hard$are-speci>c information" processor set(p instr(ctions and library initialization code. 4inally" providing deb(g o(tp(t from applications (sing semihosting or other architect(re-speci>c mechanism lets the de&eloper see deb(gging information before clocks and serial port dri&ers are $orking. With these three tools" a ne$ SoC can be bro(ght (p only kno$ing the memory layo(t of the device as $e*ll see later in some eAamples. Current 32-bit Libc Options ● ne$lib and ne$lib-nano – excellent AP# s(pport" incl(ding optimized assembly code and solid math f(nctions. – designed for systems $ith an 'S – development focused on Cyg$in target – libgloss $raps 'S f(nctions into P'SIF-like AP# – stdio is fast" b(t large and malloc-intensive ● vario(s proprietary options – closed so(rce – often bro(ght (p from <-bit environments When # started doing embedded development in the modern era in ,@@G" # $as (sing an <@H; SoC. The compiler" SDCC" came $ith a small C library so # didn*t ha&e to think abo(t it. #n ,@;," $hen $e b(ild o(r >rst corteA m+ board" # had to also >nd a ne$ C library. 4or this pro1ect" ne$lib $as too big and re3(ired too many s(pport ro(tines in the form of libgloss" incl(ding sbrk for malloc" $hich $as re3(ired for stdio. # initially settled on pdclib as that $as at least reasonably small. Ho$e&er" it (sed eAcessi&e amo(nts of stack space for printf" and had no math s(pport. This library seems to be an eAperiment in b(ilding a small C library" b(t not in b(ilding a C library for small systems. Some SoC &endors pro&ide proprietary C libraries. These are often ports from older <- and ;.- bit systems $hich can lack compliance $ith modern C standards in some areas. And" of co(rse" they*re not free soft$are" $hich makes them (ninteresting to me. After a co(ple of years (sing pdclib" # decided to ret(rn to ne$lib and see $hat co(ld be done to make that (sable for my $ork. newlib concerns ● Stdio – A lot of code and (ses a lot of :A! – :e3(ires a large n(mber of P'S#F(ish) AP#s ● Libgloss – A shim bet$een the P'S#F apis and the (nderlying 'S – ?ot rele&ant on embedded systems $ith no 'S ● struct Ireent – holds all per-thread state in the library – e&en for f(nctions yo( don*t (se – an (neApected malloc (ser ● 'ut-dated coding practice – ne$lib still has K&: f(nction de>nitions in places 6 29 – !any signedC(nsigned conf(sions" especially in $charIt and stdio – !any (many) $arnings ● ?o integrated test suite – 0itho(t testing" there*s no $ay to kno$ $hen things break # $ant to say first that newlib is a great pro1ectB the code is easy to work on" the comm(nity is welcoming and s(pportive and #*ve been happy to collaborate with them. )verything here relates to (sing newlib for my small embedded pro1ects" which is not what newlib is really designed for. #n looking at the changes # wanted to make" the first thing on my list $as stdio. ?ewlib*s stdio is designed to offer good performance and f(ll compatibility on systems with an (nderlying P'SIX api. #t has internal b(ffering" and allocates space on the heap for them. :eplacing the whole thing seemed like the best option. # also $anted to get rid of the libgloss 'S shim layer. libgloss was originally designed as an interface between newlib and whatever (nderlying operating system it $as r(n on. With bare-metal environments" there is no 'S, and so there really isn*t a reason to have this library any more. ?ewlib (ses P'SIF interfaces internally" porting to an :T'S is (s(ally a simple matter of making s(re the necessary P'SIX interfaces are available. Fort(nately" most of the common (ses for libgloss AP#s were in stdioB by replacing that" the b(lk of the problem was already solved. 'ne h(ge cons(mer of :A! in newlib is *str(ct _reent*. This str(ct holds all per-thread state for the entire library. :eplacing this with modern thread local storage techni3(es wo(ld free (p a lot of memory $hile still allowing applications to take advantage of library AP#s which needed persistent state. ?ewlib is an old code base that has seen de&elopment eAtend back to the pre-A?SI era of compilers. The C lang(age has changed a lot since then" and how we (se the lang(age has changed even more. #t*s been a long time since # defined a new AP# with a bare *int* typeB we know now that it*s best to (se a more speci>c type that won*t s(rprise yo( with o&erflow iss(es or sign errors on some ne$ platform. At a minim(m" the library sho(ld compile cleanly with -0all -0eAtra. Finally" it*s (nreasonable to expect code review alone to catch errors in changes to the library. An extensive and a(tomated test s(ite is table stakes for a pro1ect of this size. # got started hacking on the stdio changes that # wanted to make and sent them in to the newlib mailing list to see what feedback # might get. That was when the reality of what newlib was hit me. ?ewlib is not a library for embedded applications. ?ewlib is the Cygwin C library which happens to be (sed by many embedded developers lacking an alternative. #n partic(lar" radical changes to the AP# and A7# of the library co(ld never be integrated as those wo(ld break binary compatibility for Cygwin applications. So # decided to fork newlib and start a new pro1ect. picolibc ● newlib math" i;<n" strings – good performance" $ide s(pport ● stdio adapted from AK: libc ● *str(ct _reent* removed – All thread-local &al(es (se toolchain TLS ● sample start(p code" linker scripts ● semihosting s(pport ● 4ix $arnings" switch to C;< – 7(ilds $ith --stdLc;< -0all -0eAtra -0error ● ?e$ meson-based b(ild system ● Testing ● P(re 7SD licensed library code.
Recommended publications
  • Introduction to Embedded C
    INTRODUCTION TO EMBEDDED C by Peter J. Vidler Introduction The aim of this course is to teach software development skills, using the C programming language. C is an old language, but one that is still widely used, especially in embedded systems, where it is valued as a high- level language that provides simple access to hardware. Learning C also helps us to learn general software development, as many of the newer languages have borrowed from its concepts and syntax in their design. Course Structure and Materials This document is intended to form the basis of a self-study course that provides a simple introduction to C as it is used in embedded systems. It introduces some of the key features of the C language, before moving on to some more advanced features such as pointers and memory allocation. Throughout this document we will also look at exercises of varying length and difficulty, which you should attempt before continuing. To help with this we will be using the free RapidiTTy® Lite IDE and targeting the TTE®32 microprocessor core, primarily using a cycle-accurate simulator. If you have access to an FPGA development board, such as the Altera® DE2-70, then you will be able to try your code out in hardware. In addition to this document, you may wish to use a textbook, such as “C in a Nutshell”. Note that these books — while useful and well written — will rarely cover C as it is used in embedded systems, and so will differ from this course in some areas. Copyright © 2010, TTE Systems Limited 1 Getting Started with RapidiTTy Lite RapidiTTy Lite is a professional IDE capable of assisting in the development of high- reliability embedded systems.
    [Show full text]
  • Embedded C Programming I (Ecprogrami)
    To our customers, Old Company Name in Catalogs and Other Documents On April 1st, 2010, NEC Electronics Corporation merged with Renesas Technology Corporation, and Renesas Electronics Corporation took over all the business of both companies. Therefore, although the old company name remains in this document, it is a valid Renesas Electronics document. We appreciate your understanding. Renesas Electronics website: http://www.renesas.com April 1st, 2010 Renesas Electronics Corporation Issued by: Renesas Electronics Corporation (http://www.renesas.com) Send any inquiries to http://www.renesas.com/inquiry. Notice 1. All information included in this document is current as of the date this document is issued. Such information, however, is subject to change without any prior notice. Before purchasing or using any Renesas Electronics products listed herein, please confirm the latest product information with a Renesas Electronics sales office. Also, please pay regular and careful attention to additional and different information to be disclosed by Renesas Electronics such as that disclosed through our website. 2. Renesas Electronics does not assume any liability for infringement of patents, copyrights, or other intellectual property rights of third parties by or arising from the use of Renesas Electronics products or technical information described in this document. No license, express, implied or otherwise, is granted hereby under any patents, copyrights or other intellectual property rights of Renesas Electronics or others. 3. You should not alter, modify, copy, or otherwise misappropriate any Renesas Electronics product, whether in whole or in part. 4. Descriptions of circuits, software and other related information in this document are provided only to illustrate the operation of semiconductor products and application examples.
    [Show full text]
  • Biblioteksentralen Som Utviklingsaktør På Toten Med Lærer- Bakgrunn Og
    Bibliotekaren Tidsskrift for Bibliotekarforbundet Biblioteksentralen som utviklingsaktør på Toten Oppgjørenes time Med lærer- bakgrunn og bibliotekar framtid BFs økonomi under Skadd på jobb god kontroll - hva gjør jeg? 8 2004 Innhold: Bibliotekaren ISSN 0804-4147 Lederen har ordet side 3 ISSN 1503-836X (online) Forbundsstyrets junimøte side 4 Bibliotekaren er Bibliotekarforbundets BF mot forskriftsendring nå side 7 tidsskrift og utkommer hver måned. Ansvarlig redaktør Oppgjørenes timer Erling Bergan - Det er to bibliotekarer i Norge som sitter midt i begivenhetenes sentrum når det gjelder både sentrale forhandlinger og megling. Det er oss to fra Bibliotekaforbundet - rådgiver Thor Bjarne Stadshaug og meg. Vi sitter der 8 Redaksjonens adresse det skjer og har innpass i det som foregår, sier forbundsleder Monica Deil- Runnen 4, 6800 FØRDE dok i dette intervjuet etter at årets sentrale tariffoppgjør er unnagjort Tlf.: 57 82 07 65 Mobil: 91 31 80 01 Faks: 85 03 16 64 Lokale forhandlinger i KS-sektoren side 11 Epost: [email protected] Med lærerbakgrunn og bibliotekarframtid Stoff Etter 22 år som lærer i grunnskolen gjorde Anne Elisabeth Waage opp Vi mottar stoff i alle former. Tekster status: Hun fant ikke mange lærerkollegaer som var over 50. Skolehver- foretrekker vi som fi ler i RiktTekstFor- dagen ble simpelthen for stri i lengden. Anne Elisabeth valgte å skifte 12 mat (rtf). Usignerte artikler står for fil. Hun studerer nå bibliotekfag i Bergen. redaktørens regning. Fornøyd i staten? side 15 Abonnement Kr. 290,- pr. år betales til BFs girokonto Bibliotekvaktens søketips: 6039.05.64093. Merk innbetalingen Detektor – et katalogisert utgangspunkt side 16 «Abonnement». Alle henvendelser om abonnement rettes til BFs sekretariat i Lakkegata 21, 0187 Oslo, tlf.
    [Show full text]
  • Porting Musl to the M3 Microkernel TU Dresden
    Porting Musl to the M3 microkernel TU Dresden Sherif Abdalazim, Nils Asmussen May 8, 2018 Contents 1 Abstract 2 2 Introduction 3 2.1 Background.............................. 3 2.2 M3................................... 4 3 Picking a C library 5 3.1 C libraries design factors . 5 3.2 Alternative C libraries . 5 4 Porting Musl 7 4.1 M3andMuslbuildsystems ..................... 7 4.1.1 Scons ............................. 7 4.1.2 GNUAutotools........................ 7 4.1.3 Integrating Autotools with Scons . 8 4.2 Repositoryconfiguration. 8 4.3 Compilation.............................. 8 4.4 Testing ................................ 9 4.4.1 Syscalls ............................ 9 5 Evaluation 10 5.1 PortingBusyboxcoreutils . 10 6 Conclusion 12 1 Chapter 1 Abstract Today’s processing workloads require the usage of heterogeneous multiproces- sors to utilize the benefits of specialized processors and accelerators. This has, in turn, motivated new Operating System (OS) designs to manage these het- erogeneous processors and accelerators systematically. M3 [9] is an OS following the microkernel approach. M3 uses a hardware/- software co-design to exploit the heterogeneous systems in a seamless and effi- cient form. It achieves that by abstracting the heterogeneity of the cores via a Data Transfer Unit (DTU). The DTU abstracts the heterogeneity of the cores and accelerators so that they can communicate systematically. I have been working to enhance the programming environment in M3 by porting a C library to M3. I have evaluated different C library implementations like the GNU C Library (glibc), Musl, and uClibc. I decided to port Musl as it has a relatively small code base with fewer configurations. It is simpler to port, and it started to gain more ground in embedded systems which are also a perfect match for M3 applications.
    [Show full text]
  • MIAMI UNIVERSITY the Graduate School Certification for Approving
    MIAMI UNIVERSITY The Graduate School Certification for Approving the Dissertation We hereby approve the Dissertation of Stephen Hess Candidate for the Degree: Doctor of Philosophy ____________________________________ Director (Dr. Venelin Ganev) ____________________________________ Reader (Dr. Gulnaz Sharafutdinova) ____________________________________ Reader (Dr. Adeed Dawisha) ____________________________________ Graduate School Representative (Dr. Stanley Toops) ABSTRACT AUTHORITARIAN LANDSCAPES: STATE DECENTRALIZATION, POPULAR MOBILIZATION, AND THE INSTITUTIONAL SOURCES OF RESILIENCE IN NONDEMOCRACIES by Stephen Hess Beginning with the insight that highly-centralized state structures have historically provided a unifying target and fulcrum for the mobilization of contentious nationwide social movements, this dissertation investigates the hypothesis that decentralized state structures in authoritarian regimes impede the development of forms of popular contention sustained and coordinated on a national scale. As defined in this work, in a decentralized state, local officials assume greater discretionary control over public expenditures, authority over the implementation of government policies, and latitude in managing outbreaks of social unrest within their jurisdictions. As a result, they become the direct targets of most protests aimed at the state and the primary mediators of actions directed at third-party, non-state actors. A decentralized state therefore presents not one but a multitude of loci for protests, diminishing claimants‘ ability to use the central state as a unifying target and fulcrum for organizing national contentious movements. For this reason, decentralized autocracies are expected to face more fragmented popular oppositions and exhibit higher levels of durability than their more centralized counterparts. To examine this claim, I conduct four comparative case studies, organized into pairs of autocracies that share a common regime type but vary in terms of state decentralization.
    [Show full text]
  • TASKING VX-Toolset for Tricore User Guide
    TASKING VX-toolset for TriCore User Guide MA160-800 (v3.2) February 25, 2009 TASKING VX-toolset for TriCore User Guide Copyright © 2009 Altium Limited. All rights reserved.You are permitted to print this document provided that (1) the use of such is for personal use only and will not be copied or posted on any network computer or broadcast in any media, and (2) no modifications of the document is made. Unauthorized duplication, in whole or part, of this document by any means, mechanical or electronic, including translation into another language, except for brief excerpts in published reviews, is prohibited without the express written permission of Altium Limited. Unauthorized duplication of this work may also be prohibited by local statute. Violators may be subject to both criminal and civil penalties, including fines and/or imprisonment. Altium, TASKING, and their respective logos are trademarks or registered trademarks of Altium Limited or its subsidiaries. All other registered or unregistered trademarks referenced herein are the property of their respective owners and no trademark rights to the same are claimed. Table of Contents 1. C Language .................................................................................................................. 1 1.1. Data Types ......................................................................................................... 1 1.1.1. Bit Data Type ........................................................................................... 2 1.1.2. Fractional Types .......................................................................................
    [Show full text]
  • PDF, Postscript(Tm) and HTML Form
    T2 System Development Environment Creating custom Linux solutions (Compiled from r369) René Rebe Susanne Klaus T2 System Development Environment: Creating custom Linux solutions: (Compiled from r369) by René Rebe and Susanne Klaus Published (TBA) Copyright © 2002, 2003, 2004, 2005, 2006, 2007 René RebeSusanne Klaus This work is licensed under the Open Publication License, v1.0, including license option B: Distribution of the work or derivative of the work in any standard (paper) book form for commercial purposes is prohibited unless prior permission is obtained from the copyright holder. The latest version of the Open Publication License is presently available at ht- tp://www.opencontent.org/openpub/. Table of Contents Preface ....................................................................................................................x Audience ..........................................................................................................x How to Read this Book ...................................................................................... x Conventions Used in This Book ......................................................................... x Typographic Conventions .......................................................................... x Icons ........................................................................................................x Organization of This Book ................................................................................ xi This Book is Free ............................................................................................
    [Show full text]
  • 4. Nios II Software Build Tools
    4. Nios II Software Build Tools May 2011 NII52015-11.0.0 NII52015-11.0.0 This chapter describes the Nios® II Software Build Tools (SBT), a set of utilities and scripts that creates and builds embedded C/C++ application projects, user library projects, and board support packages (BSPs). The Nios II SBT supports a repeatable, scriptable, and archivable process for creating your software product. You can invoke the Nios II SBT through either of the following user interfaces: ■ The Eclipse™ GUI ■ The Nios II Command Shell The purpose of this chapter is to make you familiar with the internal functionality of the Nios II SBT, independent of the user interface employed. 1 Before reading this chapter, consider getting an introduction to the Nios II SBT by first reading one of the following chapters: ■ Getting Started with the Graphical User Interface chapter of the Nios II Software Developer’s Handbook ■ Getting Started from the Command Line chapter of the Nios II Software Developer’s Handbook This chapter contains the following sections: ■ “Road Map for the SBT” ■ “Makefiles” on page 4–3 ■ “Nios II Embedded Software Projects” on page 4–5 ■ “Common BSP Tasks” on page 4–8 ■ “Details of BSP Creation” on page 4–20 ■ “Tcl Scripts for BSP Settings” on page 4–27 ■ “Revising Your BSP” on page 4–30 ■ “Specifying BSP Defaults” on page 4–35 ■ “Device Drivers and Software Packages” on page 4–39 ■ “Boot Configurations for Altera Embedded Software” on page 4–40 ■ “Altera-Provided Embedded Development Tools” on page 4–42 ■ “Restrictions” on page 4–48 © 2011 Altera Corporation.
    [Show full text]
  • Jacob Austin Matthew Bowers Rebecca Cawkwell Sanford Miller
    Coral Jacob Austin Matthew Bowers Rebecca Cawkwell Sanford Miller * please note that this presentation theme is also called Coral The Coral Team* Rebecca Cawkwell Matthew Bowers Sanford Miller Jacob Austin Manager & Codegen Language Guru Semant Architect Tester Architect Loves Coral Snakes are nice Passionately I lik snek Snakes hates snakes *with guidance by Lauren Arnett Our Inspiration ● Coral to Python as TypeScript to Javascript ● Type Safety: optional static typing enforced at compile and runtime. ● Optimization: use type-inference to generate code as fast as C. Source: Pintrest What is ● Dynamically typed programming language ● Cross compatible with Python ● Optional static typing enforced by the compiler and runtime environment ● Type inference and optimization based on static typing ● Types: int, char, float, boolean, strings, lists ● First class functions ● No classes (no time) ● Compile and runtime exceptions Implementation Architectural Design Code source.cl Scanner Parser Semant coral.native Generation LLC executable Coral v Python ● Coral is a smaller version of Python with extended support for typing. PYTHON ● Coral uses the same syntax as Python, allowing for cross compatibility ● The difference between Coral and Python is our optimization and CORAL Haskell safety OCaml The Speed of C The Safety of C Comparison to Python Wall-time on simple programs allows comparison between Coral and Python. For a program like this: performance is about 40 times faster (.4 seconds to 23.4 seconds wall time). Key Features Syntax & Grammar ● Coral strictly follows the current Python 3.7 syntax, and any valid Coral program can also be run and compiled by an up-to-date Python 3.7 interpreter.
    [Show full text]
  • Programming Embedded Systems, Second Edition with C and GNU Development Tools
    Programming Embedded Systems Second Edition Programming Embedded Systems, Second Edition with C and GNU Development Tools Foreword If you mention the word embedded to most people, they'll assume you're talking about reporters in a war zone. Few dictionaries—including the canonical Oxford English Dictionary—link embedded to computer systems. Yet embedded systems underlie nearly all of the electronic devices used today, from cell phones to garage door openers to medical instruments. By now, it's nearly impossible to build anything electronic without adding at least a small microprocessor and associated software. Vendors produce some nine billion microprocessors every year. Perhaps 100 or 150 million of those go into PCs. That's only about one percent of the units shipped. The other 99 percent go into embedded systems; clearly, this stealth business represents the very fabric of our highly technological society. And use of these technologies will only increase. Solutions to looming environmental problems will surely rest on the smarter use of resources enabled by embedded systems. One only has to look at the network of 32-bit processors in Toyota's hybrid Prius to get a glimpse of the future. Page 1 Programming Embedded Systems Second Edition Though prognostications are difficult, it is absolutely clear that consumers will continue to demand ever- brainier products requiring more microprocessors and huge increases in the corresponding software. Estimates suggest that the firmware content of most products doubles every 10 to 24 months. While the demand for more code is increasing, our productivity rates creep up only slowly. So it's also clear that the industry will need more embedded systems people in order to meet the demand.
    [Show full text]
  • Safe System-Level Concurrency on Resource-Constrained Nodes
    Safe System-level Concurrency on Resource-Constrained Nodes Accepted paper in SenSys’13 (preprint version) Francisco Sant’Anna Noemi Rodriguez Roberto Ierusalimschy [email protected] [email protected] [email protected] Departamento de Informatica´ – PUC-Rio, Brazil Olaf Landsiedel Philippas Tsigas olafl@chalmers.se [email protected] Computer Science and Engineering – Chalmers University of Technology, Sweden Abstract as an alternative, providing traditional structured program- Despite the continuous research in facilitating program- ming for WSNs [12, 7]. However, the development pro- ming WSNs, most safety analysis and mitigation efforts in cess still requires manual synchronization and bookkeeping concurrency are still left to developers, who must manage of threads [24]. Synchronous languages [2] have also been synchronization and shared memory explicitly. In this paper, adapted to WSNs and offer higher-level compositions of ac- we present a system language that ensures safe concurrency tivities, considerably reducing programming efforts [21, 22]. by handling threats at compile time, rather than at runtime. Despite the increase in development productivity, WSN The synchronous and static foundation of our design allows system languages still fail to ensure static safety properties for a simple reasoning about concurrency enabling compile- for concurrent programs. However, given the difficulty in time analysis to ensure deterministic and memory-safe pro- debugging WSN applications, it is paramount to push as grams. As a trade-off, our design imposes limitations on many safety guarantees to compile time as possible [25]. As the language expressiveness, such as doing computationally- an example, shared memory is widely used as a low-level intensive operations and meeting hard real-time responsive- communication mechanism, but current languages do not ness.
    [Show full text]
  • IAR Embedded Workbench®
    IAR Embedded Workbench® C-SPY® Debugging Guide for Renesas V850 Microcontroller Family UCSV850-1 UCSV850-1 COPYRIGHT NOTICE Copyright © 1998–2011 IAR Systems AB. No part of this document may be reproduced without the prior written consent of IAR Systems AB. The software described in this document is furnished under a license and may only be used or copied in accordance with the terms of such a license. DISCLAIMER The information in this document is subject to change without notice and does not represent a commitment on any part of IAR Systems. While the information contained herein is assumed to be accurate, IAR Systems assumes no responsibility for any errors or omissions. In no event shall IAR Systems, its employees, its contractors, or the authors of this document be liable for special, direct, indirect, or consequential damage, losses, costs, charges, claims, demands, claim for lost profits, fees, or expenses of any nature or kind. TRADEMARKS IAR Systems, IAR Embedded Workbench, C-SPY, visualSTATE, From Idea To Target, IAR KickStart Kit, IAR PowerPac, IAR YellowSuite, IAR Advanced Development Kit, IAR, and the IAR Systems logotype are trademarks or registered trademarks owned by IAR Systems AB. J-Link is a trademark licensed to IAR Systems AB. Microsoft and Windows are registered trademarks of Microsoft Corporation. Renesas is a registered trademark of Renesas Electronics Corporation. Adobe and Acrobat Reader are registered trademarks of Adobe Systems Incorporated. All other product names are trademarks or registered trademarks of their respective owners. EDITION NOTICE First edition: February 2011 Part number: UCSV850-1 The C-SPY® Debugging Guide for V850 replaces all debugging information in the IAR Embedded Workbench IDE User Guide and the hardware debugger guides for V850.
    [Show full text]