Mercurial > flash_v2
diff doc/sgml/tutorials/ecos-tutorial.sgml @ 208:e0c0827131d1 ecos
Merge from eCos master repository on 2002-05-20-20:11:54-BST
| author | jlarmour |
|---|---|
| date | Mon, 20 May 2002 22:19:26 +0000 |
| parents | |
| children | c9cbf5dfb306 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/doc/sgml/tutorials/ecos-tutorial.sgml @@ -0,0 +1,10523 @@ +<!DOCTYPE BOOK PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [ + +<!-- Begin Document Specific Declarations --> + +<?Fm: Validation Off> + +<!ENTITY foreword SYSTEM "foreword.sgml"> + +<!ENTITY ui "µITRON"> +<!ENTITY cygnus-full "Cygnus Solutions"> +<!ENTITY cygnus-legal-notice SYSTEM "CYGNUS-TERMS"> +<!ENTITY cygnus-ecos-license SYSTEM "cygnus-ecos-license.sgml"> +<!ENTITY send-pr SYSTEM "send-pr.sgml"> +<!ENTITY version CDATA "2.0.x"> +<!ENTITY Version CDATA "v2_0_x"> +<!NOTATION cgm SYSTEM> +<!ENTITY graphic1 SYSTEM "pix/configtool01.gif" NDATA gif> +<!ENTITY graphic2 SYSTEM "pix/templates01.gif" NDATA gif> +<!ENTITY graphic3 SYSTEM "pix/ARMStartup01.gif" NDATA gif> +<!ENTITY graphic4 SYSTEM "pix/build-lib01.gif" NDATA gif> +<!ENTITY graphic5 SYSTEM "pix/save-dialog01.gif" NDATA gif> +<!ENTITY graphic6 SYSTEM "pix/build-tools01.gif" NDATA gif> +<!ENTITY graphic7 SYSTEM "pix/user-tools01.gif" NDATA gif> +<!ENTITY graphic8 SYSTEM "pix/build-tests01.gif" NDATA gif> +<!ENTITY graphic9 SYSTEM "pix/twothreads2.gif" NDATA gif> +<!ENTITY figure-welcome-page-entity SYSTEM "pix/supp_welcome.gif" NDATA gif> +<!ENTITY figure-new-case-web-page-entity SYSTEM "pix/supp_newcase.gif" NDATA gif> +<!ENTITY figure-case-profile-entity SYSTEM "pix/supp_profile.gif" NDATA gif> +<!ENTITY figure-build-process-entity SYSTEM "pix/build-processalt.gif" NDATA gif> +<!-- End Document Specific Declarations --> + +]> + + +<BOOK ID="ECOS-TUTORIAL"> +<BOOKINFO> +<TITLE>eCos Tutorial</TITLE> +<COPYRIGHT> +<YEAR>1998</YEAR> +<YEAR>1999</YEAR> +<YEAR>2000</YEAR> +<YEAR>2001</YEAR> +<YEAR>2002</YEAR> +<HOLDER>Red Hat, Inc.</HOLDER> +</COPYRIGHT> +<LEGALNOTICE> +<TITLE>Documentation licensing terms</TITLE> +<PARA>This material may be distributed only subject to the terms +and conditions set forth in the Open Publication License, v1.0 +or later (the latest version is presently available at +<ULINK URL="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</ULINK>).</PARA> +<PARA>Distribution of substantively modified versions of this +document is prohibited without the explicit permission of the +copyright holder.</PARA> +<PARA>Distribution of the work or derivative of the work in any +standard (paper) book form is prohibited unless prior +permission is obtained from the copyright holder.</PARA> +</LEGALNOTICE> +<LEGALNOTICE> +<TITLE>Trademarks</TITLE> +<PARA>Red Hat, the Red Hat Shadow Man logo®, eCos™, RedBoot™, +GNUPro®, and Insight™ are trademarks of Red Hat, Inc. </PARA> +<PARA>Sun Microsystems® and Solaris® are registered trademarks of +Sun Microsystems, Inc. </PARA> +<PARA>SPARC® is a registered trademark of SPARC International, Inc., and +is used under license by Sun Microsystems, Inc. </PARA> +<PARA>Intel® is a registered trademark of Intel Corporation.</PARA> +<PARA>Motorola™ is a trademark of Motorola, Inc.</PARA> +<PARA>ARM® is a registered trademark of Advanced RISC Machines, Ltd.</PARA> +<PARA>MIPS™ is a trademark of MIPS Technologies, Inc.</PARA> +<PARA>Toshiba® is a registered trademark of the Toshiba Corporation.</PARA> +<PARA>NEC® is a registered trademark if the NEC Corporation.</PARA> +<PARA>Cirrus Logic® is a registered trademark of Cirrus Logic, Inc.</PARA> +<PARA>Compaq® is a registered trademark of the Compaq Computer Corporation.</PARA> +<PARA>Matsushita™ is a trademark of the Matsushita Electric Corporation.</PARA> +<PARA>Samsung® and CalmRISC™ are trademarks or registered trademarks +of Samsung, Inc. </PARA> +<PARA>Linux® is a registered trademark of Linus Torvalds. </PARA> +<PARA>UNIX® is a registered trademark of The Open Group. </PARA> +<PARA>Microsoft®, Windows®, and Windows NT® are registered trademarks +of Microsoft Corporation, Inc. </PARA> +<PARA>All other brand and product names, trademarks, and copyrights are the +property of their respective owners. </PARA> +</LEGALNOTICE> +<LEGALNOTICE> +<TITLE>Warranty</TITLE> +<PARA> eCos is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 or (at your option) any later version, + although individual files may be covered by exceptions to this licence. +</PARA> +<PARA> + eCos is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details; this is supplied in an appendix to this manual. +</PARA> +</LEGALNOTICE> +</BOOKINFO> +<PART ID="PRELIMINARIES"> +<TITLE>Preliminaries</TITLE> +<PREFACE ID="CONTACTING-REDHAT"> +<TITLE>How to Contact Red Hat</TITLE> +<PARA><ADDRESS>Red Hat Corporate Headquarters + <STREET>2600 Meridian Parkway</STREET> + <CITY>Durham</CITY><STATE>NC</STATE> <POSTCODE>27713</POSTCODE> <COUNTRY> USA</COUNTRY> + Telephone (toll free): <PHONE>+1 888 REDHAT 1 (+1 888 733 4281)</PHONE> + Telephone (main line): <PHONE>+1 919 547 0012 </PHONE> + Telephone (FAX line): <FAX>+1 919 547 0024 </FAX></ADDRESS> + Website: <ULINK URL="http://www.redhat.com/">http://www.redhat.com/ + </ULINK></PARA> +</PREFACE> +<PREFACE ID="FOREWORD"> +<TITLE>Foreword</TITLE> +<PARA>Welcome to the latest release of Red Hat eCos(TM) - the Embedded + Configurable Operating System.</PARA> + +<!-- ==================================================== --> + +<SECT1 ID="FOREWORD-WHATS-NEW"> +<TITLE>What's New?</TITLE> +<PARA>In the fourth major public release of eCos, starting with +version 1.4, we have added a wealth of new features, enhancements, +and have further extended the target platform coverage.</PARA> +<PARA>Major new elements include: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Package management that supports the extension of eCos + functionality via third party add-on packages.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>A standardized configuration save file format that is +human readable and editable, and compatible between both GUI and +command line configuration tools.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enhanced web based help and component documentation system +integrated into the GUI configuration tool.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>The Component Definition Language (CDL) has been radically +revised and has now been implemented as a TCL extension for maximum +flexibility. CDL is now fully documented in the Component Writers +Guide.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Template support for straightforward control of multiple +configuration elements, which can be used to provide easy access +to standard eCos configurations such as a debug stub boot ROM.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Best of all, the source of the new configuration tools +and underlying libCDL technology has been open sourced under the +GNU Public License (GPL).</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>A companion beta version of the eCos TCP/IP stack +has been released in conjunction with this release. The stack is +derived from the OpenBSD source base and provides UDP, TCP, ICMP, +BOOTP and DHCP protocol support on an IPv4 standards base. Device +driver support for Cirrus Logic EP72xx evaluation boards, Motorola +MBX, and StrongARM EBSA285 with Intel 82559 is included. The stack +and ethernet core support are distributed as configurable eCos packages. Platform +ethernet device drivers are distributed with the associated platform +HAL, but are naturally not useful without the ethernet core support +package.</PARA> +<PARA>A PCI bus support library has also been added that provides +generic PCI bus based device initialization, discovery, and configuration. +The library has been ported to both the VR4300 DDB-VRC4373 and StrongARM +EBSA285 development boards.</PARA> +<PARA>eCos also contains support for the POSIX Specification (ISO/IEC +9945-1)[POSIX]. This support follows EL/IX +level 1 in the functionality supplied [ELIX].</PARA> +<PARA>POSIX support is divided between the POSIX and the FILEIO +packages. The POSIX package provides support for threads, signals, +synchronization, timers and message queues. The FILEIO package provides +support for file and device I/O. The two packages may be +used together or separately, depending on configuration.</PARA> +<PARA>Also supplied with eCos is RedBoot; the standard bootstrap +and debugging environment for embedded systems from Red Hat. It +provides a wide set of tools for downloading and executing programs +on embedded target systems, as well as tools for manipulating the +target system's environment.</PARA> +<PARA>RedBoot's capabilities include: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Serial and network (Ethernet) based debugging</PARA> +</LISTITEM> +<LISTITEM> +<PARA>FLASH management </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Simple command line interface, available via serial or +Ethernet </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Configurable and extensible, specifically adapted to the +target environment</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>New architectures and platforms added in this release include: + </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>ARM Thumb</PARA> +</LISTITEM> +<LISTITEM> +<PARA>ARM9</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Cirrus Logic CL-PS7111 and EP72xx</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Cogent CMA222 and CMA230 ARM boards</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi SH3</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Intel StrongARM</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Intel x86 PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Matsushita AM33</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Motorola MBX evaluation board</PARA> +</LISTITEM> +<LISTITEM> +<PARA>NEC MIPS VR4300</PARA> +</LISTITEM> +<LISTITEM> +<PARA>NEC V8xx</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>For further details of all the changes see the NEWS file in +the eCos sources.</PARA> +<PARA>Red Hat is dedicated to continued enhancement and maintenance +of the eCos system. Developers can look forward to upcoming releases +that further expand the architectural and board coverage, extend +the functionality of the TCP/IP stack, add a Linux version +of the GUI configuration tool, and add major new features such as a +Linux/Posix compatibility layer based on the upcoming EL/IX +standard - see <ULINK URL="http://sources.redhat.com/elix/">http://sources.redhat.com/elix/</ULINK> +for more details.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="FOREWORD-ECOS-IN-A-NUTSHELL"> +<TITLE>eCos in a Nutshell</TITLE> +<PARA>eCos is an open source, configurable, portable, and + royalty-free embedded real-time operating system. The + following text expands on these core aspects that define + eCos.</PARA> +<PARA>eCos is provided as an open source runtime system + supported by the Red Hat GNUPro and GNU open source + development tools. Developers have full and unfettered access + to all aspects of the runtime system. No parts of it are + proprietary or hidden, and you are at liberty to examine, add + to, and modify the code as you deem necessary. These rights + are granted to you and protected by the Red Hat eCos Public + License (RHEPL). It also grants you the right to freely + develop and distribute applications based on eCos. You are not + expected or required to make your embedded applications or any + additional components that you develop freely available, + although we do require that you make publicly available any + modifications to the eCos code itself. Red Hat of course + welcomes all contributions back to eCos such as board ports, + device drivers and other components, as this helps the growth + and development of eCos, and is of benefit to the entire eCos + community.</PARA> +<PARA>One of the key technological innovations in eCos is our + configuration system. The configuration system allows the + application writer to impose their requirements on the + run-time components, both in terms of their functionality and + implementation, whereas traditionally the operating system has + constrained the application's own implementation. Essentially, + this enables eCos developers to create their own + application-specific operating system and makes eCos suitable + for a wide range of embedded uses. Configuration also ensures + that the resource footprint of eCos is minimized as all + unnecessary functionality and features are removed. The + configuration system also presents eCos as a component + architecture. This provides a standardized mechanism for + component suppliers to extend the functionality of eCos and + allows applications to be built from a wide set of optional + configurable run-time components. Components can be provided + from a variety of sources including: the standard eCos + release; commercial third party developers; open source + contributors; or additional optional components from Red + Hat.</PARA> +<PARA>The royalty-free nature of eCos means that you can develop +and deploy your application using the standard eCos release without +incurring any royalty charges. In addition, there are no up-front +license charges for the eCos runtime source code and associated +tools. We provide, without charge, everything necessary for basic embedded +applications development.</PARA> +<PARA>eCos is designed to be portable to a wide range of target +architectures and target platforms including 16, 32, and 64 bit +architectures, MPUs, MCUs and DSPs. The eCos kernel, libraries and +runtime components are layered on the Hardware Abstraction Layer +(HAL), and thus will run on any target once the HAL and relevant +device drivers have been ported to the target's processor +architecture and board. Currently eCos supports a large range of +different target architectures (ARM, Hitachi SH3, Intel x86, MIPS, +Matsushita AM3x, Intel StrongARM, NEC V850, Motorola PowerPC, and +SPARC) including many of the popular variants of these architectures +and evaluation boards. Many new ports are in development and will +be released as they become available.</PARA> +<PARA>eCos has been designed to support applications with real-time +requirements, providing features such as full preemptability, minimal +interrupt latencies, and all the necessary synchronization primitives, +scheduling policies, and interrupt handling mechanisms needed for +these type of applications. eCos also provides all the functionality +required for general embedded application support including device +drivers, memory management, exception handling, C, math libraries, +etc. In addition to runtime support, the eCos system includes all +the tools necessary to develop embedded applications, including +eCos software configuration and build tools, and GNU based compilers, +assemblers, linkers, debuggers, and simulators.</PARA> +<PARA>To get the most out of eCos you should visit the eCos open +source developers site: <ULINK URL="http://sources.redhat.com/ecos/">http://sources.redhat.com/ecos/</ULINK></PARA> +<PARA>The site is dedicated to the eCos developer community and + contains a rich set of resources including news, FAQ, online + documentation, installation guide, discussion and announcement + mailing lists, online problem report form, and runtime and + development tools downloads. We also support anonymous CVS and + WEBCVS access to provide you with direct access to the very + latest eCos source base. Complementing the open source + developers site is an eCos product site, featuring news, press + releases, details of our commercial engineering and support + services, products, and third party partner offerings. This is + located at <ULINK URL="http://www.redhat.com/embedded/technologies/ecos/">http://www.redhat.com/embedded/technologies/ecos/</ULINK></PARA> +<PARA>We have released eCos as open source software because we + believe that this is the most effective software development + model, and that it provides the greatest benefit to the embedded + developer community as a whole. As part of this endeavor, we + seek the input and participation of eCos developers in its + continuing evolution. Participation can take many forms + including:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>providing us with feedback on how eCos might be made more +useful to you - by taking part in the ongoing mailing list discussions +and by submitting problem reports covering bugs, documentation issues, +and missing features</PARA> +</LISTITEM> +<LISTITEM> +<PARA>contributing bug fixes and enhancement patches</PARA> +</LISTITEM> +<LISTITEM> +<PARA>contributing new code including device drivers, board +ports, libraries, and other runtime components</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>Our long term aim is to make eCos a rich and ubiquitous standard +infrastructure for the development of deeply embedded applications. +This will be achieved in part by Red Hat's own efforts, +but also with the assistance of the eCos developer community cooperating +to improve eCos for all. I would like to take this opportunity to +extend our thanks to the many eCos developers who have already contributed +feedback, ideas, patches, and code that have augmented and improved this +release.</PARA> +<PARA>On behalf of the eCos team, welcome to the eCos developer + community.</PARA> +<LITERALLAYOUT><EMPHASIS ROLE="strong">Paul Beskeen, +Director of Engineering, eCos +November 2000</EMPHASIS></LITERALLAYOUT> +</SECT1> +</PREFACE><!-- Keep this comment at the end of the file +Local variables: +mode: sgml +sgml-omittag:nil +sgml-shorttag:t +sgml-namecase-general:t +sgml-general-insert-case:lower +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:2 +sgml-indent-data:t +sgml-parent-document:("ecos-tutorial.sgml" "book" "preface") +sgml-exposed-tags:nil +sgml-local-catalogs:nil +sgml-local-ecat-files:nil +End: +--> +<CHAPTER ID="DOCUMENTATION-ROADMAP"> +<TITLE>Documentation Roadmap</TITLE> + +<!-- ==================================================== --> + +<SECT1 ID="GETTING-STARTED-WITH-ECOS"> +<TITLE>Getting Started with eCos</TITLE> +<VARIABLELIST> +<VARLISTENTRY> +<TERM><EMPHASIS>Release Notes</EMPHASIS></TERM> +<LISTITEM> +<PARA>Description of this release. </PARA> +</LISTITEM> +</VARLISTENTRY> +<VARLISTENTRY> +<TERM><EMPHASIS>Installation Guide</EMPHASIS></TERM> +<LISTITEM> +<PARA>Hardware and software installation instructions, + including instructions on how to execute some prebuilt + tests to verify the installation.</PARA> +</LISTITEM> +</VARLISTENTRY> +<VARLISTENTRY> +<TERM><EMPHASIS>Programming Tutorial</EMPHASIS></TERM> +<LISTITEM> +<PARA>A tutorial that gets you started running programs with + <EMPHASIS>eCos</EMPHASIS>.</PARA> +</LISTITEM> +</VARLISTENTRY> +<VARLISTENTRY> +<TERM><EMPHASIS>Appendixes</EMPHASIS></TERM> +<LISTITEM> +<PARA>Extra information about the licensing terms + for <EMPHASIS>eCos</EMPHASIS>.</PARA> +</LISTITEM> +</VARLISTENTRY> +</VARIABLELIST> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="ECOS-USERS-GUIDE"> +<TITLE>eCos User's Guide</TITLE> +<VARIABLELIST> +<VARLISTENTRY> +<TERM><EMPHASIS>The eCos Configuration Tool</EMPHASIS></TERM> +<LISTITEM> +<PARA>A description of all features of the Configuration Tool. </PARA> +</LISTITEM> +</VARLISTENTRY> +<VARLISTENTRY> +<TERM><EMPHASIS>Programming concepts and + techniques</EMPHASIS></TERM> +<LISTITEM> +<PARA>An explanation of the + <EMPHASIS>eCos</EMPHASIS> programming cycle, and a + description of some debugging facilities that + <EMPHASIS>eCos</EMPHASIS> offers. </PARA> +</LISTITEM> +</VARLISTENTRY> +<VARLISTENTRY> +<TERM><EMPHASIS>Configuration and the Package + Repository</EMPHASIS></TERM> +<LISTITEM> +<PARA>Information on how to configure + <EMPHASIS>eCos</EMPHASIS> manually, including a reference + on the ecosconfig command, memory layouts, and information + on how to manage a package repository using the + <EMPHASIS>eCos Package Administration Tool</EMPHASIS>. + </PARA> +</LISTITEM> +</VARLISTENTRY> +</VARIABLELIST> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="ECOS-REFERENCE-MANUAL"> +<TITLE>eCos Reference Manual</TITLE> +<VARIABLELIST> +<VARLISTENTRY> +<TERM><EMPHASIS>Preliminaries</EMPHASIS></TERM> +<LISTITEM> +<PARA>An overview of the <EMPHASIS>eCos</EMPHASIS> + kernel and configurability system.</PARA> +</LISTITEM> +</VARLISTENTRY> +<VARLISTENTRY> +<TERM><EMPHASIS>Kernel APIs</EMPHASIS></TERM> +<LISTITEM> +<PARA>In-depth description of + <EMPHASIS>eCos</EMPHASIS>"s native C kernel API, the + µITRON API, the ISO standard C + library, and the <EMPHASIS>eCos</EMPHASIS> Hardware + Abstraction Layer (HAL). Important considerations are + given for programming the <EMPHASIS>eCos</EMPHASIS> + kernel. The semantics for each kernel function are + described, including how they are affected by + configuration. </PARA> +</LISTITEM> +</VARLISTENTRY> +<VARLISTENTRY> +<TERM><EMPHASIS>eCos Device Drivers</EMPHASIS></TERM> +<LISTITEM> +<PARA>A description of the philosophy behind + <EMPHASIS>eCos</EMPHASIS> device drivers, as well as a + presentation of the C language API for using the current + device drivers. </PARA> +</LISTITEM> +</VARLISTENTRY> +<VARLISTENTRY> +<TERM><EMPHASIS>The ISO Standard C and Math Libraries</EMPHASIS></TERM> +<LISTITEM> +<PARA><EMPHASIS>eCos</EMPHASIS> comes with an + implementation of the ISO C library specification. This + section gives details about the implementation, lists the + few functions that are not yet implemented, and gives a + complete reference for configuring the C library. + </PARA> +</LISTITEM> +</VARLISTENTRY> +</VARIABLELIST> +</SECT1> +</CHAPTER> +</PART> +<PART ID="RELEASE-NOTES"> +<TITLE>Release Notes</TITLE> +<PARTINTRO> +<PARA>This release of eCos supports the following + architectures:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Matsushita MN10300 (AM31) </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Matsushita AM33 </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Toshiba TX39 (MIPS R3900 derivative) </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Toshiba TX49 (MIPS R4900 derivative)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>PMC-Sierra RM7000A (MIPS IV ISA) </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Motorola PowerPC MPC823, MPC850, and MPC860</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Fujitsu SPARClite MB86831, MB86832, and MB86833</PARA> +</LISTITEM> +<LISTITEM><!-- <conditionaltext> --> +<PARA>Advanced RISC Machines ARM7 and ARM9 +(including Thumb support on the appropriate cores)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Intel StrongARM </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <conditionaltext> -->Intel XScale</PARA> +</LISTITEM> +<LISTITEM> +<PARA>MIPS 4Kc and 5Kc +</PARA> +</LISTITEM> +<LISTITEM> +<PARA>NEC VR4100</PARA> +</LISTITEM> +<LISTITEM> +<PARA>NEC VR4300</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi SH3</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi SH4</PARA> +</LISTITEM> +<LISTITEM> +<PARA>NEC V850 family (SA1 and SB1)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>i386 PC and compatibles</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <conditionaltext> -->Linux i386—synthetic Linux target </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>and <!-- <index></index> -->supports the following target platforms:<!-- <conditionaltext> --></PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Matsushita MN10300 stdevall (AM31)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Matsushita STB System reference Board (AM33)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Toshiba JMR3904 (TX39)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Toshiba REF4955 (TX49)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Momentum Computer Inc. Ocelot (PMC-Sierra RM7000A)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Cogent CMA 101/102 evaluation boards with a CMA287-23 +(MPC823), CMA287-50 (MPC850), or CMA 286-60 (MPC860) daughterboard </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Motorola MBX860 </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Motorola FADS (MPC860) This board is not supported by +Red Hat. See the file <FILENAME>hal/powerpc/fads/</FILENAME>&Version;/README +<FILENAME> </FILENAME> for details.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Fujitsu SPARClite Evaluation Board (SPARClite MB86831, +MB86832, and MB86833)</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <conditionaltext> -->ARM PID (ARM7/ARM7t/ARM9)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>ARM AEB-1 (revision B and C) evaluation boards</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Cirrus Logic CL-PS7111 (ARM710A CPU) evaluation board, +also known as EB7111</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Cirrus Logic EP7209, EP7211 and EP7212 development boards +(ARM720T CPU) also known as EDB7209, EDB7211 and EDB7212 respectively. +</PARA></LISTITEM> +<LISTITEM><PARA> Cirrus Logic EP7312 development board (ARM720T CPU core) +also known as EDB7312 “Maverick” +</PARA></LISTITEM> +<LISTITEM> +<PARA>Cogent CMA 101/102 evaluation boards with CMA230 +(ARM7tdmi) and CMA222 (ARM710) daughterboards —support +for this platform is still “beta”</PARA> +</LISTITEM> +<LISTITEM> +<PARA>ARM Evaluator7T</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Intel StrongARM SA110 EBSA-285 evaluation board</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Intel StrongARM SA1100 Evaluation Platform (Brutus)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Intel StrongARM SA1100 Multimedia Board</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Intel StrongARM SA1110 Microprocessor Evaluation Platform +(Assabet)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Compaq iPAQ PocketPC (Intel StrongARM SA1110)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Bright Star Engineering nanoEngine and commEngine (Intel +StrongARM SA1110)</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <conditionaltext> -->Intel XScale IQ80310 Software Development +and Processor Evaluation Kit</PARA> +</LISTITEM> +<LISTITEM> +<PARA>MIPS Malta and Atlas boards</PARA> +</LISTITEM> +<LISTITEM> +<PARA>NEC DDB-VRC4373 (VR4300)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>NEC V850 Cosmo evaluation boards (CEB-V850/SA1 +and CEB-V850/SB1)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi EDK7708</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi HS7729PCI</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi Solution Engine 77x9</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi Solution Engine 7751</PARA> +</LISTITEM> +<LISTITEM> +<PARA>CQ SH-3 evaluation board (CqREEK 7708)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>CQ SH-4 evaluation board (7750)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Standard PC motherboard</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <conditionaltext> -->Linux (i386) - synthetic Linux target (i386 +and compatibles)</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>This release also <!-- <index></index> -->supports the following host +operating systems: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><!-- <conditionaltext> -->UNIX (Redhat Linux, and Solaris + are the only tested UNIX variants). </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Microsoft® Windows NT®, Windows 95®, +Windows 98®, Windows 2000®. Note that support +for Windows 95, 98 and 2000 is still “beta”. </PARA> +</LISTITEM> +</ITEMIZEDLIST> +</PARTINTRO> +<CHAPTER ID="NOTATION-AND-CONVENTIONS"> +<TITLE>Notation and Conventions</TITLE> +<PARA><!-- <conditionaltext> -->Since there are many supported target architectures, +notation conventions are used in this manual to avoid repeating +instructions that are very similar. </PARA> + +<!-- ==================================================== --> + +<SECT1 ID="GDB-AND-GCC-COMMAND-NOTATION"><!-- <index></index> --><!-- <xref> --> +<TITLE>GDB and <!-- <index></index> --> +GCC Command Notation</TITLE> +<PARA>Cross-development commands like <COMMAND>gcc</COMMAND> and <COMMAND>gdb</COMMAND> will +be shown without prefixed information about the platform for which +you are cross-compiling. You need to add the necessary prefix before +you execute the commands, so instead of simply typing <COMMAND>gcc</COMMAND> and <COMMAND>gdb</COMMAND>, +as illustrated in the various example in this manual, use: + +<COMMAND>arm-elf-gcc/thumb-elf-gcc </COMMAND>and<COMMAND> arm-elf-gdb/thumb-elf-gdb </COMMAND>for +ARM, Thumb and Intel StrongARM +<COMMAND>xscale-elf-gcc</COMMAND> and <COMMAND>xscale-elf-gdb</COMMAND> for +Intel XScale +<COMMAND>mips64vr4300-elf-gcc </COMMAND>and<COMMAND> mips64vr4300-elf-gdb </COMMAND>for +MIPS vr4300 +<COMMAND>mips64vr4100el-elf-gcc </COMMAND>and<COMMAND> mips64vr4100el-elf-gdb </COMMAND>for +MIPS vr4100 +<COMMAND>mips-tx39-elf-gcc </COMMAND>and<COMMAND> mips-tx39-elf-gdb </COMMAND>for +MIPS tx39 +<COMMAND>mips-tx49-elf-gcc </COMMAND>and<COMMAND> mips-tx49-elf-gdb </COMMAND>for +MIPS tx49 +<COMMAND>mipsisa32-elf-gcc</COMMAND> and <COMMAND>mipsisa32-elf-gdb</COMMAND> for +PMC-Sierra RM7000A, MIPS 4Kc & 5Kc, +<COMMAND>mn10300-elf-gcc </COMMAND>and<COMMAND> mn10300-elf-gdb </COMMAND>for +MN10300 +<COMMAND>powerpc-eabi-gcc </COMMAND>and<COMMAND> powerpc-eabi-gdb </COMMAND>for +PowerPC +<COMMAND>sh-elf-gcc </COMMAND>and<COMMAND> sh-elf-gdb </COMMAND>for +SH +<COMMAND>sparclite-elf-gcc </COMMAND>and<COMMAND> sparclite-elf-gdb </COMMAND>for +SPARClite +<COMMAND>v850-elf-gcc </COMMAND>and<COMMAND> v850-elf-gdb </COMMAND>for +NEC V850 +<COMMAND>i386-elf-gcc </COMMAND>and<COMMAND> i386-elf-gdb +for standard PC +i686-pc-linux-gnu-gcc</COMMAND> and <COMMAND>i686-pc-linux-gnu-gdb </COMMAND>for +Synthetic Linux.</PARA> +<PARA>Note that the GCC cross compiler generates executable + files with the <FILENAME>.exe</FILENAME> suffix on Windows, + but not on UNIX. The suffix <FILENAME>.exe</FILENAME> will + be omitted from executable file names, so you will see + <FILENAME>hello</FILENAME> instead of + <FILENAME>hello.exe</FILENAME>.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="DIRECTORY-AND-FILE-SYSTEM-CONVENTIONS"><!-- <index></index> --> +<TITLE>Directory and File System Conventions</TITLE> +<PARA>The default directory for installing eCos on Windows (usually <FILENAME>C:/Program Files/Red Hat/eCos</FILENAME>) is different +from that on UNIX (usually <FILENAME>/usr/local/ecos-1.5.x</FILENAME>). +Since many command line examples in the tutorials use these paths, +this default (base) directory will be cited as <EMPHASIS>BASE_DIR</EMPHASIS>.</PARA> +<PARA>Windows and UNIX have a similar file system syntax, but the +MS-DOS command interpreter on Windows uses the backslash character +(\) as a path separator, while UNIX and POSIX shells (including +the Cygwin bash shell for windows) use the forward slash (/).</PARA> +<PARA>This document will use the POSIX shell convention of forward +slashes throughout.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="VERSION-CONVENTIONS"> +<TITLE>Version Conventions</TITLE> +<PARA>This manual outlines the features of eCos version 1.5.x. +The initial release version was 1.4, and additional 1.4 releases +will incorporate one or more additional numbers, represented in +this manual by “x”. Please note the exact version +number of the version that you are using, because it is incorporated +in certain file paths.</PARA> +</SECT1> +</CHAPTER> +<CHAPTER ID="RELEASE-OVERVIEW"> +<TITLE><!-- <index></index> -->Release Overview</TITLE> +<PARA>The Embedded Configurable Operating System (eCos) software +consists of <!-- <conditionaltext> --> +a set of tools and a run-time environment +for developing embedded applications. It is a configurable, open +source framework that allows you to build a run-time system that +closely matching the needs of your application. </PARA> +<PARA>eCos is aimed at embedded software developers who use architectures +with tight memory constraints, who want a portable framework for +developing their applications.</PARA> +<PARA>If you want to start programming eCos immediately, see <XREF LINKEND="INSTALLATION-GUIDE"> and <XREF LINKEND="PROGRAMMING-TUTORIAL">. </PARA> + +<!-- ==================================================== --> + +<SECT1 ID="HARDWARE-ABSTRACTION"> +<TITLE>Hardware Abstraction</TITLE> +<PARA>eCos includes a <!-- <index></index> -->Hardware Abstraction Layer +(HAL) that hides the specific features of each supported CPU and +platform, so that the kernel and other run-time components can be +implemented in a portable fashion. </PARA> +<PARA>The eCos HAL has now been ported to numerous architectures, +and to one synthetic target, Linux i386. Notes on porting the HAL +to new platforms are provided in the <EMPHASIS>eCos</EMPHASIS> Reference +Manual under Kernel porting notes in The eCos Hardware Abstraction +Layer section. </PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="EMBEDDED-KERNEL"> +<TITLE><!-- <index></index> -->Embedded Kernel</TITLE> +<PARA>The core of eCos is a full-featured, flexible, and configurable +embedded kernel. </PARA> +<PARA>The kernel provides, among other features, multi-threading, +a choice of schedulers, a full set of synchronization primitives, +memory allocation primitives, and thread manipulation functions +(see the <EMPHASIS>eCos</EMPHASIS> Reference Manual for the full +kernel API).</PARA> +<PARA>The kernel is designed such that some parts of it can be changed +or replaced without affecting other kernel components. </PARA> +<PARA>The following is a partial list of <!-- <index></index> --><!-- --> +kernel features:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>choice of memory allocation algorithm </PARA> +</LISTITEM> +<LISTITEM> +<PARA>choice of scheduling algorithm</PARA> +</LISTITEM> +<LISTITEM> +<PARA>a rich set of synchronization primitives </PARA> +</LISTITEM> +<LISTITEM> +<PARA>timers, counters, and alarms </PARA> +</LISTITEM> +<LISTITEM> +<PARA>interrupt handling</PARA> +</LISTITEM> +<LISTITEM> +<PARA>exception handling</PARA> +</LISTITEM> +<LISTITEM> +<PARA>cache control </PARA> +</LISTITEM> +<LISTITEM> +<PARA>thread support </PARA> +</LISTITEM> +<LISTITEM> +<PARA>kernel support for multi-threaded debugging with GDB</PARA> +</LISTITEM> +<LISTITEM> +<PARA>trace buffers</PARA> +</LISTITEM> +<LISTITEM> +<PARA>infrastructure and instrumentation </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>The kernel API and configuration are described in the + <CITETITLE>eCos Reference Manual</CITETITLE>. </PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="CONFIGURABILITY"> +<TITLE><!-- <index></index> -->Configurability</TITLE> + +<PARA>The eCos kernel and other components can be configured in +great detail at compile time, which avoids the need to add unwanted +code to the library to be linked with your application code. There +is no performance penalty for configuration.</PARA> + +<PARA><!-- <conditionaltext> --> +Configuration is fine-grained, so that very +small details of eCos' behavior can be tuned by selecting +different configuration options</PARA> + +<PARA>eCos is organized as a component architecture, with a language +to describe the constraints between the components and individual +configuration options. These constraints are necessary to resolve +inconsistent configurations, such as disabling the code which handles +the real-time clock, while enabling per-thread timers.</PARA> + +<PARA><!-- <index></index> -->The designer of a component or general-purpose +library should write configurable code using a <!-- <index></index> -->component +definition language (CDL). Once that has been done there is no additional +burden on the end user (i.e. an embedded systems developer), who +will be able to use eCos' graphical Configuration Tool +to configure the kernel and basic libraries without needing to understand +how the configuration infrastructure works.</PARA> + +<PARA>A tutorial explaining how to configure eCos is located in <XREF LINKEND="CONFIGURING-AND-BUILDING-ECOS-FROM-SOURCE">. +The <EMPHASIS>eCos</EMPHASIS> User's Guide has more detailed +information on running the <EMPHASIS>Configuration Tool</EMPHASIS> and +CDL. </PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="UITRON-AND-OTHER-OPERATING-SYSTEMS"> +<TITLE>µITRON and Other Operating Systems</TITLE> + +<PARA>eCos' configurability is the key to simulating different +operating systems by using compatibility layers on top of eCos' kernel, +because the semantics of basic kernel functions can be configured +to match the semantics of other operating systems.</PARA> + +<PARA>The specification for the µITRON +operating system has been implemented on top of eCos. µITRON +is configured by selecting appropriate options in the kernel (a +real-time clock, the <OPTION>mlqueue</OPTION> scheduler, +and no timeslicing); and writing a thin layer to map the µITRON +system calls.</PARA> + +<PARA>The µITRON port implements the +complete µITRON 3.02 “Standard +functionality” (level S) specification, as well as some +of the “Extended” (level E) functions. The µITRON +implementation is described in more detail in the eCos Reference +Manual. </PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="ISO-C-LIBRARY"> +<TITLE><!-- <index></index> -->ISO C Library</TITLE> +<PARA>The <!-- <index></index> -->ISO C and <!-- <index></index> -->math library shipped +with eCos was written to be configurable and tightly integrated +with the kernel and the HAL.</PARA> +<PARA>By carefully selecting configuration options in the C library, +you can significantly reduce the size of the final executable image. </PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="SERIAL-DEVICE-DRIVERS"> +<TITLE>Serial Device Drivers</TITLE> +<PARA>eCos provides <!-- <index></index> -->serial device drivers for all +supported eCos platforms, with the exception of the i386 Linux synthetic +target and most simulator platforms. The serial drivers provide +an API (documented in the eCos Reference Manual) to control serial +ports directly. The standard <!-- <index></index> -->I/O library +can be configured to use them as a transport layer.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="MONITOR-IMAGE"> +<TITLE><!-- <xref> -->Monitor Image</TITLE> +<SECT2> +<TITLE>RedBoot</TITLE> +<PARA>The new standard bootstrap and debugging environment for Red +Hat embedded systems is RedBoot, a configurable and extensible command +line application which provides serial and network debugging and +FLASH management. Based on the eCos HAL, RedBoot supports eCos, +GNUPro applications and embedded Linux systems on a wide range of +architectures, including ARM, MIPS, MN10300, PowerPC, SHx, v850 and +x86.</PARA> +<PARA>Redboot provides a GDB stub allowing debugging with the GDB +debugger, and is supplied as a standalone application with the eCos +distribution. See also the <EMPHASIS>RedBoot User's Guide</EMPHASIS>.</PARA> +<PARA>RedBoot is recommended for all platforms. Only those platforms +mentioned below where there is (presently) no RedBoot support, should +CygMon or bare GDB stubs be used.</PARA> +</SECT2> +<SECT2> +<TITLE>CygMon</TITLE> +<PARA></PARA> +<PARA><!-- <conditionaltext> --> +eCos ships with a <EMPHASIS><!-- <index></index> -->CygMon <!-- <index></index> --></EMPHASIS>ROM +monitor for the MN10300, TX39, SPARClite, EP7209, EP7211 and EP7212 Development +Boards. This includes a <!-- <index></index> -->GDB stub, thus allowing GDB +to be used to debug eCos applications on these evaluation boards. For +the Brutus board, two stubs are provided: one with the high FLASH portion +and the other with the low FLASH portion. In addition to shipping +the actual ROM, the image of that ROM is provided in case you need +to burn identical copies for additional boards (see <XREF LINKEND="TARGET-SETUP">). </PARA><!-- <conditionaltext> --> +<NOTE> +<PARA>The TCP stack in the SPARClite version of CygMon uses timer1 +of the 86940 as a freerunning millisecond counter. This means timer1 +cannot be used by the application.</PARA> +</NOTE> +<PARA>For the MN10300, TX39 and SPARClite port of CygMon, the source +code to it is included as part of the GNUPro package, so that you +may recompile it as described in the GNUPro documentation. +For the port of CygMon to the EP7211 and +EP7212 Development Boards, the source code to CygMon is included +as an integral part of eCos. See <XREF LINKEND="setup-arm-ep7212"> for +information on how to rebuild CygMon for the EP7211.Please note that releases of CygMon previous to the one currently +supplied with eCos are incompatible with eCos.</PARA> +</SECT2> +<SECT2> +<TITLE><!-- <conditionaltext> -->GDB +Stubs</TITLE> +<PARA>For the AM33 STB and MN10300 stdeval1, PowerPC MBX860, PowerPC +Cogent, EBSA 285, EDK7708, CQ7708, CQ7750, +VRC4373, +and ARM PID, ARM Cogent, ARM AEB, Cirrus Logic EDB7211 and EDB7209/7212, +TX39 jmr3904, CEB-V850/SA1 +and CEB-V850/SB1 targets, the ROM images include a GDB +stub. This allows GDB to connect to the board and download eCos +programs. </PARA> +<PARA>For the TX49 REF4955, eCos ships with a GDB stub image in +SREC format which must be programmed into the board’s FLASH +memory.</PARA> +<PARA>For the AM33 STB, ARM AEB-1 EBSA 285, SA1100 (Brutus) and +SA1110 (Assabet), the ROM image includes a GDB stub that can be +installed in the FLASH ROM on the board.</PARA> +<PARA>No monitor image is required for the synthetic Linux target.</PARA><!-- +<PARA>For the !- <conditionaltext> ->ARM PID, ARM Cogent, ARM AEB, Cirrus +Logic EDB7211 and EDB7209/7212 !- <conditionaltext> -> targets, +the ROM images include a GDB stub. This allows GDB to connect to +the board and download eCos programs. </PARA> +<PARA> !- <conditionaltext> ->For the !- <conditionaltext> +->ARM AEB-1 !- <conditionaltext> ->, +SA1100 (Brutus) and SA1110 (Assabet), the ROM image includes a GDB +stub that can be installed in the FLASH ROM on the board.</PARA> +<NOTE> +<PARA>When an eCos program is run on ARM or SH3 boards, the GDB +stub in ROM does not provide thread debugging or asynchronous GDB +interrupt support. If you require full debugging capabilities, you +must include GDB stub support when configuring eCos.</PARA> +</NOTE> +<PARA>No monitor image is required for the synthetic Linux +target.</PARA> +--> +</SECT2> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="TESTS-AND-EXAMPLES"> +<TITLE>Tests and Examples</TITLE> +<PARA>Test suites are included for every portion of eCos shipped +in this release. These are brief programs that test the behavior +of most system calls and libraries in eCos. <XREF LINKEND="TEST-SUITES"> describes +how to build and run these test suites.</PARA> +<PARA>The last chapters of <XREF LINKEND="PROGRAMMING-TUTORIAL"> provide examples +that guide you the steps required for running eCos applications, +starting from a “Hello world” program and then +moving on to more complex programs that use additional kernel features. </PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="GNU-TOOLS-AND-THEIR-DOCUMENTATION"> +<TITLE>GNU Tools and their Documentation</TITLE> +<PARA>Red Hat's <!-- <index></index> -->GNUPro Toolkit, which includes +the <!-- <index></index> -->GCC and <!-- <index></index> -->G++ compilers +and the <!-- <index></index> -->GDB debugger, is needed to build eCos applications. +It is bundled with the CD-ROM distribution of the eCos <!-- <index></index> -->Developer's +Kit, and is also available on the <!-- <index></index> -->net at +<ULINK URL="http://sources.redhat.com/ecos/">http://sources.redhat.com/ecos/</ULINK> + </PARA> +<PARA>Online HTML versions of the full GNUPro documentation are +included with eCos, as well as a specific GNUPro tools reference +guide for your hardware architecture, customized for use with eCos. +The full GNUPro documentation can also be found on the web at: + <ulink url="http://www.redhat.com/support/manuals/gnupro.html">http://www.redhat.com/support/manuals/gnupro.html</ulink></PARA> +<NOTE> +<PARA>The Linux synthetic i386 target is an exception, as there +is (currently) no GNUPro manual. However, the GNUPro source archive +contains documentation for the tools. This documentation is usually +also included as part of a default Red Hat Linux installation, accessible +with the <PRODUCTNAME>info</PRODUCTNAME> program.</PARA> +</NOTE> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="ECOS-DOCUMENTATION"> +<TITLE>eCos Documentation</TITLE> +<PARA>The eCos documentation set includes Getting Started with <EMPHASIS>eCos</EMPHASIS>, +the <EMPHASIS>eCos</EMPHASIS> User's Guide, the <EMPHASIS>eCos</EMPHASIS> Reference +Manual, and a <EMPHASIS>GNUPro</EMPHASIS> Reference Manual for your specific +architecture.</PARA> +<PARA>For users of the eCos Net releases, these are available online +in HTML format at + <ULINK URL="http://sources.redhat.com/ecos/">http://sources.redhat.com/ecos/</ULINK></PARA> +</SECT1> +</CHAPTER> +<CHAPTER ID="PACKAGE-CONTENTS"> +<TITLE><!-- <index></index> -->Package Contents</TITLE> + +<!-- ==================================================== --> + +<SECT1> +<TITLE><!-- <conditionaltext> --><!-- <index></index> -->eCos Net Release</TITLE> +<PARA>The eCos Net Release consists of the archive files for + GNUPro and eCos, which are located on the Red Hat eCos web + site: <ULINK URL="http://sources.redhat.com/ecos/">http://sources.redhat.com/ecos/</ULINK></PARA> +<PARA>The eCos Net Release, because it is digitally distributed +only, does not provide <!-- <conditionaltext> -->ROM images for the various development +boards. However, the <!-- <conditionaltext> -->ROM images for the supported hardware +platforms are included in the distribution, so you can burn your +own <!-- <conditionaltext> -->Flash ICs to work with eCos. </PARA> +<PARA>HTML versions of the GNUPro and eCos manuals are included +in the distribution, and are also available online.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="ecos-developers-kit"> +<TITLE>eCos Developer’s Kit</TITLE> +<PARA>If you have a CD distribution of the eCos + Developer’s Kit, you will find the following items in + your package:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>A card to request printed eCos documentation (Getting +Started with <EMPHASIS>eCos</EMPHASIS>, the eCos User’s +Guide, and the <EMPHASIS>eCos</EMPHASIS> Reference Manual), and +the complete GNUPro documentation suite, including an eCos-specific +reference manual for your architecture.</PARA> +<PARA>With this card you can also request a copy of a book by Dr. +Ken Sakamura: <CITETITLE>µITRON 3.0 An Open and +Portable Real-Time Operating System for Embedded + Systems</CITETITLE>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>eCos version 1.5.x CD-ROM with source code and precompiled +binaries.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<SECT2> +<TITLE>MN10300 Package</TITLE> +<PARA>The MN10300 package contains eCos-specific +monitor PROMs for the Matsushita stdeval1 evaluation board. There +are no extras for the Matsushita AM33 System Reference Board in +the Developers’ Kit.</PARA> +</SECT2> +<SECT2> +<TITLE>TX39 Package</TITLE> +<PARA>The <!-- <index></index> --> TX39 package contains eCos-specific monitor +PROMs for the Toshiba JMR3904 evaluation board. </PARA> +</SECT2> +<SECT2> +<TITLE>TX49 Package</TITLE> +<PARA>The TX49 package does not contain anything in addition to +the installation CD.</PARA> +</SECT2> +<SECT2> +<TITLE>PowerPC Package</TITLE> +<PARA>The <!-- <index></index> -->PowerPC package contains an eCos-specific +PROM for either the Motorola PowerPC MBX860 evaluation board or +the Cogent evaluation board.</PARA> +<PARA>The PROM for the Cogent board can be used in all three types +of daughterboards (CMA287-50, CMA287-23 and CMA286-60).</PARA> +</SECT2> +<SECT2> +<TITLE>SPARClite Package</TITLE> +<PARA>The <!-- <index></index> -->SPARClite package contains an eCos-specific +monitor PROM for the Fujitsu SPARClite Evaluation Board. </PARA> +</SECT2> +<SECT2> +<TITLE><!-- <conditionaltext> -->ARM Package</TITLE> +<PARA>The <!-- <index></index> -->ARM package contains an eCos-specific PROM +for the PID evaluation board or the Cogent evaluation board. This +PROM contains a Thumb-aware stub. There are no extras for the AEB-1, +EDB7111 or EDB7211 boards in the Developer's Kit.</PARA> +</SECT2> +<SECT2> +<TITLE>StrongARM Package</TITLE> +<PARA>The <!-- <index></index> -->StrongARM package contains no extras for +any StrongARM boards in the developers’ kit.</PARA> +</SECT2> +<SECT2> +<TITLE>VR4100 Package</TITLE> +<PARA>The <!-- <index></index> -->VR4100 package contains no extras in the +developers’ kit.</PARA> +</SECT2> +<SECT2> +<TITLE>VR4300 Package</TITLE> +<PARA>The <!-- <index></index> -->VR4300 package contains an eCos-specific +PROM for the NEC VRC4373 evaluation board.</PARA> +</SECT2> +<SECT2> +<TITLE>CEB-V850 Package</TITLE> +<PARA>The <!-- <index></index> -->CEB-V850 package contains no extras in +the developers’ kit.</PARA> +</SECT2> +<SECT2> +<TITLE>SH3 Package</TITLE> +<PARA>The <!-- <index></index> -->SH package contains both big-endian and +little-endian versions of the eCos stub PLCC ROM for the Hitachi +SH3 EDK7708 board.</PARA> +<PARA>For the CQ CQ7708 board, a GDB stub image suitable for programming +into ROM or EPROM is provided.</PARA> +</SECT2> +</SECT1> +</CHAPTER> +<CHAPTER ID="SYSTEM-REQUIREMENTS"><!-- <conditionaltext> --> +<TITLE><!-- <index></index> -->System Requirements</TITLE> + +<!-- ==================================================== --> + +<SECT1 id="system-requirements-required"> +<TITLE>Required</TITLE> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><!-- <conditionaltext> -->Standard Intel + architecture PC running Linux (tested on Red Hat Linux distributions +5.0-7.0), and English or Japanese versions of Microsoft Windows +NT version 4.0 (service pack 3 or above must be installed), Windows +95, Windows 98, or Windows 2000. Other versions of Red Hat distributions, +or Linux distributions from other vendors should work as well. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Windows NT users must install Internet + Explorer 4.0 or later, since this will ensure correct + operation of the <EMPHASIS>Configuration + Tool</EMPHASIS> . </PARA> +<PARA><TRADEMARK>Sun</TRADEMARK><!-- <fmsymbol>`</fmsymbol> --> workstation running Solaris 2.5.1 +or later for the <TRADEMARK>SPARC</TRADEMARK><!-- <fmsymbol>`</fmsymbol> -->.</PARA> +<PARA>Support for any platform except for Windows NT 4.0, Solaris +2.5.1 and Linux is beta. In particular, rebuilding the GNUPro compiler +toolchain is only supported and tested on Windows NT 4.0, Solaris +2.5.1, and Red Hat Linux. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enough <!-- <index></index> --> +disk space for the installed distribution. The eCos installation +process will detail the various components of eCos and the GNUPro +toolkit that can be installed, and their disk space requirements.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>64MB of RAM and a 350MHz or faster Pentium processor.</PARA><!-- <conditionaltext> --> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you are downloading the eCos Net Release distribution from +Red Hat's <ULINK URL="http://sources.redhat.com/">sources.redhat.com</ULINK> site, you will also need space +to store that image and to compile GNUPro and eCos from source.</PARA> +<PARA>If you will be using the <!-- <index></index> -->MN10300 stdeval1 board, +you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>A Matsushita MN10300 standard evaluation board with eCos + CygMon Debug PROMs +installed</PARA> +</LISTITEM> +<LISTITEM> +<PARA>One standard modem (straight connection) serial cable +to connect the serial port on the PC to the evaluation board. An +optional second serial cable can be used for diagnostic I/O. </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the AM33 <!-- <index></index> -->STB system reference +board, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>A Matsushita AM33 STB System Reference Board, with the +ability to download using the JTAG debugger. To enable debugging +using GDB, the eCos “GDB stubs ROM” will need to have +been programmed into the Flash ROM.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Connection to the host computer should be made using a +null modem RS232 serial cable. A gender changer may also be required. </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->TX39 JMR3904 board, +you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>JMR-TX3904 RISC Processor Reference Board with eCos +<PRODUCTNAME> CygMon Debug </PRODUCTNAME>EPROMs installed</PARA> +</LISTITEM> +<LISTITEM> +<PARA>A null modem cable to connect the serial port on the PC +to the evaluation board </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the TX49 REF4955 board, you will also +need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>TX49 REF4955 board with eCos GDB stubs programmed into +the FLASH</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->PowerPC Cogent board, +you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Cogent CMA101/102 evaluation board with a CMA287-23 +(MPC823), CMA287-50 (MPC850), or CMA286-60 (MPC860) daughterboard +and eCos “GDB stubs” ROM +installed. Information and online manuals for the Cogent board can +be found at <ULINK URL="http://www.cogcomp.com/">http://www.cogcomp.com/</ULINK>. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Serial cable to connect the serial port on the PC to the +RJ-11 serial I/O connector, P12 (CMA101) or P3 (CMA102), +on the evaluation board.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the<!-- <index></index> --> PowerPC MBX860 board, +you will also need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Motorola PowerPC MBX860 evaluation board and eCos +<PRODUCTNAME> “</PRODUCTNAME>GDB stubs” ROM installed.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Suitable serial cable to connect the serial port on the +PC to the SMC1/COM1 connector on the evaluation board.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the Fujitsu <!-- <index></index> -->SPARClite +Evaluation Board, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC (only required if +using the serial connection).</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Fujitsu SPARClite Evaluation Board with a CygMon ROM + installed. + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Null modem cable to connect the serial port on the PC +to the CON1 serial I/O connector on the evaluation board.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>An ethernet connection between the PC and the evaluation +board (possibly via a LAN). The ethernet connection is not necessary +if you have a serial connection, but it does improve download speeds +immensely.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA><!-- <conditionaltext> -->If you will be using the <!-- <index></index> -->ARM +PID evaluation board, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>ARM PID evaluation board with eCos + +GDB stubs ROM installed, or GDB stubs programmed in the FLASH ROM +(see <XREF LINKEND="setup-arm-pid">). </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Null modem cable to connect the serial port on the PC +to the SerialA serial I/O connector on the evaluation board.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->ARM AEB-1 evaluation +board, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>ARM AEB-1 evaluation board with eCos +GDB stubs ROM image installed in the FLASH ROM. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Null modem cable to connect the serial port on the PC +to the serial I/O connector on the evaluation board.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->ARM Evaluator-7T evaluation +board, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>ARM E7T evaluation board with RedBoot image installed +in the FLASH ROM. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Null modem cable to connect the serial port on the PC +to the serial I/O connector on the evaluation board.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->Cogent CMA230 evaluation +board, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Cogent CMA101/102 evaluation board with a CMA +(ARM7tdmi) daughterboard and eCos + +GDB stubs ROM installed. Information and online manuals for the +Cogent board can be found at <ulink url="http://www.cogcomp.com/">http://www.cogcomp.com/</ulink> + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Serial cable to connect the serial port on the PC to the +RJ-11 serial I/O connector, P11 (CMA101) or P3 (CMA102), +on the evaluation board.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->Cirrus Logic CL-PS7111 +Evaluation Board, you will also need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>A Cirrus Logic CL-PS7111 Evaluation Board with an eCos +GDB stubs ROM image installed in the FLASH ROM.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Custom cable that is supplied with the CL-PS7111 Evaluation +Board connected from a serial port on the PC to the serial I/O +connector labelled “Serial Port 1”.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->Cirrus Logic EP7209, +EP7211 or EP7212 Development Boards, you will also need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>A Cirrus Logic ARM EP7211 or EP7212 Development Board, +with either a RedBoot, CygMon or GDB stub ROM image installed in +the FLASH ROM.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>If connecting with a serial cable, use a null modem cable +to connect the serial port on the PC to the serial I/O +connector labelled “UART 1” on the EP7211 Development +Board, and “Serial Port 0” on the EP7209 and EP7212 +Development Boards. A gender changer may also be required.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the Cirrus Logic +<!-- <index></index> -->EP7312 Development Boards, you will also need: +</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>A Cirrus Logic ARM EP7312 Development System +with RedBoot installed in +the FLASH ROM.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>If connecting with a serial cable, use a null modem cable +to connect the serial port on the PC to either serial I/O +connector on the EP7312 Development Board. +A gender changer may also be required.</PARA> +<PARA>Alternatively you can connect using the standard ethernet +connector on the board. +</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->Intel StrongARM EBSA-285 +evaluation board, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Intel StrongARM EBSA-285 evaluation board with RedBoot +or eCos GDB stubs ROM image installed +in the FLASH ROM. </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If serial debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Null modem cable to connect the serial port on the PC +to the serial I/O connector on the evaluation board. A +gender changer may also be required.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If network debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Suitable network interface card on the development PC +and connecting cables</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the Bright Star Engineering commEngine +or nanoEngine boards, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>BSE commEngine or nanoEngine board with RedBoot image +installed in the FLASH ROM. </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If serial debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Null modem cable to connect the serial port on the PC +to the serial I/O connector on the evaluation board. A +gender changer may also be required.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If network debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Suitable network interface card on the development PC +and connecting cables</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the Intel SA1100 Evaluation Platform +(Brutus), you will need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Intel SA1100 board with RedBoot, CygMon or eCos GDB stubs +programmed into the FLASH</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the Intel SA1100 Multimedia Board, you +will need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Intel SA1100MM board with RedBoot installed into FLASH</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the Intel SA1110 Evaluation Platform +(Assabet), you will need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Intel SA1110 board with RedBoot, CygMon, or eCos GDB stubs +programmed into the FLASH</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If serial debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If network debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>A Compact Flash ethernet card for the platform for use +with network debugging under RedBoot</PARA> +</LISTITEM> +<LISTITEM> +<PARA>A suitable network interface card on the development PC +and connecting cables</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the Compaq iPAQ PocketPC, you will need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Compaq iPAQ with RedBoot programmed into the FLASH</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If serial debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Cradle or cable to connect to the host PC</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If network debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>A Compact Flash ethernet card for the platform for use +with network debugging under RedBoot</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Cradle and connectors for the CF ethernet card.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>A suitable network interface card on the development PC +and connecting cables</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->Intel XScale IQ80310 +Evaluation Kit, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Intel IQ80310 board with RedBoot installed in the FLASH. </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If serial debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Null modem cable to connect the serial port on the PC +to the serial I/O connector on the evaluation board. A +gender changer may also be required.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If network debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Suitable network interface card on the development PC +and connecting cables</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->NEC VRC4373 evaluation +board, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>NEC4373 evaluation board with eCos<PRODUCTNAME> “</PRODUCTNAME>GDB +stubs” ROM installed. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Straight-thru cable to connect the serial port on the +PC to the serial I/O connector J1 on the evaluation board</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->Momentum Computer +Inc. PMC-Sierra RM7000A based Ocelot board, you will also need: + </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Ocelot board with RedBoot image installed in FLASH ROM. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Null modem cable to connect the serial port on the PC +to the serial I/O connector on the evaluation board. A +gender changer may also be required.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->Hitachi EDK7708 board, +you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One (16550 based) serial port on the PC</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi EDK7708 board with a SH3/7708 CPU and +eCos<PRODUCTNAME> “</PRODUCTNAME>GDB stubs” installed in +FLASH. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Serial cable (provided with the board) to connect the +serial port on the board.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the SH3 CQ7708 board, you will also + need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>CQ CQ7708 board with a SH3/7708 CPU and eCos +GDB stubs installed.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the SH3 HS7729 board, you will also + need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi HS7729PCI board with a SH3/7729 CPU and +RedBoot installed.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the SH3 SE77x9 board, you will also + need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hiatchi Solution Engine 7709/7729 board with +a SH3/7709 or SH3/7729 CPU and RedBoot installed.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the SH4 SE7751 board, you will also + need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Hitachi Solution Engine 7751 board with a SH4/7751 +CPU and RedBoot installed.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the SH4 CQ7750 board, you will also + need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>One 16550-based serial port on the PC.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>CQ CQ7750 board with a SH4/7750 CPU and eCos +GDB stubs installed.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using the <!-- <index></index> -->NEC V850 Cosmo Evaluation +Board, you will also need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>NEC CEB-V850/SA1 or NEC CEB-V850/SB1 +board with eCos GDB stubs installed in the EPROM.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Serial cable to connect the serial port on the PC to the +DB-9 connector on the CEB-V850</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If using the NEC V850 I.C.E. kit for development, you will +also need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>a PC running Microsoft Windows, to run the Windows-only +NEC software</PARA> +</LISTITEM> +<LISTITEM> +<PARA>The +<filename>v850ice.exe</filename> +”libremote” application to provide an interface +between the NEC software and the GDB debugger.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you will be using an x86 board, you will also need:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>A standard PC motherboard with an i386 or better processor +and a 3.5” floppy disk drive. Optionally, a color text-mode-only +display card with monitor or keyboard may also be provided. Any +standard PC will provide all the hardware required to run eCos. </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If serial debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>A null modem cable to connect the COM1 port on the target +motherboard to a serial port on the host system.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If network debugging is to be used:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>Suitable network interface card on the development PC +and connecting cables</PARA> +</LISTITEM> +<LISTITEM> +<PARA>An Intel i82559 based PCI ethernet card (for example an +Intel EtherExpress Pro 10/100) may be installed for use +by the eCos network stack or for network debugging.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA><!-- <conditionaltext> -->If you will be using the <!-- <index></index> -->Linux +synthetic target, you will also need: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>An x86 PC with an installed Linux distribution (tested +with Red Hat Linux distributions 5.0 - 7.0). </PARA> +</LISTITEM> +</ITEMIZEDLIST> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="system-requirements-recommended"> +<TITLE>Recommended</TITLE> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>A Pentium II computer and 64MB or more of RAM are recommended +for best build performance.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>The system has been tested only in the recommended configuration +above, although other configurations are expected to work.</PARA> +</SECT1> +</CHAPTER> +<CHAPTER ID="REPORTING-PROBLEMS"> +<TITLE>Reporting Problems</TITLE> +<PARA>Reporting bugs and other problems is very important: it allows +Red Hat to solve your problem quickly, and improves the eCos product. +The effort you make in reporting problems is appreciated.</PARA> +<PARA>To submit a <!-- <index></index> -->problem report, please use the +web interface. If you have a CD distribution of the eCos Developer's +Kit, you should use the address: <ulink + url="http://support.cygnus.com/">http://support.cygnus.com/</ulink></para> +<PARA>You will need a login name and an ID, provided by your administrator.</PARA> +<PARA>If you are using the eCos Net release you should use the address +<ULINK URL="http://sources.redhat.com/ecos/problemreport.html">http://sources.redhat.com/ecos/problemreport.html</ULINK></PARA> + +<!-- ==================================================== --> + +<SECT1 id="known-bugs"> +<TITLE>Known Bugs in eCos and GNUPro</TITLE> +<PARA>Before filing bug reports, however, please read the README +provided with this release. It describes known problems and possible +workarounds in eCos or with the GNUPro Toolkit. The file is at the +base of the distribution.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="report-problems"> +<TITLE>How to Report Problems</TITLE> +<PARA><!-- <xref> -->For documentation discussing methods of reporting on, +editing and querying, see the following Accessing Red Hat Web Support +to Report Problems, or Additional Options in this chapter.</PARA> +<PARA>This documentation serves only as a guide and it is not meant +to supercede the Help documentation on the Web Support site.<!-- <xref> --> We +have tried to make our software as trouble-free as possible. If +you do encounter problems, we'd like to diagnose and fix +the problem as quickly as possible. </PARA> +<SECT2> +<TITLE><!-- <xref> --><!-- <xref> --><!-- <xref> --><!-- <xref> -->Accessing Red Hat Web Support to +Report Problems</TITLE> +<PARA><!-- <xref> -->If you have a CD distribution, use the following instructions +to access the Red Hat Support website.</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><!-- <xref> --><!-- <xref> -->Use the following URL in your web browser's +address or location dialog box.<!-- <xref> --> +<ulink url="http://support.cygnus.com/">http://support.cygnus.com/</ulink></para> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> -->Click on the Case Management System icon, enter +your ID and password, and the Welcome page will be displayed<!-- <conditionaltext> -->.<XREF LINKEND="FIGURE-WELCOME-PAGE"></PARA> +</LISTITEM> +</ITEMIZEDLIST> +<FIGURE ID="FIGURE-WELCOME-PAGE"> +<TITLE>Welcome page for the Red Hat web support site</TITLE> +<GRAPHIC ENTITYREF="figure-welcome-page-entity"></GRAPHIC> +</FIGURE> +<PARA><!-- <conditionaltext> --><!-- <xref> -->Access the Welcome page at any time +by using the <GUIBUTTON>Welcome</GUIBUTTON> link (in the +navigation bar on the left side of each Web Support page).</PARA> +<PARA>If you have the CD distribution, your details will have been +entered in the database, and will be displayed on the Welcome page. +If you wish to alter these details, select the Profile link in the +navigation bar on the left side of the page.</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><!-- <xref> -->Use the links included in the navigation bar on +the left side of the page to perform any of the following Red Hat +Web Support activities.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><GUIBUTTON><!-- <xref> -->New Case</GUIBUTTON> +(see <XREF LINKEND="SUBMITTING-A-SUPPORT-REQUEST">, <!-- <conditionaltext> --><XREF LINKEND="FIGURE-WELCOME-PAGE">, and the Red Hat Support website) </PARA> +</LISTITEM> +<LISTITEM> +<PARA><GUIBUTTON><!-- <xref> --> Query Case</GUIBUTTON> +(see Additional options, <!-- <conditionaltext> -->and the Red Hat Support +website) </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> +<GUIBUTTON>Add Notes</GUIBUTTON> +(see Additional options, <!-- <conditionaltext> -->and the Red Hat Support +website) </PARA> +</LISTITEM> +<LISTITEM> +<PARA><GUIBUTTON><!-- <xref> --> Find Solutions</GUIBUTTON> +(see Additional options, <!-- <conditionaltext> -->and the Red Hat Support +website) </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> +<GUIBUTTON>Profile</GUIBUTTON> +(see Additional options, <!-- <conditionaltext> -->and the Red Hat Support +website) </PARA> +</LISTITEM> +<LISTITEM> +<PARA><GUIBUTTON><!-- <xref> --> Help</GUIBUTTON> +documentation see Additional options, <!-- <conditionaltext> -->and the +Red Hat Support website) </PARA> +</LISTITEM> +<LISTITEM> +<PARA><GUIBUTTON><!-- <xref> --> Close Case</GUIBUTTON> +(see Additional options, <!-- <conditionaltext> -->and the Red Hat Support +website)</PARA> +</LISTITEM> +</ITEMIZEDLIST> +</SECT2> +<SECT2 ID="SUBMITTING-A-SUPPORT-REQUEST"> +<TITLE><!-- <xref> --><!-- <xref> -->Submitting a Support Request</TITLE> +<PARA><!-- <xref> -->Use the following instructions to submit a support request, +once you have a valid ID established.</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><!-- <xref> -->Click on +<GUIBUTTON>New Case</GUIBUTTON> +to create a new reported problem case<!-- <conditionaltext> -->.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>The New Case page allows you to complete the creation of a +new case. If there is more than one site, select the site relating +to your problem.</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><!-- <xref> -->Click on + <GUIBUTTON>Use This Site ID</GUIBUTTON> +button to display a list of the relevant products.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> -->Select a product from the list and then click on +the +<GUIBUTTON>Create Case for Selected Product</GUIBUTTON> +button.</PARA><!-- <conditionaltext> --><!-- <xref> --> +<FIGURE ID="FIGURE-NEW-CASE-WEB-PAGE"> +<TITLE>New case web page</TITLE> +<GRAPHIC ENTITYREF="figure-new-case-web-page-entity"> </GRAPHIC> +</FIGURE> +<PARA>(Each customer has a valid list of parts of Red + Hat products for which they can submit problem + reports. These components are part of the Web Support + database.)</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> -->Type a brief description of the case in the +<GUIBUTTON>Case Title</GUIBUTTON> +field. <!-- <xref> -->You can enter up to 80 characters in this field.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> -->Select a case type from the +<GUIBUTTON>Type</GUIBUTTON> +drop-down menu that best describes the case.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> -->Select a customer severity level from the +<GUIBUTTON>Severity</GUIBUTTON> +drop-down menu that best describes how severe you view this problem.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> -->Select a case priority level from the +<GUIBUTTON>Priority</GUIBUTTON> +drop-down menu that best describes the priority of this case to +Red Hat.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> -->Type a complete description of your case in the +<GUIBUTTON>Problem Description</GUIBUTTON> +field.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> -->Use the scrollbars to scroll text in this field. +You can add up to 30 kilobytes of text in this field.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> -->Click on the +<GUIBUTTON>Create Case</GUIBUTTON> +button at the bottom of the page to create the case in the Red +Hat Web Support database. Alternatively, clear the input fields +on the New Case page, using the +<GUIBUTTON>Clear</GUIBUTTON> +button.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA><!-- <xref> -->After you create your case, the Case Details page displays, +which includes the Case ID number that the support database assigns +to your case.</PARA> +<PARA><!-- <xref> -->To create a new case for a different site and/or +part, click the <GUIBUTTON>New Case</GUIBUTTON> link in +the navigation bar; then use the previous instructions.</PARA> +</SECT2> +<SECT2> +<TITLE><!-- <xref> --><!-- <xref> -->Additional Options</TITLE> +<PARA><!-- <xref> -->The following documentation discusses the other features +for the Red Hat Web Support site. <!-- <xref> -->Red Hat has a database to +help in determining when problems developed, tracking the problems +case from their first report through analysis and resolution. The +database can also be used for correlation with other products as well +as to other related problems.</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><!-- <xref> --> Click on +<GUIBUTTON>Query Case</GUIBUTTON> +to find an existing problem case in our database. </PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA><!-- <xref> -->You may examine problem cases in the Red Hat Web Support +database, searching by solution ID or by entering keywords and/or +a key phrase. There are options on this page enabling you to control +how your search works.</PARA> +<PARA><!-- <xref> -->At this point, view a problem case's details, +check its status, add notes or close a problem.</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><!-- <xref> --> Click on +<GUIBUTTON>Add Notes</GUIBUTTON> +to add additional data to an existing case in our database. </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> Click on +<GUIBUTTON>Find Solutions</GUIBUTTON> +to search for problem solutions in the database. <!-- <xref> -->The search +will provide a list of the current problem cases in the Red Hat +Web Support database.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> <!-- <xref> -->Click on +<GUIBUTTON>Profile</GUIBUTTON> +to change your profile information and/or your Web Support +password in our database. A Profile page will be displayed.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> <!-- <xref> -->Click on +<GUIBUTTON>Help</GUIBUTTON> +for questions about using the Web Support page. The online help +documentation for the Web Support site supercedes this guide; it +is not meant to supercede the more updated Help documentation for +the Web Support site. </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> <!-- <xref> -->Click on +<GUIBUTTON>Close Case</GUIBUTTON> +link to close a case. <!-- <xref> -->Closing a case brings the problem to +its resolution.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<SECT3> +<TITLE>Updating your profile</TITLE><!-- <conditionaltext> --> +<FIGURE ID="FIGURE-CASE-PROFILE"> +<TITLE>Clicking on Profile allows you to Changing your profile +for updating the Red Hat Web support database</TITLE> +<GRAPHIC ENTITYREF="figure-case-profile-entity"></GRAPHIC> +</FIGURE> +<PARA>Clicking on Profile allows you to <!-- <conditionaltext> --><EMPHASIS><!-- <xref> --><!-- <xref> --></EMPHASIS>enter +the following details (in <XREF LINKEND="FIGURE-WELCOME-PAGE">, + ficticious details were created for the example + problem's reported case).<!-- <conditionaltext> --></PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><!-- <xref> --> Your contact name </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> The primary phone number where Red Hat Support +can contact you </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> FAX number Red Hat Support can use to send you +information </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> Your e-mail address </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> Your site ID, used to identify your primary site +in the Web Support database +(a Red Hat representative will provide this information) </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <xref> --> Your site name + </PARA> +</LISTITEM> +</ITEMIZEDLIST> +</SECT3> +</SECT2> +</SECT1> +</CHAPTER> +</PART> +<PART ID="INSTALLATION-GUIDE"> +<TITLE><!-- <xref> -->Installation Guide</TITLE> +<CHAPTER ID="SOFTWARE-INSTALLATION"> +<TITLE><!-- <xref> -->Software Installation</TITLE> + +<!-- ==================================================== --> + +<SECT1 id="software-installation-windows"> +<TITLE>Software <!-- <index></index> --> +Installation on Windows</TITLE> +<PARA><!-- <conditionaltext> --> + If you have a CD distribution of the eCos +Developer's Kit, you have received the eCos software and +its supporting utilities on a single CD-ROM for installation on +a PC-compatible computer running Windows NT 4.0, Windows 95, Windows +98 or Windows 2000. If you use NT you must apply the NT 4.0 Service +Pack 3 or above before installing eCos. Support is only for Windows +NT 4.0. Installations on other Windows platforms are beta.</PARA> +<PARA>The following components are provided on the eCos CD-ROM: </PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>eCos source code</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Prebuilt eCos libraries and tests</PARA> +</LISTITEM> +<LISTITEM> +<PARA>eCos documentation</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Red Hat <!-- <index></index> --> +GNUPro compiler toolchain for eCos source code compilation</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Red Hat <!-- <index></index> --> +Cygwin environment: this product provides a POSIX compatibility +layer on top of Windows NT, and supports the GNUPro tools on Windows +NT.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>The <!-- <index></index> --> +GNU user tools—a collection of utilities that developers, +particularly those with a UNIX background, will find useful. However, +they are not supported by Red Hat.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <conditionaltext> -->Documentation for the GNUPro tools, including +a Reference Manual for the particular evaluation board being used +to run eCos.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>If you have obtained the <!-- <index></index> -->Net release of eCos +for Windows, you will have the distribution in a self-extracting archive. +Apart from the difference in medium, the installation procedure +for eCos itself will be the same as for the CD-ROM-based distribution. </PARA> +<PARA>The software installation process involves a number of installation +utilities. Some familiarity with Windows is assumed.</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA> Invoke the file Setup.exe on the CD-ROM. This will +start the installation procedure. If you have the +<OPTION>autorun</OPTION> +feature enabled, Windows will run Setup.exe automatically when +the CD-ROM is inserted into the drive.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>The setup program will offer to install + the GNU user tools. Click <EMPHASIS>OK</EMPHASIS>. + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>You will be prompted for a file path in which to install +the GNU user tools. The default will be in the +<FILENAME>/cygnus/gnupro/i686-cygwin32/i686-cygwin32</FILENAME> +hierarchy (usually on drive C). It will then offer to install the +source code and documentation for the GNU user tools. It is recommended +that you install the documentation, but not the source code, unless +you are interested in modifying or recompiling the GNU user tools. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>At this point the setup program will begin installing +eCos. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>The default path offered for eCos installation will be +in the +<FILENAME>/Program Files/Red Hat</FILENAME> +hierarchy (usually on drive C). You may change this path, and indeed +you will need to change it if that partition does not have sufficient +free disk space available. It is recommended that you accept the +default selection of software components for installation.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>You will be asked to select the program folder under which +the eCos menu items will be placed. The default folder name is +<FILENAME>Red Hat eCos</FILENAME>. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>The installation should finish normally, offering to show +you the +<FILENAME>README</FILENAME> +file that contains any last minute information and a list of known +problems detected after this document was printed. Once the installation +is finished, you can start eCos or view the online documentation +by selecting +<EMPHASIS>Start</EMPHASIS> +-> +<EMPHASIS>Programs</EMPHASIS> +-> +<EMPHASIS> Red Hat eCos</EMPHASIS> +, and then choosing an option within this folder, e.g +<EMPHASIS>Configuration Tool</EMPHASIS> +, +<EMPHASIS>Package Administration Tool</EMPHASIS> +, etc. </PARA> +</LISTITEM> +</ORDEREDLIST> +<PARA><!-- <xref> -->At this point you are ready to configure and build a +customized eCos kernel as described in <XREF LINKEND="CONFIGURING-AND-BUILDING-ECOS-FROM-SOURCE">. </PARA> +<NOTE> +<PARA>The order of directories in the PATH is very important, and +build failures may result if the PATH is not set correctly. If you +are having difficulties in building eCos, please make sure you have +set the PATH exactly as above.</PARA> +</NOTE> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="SOFTWARE-INSTALLATION-ON-UNIX"> +<TITLE><!-- <xref> -->Software <!-- <index></index> --> +Installation on UNIX</TITLE> +<PARA>Installation and build instructions for the eCos Net release +are available on the Red Hat eCos web site + <ULINK URL="http://sources.redhat.com/ecos/">http://sources.redhat.com/ecos/</ULINK></PARA> +<SECT2> +<TITLE><!-- <index></index> -->Installing the eCos Developer's Kit under Linux</TITLE> +<PARA>Users of the eCos Developer's Kit under Red Hat Linux +should use the following instructions, for most of which you will +normally need to be the root user. </PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA> The CD-ROM must be “mounted” before +installation can proceed. Execute the command: + </PARA> +<SCREEN># mount /dev/cdrom/ /mnt/cdrom</SCREEN> +<PARA>Install the eCos repository from the RPM file ecos15x.rpm +(where x or xx are final digits of the current version number), +located in the root directory of the CD-ROM using the following +command: + </PARA> +<SCREEN># rpm -i /mnt/cdrom/ecos15x.rpm + </SCREEN> +<PARA>Note that root privileges are required to perform this installation. +On completion, the eCos repository may be found in the directory /opt/ecos/ecos-1.5.x.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Extract the eCos development tools from the compressed +tar archive tool-bin.tgz, located in the root directory of the CD-ROM, +using the following commands:</PARA> +<SCREEN># mkdir /usr/cygnus +# cd /usr/cygnus +# gunzip -c < /mnt/cdrom/tool-bin.tgz | tar xvf -</SCREEN> +</LISTITEM> +<LISTITEM> +<PARA>On completion, the eCos development tools may be found +in the directory +<FILENAME>/usr/cygnus/ecos-DEVTOOLSVERSION</FILENAME>. The source code for the development tools may optionally be installed +in the same way: + </PARA> +<PROGRAMLISTING># gunzip -c < /mnt/cdrom/tool-src.tgz | tar xvf -</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>Add the eCos host tools and development tools to the front +of your path. Under Linux, you should modify the PATH environment +variable as follows. +Using sh, ksh, or bash: + </PARA> +<PROGRAMLISTING>$ PATH=/opt/ecos/ecos-1.5.x/tools/bin:/usr/cygnus/DEVTOOLSVERSION/H-i686-pc-linux-gnu/bin:$PATH +$ export PATH</PROGRAMLISTING> +<PARA>Using csh or tcsh: Note that csh also requires the shell command “rehash” after modifying +the path for the path change to take effect.</PARA> +<PROGRAMLISTING>$ setenv PATH /opt/ecos/ecos-1.5.x/tools/bin:/usr/cygnus/DEVTOOLSVERSION/H-i686-pc-linux-gnu/bin:$PATH</PROGRAMLISTING> +<PARA>Set the ECOS_REPOSITORY environment variable as follows. +Using sh, ksh or bash: + </PARA> +<PROGRAMLISTING>$ ECOS_REPOSITORY=/opt/ecos/ecos-1.5.x/packages +$ export ECOS_REPOSITORY</PROGRAMLISTING> +<PARA>Using csh or tcsh:</PARA> +<PROGRAMLISTING>$ setenv ECOS_REPOSITORY /opt/ecos/ecos-1.5.x/packages</PROGRAMLISTING> +</LISTITEM> +</ORDEREDLIST> +<PARA>At this point you are ready to configure and build a customized +eCos kernel as shown in <XREF LINKEND="CONFIGURING-AND-BUILDING-ECOS-FROM-SOURCE">. </PARA> +<NOTE> +<PARA>The order of directories in the PATH is very important, and +build failures may result if the PATH is not set correctly. If you +are having difficulties in building eCos, please make sure you have +set the PATH exactly as above.</PARA> +</NOTE> +</SECT2> +<SECT2> +<TITLE><!-- <index></index> -->Installing the eCos Developer's Kit under Solaris</TITLE> +<PARA>Users of the eCos Developer's Kit under Solaris should +use the following instructions, which assume that the CD-ROM is +available at <FILENAME>/cdrom/cdrom0</FILENAME>.</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA> Extract the eCos repository from the compressed tar +archive ecos15x.taz (where x or xx are the final digits of +the version number), located in the root directory of the CD-ROM +using the following commands: + </PARA> +<PROGRAMLISTING># mkdir /usr/local +# cd /usr/local +# zcat < /cdrom/cdrom0/ecos15x.taz | tar xvf -</PROGRAMLISTING> +<PARA>On completion, the eCos repository may be found in the directory +<FILENAME>/usr/local/ecos-1.5.x</FILENAME>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Extract the eCos development tools from the compressed +tar archive <FILENAME>tool-bin.taz</FILENAME>, located in the root + directory of the CD-ROM, using the following commands: + </PARA> +<PROGRAMLISTING># mkdir /usr/cygnus +# cd /usr/cygnus +# zcat < /cdrom/cdrom0/tool-bin.taz | tar xvf -</PROGRAMLISTING> +<PARA>On completion, the executable files of the eCos development tools +may be found in the directory </PARA> +<PROGRAMLISTING>/usr/cygnus/ecos-DEVTOOLSVERSION/H-host-triplet/bin</PROGRAMLISTING> +<PARA>The source code for the development tools may optionally be installed +in the same way: + </PARA> +<PROGRAMLISTING># zcat < /cdrom/cdrom0/tool-src.taz | tar xvf -</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>Add the eCos host tools, development tools and any native +tools supporting the eCos build process to the front of your path. +Under Solaris you should modify the PATH environment variable as +follows. + +Using sh, ksh, or bash: + </PARA> +<PROGRAMLISTING>$ PATH=/usr/local/ecos-1.5.x/tools/bin:/usr/xpg4/bin/usr/ucb:$PATH +$ export PATH</PROGRAMLISTING> +<PARA>Using csh or tcsh: + +Note that csh also requires the shell command "rehash" after modifying +the path for the path change to take effect. + </PARA> +<PROGRAMLISTING>% setenv PATH /usr/local/ecos-1.5.x/tools/bin:/usr/xpg4/bin:/usr/ucb:$PATH</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>Set the ECOS_REPOSITORY environment varable as +follows:</PARA> +<PARA>Using sh, ksh or bash: + </PARA> +<PROGRAMLISTING>$ ECOS_REPOSITORY=/usr/local/ecos-1.5.x/packages +$ export ECOS_REPOSITORY</PROGRAMLISTING> +<PARA>Using csh or tcsh:</PARA> +<PROGRAMLISTING>% setenv ECOS_REPOSITORY /usr/local/ecos-1.5.x/packages</PROGRAMLISTING> +</LISTITEM> +</ORDEREDLIST> +<PARA>At this point you are ready to configure and build a customized +eCos kernel as shown in <XREF LINKEND="CONFIGURING-AND-BUILDING-ECOS-FROM-SOURCE">. </PARA> + +<NOTE> +<PARA>The order of directories in the PATH is very important, and +build failures may result if the PATH is not set correctly. If you +are having difficulties in building eCos, please make sure you have +set the PATH exactly as above.</PARA> +</NOTE> +</SECT2> +</SECT1> +</CHAPTER> +<CHAPTER ID="TARGET-SETUP"> +<TITLE><!-- <index></index> --><!-- <xref> --><!-- <index></index> -->Target Setup</TITLE> + +<!-- ==================================================== --> + +<SECT1 id="connecting-target-serial"> +<TITLE><!-- <index></index> -->Connecting To A Target Via Serial</TITLE> +<PARA>While eCos supports a variety of targets, communication with +all the targets happens in one of four ways. These are descibed +in general below.</PARA> +<PARA>The descriptions are followed by descriptions of each target, +providing specific details of how to set up the target (if hardware) +and the necessary communication information (such as baud rate for +hardware targets, or special connection options for simulator targets).</PARA> +<PARA>Most targets will have eCos GDB stubs or RedBoot installed. +These normally wait for GDB to connect at 38400 baud, using 8 data +bit, no parity bit and 1 stop-bit (no hardware flow control). Check +the section for your target to ensure it uses this speed. If not, +adjust the following instructions accordingly.</PARA> +<PARA>The following instructions depend on your having selected +the appropriate serial port on the host. That is, the serial port +which connects to the target's (primary) serial port. On +Linux this could be <FILENAME>/dev/ttyS0</FILENAME>, +while the same port on Windows would be named COM1, or <FILENAME>/dev/ttya</FILENAME> on +Solaris. Substitute the proper serial port name in the below.</PARA> +<PARA>Connect to the target by issuing the following commands in +GDB console mode:</PARA> +<PROGRAMLISTING>(gdb) set remotebaud 38400 <!-- <conditionaltext> --> +(gdb) set mips saved-gpreg-size 32 (for VR4300) +(gdb) target remote /dev/ttyS0</PROGRAMLISTING> +<PARA>In Insight, connect by opening the <EMPHASIS>File->Target +Settings</EMPHASIS> window and enter:</PARA> +<PROGRAMLISTING>Target: Remote/Serial +Baud Rate: 38400 +Port: /dev/ttyS0</PROGRAMLISTING> +<PARA>Set other options according to preference, close the window +and select +<EMPHASIS>Run->Connect to target</EMPHASIS>.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="connecting-target-ethernet"> +<TITLE><!-- <index></index> -->Connecting To A Target Via Ethernet</TITLE> +<PARA>Some targets allow GDB to connect via Ethernet - if so, it +will be mentioned in the section describing the target. Substitute +the target's assigned IP address or hostname for <hostname> in +the following. The <port> is the TCP port which +the eCos GDB stub or CygWin is listening on. It is also listed in +the section describing the target.</PARA> +<PARA>Connect to the target by issuing the following command in +GDB console mode:</PARA> +<PROGRAMLISTING>(gdb) target remote <hostname>:<port></PROGRAMLISTING> +<PARA>In Insight, connect by opening the <EMPHASIS>File->Target +Settings</EMPHASIS> window and enter:</PARA> +<PROGRAMLISTING>Target: Remote/TCP +Hostname: <hostname> +Port: <port></PROGRAMLISTING> +<PARA>You will also need to open the GDB console window with <EMPHASIS>View->Console</EMPHASIS> and +enter “set mips saved-gpreg-size 32” at the prompt</PARA> +<PARA><!-- <conditionaltext> -->Set other options according to preference, +close the window and select +<EMPHASIS>Run->Connect to target</EMPHASIS>.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="connecting-target-sim"> +<TITLE><!-- <index></index> -->Connecting To A Simulator Target</TITLE> +<PARA>GDB connects to all simulator targets using the same basic +command, although each simulator may require additional options. +These are listed in the section describing the target, and should +be used when connecting.</PARA> +<PARA>Connect to the target by issuing the following command in +GDB console mode:</PARA> +<PROGRAMLISTING>(gdb) target sim [target specific options]</PROGRAMLISTING> +<PARA>In Insight, connect by opening the <EMPHASIS>File->Target +Settings</EMPHASIS> window and enter:</PARA> +<PROGRAMLISTING>Target: Simulator +Options: [target specific options]</PROGRAMLISTING> +<PARA>Set other options according to preference, close the window +and select +<EMPHASIS>Run->Connect to target</EMPHASIS>.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="connecting-target-synth"> +<TITLE>Connecting To A Synthetic Target</TITLE> +<PARA>Synthetic targets are special in that the built tests and +applications actually run as native applications on the host. This +means that there is no target to connect to. The test or application +can be run directly from the GDB console using:</PARA> +<PROGRAMLISTING>(gdb) run</PROGRAMLISTING> +<PARA>or from Insight by pressing the <EMPHASIS>Run</EMPHASIS> icon. +There is therefore no need to connect to the target or download +the application, so you should ignore GDB “target” and “load” commands +in any instructions found in other places in the documentation.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="setup-mn10300-stdeval1"> +<TITLE>MN10300 stdeval1 Hardware Setup</TITLE> +<PARA>The eCos Developer’s Kit package comes with a pair +of EPROMs which provide GDB support for the Matsushita MN10300 (AM31) +series evaluation board using CygMon, the Cygnus ROM monitor. Images +of these EPROMs are also provided at <filename>BASE_DIR/loaders/mn10300-stdeval1/cygmon.bin</filename>. +The LSB EPROM (LROM) is installed to socket IC8 on the board and +the MSB EPROM (UROM) is installed to socket IC9. Attention should +be paid to the correct orientation of these EPROMs during installation.</PARA> +<PARA>The CygMon stubs allows communication with GDB by way of the +serial port at connector CN2. The communication parameters are fixed +at 38400 baud, 8 data bits, no parity bit, and 1 stop bit (8-N-1). +No flow control is employed. Connection to the host computer should +be made using a standard RS232C serial cable (not a null modem cable). +A gender changer may also be required.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="setup-mn10300-sim"> +<TITLE>MN10300 Architectural Simulator Setup</TITLE> +<PARA>The MN10300 simulator is an architectural simulator for the +Matsushita MN10300 that implements all features of the microprocessor + necessary to run eCos. The current implementation provides accurate +simulation of the instruction set, interrupt controller, timers, +and serial I/O.</PARA> +<PARA>In this release, you can run the same eCos binaries in the +simulator that can run on target hardware, if built for ROM start-up, +with the exception of those that use the watchdog timer.</PARA> +<PARA>However, note that AM33 devices required to run eCos are not +simulated; therefore you cannot run eCos binaries built for the +AM33 under the simulator. For the AM33, the simulator is effectively +an instruction-set only simulator.</PARA> +<PARA>To simplify connection to the simulator, you are advised to +create a GDB macro by putting the following code in your personal +GDB start-up file (gdb.ini on Windows and .gdbinit on UNIX).</PARA> +<PROGRAMLISTING>define msim + target sim --board=stdeval1 --memory-region 0x34004000,0x8 + + rbreak cyg_test_exit + rbreak cyg_assert_fail +end</PROGRAMLISTING> +<PARA>You can then connect to the simulator by invoking the command <PROGRAMLISTING>msim</PROGRAMLISTING> on +the command line:</PARA> +<PROGRAMLISTING>(gdb) msim</PROGRAMLISTING> +<PARA>You can achieve the same effect by typing out the macro’s +content on the command line if necessary.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="setup-am33-stb"> +<TITLE>AM33 STB Hardware Setup</TITLE> +<PARA>The Matsushita AM33 STB System Reference Board may be used +in two modes: via a JTAG debugger, or by means of a GDB stub ROM.</PARA> +<SECT2> +<TITLE>Use with GDB Stub ROM</TITLE> +<PARA>The eCos Developer’s Kit package comes with a ROM +image which provides GDB support for +the Matsushita(R) AM33 STB System Reference Board. To install the +GDB stub ROM requires the use of the JTAG debugger and the Flash ROM +programming code available from Matsushita. An image of this ROM +is also provided at <filename>loaders/am33-stb/gdbload.bin</filename> under +the root of your eCos installation.</PARA> +<PARA>Ensure that there is a Flash ROM card in MAIN MEMORY SLOT <0>. +Follow the directions for programming a Flash ROM supplied with +the programming software.</PARA> +<PARA>The final programming of the ROM will need to be done with +a command similar to the following:</PARA> +<PROGRAMLISTING>fdown "gdbload.bin",0x80000000,16,1</PROGRAMLISTING> +<PARA>Once the ROM has been programmed, close down the JTAG debugger, +turn the STB off, and disconnect the JTAG cable. Ensure that the +hardware switches are in the following configuration:</PARA> +<PROGRAMLISTING>U U D D D U D D + +D = lower part of rocker switch pushed in +U = upper part of rocker switch pushed in</PROGRAMLISTING> +<PARA>This is also the configuration required by the Flash programming +code, so it should not be necessary to change these.</PARA> +<PARA>Restart the STB and the stub ROM will now be able to communicate +with GDB<PRODUCTNAME>. </PRODUCTNAME>eCos programs should be built +with RAM startup.</PARA> +<PARA>Programs can then be downloaded via a standard RS232 null +modem serial cable connected to the SERIAL1 connector on the STB +front panel (the AM33"s serial port 0). This line is programmed +to run at 38400 baud, 8 data bits, no parity and 1 stop bit (8-N-1) +with no flow control. A gender changer may also be required. Diagnostic +output will be output to GDB using the same connection.</PARA> +<PARA>This procedure also applies for programming ROM startup eCos +programs into ROM, given a binary format image of the program from<PROGRAMLISTING> mn10300-elf-objcopy.</PROGRAMLISTING></PARA> +</SECT2> +<SECT2> +<TITLE>Use with the JTAG debugger</TITLE> +<PARA>To use eCos from the JTAG debugger, executables must be built +with ROM startup and then downloaded via the JTAG debugger. For +this to work there must be an SDRAM memory card in SUB MEMORY SLOT <0> and +the hardware switches on the front panel set to the following: </PARA> +<PROGRAMLISTING>D U D D D U D D + +D = lower part of rocker switch pushed in +U = upper part of rocker switch pushed in</PROGRAMLISTING> +<PARA>Connect the JTAG unit and run the debugger as described in +the documentation that comes with it.</PARA> +<PARA>eCos executables should be renamed to have a “.out” extension +and may then be loaded using the debugger"s “l” or “lp” commands.</PARA> +<PARA>Diagnostic output generated by the program will be sent out +of the AM33"s serial port 0 which is connected to the SERIAL1 +connector on the STB front panel. This line is programmed to run +at 38400 baud, 8 data bits, no parity, and one stop bit (8-N-1) +with no flow control. Connection to the host computer should be +using a standard RS232 null modem serial cable. A gender changer +may also be required.</PARA> +</SECT2> +<SECT2> +<TITLE>Building the GDB stub ROM image</TITLE> +<PARA>eCos comes with a pre-built GDB stub ROM image for the AM33-STB +platform. This can be found at <filename>loaders/am33-stb/gdbload.bin</filename> relative +to the eCos installation directory.</PARA> +<PARA>If necessary, the ROM image can be re-built as follows:</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA> On Windows hosts, open a Bash session using +<EMPHASIS>Start->Programs->Red Hat eCos->eCos +Development Environment</EMPHASIS></PARA> +</LISTITEM> +<LISTITEM> +<PARA>Create a build directory and cd into it</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Run (all as one line): + +<PROGRAMLISTING>cygtclsh80 BASE_DIR/packages/pkgconf.tcl \ + --target=mn10300_am33 --platform stb --startup rom \ + --disable-kernel --disable-uitron --disable-libc --disable-libm \ + --disable-io --disable-io_serial --disable-wallclock +--disable-watchdog</PROGRAMLISTING> + </PARA> +<PARA>where BASE_DIR is the path to the eCos installation +directory.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Edit the configuration file +<filename>pkgconf/hal.h</filename> + in the build directory tree by ensuring the following configuration +options are set as follows: + +<PROGRAMLISTING>#define CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS +#define CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT +#undef CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT +#define CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT +#define CYG_HAL_ROM_MONITOR</PROGRAMLISTING> + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Run: make</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Run: make -C hal/common/current/current/src/stubrom</PARA> +</LISTITEM> +<LISTITEM> +<PARA>The file +<filename>hal/common/current/src/stubrom</filename> + will be an ELF format executable of the ROM image. Use mn10300-elf-objcopy to +convert this to the appropriate format for loading into the Matsushita +FLASH ROM programmer, mode “binary” in this case: + +<PROGRAMLISTING>$ mn10300-elf-objcopy -O binary hal/common/current/src/stubrom/ \ + stubrom stubrom.img</PROGRAMLISTING></PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="setup-tx39-jmr3904"> +<TITLE>TX39 Hardware Setup</TITLE> +<PARA>The eCos Developer’s Kit package comes with a pair +of ROMs that provide GDB support for +the Toshiba JMR-TX3904 RISC processor reference board by way of CygMon. </PARA> +<PARA>Images of these ROMs are also provided at <filename>BASE_DIR/loaders/tx39-jmr3904/cygmon50.bin</filename> and <filename>BASE_DIR/loaders/tx39-jmr3904/cygmon66.bin</filename> for +50 MHz and 66 MHz boards respectively. The ROMs are installed to +sockets IC6 and IC7 on the memory daughterboard according to their +labels. Attention should be paid to the correct orientation of these +ROMs during installation.</PARA> +<PARA>The GDB stub allows communication with GDB using the serial +port (channel C) at connector PJ1. The communication parameters +are fixed at 38400 baud, 8 data bits, no parity bit, and 1 stop +bit (8-N-1). No handshaking is employed. Connection to the host +computer should be made using an RS232C null modem cable.</PARA> +<PARA>CygMon and eCos currently provide support for a 16Mbyte 60ns +72pin DRAM SIMM fitted to the PJ21 connector. Different size DRAMs +may require changes in the value stored in the DCCR0 register. This +value may be found near line 211 in <filename>hal/mips/arch/&Version;/src/vectors.S</filename> +in eCos, and near line 99 in + <filename>libstub/mips/tx39jmr/tx39jmr-power.S</filename> in +Cygmon. eCos does not currently use the DRAM for any purpose itself, +so it is entirely available for application use.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="setup-tx39-sim"> +<TITLE>TX39 Architectural Simulator Setup</TITLE> +<PARA>The TX39 simulator is an architectural simulator which implements +all the features of the Toshiba TX39 needed to run eCos. The current +implementation provides accurate simulation of the instruction set, + interrupt controller, and timers, as well as having generic support +for diagnostic output, serial I/O, and exceptions.</PARA> +<PARA>In this release, you can run the same eCos binaries in the +simulator that can run on target hardware, if it is built for ROM +start-up.</PARA> +<PARA>To simplify connection to the simulator, you are advised to +create a GDB macro by putting the following code in your personal +GDB start-up file (gdb.ini on Windows and .gdbinit on UNIX).</PARA> +<PROGRAMLISTING>define tsim + target sim --board=jmr3904pal --memory-region 0xffff8000,0x900 \ + --memory-region 0xffffe000,0x4 \ + --memory-region 0xb2100000,0x4 + rbreak cyg_test_exit + rbreak cyg_assert_fail +end</PROGRAMLISTING> +<PARA>You can then connect to the simulator by invoking the command <command>tsim</command> on +the command line:</PARA> +<PROGRAMLISTING>(gdb) tsim</PROGRAMLISTING> +<PARA>You can achieve the same effect by typing out the macro’s +content on the command line if necessary.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="setup-tx49-ref4955"> +<TITLE>TX49 Hardware Setup</TITLE> +<PARA>The eCos installation CD contains a copy of the eCos GDB stubs +in SREC format which must be programmed into the board’s +FLASH memory.</PARA> +<SECT2> +<TITLE>Preparing the GDB stubs</TITLE> +<PARA>These stub preparation steps are not strictly necessary as +the eCos distribution ships with precompiled stubs in the directory <filename>loaders/tx49-ref4955</filename> relative +to the installation root.</PARA> +<SECT3> +<TITLE>Building the GDB stub image with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA> Start with a new document - selecting the +<EMPHASIS>File->New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build->Templates</EMPHASIS> + menu item, and then select the TX49 REF4955 hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build->Templates</EMPHASIS> + dialog box, select the stubs package template to build a GDB stub. +Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos stubs using +<EMPHASIS>Build->Library</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +images have the prefix gdb_module.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE> Building the GDB stub image with ecosconfig</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA> Make an empty directory to contain the build tree, + and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command:</PARA> +<PROGRAMLISTING>$ ecosconfig new ref4955 stubs </PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands:</PARA> +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +images have the prefix gdb_module.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +</SECT2> +<SECT2> +<TITLE> Installing GDB stubs into FLASH</TITLE> +<PARA>Boot into the board’s firmware in little-endian mode:</PARA> +<PARA>Set the switches like this: </PARA> +<PARA>SW1: 10000000 (first lever up, the rest down) +SW2: 10000010</PARA> +<PARA>Connect serial cable on the lower connector, configure terminal +emulator for 38400, 8-N-1.</PARA> +<PARA>When booting the board, you should get this prompt:</PARA> +<PROGRAMLISTING>HCP5 rev 0.9B . +HCP5?</PROGRAMLISTING> +<PARA>Select o (option), a (FLASH) and b (boot write). You should +see this:</PARA> +<PROGRAMLISTING>Boot ROM Write +ROM address-ffffffffbd000000, Boot Bus-[32bit] +ID2 0 4 ffffffffa002ad40 +zzz SS-40000 IV-1 CS-20000 CC-2 +Flash ROM-[28F640J5], [16bit chip] * 2 * 1 +Block size-00040000 count-64 +ROM adr ffffffffbd000000-ffffffffbe000000 mask-00fc0000 +Send Srecord file sa=00000000 size=ffffffffffffffff +ra=fffffffffe000000 + </PROGRAMLISTING> +<PARA>Now send the stub SREC data down to the board using the terminal + emulator’s ‘send ASCII’ (or similar) +functionality. </PARA> +<PARA>Red Hat has experienced some sensitivity to how fast the data +is written to the board. Under Windows you should configure Minicom +to use a line delay of 100 millisecs. Under Linux, use the slow_cat.tcl + script:</PARA> +<PROGRAMLISTING>% cd BASE_DIR/packages/hal/mips/ref4955/&Version;/misc +% slow_cat.tcl < [path]/gdb_module.srec > /dev/ttyS0</PROGRAMLISTING> +<PARA>Power off the board, and change it to boot the GDB stubs in +big-endian mode by setting the switches like this:</PARA> +<PARA>SW1: 00000000 (all levers down) +SW2: 10001010</PARA> +<PARA>The GDB stubs allow communication with GDB using the serial +port at connector PJ7A (lower connector). The communication parameters +are fixed at 38400 baud, 8 data bits, no parity bit and 1 stop +bit (8-N-1). No flow control is employed. Connection to the host +computer should be made using a straight through serial cable.</PARA> +</SECT2> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="setup-vr4300-vrc4373"> +<TITLE>VR4300 Hardware Setup</TITLE> +<PARA>The eCos Developer’s Kit package comes with an EPROM +which provides GDB support for the NEC +VRC4373 evaluation board. An image of this EPROM is also provided +at <filename>loaders/vr4300-vrc4373/gdbload.bin</filename> under +the root of your eCos installation.</PARA> +<PARA>The EPROM is installed to socket U12 on the board. Attention +should be paid to the correct orientation of the EPROM during installation. +Only replace the board"s existing ROM using a proper PLCC +extraction tool, as the socket would otherwise risk getting damaged. </PARA> +<PARA>The GDB stub in the EPROM allows communication with GDB using +the serial port at connector J1. The communication parameters are +fixed at 38400 baud, 8 data bits, no parity bit and 1 stop bit (8-N-1). +No flow control is employed. Connection to the host computer should +be made using a straight-through serial cable. </PARA> +</SECT1> +<SECT1 id="setup-vr4300-vrc4375"> +<TITLE>VRC4375 Hardware Setup</TITLE> +<PARA>For information about setting up the VRC4375 to run with RedBoot, +consult the RedBoot User"s Guide. If using serial debugging, +the serial line runs at 38400 baud 8-N-1 and should be connected +to the debug host using the cable supplied with the board.</PARA> +</SECT1> +<SECT1 id="setup-mips-atlasmalta"> +<TITLE>Atlas/Malta Hardware Setup</TITLE> +<PARA>For information about setting up the Atlas and Malta boards to +run with RedBoot, consult the RedBoot User"s Guide.</PARA> +</SECT1> +<SECT1 id="setup-ppc-cogent"> +<TITLE>PowerPC Cogent Hardware Setup</TITLE> +<PARA>The eCos Developer’s Kit package comes with an EPROM +which provides GDB support for the Cogent +evaluation board. An image of this EPROM is also provided at + <filename>loaders/powerpc-cogent/gdbload.bin</filename> under +the root of your eCos installation. The same EPROM and image can +be used on all three supported daughterboards: CMA287-23 (MPC823), +CMA287-50 (MPC850), and CMA286-60 (MPC860).</PARA> +<PARA>The EPROM is installed to socket U4 on the board. Attention +should be paid to the correct orientation of the EPROM during installation. </PARA> +<PARA>If you are going to burn a new EPROM using the binary image, +be careful to get the byte order correct. It needs to be big-endian. +If the EPROM burner software has a hex-editor, check that the first +few bytes of the image look like: </PARA> +<PROGRAMLISTING>00000000: 3c60 fff0 6063 2000 7c68 03a6 4e80 0020 <`..`c.|h..N.. </PROGRAMLISTING> +<PARA>If the byte order is wrong you will see 603c instead of 3c60 +etc. Use the EPROM burner software to make a byte-swap before you +burn to image to the EPROM. </PARA> +<PARA>If the GDB stub EPROM you burn does not work, try reversing +the byte-order, even if you think you have it the right way around. +At least one DOS-based EPROM burner program is known to have the +byte-order upside down.</PARA> +<PARA>The GDB stub in the EPROM allows communication with GDB using +the serial port at connector P12 (CMA101) or P3 (CMA102). The communication parameters +are fixed at 38400 baud, 8 data bits, no parity bit and 1 stop bit +(8-N-1). No flow control is employed. Connection to the host computer +should be made using a dedicated serial cable as specified in the +Cogent CMA manual.</PARA> +<SECT2> +<TITLE>Installing the Stubs into ROM</TITLE> +<SECT3> +<TITLE>Preparing the Binaries</TITLE> +<PARA>These two binary preparation steps are not strictly necessary +as the eCos distribution ships with precompiled binaries in the +directory <filename>loaders/powerpc-cogent</filename> relative to the installation +root.</PARA> +<SECT4> +<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File->New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build->Templates</EMPHASIS> + menu item, and then select the PowerPC CMA28x hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build->Templates</EMPHASIS> + dialog box, select the “stubs” package template +to build a GDB stub. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build->Library</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix “gdb_module”.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT4> +<SECT4> +<TITLE>Building the ROM images with ecosconfig</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command: + +<PROGRAMLISTING>$ ecosconfig new cma28x stubs </PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands: + +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING> + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix “gdb_module”.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT4> +</SECT3> +<SECT3> +<TITLE> Installing the Stubs into ROM or FLASH</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Program the binary image file gdb_module.bin +into ROM or FLASH referring to the instructions of your ROM programmer.</PARA> +</LISTITEM> +<LISTITEM> +<PARA> Plug the ROM/FLASH into socket U4 as described +at the beginning of this <EMPHASIS>Hardware Setup</EMPHASIS> section.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +</SECT2> +</SECT1> +<SECT1 id="setup-ppc-mbx860"> +<TITLE>PowerPC MBX860 Hardware Setup</TITLE> +<PARA>The eCos Developer’s Kit package comes with an EPROM +which provides GDB support for the Motorola +PowerPC MBX860 evaluation board. An image of this EPROM is also +provided at <filename>loaders/powerpc-mbx/gdbload.bin</filename> under +the root of your eCos installation.</PARA> +<PARA>The EPROM is installed to socket XU1 on the board. Attention +should be paid to the correct orientation of the EPROM during installation. +Only replace the board"s existing ROM using a proper PLCC +extraction tool, as the socket would otherwise risk getting damaged.</PARA> +<PARA>The GDB stub in the EPROM allows communication with GDB using +the serial port at connector SMC1/COM1. The communication +parameters are fixed at 38400 baud, 8 data bits, no parity bit and +1 stop bit (8-N-1). No flow control is employed. Connection to the +host computer should be made using a suitable serial cable.</PARA> +<PARA>In order to make the board execute the EPROM that you just +installed (rather than the on-board FLASH memory), it may be necessary +move some links on the board. Specifically, ensure that link J4 +is in position 1-2. If in doubt, refer to the MBX documentation +from Motorola, ensuring that Boot Port Size=8 Bits/ROM +for BOOT (CS#7), in their terminology.</PARA> +<SECT2> +<TITLE>Installing the Stubs into FLASH</TITLE> +<SECT3> +<TITLE>Preparing the Binaries</TITLE> +<PARA>These two binary preparation steps are not strictly necessary +as the eCos distribution ships with precompiled binaries in the +directory <filename>loaders/powerpc-mbx</filename> relative to the installation +root.</PARA> +<SECT4> +<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File->New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build->Templates</EMPHASIS> + menu item, and then select the PowerPC Motorola MBX860/821 +hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build->Templates</EMPHASIS> + dialog box, select the “stubs” package template +to build a GDB stub. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build->Library</EMPHASIS>. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix “gdb_module”.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT4> +<SECT4> +<TITLE>Building the ROM images with ecosconfig</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command: + +<PROGRAMLISTING>$ ecosconfig new mbx stubs </PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands: + +<PROGRAMLISTING>$ ecosconfig tree +$ make </PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix “gdb_module”.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT4> +</SECT3> +<SECT3> +<TITLE> Installing the Stubs into ROM</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA> Program the binary image file gdb_module.bin +into ROM or FLASH referring to the instructions of your ROM programmer.</PARA> +</LISTITEM> +<LISTITEM> +<PARA> Plug the ROM/FLASH into socket XU1 as described +near the beginning of this <EMPHASIS>Hardware Setup</EMPHASIS> section.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE>Installing the Stubs into FLASH</TITLE> +<PARA>This assumes you have EPPC-Bug in the on-board FLASH. This +can be determined by setting up the board according to the below +instructions and powering up the board. The EPPC-Bug prompt should +appear on the SMC1 connector at 9600 baud, 8N1.</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Set jumper 3 to 2-3 [allow XU2 FLASH to +be programmed]</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Set jumper 4 to 2-3 [boot EPPC-Bug]</PARA> +</LISTITEM> +</ORDEREDLIST> +<SECT4> +<TITLE> Program FLASH</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA> Prepare EPPC-Bug for download:</PARA> +<PROGRAMLISTING>EPPC-Bug>lo 0</PROGRAMLISTING> +<PARA>At this point the monitor is ready for input. It will not return +the prompt until the file has been downloaded.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Use the terminal emulator’s ASCII download feature +(or a simple clipboard copy/paste operation) to download +the gdb_module.srec data. + +Note that on Linux, Minicom’s ASCII download feature seems +to be broken. A workaround is to load the file into emacs (or another +editor) and copy the full contents to the clipboard. Then press +the mouse paste-button (usually the middle one) over the Minicom +window.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Program the FLASH with the downloaded data: + +<PROGRAMLISTING>EPPC-Bug>pflash 40000 60000 fc000000</PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>Switch off the power, and change jumper 4 to 1-2. Turn +on the power again. The board should now boot using the newly programmed +stubs.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT4> +</SECT3> +</SECT2> +</SECT1> +<SECT1 id="setup-ppc-sim"> +<TITLE>PowerPC Architectural Simulator Setup</TITLE> +<PARA>The PowerPC simulator is an architectural simulator which +implements all the features of the PowerPC needed to run eCos. The +current implementation provides accurate simulation of the instruction +set and timers, as well as having generic support for diagnostic +output and exceptions.</PARA> +<PARA>The simulator also allows devices to be simulated, but no +device simulation support has been defined for the serial device +drivers in this release.</PARA> +<PARA>To simplify connection to the simulator, you are advised to +create a GDB macro by putting the following code in your personal +GDB start-up file (gdb.ini on Windows and .gdbinit on UNIX).</PARA> +<PROGRAMLISTING>define psim + target sim -o ’/iobus/pal@0xf0001000/reg 0xf0001000 32’ + rbreak cyg_test_exit + rbreak cyg_assert_fail +end</PROGRAMLISTING> +<PARA>You can then connect to the simulator by invoking the command <command>psim</command> on +the command line:</PARA> +<PROGRAMLISTING>(gdb) psim</PROGRAMLISTING> +<PARA>You can achieve the same effect by typing out the macro’s +content on the command line if necessary.</PARA> +<NOTE> +<PARA>The PowerPC simulator cannot execute binaries built for any +of the supported hardware targets. You must generate a configuration +using the PowerPC simulator platform: +<PROGRAMLISTING>$ ecosconfig new psim</PROGRAMLISTING> + or some such.</PARA> +</NOTE> +</SECT1> +<SECT1 id="setup-sparclite-sleb"> +<TITLE>SPARClite Hardware Setup</TITLE> +<PARA>The eCos Developer’s Kit package comes with a ROM +which provides GDB support for the Fujitsu SPARClite Evaluation +Board by way of CygMon<PRODUCTNAME>. </PRODUCTNAME></PARA> +<PARA>An image of this ROM is also provided at + <filename>BASE_DIR/loaders/sparclite-sleb/cygmon.bin.</filename> The +ROM is installed in socket IC9 on the evaluation board. Attention +should be paid to the correct orientation of the ROM during installation.</PARA> +<PARA>The GDB stub allows communication with GDB using a TCP channel +via the ethernet port at connector J5.</PARA> +<SECT2> +<TITLE><!-- <index></index> --><!-- <xref> -->Ethernet Setup</TITLE> +<PARA>The ethernet setup is described in the board’s manual, +but here is a recapitulation.</PARA> +<PARA>Set the board’s ethernet address using SW1 on the +motherboard:</PARA> +<PROGRAMLISTING> SW1-4 SW1-3 SW1-2 SW1-1 Ethernet Address + ----- ----- ----- ----- ---------------- + OFF OFF OFF OFF No ethernet, use serial + OFF OFF OFF ON 00:00:0E:31:00:01 + OFF OFF ON OFF 00:00:0E:31:00:02 + OFF OFF ON ON 00:00:0E:31:00:03 + OFF ON OFF OFF 00:00:0E:31:00:04 + OFF ON OFF ON 00:00:0E:31:00:05 + OFF ON ON OFF 00:00:0E:31:00:06 + OFF ON ON ON 00:00:0E:31:00:07 + ON OFF OFF OFF 00:00:0E:31:00:08 + ON OFF OFF ON 00:00:0E:31:00:09 + ON OFF ON OFF 00:00:0E:31:00:0A + ON OFF ON ON 00:00:0E:31:00:0B + ON ON OFF OFF 00:00:0E:31:00:0C + ON ON OFF ON 00:00:0E:31:00:0D + ON ON ON OFF 00:00:0E:31:00:0E + ON ON ON ON 00:00:0E:31:00:0F</PROGRAMLISTING> +<SECT3><!-- <index></index> --> +<TITLE>BOOTP/DHCP service on Linux</TITLE> +<PARA>Configure the BOOTP or DHCP server on the network to recognize +the evaluation board’s ethernet address so it can assign +the board an IP address. Below is a sample DHCP server configuration +from a Linux system (<filename>/etc/dhcpd.conf</filename>). +It shows a setup for three evaluation boards.</PARA> +<PROGRAMLISTING># +# DHCP server configuration. +# +allow bootp; + +subnet 192.168.1.0 netmask 255.255.255.0 { + host mb831evb { + hardware ethernet 00:00:0e:31:00:01; + fixed-address mb831evb; + } + host mb832evb { + hardware ethernet 00:00:0e:31:00:02; + fixed-address mb832evb; + } + host mb833evb { + hardware ethernet 00:00:0e:31:00:03; + fixed-address mb833evb; + } +} </PROGRAMLISTING> +</SECT3> +<SECT3><!-- <index></index> --> +<TITLE>BOOTP/DHCP boot process</TITLE> +<PARA>Even when configured to use a TCP channel, CygMon will still +print a boot message to the serial channel. If the BOOTP process +was successful and an IP address was found, a message “BOOTP +found xxx.xxx.xxx.xxx” will be printed where xxx.xxx.xxx.xxx +is the IP address assigned by the BOOTP or DHCP server. If the BOOTP +process fails, a message indicating failure will be printed and +the serial port will be used as the debug channel.</PARA> +<PARA>Once the board finds an IP address it will respond to ICMP +echo request packets (ping). This gives a simple means to test the +health of the board.</PARA> +<PARA>As described in “Ethernet Setup” on page 72, +it should now be possible to connect to the SPARCLite board from +within GDB by using the command:</PARA> +<PROGRAMLISTING>(gdb) target remote <host>:1000</PROGRAMLISTING> +</SECT3> +</SECT2> +<SECT2> +<TITLE>Serial Setup</TITLE> +<PARA>The CygMon stubs also allow communication with GDB by way +of the serial port at connector CON1. The communication parameters +are fixed at 19200 baud, 8 data bits, no parity bit and 1 stop bit +(8-N-1). No flow control is employed. Connection to the host computer +should be made using a null modem cable. A gender changer may also +be required.</PARA> +</SECT2> +</SECT1> +<SECT1 id="setup-sparclite-sim"> +<TITLE>SPARClite Architectural Simulator Setup</TITLE> +<PARA>The ESA SPARClite simulator is an architectural simulator +which implements all the features of the SPARClite needed to run +eCos. The current implementation provides accurate simulation of +the instruction set, interrupt controller, and timers, as well as +having generic support for diagnostic output and exceptions.</PARA> +<PARA>Note that the ESA SPARClite simulator is unsupported, but +is included in the release as a convenience.</PARA> +<PARA>To simplify connection to the simulator, you are advised to +create a GDB macro by putting the following code in your personal +GDB start-up file (gdb.ini on Windows and .gdbinit on UNIX).</PARA> +<PROGRAMLISTING>define ssim + target sim -nfp -sparclite -dumbio + rbreak cyg_test_exit + rbreak cyg_assert_fail +end</PROGRAMLISTING> +<PARA>You can then connect to the simulator by invoking the command <command>ssim</command> on +the command line:</PARA> +<PROGRAMLISTING>(gdb) ssim</PROGRAMLISTING> +<PARA>You can achieve the same effect by typing out the macro’s +content on the command line if necessary.</PARA> +</SECT1> +<SECT1 ID="setup-arm-pid"> +<TITLE><!-- <index></index> --><!-- <xref> -->ARM PID Hardware Setup</TITLE> +<PARA>eCos comes with two ROM images that provide GDB support for +the ARM PID board. The first ROM image provides a port of the CygMon +ROM monitor, which includes a command-line interface and a GDB remote +stub. The second ROM image provides a remote GDB stub only, which +is a minimal environment for downloading and debugging eCos programs +solely using GDB.</PARA> +<PARA>eCos, CygMon and the GDB stubs all support the PID fitted +with both ARM7T and ARM9 daughterboards. CygMon and the stubs can +be programmed into either the programmable ROM (U12) or the FLASH +(U13). Prebuilt forms of both ROM images are provided in the directory +loaders/arm-pid under the root of your eCos installation, +along with a tool that will program the stubs into the FLASH memory on +the board. CygMon images are prefixed with the name 'cygmon' and +GDB stub ROM images are given the prefix 'gdb_module'. +Images may be provided in a number of formats including ELF (.img +extension), binary (.bin extension) and SREC (.srec extension). +Note that some unreliability has been experienced in downloading +files using Angel 1.00. Angel 1.02 appears to be more robust in +this application.</PARA> +<SECT2> +<TITLE>Installing the Stubs into FLASH</TITLE> +<SECT3> +<TITLE>Preparing the Binaries</TITLE> +<PARA>These two binary preparation steps are not strictly necessary +as the eCos distribution ships with precompiled binaries in the +directory loaders/arm-pid relative to the installation +root.</PARA> +</SECT3> +<SECT3> +<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File</EMPHASIS>-><EMPHASIS>New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Templates</EMPHASIS> + menu item, and then select the ARM PID hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Templates</EMPHASIS> + dialog box, select either the "stubs" package template to build +a GDB stub image, or the "cygmon" template to build the CygMon ROM +Monitor. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Library</EMPHASIS></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix "gdb_module". CygMon images +have the prefix "cygmon".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE>Building the ROM images with ecosconfig</TITLE> +<PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA> Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command:</PARA> +<PROGRAMLISTING>$ ecosconfig new pid stubs</PROGRAMLISTING> +<PARA>or to build a CygMon ROM monitor image, enter the command:</PARA> +<PROGRAMLISTING>$ ecosconfig new pid cygmon</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands:</PARA> +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix "gdb_module". CygMon images +have the prefix "cygmon".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE>Building the FLASH Tool with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File</EMPHASIS>-><EMPHASIS>New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build</EMPHASIS>-><EMPHASIS>Templates</EMPHASIS> + menu item, and then select the ARM PID hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enable the "Build flash programming tool" option in the +ARM PID HAL (CYGBLD_BUILD_FLASH_TOOL) +and resolve any resulting configuration conflicts.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Library</EMPHASIS></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the FLASH tool image file can +be found in the bin/ subdirectory of the install tree, +with the prefix "prog_flash"</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE>Building the FLASH Tool with ecosconfig</TITLE> +<PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA> Make an empty directory to contain the build tree, +and cd into it + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enter the command:</PARA> +<PROGRAMLISTING>$ ecosconfig new pid</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>Edit the file ecos.ecc and enable the option CYGBLD_BUILD_FLASH_TOOL +by uncommenting its user_value property and setting it +to 1.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands:</PARA> +<PROGRAMLISTING>$ ecosconfig resolve</PROGRAMLISTING> +<PARA>[there will be some output]</PARA> +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the FLASH tool image file can +be found in the bin/ subdirectory of the install tree, +with the prefix "prog_flash"</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE>Prepare the Board for FLASH Programming</TITLE> +<PARA>Each time a new image is to be programmed in the FLASH, the +jumpers on the board must be set to allow Angel to run:</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA> Set jumper 7-8 on LK6 [using the Angel code +in the 16 bit EPROM]</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Set jumper 5-6 on LK6 [select 8bit ROM mode]</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Set jumper LK18 [ROM remap - this is +also required for eCos]</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Set S1 to 0-0-1-1 [20MHz operation]</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Open jumper LK4 [enable little-endian operation] + +Attach a serial cable from Serial A on the PID board to connector +1 on the development system. This is the cable through which the +binaries will be downloaded. Attach a serial cable from Serial B +on the PID board to connector 2 on the development system (or any +system that will work as a terminal). Through this cable, the FLASH +tool will write its instructions (at 38400 baud).</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE>Program the FLASH</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Download the FLASH ROM image onto the PID board. For +example. for the GDB stubs image: + +<PROGRAMLISTING>bash$ arm-elf-gdb -nw gdb_module.img +GNU gdb 4.18-DEVTOOLSVERSION +Copyright 1998 Free Software Foundation, Inc. +GDB is free software, covered by the GNU General Public License, +and you are welcome to change it and/or distribute copies +of it under certain conditions. Type "show copying" to see the conditions. +There is absolutely no warranty for GDB. Type "show warranty" for details. +This GDB was configured as "--host=i586-pc-cygwin32 --target=arm-elf". +(no debugging symbols found)... +(gdb) target rdi s=com1 +Angel Debug Monitor for PID (Built with Serial(x1), Parallel, DCC) 1.00 +(Advanced RISC Machines SDT 2.10) +Angel Debug Monitor rebuilt on Jan 20 1997 at 02:33:43 +Connected to ARM RDI target. +(gdb) load +Loading section .rom_vectors, size 0x44 lma 0x60000 +Loading section .text, size 0x1f3c lma 0x60044 +Loading section .rodata, size 0x2c lma 0x61f80 +Loading section .data, size 0x124 lma 0x61fac +Start address 0x60044 , load size 8400 +Transfer rate: 5169 bits/sec. +(gdb) q +The program is running. Exit anyway? (y or n) y </PROGRAMLISTING> + +<NOTE> +<PARA> On a UNIX or Linux system, the serial port must be + /dev/ttyS0 instead of COM1. + You need to make sure that the /dev/ttyS0 files +have the right permissions: +<SCREEN>$ su + Password: + # chmod o+rw /dev/ttyS0* + # exit + </SCREEN> +If you are programming the GDB stub image, it will now be located +at 0x60000..0x64000. If you are programming the Cygmon ROM Monitor, +it will be located at 0x60000..0x80000.</PARA> +</NOTE></PARA> +</LISTITEM> +<LISTITEM> +<PARA>Now download the FLASH programmer tool</PARA> +<PROGRAMLISTING>bash$ arm-elf-gdb prog_flash.img +GNU gdb 4.18-DEVTOOLSVERSION +Copyright 1998 Free Software Foundation, Inc. +GDB is free software, covered by the GNU General Public License, +and you are welcome to change it and/or distribute +copies of it under certain conditions. Type "show copying" to see +the conditions. There is absolutely no warranty for GDB. Type "show +warranty" for details. +This GDB was configured as "--host=i586-pc-cygwin32 --target=arm-elf". +(gdb) target rdi s=com1 +Angel Debug Monitor for PID (Built with Serial(x1), Parallel, DCC) 1.00 +(Advanced RISC Machines SDT 2.10) +Angel Debug Monitor rebuilt on Jan 20 1997 at 02:33:43 +Connected to ARM RDI target. +(gdb) load +Loading section .rom_vectors, size 0x44 lma 0x40000 +Loading section .text, size 0x44a4 lma 0x40044 +Loading section .rodata, size 0x318 lma 0x444e8 +Loading section .data, size 0x1c8 lma 0x44800 +Start address 0x40044 , load size 18888 +Transfer rate: 5596 bits/sec. +(gdb) c</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>The FLASH tool will output some text on the board serial +port B at 38400 baud:</PARA> +<PROGRAMLISTING>ARM +eCos + +FLASH here! +manuf: 8, device: 40 +Error: Wrong Manufaturer: 08 +... Please change FLASH jumper</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>This text is repeated until you remove the jumper 7-8 +on LK6. Then the output will be:</PARA> +<PROGRAMLISTING>manuf: 1F, device: A4 +AT29C040A recognised +About to program FLASH using data at 60000..64000 +*** Press RESET now to abort!</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA> You have about 10 seconds to abort the operation by pressing +reset. After this timeout, the FLASH programming happens:</PARA> +<SCREEN>...Programming FLASH +All done!</SCREEN> +</LISTITEM> +<LISTITEM> +<PARA>Quit/kill the GDB process, which will hang.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Next time you reset the board, the stub will be in control, +communicating on Serial A at 38400 baud.</PARA> +</LISTITEM> +</ORDEREDLIST> +<NOTE> +<PARA>If you do not have two serial ports available on your host +computer, you may still verify the FLASH programming completed successfully +by quitting/killing the GDB process after running "c" in +step 2 above. Then switch the serial cable on the PID from Serial +A to Serial B and run a terminal emulator on the host computer. +In a few seconds you should see the the repeated text described +in step 2 above and you may continue the remaining steps as normal.</PARA> +</NOTE> +</SECT3> +<SECT3> +<TITLE>Programming the FLASH for big-endian mode</TITLE> +<PARA>The process is almost identical to the previous instructions +which apply to a PID board running in little-endian mode only.</PARA> +<PARA>The only adjustments to make are that if programming a <EMPHASIS>GDB</EMPHASIS> stub +ROM image (or CygMon ROM monitor image), you must enable the option "Use +Big-endian mode" in the <EMPHASIS>eCos Configuration Tool</EMPHASIS> (CYGHWR_HAL_ARM_BIGENDIAN +if using ecosconfig and editing ecos.ecc).</PARA> +<PARA>When programming the FLASH there are two options:</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Program FLASH using the little-endian FLASH tool. After +powering off, replace the ROM controller with the special big-endian +version which can be acquired from ARM. (This has not been tested +by Red Hat).</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Use a specied big-endian version of the FLASH tool which +byte-swaps all the words as they are written to the FLASH.</PARA> +</LISTITEM> +</ORDEREDLIST> +<PARA>Build this tool by enabling the "Build flash programming tool +for BE images on LE boards" option (CYGBLD_BUILD_FLASH_TOOL_BE), +resulting in a utility with the prefix "prog_flash_BE_image_LE_system" +which should be used instead of "prog_flash".</PARA> +<PARA>Note that there is a limitation to this method: no sub-word +data can be read from the ROM. To work around this, the .rodata +section is folded into the .data section and thus copied to RAM +before the system starts.</PARA> +<PARA>Given that Thumb instructions are 16 bit, it is not possible +to run ROM-startup Thumb binaries on the PID board using this method.</PARA> +<PARA>When the image has been programmed, power off the board, and +set jumper LK4 to enable big-endian operation.</PARA> +</SECT3> +</SECT2> +<SECT2> +<TITLE>Installing the Stubs into ROM</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Program the binary image file gdb_module.bin +into ROM referring to the instructions of your ROM programmer.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Plug the ROM into socket U12 and install jumper LK6 pins +7-8 to enable the ROM.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +</SECT1> +<SECT1 id="setup-arm-aeb1"> +<TITLE><!-- <index></index> -->ARM AEB-1 Hardware Setup</TITLE> +<SECT2> +<TITLE>Overview</TITLE> +<PARA>The ARM AEB-1 comes with tools in ROM. These include a simple +FLASH management tool and the Angel® monitor. eCos for +the ARM AEB-1 comes with GDB stubs suitable for programming into +the onboard FLASH. GDB is the preferred debug environment for GDB, +and while Angel provides a subset of the features in the eCos GDB +stub, Angel is unsupported.</PARA> +<PARA>Both eCos and the stubs support both Revision B and Revision +C of the AEB-1 board. Stub ROM images for both types of board can +be found in the loaders/arm-aeb directory under the root +of your eCos installation. You can select which board you are using +by selecting either the aeb or aebC platform by selecting the appropriate +platform HAL in the <EMPHASIS>eCos Configuration Tool</EMPHASIS>.</PARA> +<PARA>The GDB stub can be downloaded to the board for programming +in the FLASH using the board's on-board ROM monitor:</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>talk to the AEB-1 board with a terminal emulator (or +a real terminal!)</PARA> +</LISTITEM> +<LISTITEM> +<PARA>use the board's rom menu to download a UU-encoded +version of the GDB stubs which will act as a ROM monitor</PARA> +</LISTITEM> +<LISTITEM> +<PARA>tell the board to use this new monitor, and then hook +GDB up to it for real debugging</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +<SECT2> +<TITLE>Talking to the Board</TITLE> +<PARA>Connect a terminal or computer's serial port to the +ARM AEB-1. On a PC with a 9-pin serial port, you can use the cable +shipped by ARM with no modification. </PARA> +<PARA>Set the terminal or terminal emulator to 9600N1 (9600 baud, +no parity, 1 stop bit). </PARA> +<PARA>Reset the board by pressing the little reset button on the +top. You will see the following text: </PARA> +<PROGRAMLISTING> ARM Evaluation Board Boot Monitor 0.01 (19 APR 1998) + Press ENTER within 2 seconds to stop autoboot</PROGRAMLISTING> +<PARA>Press ENTER quickly, and you will get the boot prompt: </PARA> +<PROGRAMLISTING> Boot:</PROGRAMLISTING> +</SECT2> +<SECT2> +<TITLE>Downloading the Stubs via the Rom Menu</TITLE> +<PARA>Using the AEB-1 rom menu to download the GDB stubs from the +provided ".UU" file.</PARA> +<NOTE> +<PARA>This is an annotated 'terminal' session +with the AEB-1 monitor:</PARA> +</NOTE> +<PROGRAMLISTING>+Boot: help +Module is BootStrap 1.00 (14 Aug 1998)</PROGRAMLISTING> +<PROGRAMLISTING>Help is available on:</PROGRAMLISTING> +<PROGRAMLISTING>Help Modules ROMModules UnPlug PlugIn +Kill SetEnv UnSetEnv PrintEnv DownLoad +Go GoS Boot PC FlashWrite +FlashLoad FlashErase</PROGRAMLISTING> +<PROGRAMLISTING>Boot: download c000 +Ready to download. Use 'transmit' option on terminal +emulator to download file.</PROGRAMLISTING> +<PROGRAMLISTING>... at this point, download the ASCII file "loaders/arm-aeb/ + gdb_module.img.UU". The details of this operation differ + depending on which terminal emulator is used. It may be + necessary to enter "^D" (control+D) when the download completes + to get the monitor to return to command mode. </PROGRAMLISTING> +<PROGRAMLISTING>Loaded file gdb_module.img.bin at address +0000c000, size = 19392 </PROGRAMLISTING> +</SECT2> +<SECT2> +<TITLE>Activating the GDB Stubs</TITLE> +<PARA>Commit the GDB stubs module to FLASH: </PARA> +<PROGRAMLISTING> Boot: flashwrite 4018000 C000 8000 + </PROGRAMLISTING> +<PARA>Verify that the eCos/"GDB stubs" module is now added +in the list of modules in the board: </PARA> +<PROGRAMLISTING> Boot: rommodules + </PROGRAMLISTING> +<PARA>You should see output similar to the following: </PARA> +<PROGRAMLISTING> Header Base Limit + 04000004 04000000 040034a8 BootStrap 1.00 (14 Aug 1998) + 04003a74 04003800 04003bc0 Production Test 1.00 (13 Aug 1998) + 0400e4f4 04004000 0400e60f Angel 1.02 (12 MAY 1998) + 0401c810 04018000 0401cbc0 eCos 1.3 (27 Jan 2000) +GDB stubs + </PROGRAMLISTING> +<PARA>Now make the eCos/"GDB stubs" module be the default +monitor: </PARA> +<PROGRAMLISTING> Boot: plugin eCos + </PROGRAMLISTING> +<NOTE> +<PARA>Since the GDB stubs are always linked at the same address +(0x4018000), the operation of writing to the FLASH and selecting +the stubs as default monitor is an idempotent operation. You can +download a new set of stubs following the same procedure - you do +not have to unregister or delete anything.</PARA> +</NOTE> +</SECT2> +<SECT2> +<TITLE>Building the GDB Stub FLASH ROM Images</TITLE> +<PARA>Prebuilt GDB stubs images are provided in the directory loaders/arm-aeb +relative to the root of your eCos installation, but here are instructions +on how to rebuild them if you should ever need to.</PARA> +</SECT2> +<SECT2> +<TITLE>Building the GDB Stubs with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File</EMPHASIS> +-> +<EMPHASIS>New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Templates</EMPHASIS> + menu item, and then select the ARM AEB-1 hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build->Templates</EMPHASIS> + dialog box, select the "stubs" package template to build a GDB +stub image. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>If applicable, set the "AEB board revision" option to +"C" from "B" depending on the board revision being used.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Library.</EMPHASIS></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. The GDB stub +ROM images have the prefix "gdb_module".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +<SECT2> +<TITLE>Building the GDB Stub ROMs with ecosconfig</TITLE> +<PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command:</PARA> +<PROGRAMLISTING>$ ecosconfig new aeb stubs</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>If applicable, edit ecos.ecc and set the AEB board revision. (CYGHWR_HAL_ARM_AEB_REVISION) +from the default "B" to "C" by uncommenting the user_value +property and setting it to "C".</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands + +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. The GDB stub +ROM images have the prefix "gdb_module".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +</SECT1> +<SECT1 id="setup-arm-cma230"> +<TITLE><!-- <index></index> -->ARM Cogent CMA230 Hardware Setup</TITLE> +<PARA>The eCos Developer's Kit package comes with an EPROM +which provides GDB support for the Cogent evaluation board. An image +of this EPROM is also provided at loaders/arm-cma230/gdbload.bin +under the root of your eCos installation. </PARA> +<PARA>The EPROM is installed to socket U3 on the board. Attention +should be paid to the correct orientation of the EPROM during installation.</PARA> +<PARA>If you are going to burn a new EPROM using the binary image, +be careful to get the byte order correct. It needs to be little-endian, +which is usually the default in PC based programmer software.</PARA> +<PARA>If the GDB stub EPROM you burn does not work, try reversing +the byte-order, even if you think you have it the right way around. +At least one DOS-based EPROM burner program is known to have the +byte-order upside down.</PARA> +<PARA>The GDB stub in the EPROM allows communication with GDB using +the serial port at connector P12 (CMA101) or P3 (CMA102). The communication parameters +are fixed at 38400 baud, 8 data bits, no parity bit and 1 stop bit +(8-N-1). No flow control is employed. Connection to the host computer +should be made using a dedicated serial cable as specified in the +Cogent CMA manual.</PARA> +<SECT2> +<TITLE>Building the GDB Stub FLASH ROM images</TITLE> +<PARA>Prebuilt GDB stubs images are provided in the directory loaders/arm-cma230 relative +to the root of your eCos installation, but here are instructions +on how to rebuild them if you should ever need to.</PARA> +<PARA>CygMon images are prefixed with the name 'cygmon' and +GDB stub ROM images</PARA> +<PARA>are given the prefix 'gdb_module'. +Images may be provided in a number of formats including ELF (.img +extension), binary (.bin extension) and SREC (.srec extension). </PARA> +</SECT2> +<SECT2> +<TITLE>Building the GDB Stubs with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>1. Start with a new document - selecting the File->New +menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build</EMPHASIS>-><EMPHASIS>Templates</EMPHASIS> + menu item, and then select the ARM CMA230 hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Templates</EMPHASIS> + dialog box, select the "stubs" package template to build a GDB +stub image. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Library</EMPHASIS></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. The GDB stub +ROM images have the prefix "gdb_module".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +<SECT2> +<TITLE>Building the GDB Stub ROMs with ecosconfig</TITLE> +<PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>1. Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command:</PARA> +<PROGRAMLISTING>$ ecosconfig new cma230 stubs</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands: + +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. The GDB stub +ROM images have the prefix "gdb_module".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +</SECT1> +<SECT1 id="setup-arm-ep7211"> +<TITLE><!-- <index></index> --><!-- <xref> -->Cirrus Logic ARM EP7211 Development +Board Hardware Setup</TITLE> +<PARA>eCos comes with two Flash ROM images that provide GDB support +for the Cirrus Logic EP7211 Development Board (also known as the +EDB7211).. Note that on some board revisions, the board is silk-screened +as EDB7111-2. The first Flash ROM image provides a port of the CygMon +ROM monitor, which includes a command-line interface and a GDB remote +stub. The second Flash ROM image provides a remote GDB stub only.</PARA> +<PARA>Both ROM images are provided in the directory loaders/arm-edb7211 +under the root of your eCos installation. CygMon images are prefixed +with the name 'edb7211_cygmon' and are +provided in a number of formats including binary (.bin extension) +and SREC (.srec) extension. GDB stub ROM images are given the prefix 'edb7211_gdb_module'. </PARA> +<PARA>The ROM images provided for the EP7211 Development Board must +be programmed into the FLASH. Please refer to the section titled +"Loading the ROM image into On-Board flash" on how to program the +ROM onto the board.</PARA> +<PARA>Both Cygmon and GDB Stub ROMS allow communication with GDB +via the serial connector labelled 'UART 1'. The +communication parameters are fixed at 38400 baud, 8 data bits, no +parity bit and 1 stop bit (8-N-1). No flow control is employed. +Connection to the host computer should be made using a null modem cable. +A gender changer may also be required. Note that the GDB Configuration tool +uses the serial port identifiers 0 and 1 to identify the EB7211 +serial ports UART1 and UART2 respectively.</PARA> +<PARA>Both eCos and the ROM images assume the core clock is generated +with a 3.6864 MHz PLL input. The CPU will be configured to run at +73.728MHz.</PARA> +<PARA>Note: The EP7211 CPU needs a two step RESET process. After +pressing the `URESET' pushbutton, the `WAKEUP' pushbutton +must be pressed to complete the process.</PARA> +<NOTE> +<PARA>When an eCos program is run on an EDB7211 board fitted with +either CygMon or a GDB stub ROM, then the code in ROM loses control. +This means that if you require the ability to remotely stop execution +on the target, or want thread debugging capabilities, you must include +GDB stub support when configuring eCos.</PARA> +</NOTE> +<SECT2> +<TITLE>Building programs for programming into FLASH</TITLE> +<PARA>If your application is to be run directly from FLASH, you +must configure eCos appropriately for "ROM" startup. This can be +done in the <EMPHASIS>eCos Configuration Tool</EMPHASIS> by setting +the "Startup type" HAL option to "ROM". If using the ecosconfig utility, +set the user_value of the CYG_HAL_STARTUP +option in ecos.ecc to "ROM".</PARA> +<PARA>When you have linked your application with eCos, you will +then have an ELF executable. To convert this into a format appropriate +for the Cirrus Logic FLASH download utility, or the dl_7xxx +utility on linux, you can use the utility arm-elf-objcopy, as in +the following example:</PARA> +<PROGRAMLISTING>$ arm-elf-objcopy -O binary helloworld.exe helloworld.bin</PROGRAMLISTING> +<PARA>This will produce a binary format image helloworld.bin which +can be downloaded into FLASH.</PARA> +</SECT2> +<SECT2> +<TITLE>Building the GDB Stub FLASH ROM images</TITLE> +<PARA>Prebuilt GDB stubs images are provided in the directory loaders/arm-edb7211 relative +to the root of your eCos installation, but here are instructions +on how to rebuild them if you should ever need to.</PARA> +<PARA>CygMon images are prefixed with the name 'cygmon' and +GDB stub ROM images are given the prefix 'gdb_module'. +Images may be provided in a number of formats including ELF (.img +extension), binary (.bin extension) and SREC (.srec extension). </PARA> +</SECT2> +<SECT2> +<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File</EMPHASIS>-><EMPHASIS>New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build</EMPHASIS>-><EMPHASIS>Templates</EMPHASIS> + menu item, and then select the "Cirrus Logic development board" +hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Templates</EMPHASIS> + dialog box, select either the "stubs" package template to build +a GDB stub image, or the "cygmon" template to build the CygMon ROM +Monitor. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Library</EMPHASIS></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix "gdb_module". CygMon images +have the prefix "cygmon".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +<SECT2> +<TITLE>Building the ROM images with ecosconfig</TITLE> +<PARA>(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command:</PARA> +<PROGRAMLISTING>$ ecosconfig new edb7xxx stubs</PROGRAMLISTING> +<PARA>or to build a CygMon ROM monitor image, enter the command:</PARA> +<PROGRAMLISTING>$ ecosconfig new edb7xxx cygmon</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands:</PARA> +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix "gdb_module". CygMon images +have the prefix "cygmon".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +<SECT2> +<TITLE><!-- <xref> -->Loading the ROM Image into On-board Flash</TITLE> +<PARA>Program images can be written into Flash memory by means of +a bootstrap program which is built into the EDB7211. This program +communicates with a support program on your host to download and +program an image into the Flash memory.</PARA> +<PARA>Cirrus Logic provides such a program for use with Windows/DOS. + eCos comes with a similar program which will run under Linux. The +basic operation of both programs is the same.</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Connect a serial line to 'UART 1'.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Power off the EDB7211.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Install jumper 'PROGRAM ENABLE' which +enables this special mode for downloading Flash images. Note that +some board revisions have this jumper labelled “BOOT ENABLE”.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Power on the EDB7211.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Execute the Flash writing program on your host. On Linux, +this would be:</PARA> +<PROGRAMLISTING> # dl_edb7xxx <PATH>/gdb_module.bin</PROGRAMLISTING> +<PARA>where '<PATH>' is the path to +the binary format version of the ROM image you wish to load, either +as built in the previous section or the "loaders/arm-edb7211/" subdirectory +of your eCos installation. The download tool defaults to 38400 baud and +device /dev/ttyS1 for communication. To change +these, specify them as parameters, e.g. + </PARA> +<PROGRAMLISTING># dl_edb7xxx <PATH>/gdb_module.bin 9600 /dev/ttyS0</PROGRAMLISTING> +</LISTITEM> +<LISTITEM> +<PARA>The download program will indicate that it is waiting +for the board to come alive. At this point, press 'RESET' and +then 'WAKEUP' switches in order. There should be +some indication of progress, first of the code being downloaded, +then of the programming process.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Upon completion of the programming, power off the EDB7211.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Remove the 'PROGRAM ENABLE/BOOT ENABLE' jumper.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Power on the EDB7211, press 'RESET' and 'WAKEUP'. + The new ROM image should now be running on the board.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>The GDB debugger will now be able to communicate with +the board to download and debug RAM based programs. + +This procedure also applies for loading ROM-startup eCos programs +into the on-board FLASH memory, given a binary format image of the +program from arm-elf-objcopy. Loading a ROM-startup eCos program +into Flash will overwrite the GDB Stub ROM/CygMon in Flash, +so you would have to reload the GDB Stub ROM/CygMon to +return to normal RAM-startup program development.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +<SECT2> +<TITLE>Building the Flash Downloader on Linux</TITLE> +<PARA>eCos provides a Flash download program suitable for use with +the EP7211 Development Board which will run on Linux. Follow these +steps to build this program. Note: at the time of the writing of +these instructions, the download program is built directly within +the eCos source repository since it is +not configuration specific.</PARA> +<PROGRAMLISTING> # cd <eCos install dir>/packages/hal/arm/edb7xxx/&Version;/support</PROGRAMLISTING> +<PROGRAMLISTING> # make</PROGRAMLISTING> +<PARA>(where '# ' is your shell prompt)</PARA> +<PARA>Note: this program was adapted from the Cirrus Logic original +DOS program and still contains some vestiges of that environment.</PARA> +</SECT2> +<SECT2> +<TITLE>Developing eCos Programs with the ARM Multi-ICE</TITLE> +<PARA>The EP7211 Development Board supports use of the ARM + Multi-processor EmbeddedICE(tm), also known as the + Multi-ICE. Full instructions on how to install and use the + Multi-ICE in conjunction with GDB are provided in the + <EMPHASIS>"GNUPro Toolkit Reference for eCos + ARM/Thumb"</EMPHASIS> manual. However, the following + platform-specific details should be noted.</PARA> +<PARA>You will need an ARM Multi-ICE Server configuration + file for the EP7211 Development Board. Here is a suggested + configuration file to use:</PARA> +<PROGRAMLISTING>======== File "720T.cfg" ======== +;Total IR length = 4 +[TITLE] +Multi-ICE configuration for EP7211 + +[TAP 0] +ARM720T + +[TAPINFO] +YES + +[Timing] +Low=0 +High=0 +Adaptive=OFF +==================================</PROGRAMLISTING> +<PARA>You must ensure that the board has the appropriate soldered +connections. For the EP7211 this involves connecting TEST0 and TEST1 +of the EP7211 to ground. To do this you must solder a wire from +ground at JP33 to TP8 and TP9.</PARA> +<PARA>With respect to using multiple devices simultaneously, note +that the EP7211 is not ID sensitive.</PARA> +<PARA>If you wish to view diagnostic output from your program that +was downloaded via the Multi-ICE, you will note that by default +the output on the serial line (as viewed by a terminal such as Hyperterm +in Windows, or cu in Unix) is in the form of GDB packets.</PARA> +<PARA>To get legible output, the solution is to set the "GDB Serial +port" to a different device from the "Diagnostic serial port", and +you should use the Diagnostic serial port to view the diagnostic +output.</PARA> +<PARA>Warning: The multi-ice-gdb-server will fail on startup if +the board has not been both reset and awakened before running the +server. </PARA> +<PARA>To resolve this, it is necessary to free up the connection +from within the ARM Multi-ICE server itself. However when this happens, +the next time you use GDB to load the program into the board, you +will see lots of "Readback did not match original data" messages +in the output of the multi-ice-gdb-server program. This indicates +your program did not load correctly, and you should restart the +multi-ice-gdb-server program, taking care to reset the board correctly +before reconnecting. </PARA> +<PARA>As a reminder, you must specify --config-dialog to the + multi-ice-gdb-server program to connect to the board + correctly. If you do not, the multi-ice-gdb-server program + will not be able to connect.</PARA> +</SECT2> +</SECT1> + +<SECT1 ID="setup-arm-ep7212"> +<TITLE><!-- <conditionaltext> -->Cirrus Logic ARM EP7212 Development Board +Hardware Setup</TITLE> +<PARA>The Cirrus Logic EP7212 Development Board is almost identical +to the EP7211 Development Board from a hardware setup viewpoint, +and is based on the same port of eCos. Therefore the earlier documentation +for the EP7211 Development Board can be considered equivalent, but +with the following changes:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>The first serial port is silk screened as "UART 1" on +the EP7211 Development Board, but is silk screened as "Serial Port +0" on the EP7212 Development Board. Similarly "UART 2" is silk screened +as "Serial Port 1" on the EP7212 Development Board.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>JP2 (used to control reprogramming of the FLASH) is not +silkscreened with "Boot Enable".</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To setup the EP7212 Development Board for use with the +ARM Multi-ICE JTAG debugging interface unit, it is necessary to +connect TEST0 and TEST1 of the EP7212 to ground. On the Development +Board, this is accomplished by placing shorting blocks on JP47 and +JP48. When the shorting blocks are fitted, the board can only be +operated through the Multi-ICE - debugging over a serial line is +not possible.</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <conditionaltext> -->Prebuilt GDB stubs are + provided in the directory + <FILENAME>loaders/arm-edb7212</FILENAME> relative to the + root of your eCos installation</PARA> +</LISTITEM> +<LISTITEM> +<PARA>When rebuilding the GDB stub ROM image, change the "Cirrus +Logic processor variant" option (CYGHWR_HAL_ARM_EDB7XXX_VARIANT) +from the EP7211 to the EP7212. This can be selected in the +<EMPHASIS>eCos Configuration Tool</EMPHASIS> +, or if using ecosconfig, can be set by uncommenting the user_value +property of this option in ecos.ecc and setting it to "EP7212".</PARA> +</LISTITEM> +</ITEMIZEDLIST> +</SECT1> +<SECT1 ID="setup-arm-ep7312"> +<TITLE><!-- <conditionaltext> -->Cirrus Logic ARM EP7312 Development Board +Hardware Setup</TITLE> +<PARA>The Cirrus Logic EP7312 Development Board is similar +to the EP7212 Development Board from a hardware setup viewpoint, +and is based on the same port of eCos.</PARA> +<PARA>When rebuilding the RedBoot ROM image or an eCos application, +change the "Cirrus Logic processor variant" option +(CYGHWR_HAL_ARM_EDB7XXX_VARIANT) +from the EP7211 to the EP7312. This can be selected in the +<EMPHASIS>eCos Configuration Tool</EMPHASIS> +, or if using ecosconfig, can be set by uncommenting the user_value +property of this option in ecos.ecc and setting it to "EP7312". +</PARA> +<PARA> +See the RedBoot documentation for building and installing RedBoot for this +target. Only RedBoot is supported as a boot image; ROMRAM startup is +recommended. +</PARA> +<SECT2 ID="ep7312-90MHz-operation"> +<TITLE>90MHz Operation</TITLE> +<PARA> +The EP7xxx targets offer a choice of clock speeds, from 18MHz to a maximum, +normally, of 72MHz. These are described as kHz values 18432 36864 49152 +and 73728 within the configuration tool. If you have a release which +supports it, you will also see 90317 as an available option here, for 90MHz +operation. +</PARA> +<PARA> +This option only applies to certain EP7312 hardware, not all EP7312 boards +support it. Do not select 90MHz when building RedBoot or your eCos +application unless you are absolutely sure that your board supports it. +</PARA> +<PARA> +If you do have a 90MHz board and wish to execute at 90MHz, it is in fact +not necessary to build RedBoot specially, if you build your eCos +application configured for 90MHz. RedBoot will run at 72MHz and your +application will run at 90Mhz. If you do install a 90MHz RedBoot, then you +must build eCos for 90Mhz or timing and baud rates on serial I/O will be +wrong. +</PARA> +<PARA> +In other words, code (either eCos app or RedBoot) built for 90MHz will +“change up a gear” when it starts up; but code built for 72MHz, +because it needs to run correctly on boards without the +“gearbox” does not change back down, so if you mix the two, +unexpected timing can result. To run a non-eCos application without any +hardware initialization code at 90MHz, you must install a specially-built +RedBoot. +</PARA> +</SECT2> +</SECT1> +<SECT1 id="setup-arm-ep7209"> +<TITLE>Cirrus Logic ARM EP7209 Development Board Hardware Setup</TITLE> +<PARA>Note: At time of writing, no EP7209 Development Board is available, +and consequently eCos has not been verified for use with the EP7209 +Development Board.</PARA> +<PARA>The Cirrus Logic EP7209 Development Board is almost identical +to the EP7212 Board in all respects, except that it is not fitted +with DRAM, nor has it a DRAM controller.</PARA> +<PARA>The only valid configuration for the EDB7209 is ROM based. +The STUBS and RAM startup modes are not available as no DRAM is +fitted.</PARA> +</SECT1> +<SECT1 id="setup-arm-clps7111"> +<TITLE><!-- <index></index> -->Cirrus Logic ARM CL-PS7111 Evaluation Board Hardware Setup</TITLE> +<PARA>The implementation of the port of eCos to the Cirrus Logic +ARM CL-PS7111 Evaluation Board (also known as EB7111) is based on +the EP7211 Development Board port.</PARA> +<PARA>For that reason, the setup required is identical to the EP7211 +Development Board as described above, with the following exceptions:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>The Cygmon ROM monitor is not supported</PARA> +</LISTITEM> +<LISTITEM> +<PARA>The ARM Multi-ICE is not supported</PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <conditionaltext> -->Prebuilt GDB stubs are provided in the +directory loaders/arm-eb7111 relative to the root of your +eCos installation</PARA> +</LISTITEM> +<LISTITEM> +<PARA>If rebuilding the GDB stub ROM image, change the "Cirrus +Logic processor variant" option (CYGHWR_HAL_ARM_EDB7XXX_VARIANT) +from the EP7211 to the CL_PS7111. This can be selected +in the +<EMPHASIS>eCos Configuration Tool</EMPHASIS> +, or if using ecosconfig, can be set by uncommenting the user_value +property of this option in ecos.ecc and setting it to "CL_PS7111"</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>All remote serial communication is done with the serial I/O +connector</PARA> +<PROGRAMLISTING>/misc +% slow_cat.tcl < [path]/gdb_module.srec > /dev/ttyS0</PROGRAMLISTING> +<PARA>Power off the board, and change it to boot the GDB stubs in +big-endian mode by setting the switches like this:</PARA> +<PARA>SW1: 00000000 (all levers down) +SW2: 10001010</PARA> +<PARA>The GDB stubs allow communication with GDB using the serial +port at connector PJ7A (lower connector). The communication parameters +are fixed at 38400 baud, 8 data bits, no parity bit and 1 stop +bit (8-N-1). No flow control is employed. Connection to the host +computer should be made using a straight through serial cable.</PARA> +<PARA><!-- <conditionaltext> --> <!-- NOTE: could not find it -->(See <XREF LINKEND="USING-ECOSCONFIG-ON-UNIX">)</PARA> +</SECT1> +<SECT1 id="setup-arm-ebsa285"> +<TITLE>StrongARM EBSA-285 Hardware Setup</TITLE> +<PARA>The eCos Developer’s Kit package comes with a ROM +image which provides GDB support for +the Intel® StrongARM® Evaluation Board EBSA-285. + Both eCos and the Stub ROM image assume the clocks are: 3.6864 +MHz PLL input for generating the core clock, and 50MHz osc input +for external clocks. An image of this ROM is also provided at <filename>loaders/arm-ebsa285/gdbload.bin</filename> under +the root of your eCos installation.</PARA> +<PARA>The ROM monitor image (an eCos GDB +stub) provided for the EBSA-285 board must be programmed into the +flash, replacing the Angel monitor on the board. Please refer to +the section titled "Loading the ROM Image into On-Board flash" on how +to program the ROM onto the board.</PARA> +<PARA>The Stub ROM allows communication with GDB via the serial +connector on the bulkhead mounting bracket COM0. The communication +parameters are fixed at 38400 baud, 8 data bits, no parity bit and +1 stop bit (8-N-1). No flow control is employed.</PARA> +<SECT2> +<TITLE>Building the GDB Stub FLASH ROM images</TITLE> +<PARA>Prebuilt GDB stubs images are provided in the directory loaders/arm-ebsa285 relative +to the root of your eCos installation, but here are instructions +on how to rebuild them if you should ever need to.</PARA> +</SECT2> +<SECT2> +<TITLE>Building the GDB Stubs with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File</EMPHASIS> +-> +<EMPHASIS>New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Templates</EMPHASIS> + menu item, and then select the StrongARM EBSA285 hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Templates</EMPHASIS> + dialog box, select the "stubs" package template to build a GDB +stub image. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build</EMPHASIS> +-> +<EMPHASIS>Library</EMPHASIS></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. The GDB stub +ROM images have the prefix "gdb_module".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +<SECT2> +<TITLE>Building the GDB Stub ROMs with ecosconfig</TITLE> +<PARA>(See “Using ecosconfig on UNIX” on page 72)</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command: + +<PROGRAMLISTING>$ ecosconfig new ebsa285 stubs</PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands: + +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. The GDB stub +ROM images have the prefix "gdb_module".</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT2> +<SECT2> +<TITLE>Loading the ROM Image into On-board Flash</TITLE> +<PARA>There are several ways to install the eCos gdb stub ROM image +in the EBSA board’s flash memory. Once installed, the gdb +stub ROM provides standard eCos download and debug via the EBSA +board"s serial port. The options available include the +Linux based EBSA flash upgrade utility provided by Red Hat, direct writing +of the flash via MultiICE (JTAG) hardware debugger, and other flash management +utilities from Intel (these only support DOS, and proprietary ARM tools +and image formats). Only the Red Hat flash upgrade tool is supported +and tested in this release.</PARA> +<PARA>The flash upgrade tool requires the EBSA board to be configured +as a PCI slave (rather than a master, its normal operating mode) +and plugged into a Linux host computer"s PCI bus.</PARA> +<PARA>Configuring the board for flash loading: Follow the instructions +in the EBSA-285 Reference Manual, pages A-2 and A-3 to configure +the board as an add-in card, and enable flash blank programming. + Briefly: assuming the board was in the default setting to execute +as a bus master ("Host Bridge") make jumper 9 (J9), move jumper +10 (J10) to external reset (PCI_RST), and move jumper 15 +(J15) link 4-6-5 to connect 5-6 instead of 4-6.</PARA> +<PARA>Configuring the board for execution of eCos programs: Follow +the instructions in the EBSA-285 Reference Manual, pages A-2 and +A-3 to configure the board as a "Host Bridge" with "Central Function". + Briefly: unset J9, move J10 to on-board reset (BRD_RST), +and set J15 to make 4-6 instead of 5-6 (see page A-8 also). Plug +the card into its own PCI bus, not the Linux PC used for the flash-programming +process.</PARA> +<PARA>Building the Linux software: the Linux software sources are +in directory</PARA> +<PROGRAMLISTING> <BASEDIR>/packages/hal/arm/ebsa285/v1_3/support/linux/safl_util</PROGRAMLISTING> +<PARA>in the eCos source repository. There are two parts to the +system: a loadable kernel module and the flash utility. The loadable +kernel module is safl.o and the utility is sa_flash. To +build:</PARA> +<PARA> cd to this directory, or a copy of it.</PARA> +<PARA> make</PARA> +<PARA>This builds safl.o and sa_flash. The kernel module +must be installed, and a device file created for it. Both of these +operations require root permissions. Create the device file by: </PARA> +<PROGRAMLISTING> % mknod /dev/safl c 10 178</PROGRAMLISTING> +<PARA>Programming the flash: switch off the EBSA-285, and remove +the EBSA-285 board from its PCI bus. Take appropriate anti-static +precautions. Configure it for flash loading as above, halt your +Linux system and turn it off. Install the EBSA-285 board in the +PCI bus of the Linux system and boot it up. (Single user is good enough, +assuming your image and safl_util build dir are on a local +disc partition.) Change directory to the safl_util directory, +then, to load the kernel module and flash an image onto the eval +board (as root): </PARA> +<PROGRAMLISTING> % insmod safl.o + % sa_flash <image_file></PROGRAMLISTING> +<PARA>Halt and turn off the Linux machine and remove the EBSA-285 +card. Take appropriate anti-static precautions. Configure it for +execution of eCos programs as above, and plug it into its own PCI +bus. Restart the Linux machine however you wish.</PARA> +<PARA>This information is replicated in the README file within the +safl_util directory and its parents, and in the EBSA-285 +Reference Manual from Intel, appendix A "Configuration Guide". +If in doubt, please refer to those documents also.</PARA> +<PARA>This procedure also applies for loading ROM-startup eCos programs +into the on-board flash memory, given a binary format image of the +program from arm-elf-objcopy. Loading a ROM-startup eCos program +into flash will overwrite the StubROM in flash, so you would have +to reload the StubROM to return to normal RAM-startup program development.</PARA> +</SECT2> +<SECT2> +<TITLE>Running your eCos Program Using GDB and the StubROM</TITLE> +<NOTE> +<PARA>You must first load the StubROM image into the flash memory +on the EBSA-285 board before doing this. See “Loading +the ROM Image into On-board Flash”, page 93 for details.</PARA> +</NOTE> +<PARA>Connect to the StubROM in the board and run your eCos program <PROGRAM> as</PARA> +<PARA>follows:</PARA> +<PROGRAMLISTING> $ arm-elf-gdb -nw <PROGRAM> + (gdb) set remotebaud 38400 + (gdb) target remote <DEVICE></PROGRAMLISTING> +<PARA>Where <DEVICE> is /dev/ttyS0 +or COM1: or similar, depending on your environment and how you connected +your serial line to the host computer. Expect some output here, +for example:</PARA> +<PROGRAMLISTING> Remote debugging using /dev/ttyS0 + 0x410026a4 in ?? ()</PROGRAMLISTING> +<PARA>then, to load the program</PARA> +<PROGRAMLISTING> (gdb) load + </PROGRAMLISTING> +<PARA>which will report locations and sizes of sections as they +load, then begin execution using</PARA> +<PROGRAMLISTING> (gdb) continue</PROGRAMLISTING> +<PARA>If you have no eCos program yet, but you want to connect to +the board just to verify serial communications, tell gdb "set endian +little" before anything else, so that it understands the board (GDB +normally infers this from information within the eCos program).</PARA> +<NOTE> +<PARA>When an eCos program is run on the EBSA-285 board, the GDB +stub in ROM loses control. This means that if you require the ability +to stop execution on the target remotely, or want thread debugging +capabilities, you must include GDB stub support when configuring +<PRODUCTNAME>eCos</PRODUCTNAME>.</PARA> +</NOTE> +</SECT2> +</SECT1> +<SECT1 id="setup-arm-ipaq"> +<TITLE><!-- <conditionaltext> --> <!-- NOTE: could not find it --><!-- <index></index> -->Compaq iPAQ PocketPC Hardware Setup</TITLE> +<PARA>For setting up the iPAQ to run with RedBoot, see the the <EMPHASIS>RedBoot +User's Guide</EMPHASIS>. Connections may be made using +the Compact Flash Ethernet interface. A serial cable may be connected +directly, or via the cradle. Serial communication uses the parameters +38400,8,N,1. The LCD/Touchscreen may also be used as an +interface to RedBoot and eCos applications.</PARA> +</SECT1> +<SECT1 id="setup-sh-edk7708"> +<TITLE>SH3/EDK7708 Hardware Setup</TITLE> +<PARA>The eCos Developer’s Kit package comes with a ROM +which provides GDB support for the Hitachi EDK7708 board (a big-endian +and a little-endian version). Images of these ROMs are also provided +at <filename>loaders/sh-edk7708/gdbload.bin</filename> and + <filename>loaders/sh-edk7708le/gdbload.bin</filename> under +the root of your eCos installation.</PARA> +<PARA>The ROM is installed to socket U6 on the board. When using +the big-endian ROM, jumper 9 must be set to 2-3. When using the +little-endian ROM, jumper 9 must be set to 1-2. Attention should +be paid to the correct orientation of the ROM during installation. +Only replace the board"s existing ROM using a proper PLCC extraction +tool, as the socket would otherwise risk being damaged. </PARA> +<PARA>If you are going to program a new ROM or FLASH using the binary +image, you may have to experiment to get the right byte-order in +the device. Depending on the programming software you use, it might +be necessary to enable byte-swapping. If the GDB stub ROM/FLASH +you program does not work, try reversing the byte-order.</PARA> +<PARA>The GDB stub in the EPROM allows communication with GDB using +the serial port at connector J1. The communication parameters are +fixed at 38400 baud, 8 data bits, no parity bit and 1 stop bit (8-N-1). +No flow control is employed. Connection to the host computer should +be made using the dedicated serial cable included in the EDK package. </PARA> +<SECT2> +<TITLE>Installing the Stubs into FLASH</TITLE> +<SECT3> +<TITLE>Preparing the Binaries</TITLE> +<PARA>These two binary preparation steps are not strictly necessary +as the eCos distribution ships with precompiled binaries in the +directory loaders/sh-edk7708 and loaders/sh-edk7708le +relative to the installation root.</PARA> +<SECT4> +<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File->New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build->Templates</EMPHASIS> + menu item, and then select the SH EDK7708 hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build->Templates</EMPHASIS> + dialog box, select the “stubs” package template +to build a GDB stub. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>If building a little-endian image, disable the “Use +big-endian mode” option in the SH EDK7708 HAL (CYGHWR_HAL_SH_BIGENDIAN).</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build->Library</EMPHASIS>. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix “gdb_module”.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT4> +<SECT4> +<TITLE>Building the ROM images with ecosconfig</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command: + +<PROGRAMLISTING>$ ecosconfig new edk7708 stubs</PROGRAMLISTING> + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>If building a little-endian image, uncomment the user +value in ecos.ecc for CYGHWR_HAL_SH_BIGENDIAN +and change it to 0. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands: + +<PROGRAMLISTING>$ ecosconfig tree +$ make </PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix “gdb_module”.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT4> +</SECT3> +<SECT3> +<TITLE> Installing the Stubs into ROM or FLASH</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Program the binary image file gdb_module.bin +into ROM or FLASH referring to the instructions of your ROM programmer.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Plug the ROM/FLASH into socket U6. If the image +is little-endian set jumper 9 to 1-2. If the image is big-endian +set jumper 9 to 2-3.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +</SECT2> +</SECT1> +<SECT1 id="setup-sh-cq7708"> +<TITLE>SH3/CQ7708 Hardware Setup</TITLE> +<SECT2> +<TITLE>Preparing the board</TITLE> +<PARA>Make sure the DIP switches on the board are set as follows: + </PARA> +<PROGRAMLISTING>SW1-1 ON +SW1-2 OFF +SW1-3 ON +SW1-4 OFF</PROGRAMLISTING> +<PROGRAMLISTING>SW2-1 ON +SW2-2 ON +SW2-3 OFF +SW2-4 OFF</PROGRAMLISTING> +<PARA>If you are using a straight through serial cable which has +flow control lines, you will also need to cut JP12 (5-6) as the +flow control lines can cause NMIs.</PARA> +</SECT2> +<SECT2> +<TITLE>eCos GDB Stubs</TITLE> +<PARA>The eCos installation CD contains a copy of the eCos GDB stubs +in binary format which must be programmed into an EPROM or FLASH +and installed on the board.</PARA> +<SECT3> +<TITLE> Preparing the GDB stubs</TITLE> +<PARA>These stub preparation steps are not strictly necessary as +the eCos distribution ships with precompiled stubs in the directory +loaders/sh3-cq7708 relative to the installation root.</PARA> +</SECT3> +<SECT3> +<TITLE>Building the GDB stub image with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File->New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build->Templates</EMPHASIS> + menu item, and then select the SH3 cq7708 hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build->Templates</EMPHASIS> + dialog box, select the stubs package template to build a GDB stub. +Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA> Build eCos stubs using +<EMPHASIS>Build->Library</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA> When the build completes, the image files can be found +in the +<FILENAME>bin/</FILENAME> + subdirectory of the install tree. GDB stub images have the prefix +<FILENAME>gdb_module</FILENAME>.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE> Building the GDB stub image with ecosconfig</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA> To build a GDB stub ROM image, enter the command: + +<PROGRAMLISTING>$ ecosconfig new cq7708 stubs </PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA> Enter the commands: + +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the +<FILENAME>bin/</FILENAME> + subdirectory of the install tree. GDB stub images have the prefix +<FILENAME>gdb_module</FILENAME>. </PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +</SECT2> +<SECT2> +<TITLE>Programming the stubs in EPROM/FLASH</TITLE> +<PARA>The board can use different sizes of ROMs. Use this table +to adjust the board’s jumpers to the ROM sizes you are +using.</PARA> +<PROGRAMLISTING>size(kbit) JP7 JP9 JP10 JP11 +256 2-3 2-3 open open +512 1-2 2-3 open open +1000 1-2 open open 2-3 +2000 1-2 1-2 open 2-3 +4000 1-2 1-2 short 2-3 +8000 1-2 1-2 short 1-2</PROGRAMLISTING> +<PARA>There are two ways to program the stubs. We advise you to +use method 1, since it is simpler. Method 2 is unsupported and requires +a bit of fiddling.</PARA> +<PARA><EMPHASIS>Method 1: </EMPHASIS> </PARA> +<PARA>Program the binary stub image into two EPROMs, E and O. EPROM +E should contain the even bytes, and O the odd bytes (your EPROM +programmer should have the ability to split the image).</PARA> +<PARA>EPROM E should be installed in socket IC8, and EPROM O should +be installed in socket IC4.</PARA> +<PARA>Set JP6 to 16 bit mode (1-2 soldered, 2-3 cut) Set SW1-4 +to ON and SW2-1 to OFF.</PARA> +<PARA></PARA> +<PARA><EMPHASIS>Method2: </EMPHASIS> </PARA> +<PARA>Assuming that the stub binary is smaller than 32 kB, you can +install it in a single EPROM.</PARA> +<PARA>Compile the <FILENAME>mkcqrom.c</FILENAME> program +found in the <FILENAME>misc</FILENAME> directory.</PARA> +<PARA>Use it to convert the binary image to the required format. +See the <FILENAME>mkcqrom.c</FILENAME> source for a +description of what is done, and why it is necessary. </PARA> +<PROGRAMLISTING> % mkcqrom gdb_module.bin gdb_mangled.bin</PROGRAMLISTING> +<PARA>Program the <FILENAME>gdb_mangled.bin</FILENAME> file +into an EPROM and install it in socket IC4</PARA> +<PARA>Set JP6 to 8 bit mode (cut 1-2, solder 2-3)</PARA> +<PARA>The GDB stubs allow communication with GDB using the serial +port at connector CN7. The communication parameters are fixed at +38400 baud, 8 data bits, no parity bit and 1 stop bit (8-N-1). No +flow control is employed. Connection to the host computer should +be made using a straight through serial cable.</PARA> +</SECT2> +</SECT1> +<SECT1 id="setup-sh-hs7729pci"> +<TITLE>SH3/HS7729PCI Hardware Setup</TITLE> +<PARA>Please see the RedBoot manual for instructions on how to prepare +the board for use with eCos.</PARA> +</SECT1> +<SECT1 id="setup-sh-se77x9"> +<TITLE>SH3/SE77x9 Hardware Setup</TITLE> +<PARA>Please see the RedBoot manual for instructions on how to prepare +the board for use with eCos.</PARA> +</SECT1> +<SECT1 id="setup-sh-cq7750"> +<TITLE>SH4/CQ7750 Hardware Setup</TITLE> +<SECT2> +<TITLE>Preparing the board</TITLE> +<PARA>Make sure the DIP switches on the board are set as follows: + </PARA> +<PROGRAMLISTING>SW1-1 ON +SW1-2 OFF +SW1-3 ON +SW1-4 OFF</PROGRAMLISTING> +<PROGRAMLISTING>SW2-1 ON +SW2-2 ON +SW2-3 OFF +SW2-4 OFF</PROGRAMLISTING> +<PARA>If you are using a straight through serial cable which has +flow control lines, you will also need to cut JP12 (5-6) as the +flow control lines can cause NMIs.</PARA> +</SECT2> +<SECT2> +<TITLE>eCos GDB Stubs</TITLE> +<PARA>The eCos installation CD contains a copy of the eCos GDB stubs +in binary format which must be programmed into an EPROM or FLASH +and installed on the board.</PARA> +<SECT3> +<TITLE> Preparing the GDB stubs</TITLE> +<PARA>These stub preparation steps are not strictly necessary as +the eCos distribution ships with precompiled stubs in the directory +loaders/sh3-cq7708 relative to the installation root.</PARA> +</SECT3> +<SECT3> +<TITLE>Building the GDB stub image with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File->New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build->Templates</EMPHASIS> + menu item, and then select the SH3 cq7708 hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build->Templates</EMPHASIS> + dialog box, select the stubs package template to build a GDB stub. +Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA> Build eCos stubs using +<EMPHASIS>Build->Library</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA> When the build completes, the image files can be found +in the +<FILENAME>bin/</FILENAME> + subdirectory of the install tree. GDB stub images have the prefix +<FILENAME>gdb_module</FILENAME>.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE> Building the GDB stub image with ecosconfig</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Make an empty directory to contain the build tree, +and cd into it.</PARA> +</LISTITEM> +<LISTITEM> +<PARA> To build a GDB stub ROM image, enter the command: + +<PROGRAMLISTING>$ ecosconfig new cq7708 stubs </PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA> Enter the commands: + +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the +<filename>bin/</filename> + subdirectory of the install tree. GDB stub images have the prefix +<filename>gdb_module</filename>. </PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +</SECT2> +<SECT2> +<TITLE>Programming the stubs in EPROM/FLASH</TITLE> +<PARA>The board can use different sizes of ROMs. Use this table +to adjust the board’s jumpers to the ROM sizes you are +using.</PARA> +<PROGRAMLISTING>size(kbit) JP7 JP9 JP10 JP11 +256 2-3 2-3 open open +512 1-2 2-3 open open +1000 1-2 open open 2-3 +2000 1-2 1-2 open 2-3 +4000 1-2 1-2 short 2-3 +8000 1-2 1-2 short 1-2</PROGRAMLISTING> +<PARA>There are two ways to program the stubs. We advise you to +use method 1, since it is simpler. Method 2 is unsupported and requires +a bit of fiddling.</PARA> +<PARA><EMPHASIS>Method 1: </EMPHASIS> </PARA> +<PARA>Program the binary stub image into two EPROMs, E and O. EPROM +E should contain the even bytes, and O the odd bytes (your EPROM +programmer should have the ability to split the image).</PARA> +<PARA>EPROM E should be installed in socket IC8, and EPROM O should +be installed in socket IC4.</PARA> +<PARA>Set JP6 to 16 bit mode (1-2 soldered, 2-3 cut) Set SW1-4 +to ON and SW2-1 to OFF.</PARA> +<PARA></PARA> +<PARA><EMPHASIS>Method2: </EMPHASIS> </PARA> +<PARA>Assuming that the stub binary is smaller than 32 kB, you can +install it in a single EPROM.</PARA> +<PARA>Compile the <filename>mkcqrom.c</filename> program +found in the <FILENAME>misc</FILENAME> directory.</PARA> +<PARA>Use it to convert the binary image to the required format. +See the <FILENAME>mkcqrom.c</FILENAME> source for a +description of what is done, and why it is necessary. </PARA> +<PROGRAMLISTING> % mkcqrom gdb_module.bin gdb_mangled.bin</PROGRAMLISTING> +<PARA>Program the <FILENAME>gdb_mangled.bin</FILENAME> file +into an EPROM and install it in socket IC4</PARA> +<PARA>Set JP6 to 8 bit mode (cut 1-2, solder 2-3)</PARA> +<PARA>The GDB stubs allow communication with GDB using the serial +port at connector CN7. The communication parameters are fixed at +38400 baud, 8 data bits, no parity bit and 1 stop bit (8-N-1). No +flow control is employed. Connection to the host computer should +be made using a straight through serial cable.</PARA> +</SECT2> +</SECT1> +<SECT1 id="setup-sh-se7751"> +<TITLE>SH4/SE7751 Hardware Setup</TITLE> +<PARA>Please see the RedBoot manual for instructions on how to repare +the board for use with eCos.</PARA> +</SECT1> +<SECT1 id="setup-v850-cebsa1"> +<TITLE>NEC CEB-V850/SA1 Hardware Setup</TITLE> +<PARA>The CEB-V850 board is fitted with a socketed EPROM. The internal +Flash of the V850 supplied with the CEB-V850 boards defaults to +vectoring into this EPROM. A GDB stub image should be programmed +into an EPROM fitted to this board, and a prebuilt image is provided +at <FILENAME>loaders/v850-ceb_v850/v850sa1/gdb_module.bin </FILENAME>under +the root of your eCos installation.</PARA> +<PARA>The EPROM is installed to the socket labelled U7 on the board. +Attention should be paid to the correct orientation of the EPROM +during installation. </PARA> +<PARA>When programming an EPROM using the binary image, be careful +to get the byte order correct. It needs to be little-endian. If +the EPROM burner software has a hex-editor, check that the first +few bytes of the image look similar to: </PARA> +<PROGRAMLISTING>00000000: 0018 8007 5e02 0000 0000 0000 0000 0000</PROGRAMLISTING> +<PARA>If the byte order is wrong you will see 1800 instead of 0018 +etc. Use the EPROM burner software to make a byte-swap before you +burn to image to the EPROM. </PARA> +<PARA>If the GDB stub EPROM you burn does not work, try reversing +the byte-order, even if you think you have it the right way around. +At least one DOS-based EPROM burner program is known to have the +byte-order upside down.</PARA> +<PARA>The GDB stub in the EPROM allows communication with GDB using +the serial port. The communication parameters are fixed at 38400 +baud, 8 data bits, no parity bit and 1 stop bit (8-N-1). No flow +control is employed. Connection to the host computer should be made +using a dedicated serial cable as specified in the CEB-V850/SA1 +manual.</PARA> +<SECT2> +<TITLE>Installing the Stubs into ROM</TITLE> +<SECT3> +<TITLE>Preparing the Binaries</TITLE> +<PARA>These two binary preparation steps are not strictly necessary +as the eCos distribution ships with precompiled binaries in the +directory loaders/v850-ceb_v850 relative to the +installation root.</PARA> +<SECT4> +<TITLE>Building the ROM images with the eCos Configuration Tool</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start with a new document - selecting the +<EMPHASIS>File->New</EMPHASIS> + menu item if necessary to do this.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Choose the +<EMPHASIS>Build->Templates</EMPHASIS> + menu item, and then select the NEC CEB-V850/SA1 hardware.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>While still displaying the +<EMPHASIS>Build->Templates</EMPHASIS> + dialog box, select the “stubs” package template +to build a GDB stub. Click +<EMPHASIS>OK</EMPHASIS>.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Build eCos using +<EMPHASIS>Build->Library</EMPHASIS>. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix “gdb_module”.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT4> +<SECT4> +<TITLE>Building the ROM images with ecosconfig</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Make an empty directory to contain the build tree, +and cd into it. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>To build a GDB stub ROM image, enter the command: + +<PROGRAMLISTING>$ ecosconfig new ceb-v850 stubs </PROGRAMLISTING></PARA> +</LISTITEM> +<LISTITEM> +<PARA>Enter the commands: + +<PROGRAMLISTING>$ ecosconfig tree +$ make</PROGRAMLISTING> + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>When the build completes, the image files can be found +in the bin/ subdirectory of the install tree. GDB stub +ROM images have the prefix “gdb_module”.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT4> +</SECT3> +<SECT3> +<TITLE> Installing the Stubs into ROM or FLASH</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA> Program the binary image file gdb_module.bin +into ROM or FLASH referring to the instructions of your ROM + programmer. </PARA> +</LISTITEM> +<LISTITEM> +<PARA> Plug the ROM/FLASH into the socket as described +at the beginning of this section.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +</SECT2> +<SECT2> +<TITLE>Debugging with the NEC V850 I.C.E.</TITLE> +<PARA>eCos applications may be debugged using the NEC V850 In Circuit +Emulator (I.C.E.) A PC running Microsoft Windows is required in +order to run the NEC ICE software and drivers. In addition Red Hat +have developed a “libremote” server application +named v850ice.exe which is used on the PC connected to the I.C.E. +in order to allow connections from GDB.</PARA> +<PARA>The I.C.E. must be physically connected to a Windows NT system +through NEC"s PCI or PC Card interface. A driver, DLLs, +and application are provided by NEC to control the I.C.E.</PARA> +<PARA>v850ice is a Cygwin based server that runs on the NT system +and provides an interface between the gdb client and the I.C.E. +software. v850-elf-gdb may be run on the Windows NT system or on +a remote system. v850-elf-gdb communicates with the libremote server +using the gdb remote protocol over a TCP/IP socket. v850ice +communicates with the I.C.E. by calling functions in the NECMSG.DLL provided +by NEC.</PARA> +<SECT3> +<TITLE>INITIAL SETUP</TITLE> +<ORDEREDLIST> +<LISTITEM> +<PARA>Configure the hardware including the I.C.E., SA1 or +SB1 Option Module, and target board. Install the interface card +in the Windows NT system. Reference NEC"s documentation +for interface installation, jumper settings, etc.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Install the Windows NT device driver provided by NEC.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Copy the NEC DLLs, MDI application, and other support +files to a directory on the Windows NT system. The standard location +is C:\NecTools32. This directory will be refered to as +the "libremote server directory" in this document. v850ice.exe must +also be copied to this directory after being built. The required +files are: cpu.cfg, Nec.cfg, MDI.EXE, NECMSG.DLL, EX85032.DLL, +V850E.DLL, IE850.MON, IE850E.MON, and D3037A.800.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Make certain the file cpu.cfg contains the line:</PARA> +<PROGRAMLISTING>CpuOption=SA1</PROGRAMLISTING> +<PARA>if using a V850/SA1 module, or:</PARA> +<PROGRAMLISTING>CpuOption=SB1</PROGRAMLISTING> +<PARA>if using a V850/SB1 module.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Set the environment variable IEPATH to point to the libremote +server</PARA> +<PARA>directory.</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE>BUILD PROCEDURES</TITLE> +<PARA>A prebuilt v850ice.exe executable is supplied in the loaders/v850-ceb_v850 directory +relative to the root of the eCos installation. However the following process +will allow the rebuilding of this executable if required:</PARA> +<PARA>For this example assume the v850ice libremote tree has been +copied to a directory named "server". The directory structure will +be similar to the following diagram:</PARA> +<PARA><PROGRAMLISTING> server + | + devo + / \ + config libremote + / \ + lib v850ice</PROGRAMLISTING></PARA> +<PARA>Build the v850ice source as follows. Be sure to use the native +Cygwin compiler tools that were supplied alongside eCos.</PARA> +<PARA>cd server +mkdir build +cd build +../devo/configure --target=v850-elf --host=i686-pc-cygwin +make</PARA> +<PARA>The resultant libremote server image (v850ice.exe) can be +found in build/libremote/v850ice. Copy v850ice.exe +to the lib remote server directory.</PARA> +</SECT3> +<SECT3> +<TITLE>V850ICE.EXE EXECUTION</TITLE> +<PARA>The v850ice command line syntax is:</PARA> +<PARA>v850ice [-d] [-t addr] [port number]</PARA> +<PARA>The optional -d option enables debug output. The -t option +is associated with thread debugging - see the "eCos thread debugging" +section below for details. By default v850ice listens on port 2345 +for an attach request from a gdb client. A different port number +may be specified on the command line.</PARA> +<PARA>To run the libremote server:</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Power on the I.C.E. and target board.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Open a Cygwin window.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Run v850ice.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>You will see the MDI interface window appear. In this +window you should see the "Connected to In-Circuit Emulator" message. + In the Cygwin window, the libremote server will indicate it is +ready to accept a gdb client connection with the message "v850ice: + listening on port 2345."</PARA> +</LISTITEM> +</ORDEREDLIST> +</SECT3> +<SECT3> +<TITLE>V850-ELF-GDB EXECUTION</TITLE> +<PARA>Run the v850-elf-gdb client to debug the V850 target. It +is necessary to issue certain configuration commands to the I.C.E. +software. These commands may be issued directly in the MDI window +or they may be issued from the gdb client through the "monitor" +command.</PARA> +<PARA>On the Cosmo CEB-V850 board, on-chip Flash is mapped at address +0x0, the on-board EPROM at 0x100000 and the on-board RAM at 0xfc0000. +Since a standalone V850 will start executing from address 0x0 on +reset, it is normal to load either an application or a bootstrap +loader for Flash at this address. eCos programs may be built to +boot from Flash or the on-board EPROM. If building for the on-board +EPROM, it would be expected that the Flash will contain the default +CEB-V850 flash contents. An ELF format version of the default contents +may be found in the eCos distribution with the name v850flash.img.</PARA> +<PARA>In standalone operation, normally the code in this flash image +would have been programmed into the V850 on the Cosmo board, and +this would cause it to vector into the on-board EPROM to run the +application located there. In the case of eCos, this application +may be a GDB stub ROM application, allowing the further download +to RAM over serial of actual applications to debug.</PARA> +<PARA>As an example, we shall demonstrate how to use the I.C.E. +to download the v850flash.img and GDB stub EPROM image using I.C.E. +emulator memory only, and not requiring any actual programming of +devices.</PARA> +<PARA>v850-elf-gdb -nw +(gdb) file v850flash.img +(gdb) target remote localhost:2345 +(gdb) monitor reset +(gdb) monitor cpu r=256 a=16 +(gdb) monitor map r=0x100000-L 0x80000 +(gdb) monitor map u=0xfc0000-L 0x40000 +(gdb) monitor pinmask k +(gdb) monitor step +(gdb) monitor step +(gdb) monitor step +(gdb) monitor step +(gdb) load +(gdb) detach +(gdb) file gdb_module.img +(gdb) target remote localhost:2345 +(gdb) load +(gdb) continue</PARA> +<PARA>NOTE: The four "monitor step" commands are only required the +first time the board is connected to the I.C.E., otherwise the program +will fail.</PARA> +<PARA>This is because of a limitation of the I.C.E. hardware that +means that the first time it is used, the "map" commands are not +acted on and the addresses "0x100000" and "0xfc0000" are not mapped. +This can be observed using the command "td e-20" in the MDI application"s +console to display the trace buffer, which will show that the contents +of address 0x100000 are not valid. Subsequent runs do not require +the "monitor step" commands.</PARA> +<PARA>It is unusual to load two executable images to a target through +gdb. From the example above notice that this is accomplished by +attaching to the libremote server, loading the flash image, detaching, +reattaching, and loading the ROM/RAM image. It is more +normal to build an executable image that can be executed directly. +In eCos this is achieved by selecting either the ROM or ROMRAM startup +type, and optionally enable building for the internal FLASH. The +I.C.E. emulator memory can emulate both the internal FLASH and the +EPROM, so real hardware programming is not required.</PARA> +<PARA>Upon running this example you will notice that the libremote +server does not exit upon detecting a detach request, but simply +begins listening for the next attach request. To cause v850ice +to terminate, issue the "monitor quit" or "monitor exit" command +from the gdb client. v850ice will then terminate with the next +detach request. (You can also enter control-c in the Cygwin/DOS +window where v850ice is running.)</PARA> +</SECT3> +<SECT3> +<TITLE>MDI INTERFACE VS. GDB INTERFACE</TITLE> +<PARA>If a filename is referenced in an MDI command, whether the +command is entered in the MDI window or issued from the gdb client +with the monitor command, the file must reside on the Windows NT +libremote server system. When specifying a filename when entering +a command in the MDI window it is obvious that a server local file +is being referenced. When issuing an MDI command from the gdb client, the +user must remember that the command line is simply passed to the +I.C.E. software on the server system. The command is executed by +the I.C.E. software as though it were entered locally.</PARA> +<PARA>Executable images may be loaded into the V850 target by entering +the "load" command in the MDI window or with the gdb "load" command. + If the MDI load command is used, the executable image must be located +on the server system and must be in S Record format. If the gdb +load command is used, the executable image must be located on the +client system and must be in ELF format.</PARA> +<PARA>Be aware that the gdb client is not aware of debugger commands +issued from the MDI window. It is possible to cause the gdb client +and the I.C.E. software to get out of sync by issuing commands from +both interfaces during the same debugging session.</PARA> +</SECT3> +<SECT3> +<TITLE>eCos THREAD DEBUGGING</TITLE> +<PARA>eCos and the V850 I.C.E. libremote server have been written +to work together to allow debugging of eCos threads. This is an +optional feature, disabled by default because of the overheads trying +to detect a threaded program involves.</PARA> +<PARA>Obviously thread debugging is not possible for programs with +"RAM" startup type, as they are expected to operate underneath a +separate ROM monitor (such as a GDB stub ROM), that itself would +provide its own thread debugging capabilities over the serial line. +Thread debugging is relevant only for programs built for Flash, ROM, +or ROMRAM startup.</PARA> +<PARA>To configure the libremote server to support thread debugging, +use the command:</PARA> +<PARA><PROGRAMLISTING>(gdb) monitor syscallinfo ADDRESS</PROGRAMLISTING></PARA> +<PARA>at the GDB console prompt, where ADDRESS is the address of +the syscall information structure included in the applications. +In eCos this has been designed to be located at a consistent address +for each CPU model (V850/SA1 or V850/SB1). It +may be determined from an eCos executable using the following command +at a cygwin bash prompt:</PARA> +<PARA><PROGRAMLISTING>v850-elf-nm EXECUTABLE | grep hal_v85x_ice_syscall_info</PROGRAMLISTING></PARA> +<PARA>At the current time, this address is 0xfc0400 for a Cosmo +board fitted with a V850/SA1, or 0xfc0540 for a Cosmo board +fitted with a V850/SB1.</PARA> +<PARA>So for example, the GDB command for the SB1 would be:</PARA> +<PARA><PROGRAMLISTING>(gdb) monitor syscallinfo 0xfc0540</PROGRAMLISTING></PARA> +<PARA>Given that the syscallinfo address is fixed over all eCos +executables for a given target, it is possible to define it on the +libremote command line as well using the "-t" option, for example:</PARA> +<PARA><PROGRAMLISTING>bash$ v850ice -t 0xfc0400 +v850ice: listening on port 2345</PROGRAMLISTING></PARA> +</SECT3> +</SECT2> +</SECT1> +<SECT1 id="setup-v850-cebsb1"> +<TITLE>NEC CEB-V850/SB1 Hardware Setup</TITLE> +<PARA>The instructions for setting up the CEB-V850/SB1 +are virtually identical to those of the CEB-V850/SA1 above. +The only significant differences are that prebuilt loaders are available +at loaders/v850-ceb_v850/v850sb1 within +the eCos installation. Binaries supporting boards with both 16MHz +and 8MHz clock speeds are supplied. Also when building applications, +or rebuilding the stubs for a V850/SB1 target, then the +V850 CPU variant must be changed in the CEB-V850 HAL to the SB1.</PARA> +</SECT1> +<SECT1 id="setup-i386-pc"> +<TITLE>i386 PC Hardware Setup</TITLE> +<PARA>For information about setting up the PC to run with RedBoot, +consult the RedBoot User"s Guide. If using serial debugging, +the serial line runs at 38400 baud 8-N-1 and should be connected +to the debug host using a null modem cable. If ethernet debugging +is required, an i82559 compatible network interface card, such as +an Intel EtherExpress Pro 10/100, should be installed +on the target PC and connected to the development PC running GDB. +When RedBoot is configured appropriately to have an IP address set, +then GDB will be able to debug directly over TCP/IP to the +target PC.</PARA> +</SECT1> +<SECT1 id="setup-synth-i386linux"> +<TITLE><!-- <conditionaltext> --><!-- <index></index> -->i386/Linux Synthetic Target Setup</TITLE> +<PARA>When building for the synthetic Linux target, the resulting +binaries are native Linux applications with the HAL providing suitable +bindings between the eCos kernel and the Linux kernel.</PARA> +<NOTE> +<PARA>Please be aware that the current implementation of the Linux +synthetic target does not allow thread-aware debugging.</PARA> +</NOTE> +<PARA>These Linux applications cannot be run on a Windows system. +However, it is possible to write a similar HAL emulation for the +Windows kernel if such a testing target is desired.</PARA> +<SECT2> +<TITLE>Tools</TITLE> +<PARA>For the synthetic target, eCos relies on features not available +in native compilers earlier than gcc-2.95.1. It also requires version +2.9.5 or later of the GNU linker. If you have gcc-2.95.1 or later +and ld version 2.9.5 or later, then you do not need to build new +tools. eCos does not support earlier versions. You can check the compiler +version using <COMMAND>gcc -v</COMMAND> or <COMMAND>egcs +-v</COMMAND>, and the linker version using <COMMAND>ld +-v</COMMAND>.</PARA> +<PARA>If you have native tools that are sufficiently recent for +use with eCos, you should be aware that by default eCos assumes +that the tools <COMMAND>i686-pc-linux-gnu-gcc</COMMAND>, <COMMAND>i686-pc-linux-gnu-ar</COMMAND>, + <COMMAND>i686-pc-linux-gnu-ld</COMMAND>, and <COMMAND>i686-pc-linux-gnu-objcopy</COMMAND> are +on your system and are the correct versions for use with eCos. But +instead, you can tell eCos to use your native tools by editing the +configuration value "Global command prefix" (CYGBLD_GLOBAL_COMMAND_PREFIX) +in your eCos configuration. If left empty (i.e. set to the empty +string) eCos will use your native tools when building.</PARA> +<PARA>If you have any difficulties, it is almost certainly easiest +overall to rebuild the tools as described on: <ULINK URL="http://sources.redhat.com/ecos/getstart.html">http://sources.redhat.com/ecos/getstart.html</ULINK></PARA> +</SECT2> +</SECT1> +</CHAPTER> +<CHAPTER ID="RUNNING-APPLICATIONS-ON-THE-TARGET"> +<TITLE><!-- <index></index> --><!-- <xref> -->Running <!-- <index></index> -->Applications +on the Target</TITLE> +<PARA>At this point you should have installed the eCos software +on your system (see <XREF LINKEND="SOFTWARE-INSTALLATION">), +and connected to a hardware target (see <XREF LINKEND="TARGET-SETUP">).</PARA> +<PARA>To verify both that a hardware target is properly set up, +and that the GDB commands used to connect to the target (hardware, +simulator or synthetic) work properly on your system, you will now +be guided through downloading and executing a prebuilt eCos test. +The procedure is exactly the same when you want to download and +run applications or tests that you have built yourself.</PARA> +<PARA>On Windows you must have the bash command line interpreter +running with some environment variables that are useful for eCos +work. If you have purchased the <EMPHASIS>eCos Developer's +Kit</EMPHASIS>, you can select this by selecting <EMPHASIS>Start->Programs->Red +Hat eCos->eCos Development Environment</EMPHASIS>. If +you are using the <EMPHASIS>eCos Net Release</EMPHASIS>, you should +set the environment variables as shown in the <EMPHASIS>GNUPro Toolkit Reference +Manual</EMPHASIS>. On Linux, simply open a new shell window.</PARA> +<PARA>You will need to change directory to the prebuilt tests that +are provided in the eCos installation, as follows:</PARA> +<PROGRAMLISTING>for the SHARP LH77790A-based AEB-1 boards: + $ cd BASE_DIR/prebuilt/aeb/tests/kernel/&Version;/tests +for the ARM7-based Cogent CMA230 board: + $ cd BASE_DIR/prebuilt/cma230/tests/kernel/&Version;/tests +for the StrongARM based Intel EBSA board: + $ cd BASE_DIR/prebuilt/ebsa285/tests/kernel/&Version;/tests +for the ARM-based Cirrus Logic EP72xx Development boards: + $ cd BASE_DIR/prebuilt/edb7xxx/tests/kernel/&Version;/tests +for the ARM-based ARM PID board: + $ cd BASE_DIR/prebuilt/pid/tests/kernel/&Version;/tests +for the StrongARM-based ARM Brutus board: + $ cd BASE_DIR/prebuilt/brutus/tests/kernel/&Version;/tests +for the StrongARM-based ARM Assabet board: + $ cd BASE_DIR/prebuilt/assabet/tests/kernel/&Version;/tests +for the AM31 simulator target: + $ cd BASE_DIR/prebuilt/am31_sim/tests/kernel/&Version;/tests +for the AM33-based Matsushita STB board: + $ cd BASE_DIR/prebuilt/stb/tests/kernel/&Version;/tests +for the AM31-based Matsushita stdeval1 board: + $ cd BASE_DIR/prebuilt/stdeval1/tests/kernel/&Version;/tests +for the MPC8xx-based Cogent CMA28x boards: + $ cd BASE_DIR/prebuilt/cma28x/tests/kernel/&Version;/tests +for the MPC8xx-based Motorola FADS board: + $ cd BASE_DIR/prebuilt/fads/tests/kernel/&Version;/tests +for the MPC8xx-based Motorola MBX boards: + $ cd BASE_DIR/prebuilt/mbx/tests/kernel/&Version;/tests +for the PowerPC minimal simulator target: + $ cd BASE_DIR/prebuilt/psim/tests/kernel/&Version;/tests +for the TX3904-based Toshiba JMR-TX3904 board: + $ cd BASE_DIR/prebuilt/jmr3904/tests/kernel/&Version;/tests +for the TX39 simulator target: + $ cd BASE_DIR/prebuilt/tx39_sim/tests/kernel/&Version;/tests +for the TX49based Toshiba REF4995 board: + $ cd BASE_DIR/prebuilt/ref4955/tests/kernel/&Version;/tests +for the VR4300-based NEC VRC4373 board: + $ cd BASE_DIR/prebuilt/vrc4373/tests/kernel/&Version;/tests +for the SH7708-based Hitachi EDK/SH7708 board: + $ cd BASE_DIR/prebuilt/sh7708/tests/kernel/&Version;/tests +for the SH3-based CQ cq7708 board a prebuilt test is provided in: + $ cd BASE_DIR/prebuilt/cq7708/tests/kernel/tests +for the SH4-based CQ cq7750 board a prebuilt test is provided in: + $ cd BASE_DIR/prebuilt/cq7750/tests/kernel/tests +for the SE7751-based Hitachi Solutions Engine board: + $ cd BASE_DIR/prebuilt/se7751/tests/kernel/&Version;/tests +for the SE77x9-based Hitachi Solutions Engine board: + $ cd BASE_DIR/prebuilt/se77x9/tests/kernel/&Version;/tests +for the SPARClite-based Fujitsu MB86800-MA01 board: + $ cd BASE_DIR/prebuilt/sleb/tests/kernel/&Version;/tests +for the SPARClite minimal simulator target: + $ cd BASE_DIR/prebuilt/sparclite_sim/tests/kernel/&Version;/tests +for the i386 PC target: + $ cd BASE_DIR/prebuilt/pc/tests/kernel/&Version;/tests +for the NEC CEB-V850SA1 + $ cd BASE_DIR/prebuilt/ceb_v850/tests/kernel/&Version;/tests +</PROGRAMLISTING><!-- <conditionaltext> --><!-- <conditionaltext> --><!-- <conditionaltext> --> +<PARA>for the i386-based Linux synthetic +target:</PARA> +<PROGRAMLISTING> $ cd BASE_DIR/prebuilt/linux/tests/kernel/&Version;/tests</PROGRAMLISTING> +<PARA>To execute the <LITERAL>thread_gdb</LITERAL> test +case on the desired target, </PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Run GDB in command line mode using the following command, +remembering to substitute the appropriate name for the architecture's +gdb, eg. <target>-gdb: </PARA> +<SCREEN>$ gdb -nw thread_gdb</SCREEN> +<PARA>GDB will display a copyright banner and then display a prompt (gdb). </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Connect to the target according to the instructions given +earlier (in <XREF LINKEND="TARGET-SETUP">) +- via serial or ethernet to hardware targets, or directly, for simulator and synthetic +targets. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Depending on the target type, you will be notified about a successful + connection, and possibly see some output informing you of the current +program counter of the target.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Download the test - effectively loading the test case +executable into the memory of the target - by typing this command:</PARA> +<PROGRAMLISTING>(gdb) load</PROGRAMLISTING> +<PARA>Again, depending on the target, you may see some output describing +how much data was downloaded, and at what speed. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Start the test case running. For hardware targets this +is done with the </PARA> +<PROGRAMLISTING>continue</PROGRAMLISTING> +<PARA> command, while </PARA> +<PROGRAMLISTING>run</PROGRAMLISTING> +<PARA> must be used on simulators and synthetic targets:</PARA> +<PROGRAMLISTING>(gdb) continue</PROGRAMLISTING> +<PARA>or</PARA> +<PROGRAMLISTING>(gdb) run</PROGRAMLISTING> +<PARA>You should now see a number of text messages appear, such +as: </PARA> +<PROGRAMLISTING>PASS:<GDB Thread test OK> +EXIT:<done></PROGRAMLISTING> +<NOTE> +<PARA>eCos has no concept of the application exiting. All eCos test +cases complete and then run in a continuous tight loop. To return +control to GDB you must stop the application.</PARA> +<PARA>The usual method of stopping an application is with +<EMPHASIS>Ctrl+C</EMPHASIS> +, but +<EMPHASIS>Ctrl+C</EMPHASIS> + may not work on your platform for the prebuilts. First, make default +tests and check that they work the same way as prebuilts, then modify +your config to enable GDB stubs (if applicable) and break support, +so that a +<EMPHASIS>Ctrl+C</EMPHASIS> + character will interrupt the application.</PARA> +<PARA> Another way to stop the application is by means of a breakpoint. +Before running the application, breakpoint +<FUNCTION>cyg_test_exit()</FUNCTION> + to stop an eCos test case at its end.</PARA> +</NOTE> +<NOTE> +<PARA>When an eCos program is run on ARM or SH3 boards, the GDB + +stub in ROM does not provide thread debugging or asynchronous GDB +interrupt support. If you require full debugging capabilities, you +must include GDB stub support when configuring eCos.</PARA> +</NOTE> +<PARA>The usual method of stopping an application is with <EMPHASIS>Ctrl+C</EMPHASIS>, +but <EMPHASIS>Ctrl+C</EMPHASIS> may not work on your platform +for the prebuilts. First, make default tests and check that they +work the same way as prebuilts, then modify your config to enable GDB +stubs (if applicable) and break support, so that a <EMPHASIS>Ctrl+C</EMPHASIS> character +will interrupt the application.</PARA> +<PARA>Another way to stop the application is by means of a breakpoint. +Before running the application, breakpoint <FUNCTION>cyg_test_exit()</FUNCTION> to +stop an eCos test case at its end.</PARA> +<PARA>The full functionality of GDB is now available to you, including +breakpoints and watchpoints. Please consult the GNUPro GDB +documentation for further information.</PARA> +</LISTITEM> +</ORDEREDLIST> +</CHAPTER> +<CHAPTER ID="TEST-SUITES"> +<TITLE>Test Suites</TITLE> +<PARA>The eCos kernel and other packages have test suites which +rigorously exercise the available features and confirm correct execution. +The tests are run on many different possible configurations, but +the high number of configuration permutations makes it impossible +to test them all. The use of test suites is particularly important +for embedded systems, where software robustness is a priority. All +eCos software is tested prior to shipping, but if you define your +own configuration, you will probably want to verify that the test +cases work for it.</PARA> +<PARA>This release includes <!-- <index></index> --> test suites for the eCos +kernel, kernel C API, C library, µITRON compatibility, +and device driver packages. The use of the test suites is similar +for all packages. The tests are supplied as source code for building +with specific eCos configurations. </PARA> +<PARA>Each test suite consists of a number of test cases which can +be executed individually, as shown below for the TX39, AM31 and +AM33 PowerPC StrongARM SH3, VR4300 SPARClite hardware target, and +all supported ARM platforms, including the Cirrus Logic EP7211 and +EP7212 Development Boards if connecting via a serial line. </PARA> +<PARA>Using the <EMPHASIS>eCos Configuration +Tool</EMPHASIS> it is possible to automate the downloading and execution +of tests with the appropriately configured eCos packages. To do +so, compile and link the test cases by using the <EMPHASIS>Build</EMPHASIS>-><EMPHASIS>Tests</EMPHASIS> menu +item, after which the tests can be downloaded and executed by selecting <EMPHASIS>Tools</EMPHASIS>-><EMPHASIS>Run +Tests. </EMPHASIS>See <XREF LINKEND="RUNNING-APPLICATIONS-ON-THE-TARGET">.</PARA> +<PARA>To compile and run tests using the command line:</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Type “make tests”.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Start GDB, using the correct command prefix for your platform +(see “GDB and GCC Command Notation” on page 19).</PARA> +</LISTITEM> +<LISTITEM> +<PARA>Set up the baud rate, usually with +<LITERAL>(gdb) set remotebaud 38400 (19200).</LITERAL></PARA> +</LISTITEM> +<LISTITEM> +<PARA>Select the target board, usually with +<LITERAL>(gdb) target remote com1</LITERAL> + on Windows or +<LITERAL>(gdb) target remote /dev/ttyS0</LITERAL> +on Linux.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>download the test program, usually with +<LITERAL>(gdb) load</LITERAL> +. This can take some time.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>execute the test program, usually with +<LITERAL>(gdb) continue</LITERAL>.</PARA> +</LISTITEM> +</ORDEREDLIST> +<PARA>When executing <!-- <index></index> --> +test cases on the Fujitsu SPARClite +Evaluation Board via an TCP connection to the board, the following +steps are required:</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>Start GDB using the test case file name as an argument. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>connect to the target board with +<LITERAL>(gdb) target remote xxx:1000</LITERAL> + where xxx is the IP address or hostname assigned to the board. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>download the test program with +<LITERAL>(gdb) load.</LITERAL></PARA> +</LISTITEM> +<LISTITEM> +<PARA>execute the test program with +<LITERAL>(gdb) continue.</LITERAL></PARA> +</LISTITEM> +</ORDEREDLIST> +<PARA>When executing test cases on the Cirrus Logic EP7211 or EP7212 +Development Boards and connecting with the ARM Multi-ICE Interface +Unit, follow the instructions in the manual GNUPro Toolkit reference +for eCos ARM/Thumb.</PARA> +<PARA>When executing test cases on the Linux synthetic target, it +is possible to run them directly from the command line. If debugging +is needed, only the following steps are required:</PARA> +<ORDEREDLIST> +<LISTITEM> +<PARA>start GDB using the test case file name as an argument</PARA> +</LISTITEM> +<LISTITEM> +<PARA>execute the test program with <LITERAL>(gdb) run</LITERAL></PARA> +</LISTITEM> +</ORDEREDLIST> +<PARA>Each test case runs without further intervention. A test case +may involve one or more individual tests. Successful completion +of each test within the test case is reported as a line of text +that is sent to the diagnostic channel (usually the serial port) +for display on a terminal or terminal emulator.</PARA> +<PARA>Each test case runs only once and usually requires the target +hardware to be reset on completion. Note that certain test cases +may not terminate immediately, especially if they involve delays +and run on the target simulators.</PARA> +<PARA>In the CD distribution of the eCos Developer’s Kit, +the test cases are located as follows:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>one prebuilt “thread_gdb” test +compiled for <!-- <index></index> --> +RAM start-up (needs CygMon or an eCos GDB stub in ROM, and will +only run on real hardware):</PARA> +<LITERALLAYOUT CLASS="MONOSPACED">BASE_DIR/prebuilt/&Version;/mn10300_am31-stdeval-ram for the MN10300 AM31 standard evaluation board. +BASE_DIR/prebuilt/&Version;/mn10300_am33-stb-ram for the AM33 STB system reference board. +BASE_DIR/prebuilt/&Version;/tx39-jmr3904-ram for the TX39. +BASE_DIR/prebuilt/&Version;/powerpc-cogent-ram for the PowerPC Cogent board. +BASE_DIR/prebuilt/&Version;/powerpc-mbx-ram for the PowerPC MBX860 board. +BASE_DIR/prebuilt/&Version;/sparclite-sleb-ram for the SPARClite. +BASE_DIR/prebuilt/&Version;/arm-pid-ram for the ARM PID board. +BASE_DIR/prebuilt/&Version;/arm-pidT-ram for the ARM PID in Thumb mode. +BASE_DIR/prebuilt/&Version;/arm-aeb-ram for the ARM AEB-1 board. +BASE_DIR/prebuilt/&Version;/arm-cma230-ram for the Cogent CMA230 board. +BASE_DIR/prebuilt/&Version;/arm-edb7xxx-ram for the Cirrus Logic EP7211 development board +BASE_DIR/prebuilt/&Version;/arm-pid-ram for the VR4300. +BASE_DIR/prebuilt/&Version;/sh-edk7708-ram for the SH3 in big-endian mode. +BASE_DIR/prebuilt/&Version;/sh-edk7708le-ram for the SH3 in little-endian mode. + </LITERALLAYOUT> +</LISTITEM> +<LISTITEM> +<PARA>one prebuilt “thread_gdb” test +compiled for<!-- <index></index> --> +ROM start-up:</PARA> +<LITERALLAYOUT CLASS="MONOSPACED">BASE_DIR/prebuilt/&Version;/mn10300_am31-stdeval-rom for the MN10300 AM31 standard evaluation board. +BASE_DIR/prebuilt/&Version;/mn10300_am33-stb-rom for the AM33 STB system reference board. +BASE_DIR/prebuilt/&Version;/tx39-jmr3904-rom for the TX39. +BASE_DIR/prebuilt/&Version;/powerpc-cogent-rom for the PowerPC Cogent board. +BASE_DIR/prebuilt/&Version;/powerpc-mbx-rom for the PowerPC MBX860 board. +BASE_DIR/prebuilt/&Version;/sparclite-sleb-rom for the SPARClite. +BASE_DIR/prebuilt/&Version;/arm-pid-rom for the ARM PID board. +BASE_DIR/prebuilt/&Version;/arm-pidT-rom for the ARM in Thumb mode. +BASE_DIR/prebuilt/&Version;/arm-aeb-rom for the ARM AEB-1 board. +BASE_DIR/prebuilt/&Version;/arm-cma230-rom for the ARM CMA230 board. +BASE_DIR/prebuilt/&Version;/arm-edb7xxx-rom for the Cirrus Logic EP7211 development board +BASE_DIR/prebuilt/&Version;/mips_vr4300-vrc4373-rom for the VR4300. +BASE_DIR/prebuilt/&Version;/sh-edk7708-rom for the SH3 in big-endian mode. +BASE_DIR/prebuilt/&Version;/sh-edk7708le-rom for the SH3 in little-endian mode.</LITERALLAYOUT> +<NOTE> +<PARA>For targets that do not have simulator support, the ROM tests + will work if programmed into ROM/FLASH, or if using a PROM + emulator.</PARA> +</NOTE> +</LISTITEM> +<LISTITEM> +<PARA>one prebuilt <!-- <index></index> --> +synthetic target test (will work on Linux only): +<LITERAL>BASE_DIR/prebuilt/&Version;/i386-linux</LITERAL> +for i386.</PARA> +<PARA>test case source code is under the base source directory BASE_DIR/packages +/</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><FILENAME>compat/uitron/&Version;/tests</FILENAME></PARA> +</LISTITEM> +<LISTITEM> +<PARA><FILENAME>io/serial/&Version;/tests</FILENAME></PARA> +</LISTITEM> +</ITEMIZEDLIST> +</LISTITEM> +<LISTITEM> +<PARA><FILENAME>hal/powerpc/arch/&Version;/test</FILENAME></PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA><FILENAME>devs/wallclock/&Version;/tests</FILENAME></PARA> +</LISTITEM> +<LISTITEM> +<PARA><FILENAME>devs/watchdog/&Version;/tests</FILENAME></PARA> +</LISTITEM> +<LISTITEM> +<PARA><FILENAME>kernel/&Version;/tests</FILENAME></PARA> +</LISTITEM> +<LISTITEM> +<PARA><FILENAME>language/c/libc/&Version;/tests</FILENAME></PARA> +</LISTITEM> +<LISTITEM> +<PARA><FILENAME>language/c/libm/&Version;/tests</FILENAME></PARA> +</LISTITEM> +</ITEMIZEDLIST> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>In <XREF LINKEND="RUNNING-APPLICATIONS-ON-THE-TARGET"> you + will find detailed instructions on running a test case to + verify that your hardware board is working with the supplied + software. Instructions for testing on a simulator are in <XREF LINKEND="RUNNING-AN-ECOS-TEST-CASE">.</PARA> +</CHAPTER> +</PART> +<PART ID="PROGRAMMING-TUTORIAL"> +<TITLE><!-- <conditionaltext> --><!-- <xref> --><!-- <index></index> -->Programming Tutorial</TITLE> +<CHAPTER ID="PROGRAMMING-WITH-ECOS"> +<TITLE>Programming with eCos</TITLE> +<PARA>The remaining chapters of this manual comprise a simple tutorial +for configuring and building eCos, building and running eCos tests, +and finally building three stand-alone example programs which use +the eCos API to perform some simple tasks.</PARA> +<PARA>You will need a properly installed eCos system, with the accompanying +versions of the GNUPro tools.<!-- <conditionaltext> --> +On Windows you will +be using the bash command line interpreter that comes with Cygwin, +with the environment variables set as described in the GNUPro documentation.</PARA> +<SECT1 id="development-process"> +<TITLE>The Development Process</TITLE> +<PARA>Most development projects using eCos would contain some (or +most) of the following:</PARA> +<SECT2> +<TITLE>eCos Configuration</TITLE> +<PARA>eCos is configured to provide the desired API (the inclusion +of libc, uitron, and the disabling of certain undesired funtions, +etc.), and semantics (selecting scheduler, mutex behavior, etc.). +See <XREF LINKEND="CONFIGURING-AND-BUILDING-ECOS-FROM-SOURCE">.</PARA> +<PARA>It would normally make sense to enable eCos assertion checking +at this time as well, to catch as many programming errors during +the development phase as possible.</PARA> +<PARA>Note that it should not be necessary to spend much time on +eCos configuration initially. It may be important to perform fine +tuning to reduce the memory footprint and to improve performance +later when the product reaches a testable state.</PARA> +</SECT2> +<SECT2> +<TITLE> Integrity check of the eCos configuration</TITLE> +<PARA>While Red Hat strive to thoroughly test eCos, the vast number +of configuration permutations mean that the particular configuration +parameters used for your project may not have been tested. Therefore, +we advise running all the eCos tests after the project's +eCos configuration has been determined. See <XREF LINKEND="TEST-SUITES">.</PARA> +<PARA>Obviously, this should be repeated if the configuration changes +later on in the development process.</PARA> +</SECT2> +<SECT2> +<TITLE> Application Development - Target Neutral Part</TITLE> +<PARA>While your project is probably targeting a specific architecture +and platform, possibly custom hardware, part of the application +development may be possible to perform using simulated or synthetic +targets.</PARA> +<PARA>There are two primary reasons for doing this:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>It may be possible by this means to perform application +development in parallel with the design/implementation +of the target hardware, thus providing more time for developing +and testing functionality, and reducing time-to-market.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>The build-run-debug-cycle may be faster when the application +does not have to be downloaded to a target via a serial interface. +Debugging is also likely to be more responsive when you do not have +to to communicate with a stub via serial. It also removes the need +for manually or automatically resetting the target hardware.</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA>This is approach is possible because all targets (including +simulators and synthetic ones) provide the same basic API: that +is, kernel, libc, libm, uitron, infra, and to some extent, HAL and +IO.</PARA> +<PARA>Synthetic targets are especially suitable as they allow you +to jury-rig simulations of elaborate devices by interaction with +the host system, where an IO device API can hide the details from +the application. When switching to hardware later in the development +cycle, the IO driver is properly implemented. While this is possible +to do, and has been done, it is not specifically documented or supported +by Red Hat. It may become so later.</PARA> +<PARA>Therefore, select a simulator or synthetic target and use +it for as long as possible doing application development. That is, +configure for the selected target, build eCos, build the application +and link with eCos, run and debug. Repeat the latter two steps.</PARA> +<PARA>Obviously, at some time you will have to switch to the intended +target hardware, for example when adding target specific feature +support, for memory footprint/performance characterization, +and for final tuning of eCos and the application.</PARA> +</SECT2> +<SECT2> +<TITLE> Application Development - Target Specific Part</TITLE> +<PARA>Repeat the build-run-debug-cycle while performing final tuning +and debugging of application. Remember to disable eCos assertion +checking, as it reduces performance.</PARA> +<PARA>It may be useful to switch between this and the previous step +repeatedly through the development process; use the simulator/synthetic +target for actual development, and use the target hardware to continually +check memory footprint and performance. There should be little cost +in switching between the two targets when using two separate build +trees. </PARA> +</SECT2> +</SECT1> +</CHAPTER> + +<!-- ==================================================== --> + +<CHAPTER ID="CONFIGURING-AND-BUILDING-ECOS-FROM-SOURCE"><!-- <conditionaltext> --> +<TITLE><!-- <xref> --><!-- <index></index> -->Configuring and Building eCos from Source</TITLE> + +<PARA>This chapter documents the configuration of eCos, using the +ARM PID board as an example. The process is the same for any of +the other supported targets: you may select a hardware target (if +you have a board available), any one of the simulators, or a synthetic +target (if your host platform has synthetic target support).</PARA> + +<PARA>At the end of the chapter is a section describing special +issues for this architecture which may affect the way you should +configure eCos for your target.</PARA> + + +<!-- ==================================================== --> + +<SECT1 id="ecos-startup-configs"> +<TITLE><!-- <xref> -->eCos Start-up Configurations</TITLE> + +<PARA>There are various ways to download an executable image to +a target board, and these involve different ways of preparing the +executable image. In the eCos Hardware Abstraction Layer (HAL package) +there are configuration options to support the different download +methods. The following table summarizes the ways in which an eCos +image can be prepared for different types of download. </PARA> + +<PARA><!-- <conditionaltext> --> <!-- NOTE: could not find it --></PARA> + +<TABLE> +<TITLE>Configuration for various download methods</TITLE> +<TGROUP COLS="2"> +<THEAD> +<ROW> +<ENTRY>Download method</ENTRY> +<ENTRY>HAL configuration</ENTRY> +</ROW> +</THEAD> +<TBODY> +<ROW> +<ENTRY>Burn hardware ROM</ENTRY> +<ENTRY> ROM start-up</ENTRY> +</ROW> +<ROW> +<ENTRY>Download to ROM emulator</ENTRY> +<ENTRY> ROM start-up</ENTRY> +</ROW> +<ROW> +<ENTRY>Download to board with CygMon or GDB stub ROM</ENTRY> +<ENTRY> RAM start-up</ENTRY> +</ROW> +<ROW> +<ENTRY>Download to simulator without CygMon or GDB stub ROM</ENTRY> +<ENTRY> ROM start-up</ENTRY> +</ROW> +<ROW> +<ENTRY>Download to simulator with CygMon</ENTRY> +<ENTRY> RAM start-up</ENTRY> +</ROW> +<ROW> +<ENTRY>Download to simulator ignoring devices</ENTRY> +<ENTRY> SIM configuration</ENTRY> +</ROW> +<ROW> +<ENTRY>Run synthetic target</ENTRY> +<ENTRY> RAM start-up</ENTRY> +</ROW> +</TBODY> +</TGROUP> +</TABLE> +<CAUTION> + +<PARA>You cannot run an application configured for RAM start-up +on the simulator directly: it will fail during start-up. You can +only download it to the simulator if +you are already running CygMon (or a GDB stub) in the simulator, +as described in the GNUPro documentation +or you load through the +<EMPHASIS>SID </EMPHASIS> +GDB debugging component. This is not the same as the simulated +stub, since it does not require a target program to be running to +get GDB to talk to it. It can be done before letting the simulator +run +or you use the ELF loader component to get a program into memory.</PARA> +</CAUTION><!-- <label> --><!-- <conditionaltext> --><!-- NOTE</label> --> + +<NOTE> +<PARA>Configuring eCos' HAL package for simulation should +rarely be needed for real development; binaries built with such +a kernel will not run on target boards at all,<!-- <conditionaltext> --> +and the MN10300 and +TX39 simulators can run binaries built for stdeval1 and jmr3904 +target boards. +The main use for a ``simulation'' configuration +is if you are trying to work around problems with the device drivers +or with the simulator. Also note that when using a TX39 system configured +for simulator start-up you should then invoke the simulator with +the <OPTION>--board=jmr3904pal</OPTION> +option instead of +<OPTION>--board=jmr3904</OPTION><!-- <conditionaltext> --></PARA> +</NOTE> + +<NOTE> +<PARA>If your chosen architecture does not have simulator support, +then the combinations above that refer to the simulator do not apply. +Similarly, if your chosen platform does not have CygMon or GDB stub +ROM support, the combinations listed above that use CygMon or GDB +stub ROMs do not apply.</PARA> +</NOTE> + +<PARA>The debugging environment for most developers will be either +a hardware board or the simulator, in which case they will be able +to select a single HAL configuration.</PARA> +<PARA>More information on the interactions between CygMon, the simulators, and GDB's +thread-aware debugging features is available in the GNUPro Reference Manual +for your specific architecture. </PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="using-configtool-windows-unix"> +<TITLE><!-- <xref> -->Using the <!-- <index></index> --> +Configuration Tool on Windows and UNIX</TITLE> +<PARA><!-- <conditionaltext> --> + +Note that the use of the <EMPHASIS>Configuration +Tool</EMPHASIS> is described in detail in the <EMPHASIS>eCos User's +Guide</EMPHASIS>.</PARA> + +<PARA>The <EMPHASIS>Configuration Tool</EMPHASIS> (see <XREF LINKEND="FIGURE-CONFIGURATION-TOOL">) +has five main elements: the <EMPHASIS>configuration window</EMPHASIS>, +the <emphasis>conflicts window</emphasis>, +the <EMPHASIS>properties window</EMPHASIS>, the <!-- <xref> --><EMPHASIS>short +description window</EMPHASIS>, +and the <EMPHASIS>output window</EMPHASIS>.</PARA> + +<FIGURE ID="FIGURE-CONFIGURATION-TOOL"> +<TITLE>Configuration Tool</TITLE><!-- <xref> --> +<GRAPHIC ENTITYREF="graphic1"></GRAPHIC> +</FIGURE> + +<PARA>Start by opening the templates window via <GUIMENUITEM>Build->Templates</GUIMENUITEM>. +Select the desired target (see <XREF LINKEND="FIGURE-TEMPLATE-SELECTION">).</PARA> + +<FIGURE ID="FIGURE-TEMPLATE-SELECTION"> +<TITLE>Template selection</TITLE><!-- <xref> --> +<GRAPHIC ENTITYREF="graphic2"></GRAPHIC> +</FIGURE> + +<PARA>Make sure that the configuration is correct for the target +in terms of endianness, CPU model, Startup type, etc. (see <XREF LINKEND="CONFIGURING-FOR-THE-TARGET">).</PARA> + +<FIGURE ID="CONFIGURING-FOR-THE-TARGET"> +<TITLE><!-- <conditionaltext> --><!-- <xref> -->Configuring +for the target</TITLE> +<GRAPHIC ENTITYREF="graphic3"></GRAPHIC> +</FIGURE> + +<PARA>Next, select the <EMPHASIS>Build->Library</EMPHASIS> menu +item to start building eCos (see <XREF LINKEND="FIGURE-SELECTING-THE-BUILD-LIBRARY-MENU-ITEM">). +The application will +configure the sources, prepare a build tree, and build the <FILENAME>libtarget.a</FILENAME> library, +which contains the eCos kernel and other packages.</PARA> + +<PARA>The output from the configuration process and the building +of <EMPHASIS>libtarget.a</EMPHASIS> will be shown in the output +window.</PARA> + +<PARA>Once the build process has finished you will have a kernel +with other packages in <FILENAME>libtarget.a</FILENAME>. You should +now build the eCos tests for your particular configuration. </PARA> + +<PARA>Select <EMPHASIS>Build</EMPHASIS>-><EMPHASIS>Batch +Build</EMPHASIS>-><EMPHASIS>Build</EMPHASIS> to build the +test project.</PARA><!-- <conditionaltext> --> +<FIGURE ID="FIGURE-SELECTING-THE-BUILD-LIBRARY-MENU-ITEM"><!-- <xref> --> +<TITLE>Selecting the Build Library menu item</TITLE> +<GRAPHIC ENTITYREF="graphic4"></GRAPHIC> +</FIGURE> + +<PARA>The <EMPHASIS>Save As</EMPHASIS> dialog box will appear, asking +you to specify a directory in which to place your save file. You +can use the default, but it is a good idea to make a subdirectory, +called <EMPHASIS>ecos-work</EMPHASIS> for example. </PARA> + +<FIGURE> +<TITLE>Save file dialog</TITLE> +<GRAPHIC ENTITYREF="graphic5"></GRAPHIC> +</FIGURE> + +<PARA>The first time you build an eCos library for a specific architecture, +the <EMPHASIS>Configuration Tool</EMPHASIS> may prompt you for the +location of the appropriate build tools (including make and gcc) +using a <EMPHASIS>Build Tools</EMPHASIS> dialog box (as shown in <XREF LINKEND="FIGURE-BUILD-TOOLS-DIALOG">). You can select a location from the drop down list, +browse to the directory using the <EMPHASIS>Browse</EMPHASIS> button, +or type in the location of the build tools manually.</PARA> + +<FIGURE ID="FIGURE-BUILD-TOOLS-DIALOG"><!-- <xref> --> +<TITLE>Build tools dialog</TITLE> +<GRAPHIC ENTITYREF="graphic6"></GRAPHIC> +</FIGURE> + +<PARA>The <EMPHASIS>Configuration Tool</EMPHASIS> may also prompt +you for the location of the user tools (such as cat and ls) using +a User Tools dialog box (as shown in <XREF LINKEND="FIGURE-USER-TOOLS-DIALOG">). As with +the <EMPHASIS>Build Tools</EMPHASIS> dialog, you can select a location +from the drop down list, browse to the directory using the <EMPHASIS>Browse</EMPHASIS> button, +or type in the location of the user tools manually. Note that on UNIX, this will often be unnecessary +as the tools will already be on your PATH.</PARA> + +<FIGURE ID="FIGURE-USER-TOOLS-DIALOG"><!-- <xref> --> +<TITLE>User tools dialog</TITLE> +<GRAPHIC ENTITYREF="graphic7"></GRAPHIC> +</FIGURE> + +<PARA>When the tool locations have been entered, the <EMPHASIS>Configuration +Tool</EMPHASIS> will configure the sources, prepare a build tree, +and build the <EMPHASIS>libtarget.a</EMPHASIS> library, which contains +the eCos kernel and other packages.</PARA> + +<PARA>The output from the configuration process and the building +of <EMPHASIS>libtarget.a</EMPHASIS> will be shown in the output +window. </PARA> + +<PARA>Once the build process has finished you will have a kernel +with other packages in <EMPHASIS>libtarget.a</EMPHASIS>. You should +now build the eCos tests for your particular configuration. </PARA> + +<PARA>You can do this by selecting <EMPHASIS>Build</EMPHASIS> -> <EMPHASIS>Tests</EMPHASIS>. +Notice that you could have selected <EMPHASIS>Tests</EMPHASIS> instead +of <EMPHASIS>Library</EMPHASIS> in the earlier step and it would +have built <EMPHASIS>both</EMPHASIS> the library and the tests, +but this would increase the build time substantially, and if you +do not need to build the tests it is unnecessary.</PARA> + +<FIGURE> +<TITLE>Selecting the Build Tests menu item</TITLE> +<GRAPHIC ENTITYREF="graphic8"></GRAPHIC> +</FIGURE> +<PARA><XREF LINKEND="TEST-SUITES"> will + guide you through running one of the test cases you just + built on the selected target, using GDB. </PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 ID="USING-ECOSCONFIG-ON-UNIX"> +<TITLE><!-- <xref> -->Using <!-- <index></index> --> +ecosconfig on Windows and UNIX</TITLE> + +<PARA>As an alternative to using the graphical <PRODUCTNAME>Configuration Tool</PRODUCTNAME>, +it is still possible to configure and build +a kernel by editing a configuration file manually and using the <EMPHASIS>ecosconfig</EMPHASIS> command. </PARA> + +<PARA>The following instructions assume that the PATH and ECOS_REPOSITORY environment +variables have been setup correctly as described in <XREF LINKEND="SOFTWARE-INSTALLATION-ON-UNIX">. +They also assume UNIX usage but equally well apply to Windows running Cygwin.</PARA> + +<PARA>Before invoking <EMPHASIS>ecosconfig</EMPHASIS> you need to +choose a directory in which to work. For the purposes of this tutorial, +the default path will be <FILENAME>BASE_DIR/ecos-work</FILENAME>. +Create this directory and change to it by typing: </PARA> + +<PROGRAMLISTING>$ mkdir BASE_DIR/ecos-work +$ cd BASE_DIR/ecos-work</PROGRAMLISTING> + +<PARA>To see what options can be used with <EMPHASIS>ecosconfig</EMPHASIS>, +type: </PARA> + +<PROGRAMLISTING>$ ecosconfig --help</PROGRAMLISTING> + +<PARA>The available packages, targets and templates may be listed +as follows:</PARA> + +<PROGRAMLISTING>$ ecosconfig list</PROGRAMLISTING> + +<PARA>Here is sample output from <EMPHASIS>ecosconfig</EMPHASIS> showing +the usage message.</PARA> + +<EXAMPLE> +<TITLE>Getting <!-- <index></index> --> +help from ecosconfig</TITLE> + +<PROGRAMLISTING>$ ecosconfig --help +Usage: ecosconfig [ qualifier ... ] [ command ] + commands are: + list : list repository contents + new TARGET [ TEMPLATE [ VERSION ] ] : create a configuration + target TARGET : change the target hardware + template TEMPLATE [ VERSION ] : change the template + add PACKAGE [ PACKAGE ... ] : add package(s) + remove PACKAGE [ PACKAGE ... ] : remove package(s) + version VERSION PACKAGE [ PACKAGE ... ] : change version of package(s) + export FILE : export minimal config info + import FILE : import additional config info + check : check the configuration + resolve : resolve conflicts + tree : create a build tree + qualifiers are: + --config=FILE : the configuration file + --prefix=DIRECTORY : the install prefix + --srcdir=DIRECTORY : the source repository + --no-resolve : disable conflict +resolution + --version : show version and copyright +$</PROGRAMLISTING> +</EXAMPLE> + +<EXAMPLE> + +<TITLE>ecosconfig output — <!-- <index></index> --> +list of available packages, targets and templates</TITLE> + +<PROGRAMLISTING>$ ecosconfig list +Package CYGPKG_CYGMON (CygMon support via eCos): +aliases: cygmon +versions: &Version; +Package CYGPKG_DEVICES_WALLCLOCK_DALLAS_DS1742 (Wallclock driver for Dallas 1742): +aliases: devices_wallclock_ds1742 device_wallclock_ds1742 +versions: &Version; +Package CYGPKG_DEVICES_WALLCLOCK_SH3 (Wallclock driver for SH3 RTC module): +aliases: devices_wallclock_sh3 device_wallclock_sh3 +versions: &Version; +Package CYGPKG_DEVICES_WATCHDOG_ARM_AEB (Watchdog driver for ARM/AEB board): +aliases: devices_watchdog_aeb device_watchdog_aeb +versions: &Version; +Package CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285 (Watchdog driver for ARM/EBSA285 board): +aliases: devices_watchdog_ebsa285 device_watchdog_ebsa285 +versions: &Version; +… +</PROGRAMLISTING> +</EXAMPLE> + +<PARA>For detailed information about how to edit the ecos.ecc file, +see the <EMPHASIS>CDL Writer's Guide</EMPHASIS> and <EMPHASIS>Editing +an eCos Savefile</EMPHASIS> in the <EMPHASIS>eCos User's +Guide</EMPHASIS>.</PARA> + +<SECT2> +<TITLE>Selecting a <!-- <index></index> --> +Target</TITLE> + +<PARA>To select the MN10300 (AM31) target, building for running +under the simulator, type: </PARA> + +<PROGRAMLISTING>$ tclsh BASE_DIR/packages/pkgconf.tcl --target=mn10300 --platform=stdeval1 --startup=rom</PROGRAMLISTING> + +<PARA>To select the AM33 target, the STB reference board platform, +and RAM start-up, type: </PARA> + +<PROGRAMLISTING>$ tclsh BASE_DIR/packages/pkgconf.tcl --target=am33 --platform=stb --startup=ram</PROGRAMLISTING> +<PARA>To select the TX39 target, building for running under the +simulator, type: </PARA> + +<PROGRAMLISTING>$ tclsh BASE_DIR/packages/pkgconf.tcl --target=tx39 --platform=jmr3904 --startup=rom</PROGRAMLISTING> +<PARA>To configure for a PowerPC target, building for running under +the simulator, type: </PARA> + +<PROGRAMLISTING>$ tclsh BASE_DIR/packages/pkgconf.tcl --target=powerpc --platform=sim --startup=ram</PROGRAMLISTING> +<PARA>To configure for a SPARClite target, building for running +under the simulator, type: </PARA> + +<PROGRAMLISTING>$ tclsh BASE_DIR/packages/pkgconf.tcl --target=sparclite --platform=sim --startup=ram</PROGRAMLISTING> +<PARA><!-- <conditionaltext> -->To configure for a listed target, type: </PARA> + +<PROGRAMLISTING>$ ecosconfig new <target></PROGRAMLISTING> +<PARA>For example, to configure for the ARM PID development board, +type: </PARA> + +<PROGRAMLISTING>$ ecosconfig new pid</PROGRAMLISTING> + +<PARA>Then edit the generated file, <FILENAME>ecos.ecc</FILENAME>, +setting the options as required for the target (endianess, CPU model, +Startup type, etc.)</PARA> + +<PARA>Create a build tree for the configured target by typing:</PARA> + +<PROGRAMLISTING>$ ecosconfig tree</PROGRAMLISTING> + +<PARA>You can now run the command <EMPHASIS>make</EMPHASIS> or <EMPHASIS>make +tests</EMPHASIS>, after which you will be at the same point you +would be after running the <PRODUCTNAME>Configuration Tool</PRODUCTNAME> on +Windows— you can start developing your own applications, +following the steps in <XREF LINKEND="BUILDING-AND-RUNNING-SAMPLE-APPLIATIONS">. </PARA> + +<PARA>The procedure shown above allows you to do very coarse-grained +configuration of the eCos kernel: you can select which packages +to include in your kernel, and give target and start-up options. +But you cannot select components within a package, or set the very +fine-grained options. </PARA> + +<PARA>To select fine-grained configuration options you will need +to edit the configuration file ecos.ecc in the current directory +and regenerate the build tree.</PARA> + +<CAUTION> +<PARA>You should follow the manual configuration process described +above very carefully, and you should read the comments in each file +to see when one option depends on other options or packages being +enabled or disabled. If you do not, you might end up with an inconsistently +configured kernel which could fail to build or might execute + incorrectly.</PARA> +</CAUTION> + +</SECT2> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="architectural-notes"> +<TITLE>Architectural Notes</TITLE> +<SECT2> +<TITLE>ARM and Thumb Interworking</TITLE> +<PARA>While GNUPro tools allow ARM and Thumb code to be mixed on +a per-object basis, the eCos library (libtarget.a) must be compiled +in whole for either ARM or Thumb. This is controlled by the "Enable +Thumb instruction set" (CYGHWR_THUMB) switch. Note that +not all targets have support for Thumb mode execution.</PARA> +<PARA>Adding <OPTION>-mthumb-interwork</OPTION> to +the architecture options will allow the library to be linked with +the application code of either ARM or Thumb type - or a mix. See +the ARM GNUPro manuals for details about ARM and Thumb mode interworking.</PARA> +</SECT2> +<SECT2> +<TITLE>CPU Family Model</TITLE> +<PARA>Some targets can be equipped with either an ARM7 or an ARM9 +daughter CPU module. The "ARM CPU family" (CYGHWR_HAL_ARM_CPU_FAMILY) option + should be set accordingly.</PARA> +<PARA>Changing this option primarily affects compiler optimization +in this release.</PARA> +</SECT2> +<SECT2> +<TITLE>CPU Endian Mode</TITLE> +<PARA>Some targets support either little or big endian operation. +The "Use big-endian mode" (CYGHWR_HAL_ARM_BIGENDIAN) +option should be set accordingly.</PARA> +</SECT2> +</SECT1> + +<!-- ==================================================== --> + +</CHAPTER> +<CHAPTER ID="TEST-SUITES-AGAIN"><!-- <conditionaltext> --><!-- NOTE: hmm, nothing there --> +<TITLE><!-- <xref> -->Test <!-- <index></index> -->Suites</TITLE> +<PARA>The eCos kernel and other packages have test suites that rigorously +exercise the available features and confirm correct execution. The + tests are run on many different possible configurations, but the +high number of configuration permutations makes it impossible to +test them all. The use of test suites is particularly important +for embedded systems, where software robustness is a priority. All +eCos software is tested prior to shipping, but if you define your +own configuration, you will probably want to verify that the test +cases work for it.</PARA> +<PARA>This release includes test suites for the eCos kernel, kernel +C API, C library, ITRON compatibility, and device driver packages. +The use of the test suites is similar for all packages. The tests +are supplied as source code for building with your specific eCos + configurations. The test case source code is located under the base +source directory BASE_DIR/packages/:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>compat/uitron/&Version;/tests + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>hal/common/&Version;/tests + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>io/serial/&Version;/tests + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>io/wallclock/&Version;/tests + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>devs/watchdog/&Version;/tests + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>kernel/&Version;/tests </PARA> +</LISTITEM> +<LISTITEM> +<PARA>language/c/libc/&Version;/tests + </PARA> +</LISTITEM> +<LISTITEM> +<PARA>language/c/libm/&Version;/tests</PARA> +</LISTITEM> +</ITEMIZEDLIST> +<PARA> There may be additional tests found in other packages.</PARA> +<PARA>Each test suite consists of a number of test cases which can +be executed individually. A test case may involve one or more individual + tests of the package's features. Successful completion +of each test within the test case is reported as a line of text +that is sent to the diagnostic channel (usually the serial port) +for display on a terminal or terminal emulator.</PARA> +<PARA>Each test case runs only once and usually requires target +hardware to be reset on completion. Note that certain test cases +may not terminate immediately, especially if they involve delays +and run on a target simulator.</PARA> + +<!-- ==================================================== --> + +<SECT1 id="using-configtool"> +<TITLE>Using the Configuration Tool</TITLE> + +<PARA>Using the eCos Configuration Tool it is possible to automate +the downloading and execution of tests with the appropriately configured +eCos packages. To do so, compile and link the test cases by using +the <EMPHASIS>Build->Tests</EMPHASIS> menu item, after +which the tests can be downloaded and executed by selecting <EMPHASIS>Tools->Run +Tests</EMPHASIS>.</PARA> +<PARA>When a test run is invoked, a resizable property sheet is +displayed, comprising three tabs: <EMPHASIS>Executables</EMPHASIS>, <EMPHASIS>Output</EMPHASIS> and <EMPHASIS>Summary</EMPHASIS>.</PARA> +<PARA>Three buttons appear on the property sheet itself: <EMPHASIS>Run/Stop</EMPHASIS>, <EMPHASIS>Close</EMPHASIS> and <EMPHASIS>Properties</EMPHASIS>.</PARA> +<PARA>The <EMPHASIS>Run</EMPHASIS> button is used to initiate a +test run. Those tests selected on the Executables tab are run, +and the output recorded on the <EMPHASIS>Output</EMPHASIS> and <EMPHASIS>Summary</EMPHASIS> tabs. +During the course of a run, the <EMPHASIS>Run</EMPHASIS> button +changes to <EMPHASIS>Stop</EMPHASIS>. This button may be used to +interrupt a test run at any point.</PARA> +<PARA>See the <EMPHASIS>eCos User's Guide</EMPHASIS> for +further details.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="using-commandline"> +<TITLE>Using the command line</TITLE> +<PARA>It may be necessary to run tests by hand if the automated +tool finds any failing tests: it may be necessary to diagnose the +problem by debugging the test.</PARA> +<PARA>Build the tests by typing ‘make tests' in +the root of the build directory. This will cause the tests to be +built and installed under <FILENAME><install-path>/tests/</FILENAME>.</PARA> +<PARA>Running the test manually is done simply by invoking GDB, +connecting to the target, downloading the test, optionally setting +some breakpoints, and then running the test. All this was covered +in <XREF LINKEND="TARGET-SETUP">.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="testing-filters"> +<TITLE>Testing Filters</TITLE> +<PARA>While most test cases today run solely in the target environment, +some packages may require external testing infrastructure and/or +feedback from the external environment to do complete testing.</PARA> +<PARA>The serial package is an example of this. It is the first +package to require external testing infrastructure, but it will +certainly not be the last.</PARA> +<PARA>Since the serial line is also used for communication with +GDB, a filter is inserted in the communication pathway between +GDB and the serial device which is connected to the hardware target. +The filter forwards all communication between the two, but also +listens for special commands embedded in the data stream from the +target.</PARA> +<PARA>When such a command is seen, the filter stops forwarding data +to GDB from the target and enters a special mode. In this mode +the test case running on the target is able to control the filter, +commanding it to run various tests. While these tests run, GDB is +isolated from the target.</PARA> +<PARA>As the test completes (or if the filter detects a target crash) +the communication path between GDB and the hardware target is re-established, +allowing GDB to resume control.</PARA> +<PARA>In theory, it is possible to extend the filter to provide +a generic framework for other target-external testing components, +thus decoupling the testing infrastructure from the (possibly limited) +communication means provided by the target (serial, JTAG, Ethernet, +etc). </PARA> +<PARA>Another advantage is that the host tools will not need to +know about the various testing environments required by the eCos +packages, since all contact with the target will continue to happen +via GDB.</PARA> +<PARA>It remains to be seen if it will be possible, or sensible, +to implement all target-external testing infrastructure via filters.</PARA> +</SECT1> + +<!-- ==================================================== --> + +</CHAPTER> +<CHAPTER ID="RUNNING-AN-ECOS-TEST-CASE"> +<TITLE>Running an eCos Test Case</TITLE> +<PARA>In <XREF LINKEND="RUNNING-APPLICATIONS-ON-THE-TARGET"> you +ran the prebuilt test case on real hardware; now you are ready to +run one of the test programs in the simulated environment or as +a Linux application.</PARA> +<NOTE> +<PARA>If the architecture you use does not have simulator support, +you need to run the following tests on the evaluation boards. Make +sure you have configured and built eCos for the correct board and +for RAM start-up instead of ROM start-up as described previously. +Consult “Test Suites” on page 112 for +details about downloading the test to the board. Otherwise, the +program behavior as described below should be the same.</PARA> +</NOTE> + +<!-- ==================================================== --> + +<SECT1 id="using-configtool-testcase"> +<TITLE>Using the Configuration Tool</TITLE> +<PARA>Test executables that have been linked using the Build/Tests +operation against the current configuration can be executed by selecting + <EMPHASIS>Tools->Run Tests</EMPHASIS>.</PARA> +<PARA>When a test run is invoked, a property sheet is displayed, +comprising three tabs: <EMPHASIS>Executables</EMPHASIS>, <EMPHASIS>Output</EMPHASIS> and <EMPHASIS>Summary</EMPHASIS>.</PARA> +<PARA>Note that the property sheet is resizable.</PARA> +<PARA>Three buttons appear on the property sheet itself: <EMPHASIS>Run/Stop</EMPHASIS>, <EMPHASIS>Close</EMPHASIS> and <EMPHASIS>Properties</EMPHASIS>.</PARA> +<PARA>The <EMPHASIS>Run</EMPHASIS> button is used to initiate a +test run. Those tests selected on the <EMPHASIS>Executables</EMPHASIS> tab +are run, and the output recorded on the <EMPHASIS>Output</EMPHASIS> and <EMPHASIS>Summary</EMPHASIS> tabs. +During the course of a run, the <EMPHASIS>Run</EMPHASIS> button +changes to “Stop”. The button may be used to interrupt +a test run at any point.</PARA> +<PARA>See the <EMPHASIS>eCos User’s Guide</EMPHASIS> for +further details.</PARA> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="using-commandline-testcase"> +<TITLE>Using the command line</TITLE> +<PARA>Start a command shell (such as an MS-DOS window in Windows +NT) with the environment variables set as described in the GNUPro +documentation. If using a simulator, define the appropriate GDB +macro described in “ROM Monitor Image” on page 22. +Change to the directory in which you set up your build tree, and + invoke <!-- <index></index> --> GDB +on the test program.</PARA> +<PARA>To run the <!-- <index></index> -->bin_sem0 test +(which will test the kernel for the correct creation and destruction +of binary semaphores) type: </PARA> +<PROGRAMLISTING>$ gdb -nw install/tests/kernel/&Version;/tests/bin_sem0</PROGRAMLISTING> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="starting-gdb"> +<TITLE>Starting up GDB</TITLE> +<PARA>You should see output similar to the following in the command +window:</PARA> +<PROGRAMLISTING>GNU gdb THIS-GDB-VERSION +Copyright 1998 Free Software Foundation, Inc. +GDB is free software, covered by the GNU General Public License, and you are +welcome to change it and/or distribute copies of it under certain conditions. +Type "show copying" to see the conditions. This version of GDB is supported +for customers of Red Hat. Type "show warranty" for details. +This GDB was configured as "--host=THIS-HOST --target=THIS-TARGET". +(gdb) </PROGRAMLISTING> +<PARA>If you are trying to run a synthetic target test on <!-- <index></index> -->Linux, +skip the simulator connection and download steps. Otherwise, specify +that you are using the simulator target (rather than real hardware) +by typing: </PARA> +<PROGRAMLISTING>(gdb) msim</PROGRAMLISTING> +<PARA>for the MN10300 AM31</PARA> +<PROGRAMLISTING>(gdb) tsim</PROGRAMLISTING> +<PARA>for the TX39</PARA> +<PROGRAMLISTING>(gdb) psim</PROGRAMLISTING> +<PARA>for the PowerPC.</PARA> +<PROGRAMLISTING>(gdb) ssim</PROGRAMLISTING> +<PARA>for the SPARClite.</PARA> +<PARA>At this point, if you are using the simulator, enter the appropriate +GDB macro to initialize it. You will then see output similar to +the following: </PARA> +<PROGRAMLISTING>Connected to the simulator. +(gdb) </PROGRAMLISTING> +<PARA>Now download the program to the (simulator) target with</PARA> +<PROGRAMLISTING>(gdb) load</PROGRAMLISTING> +<PARA>You should see output similar to the following on your screen: </PARA> +<PROGRAMLISTING>Loading section .rom_vectors, size 0xc0 +lma 0x40000000 +Loading section .text, size 0x1b3b lma 0x400000c0 +Loading section .rodata, size 0x2f4 lma 0x40001bfc +Loading section .data, size 0x7c lma 0x40001ef0 +Start address 0x40000000 +Transfer rate: 64344 bits in <1 sec. +(gdb)</PROGRAMLISTING> +<PARA>You are now ready to run your program as if this were an ordinary +debugging session with GDB. If you type </PARA> +<PROGRAMLISTING>(gdb) run</PROGRAMLISTING> +<PARA>you will see output similar to the following: </PARA> +<PROGRAMLISTING>Starting program: /ecos-work/./install/tests/kernel/bin_sem0.exe +PASS:<Binary Semaphore 0 OK> +EXIT:<done> </PROGRAMLISTING> +<NOTE> +<PARA> If you are using real hardware rather than a simulator, + you must use the GDB command “continue” rather + than “run” to start your program.</PARA> +</NOTE> +<PARA>You must kill your GDB session with <EMPHASIS>Control+C</EMPHASIS>, +or it will sit in the “idle” thread and use up +CPU time. Type <command>quit</command> and you are +done. </PARA> +<PARA>See also “Running Applications on the Target” on page 108.</PARA> +</SECT1> + +</CHAPTER> + + +<!-- ==================================================== --> + +<CHAPTER ID="BUILDING-AND-RUNNING-SAMPLE-APPLIATIONS"><!-- <conditionaltext> --> +<TITLE><!-- <xref> -->Building and <!-- <index></index> -->Running Sample Applications</TITLE> +<PARA>The example programs in this tutorial are included, along +with a <EMPHASIS>Makefile</EMPHASIS>, in the <EMPHASIS>examples</EMPHASIS> directory +of the eCos distribution. The first program you will run is a <EMPHASIS>hello +world</EMPHASIS>-style application, then you will run a more complex +application that demonstrates the creation of threads and the use +of cyg_thread_delay(), and finally you will run +one that uses clocks and alarm handlers.</PARA> +<PARA>The <EMPHASIS>Makefile</EMPHASIS> has two variables you will +need to adjust: <EMPHASIS>PKG_INSTALL_DIR</EMPHASIS> and <EMPHASIS>XCC</EMPHASIS>.</PARA> +<PARA>Edit the Makefile, setting <EMPHASIS>PKG_INSTALL_DIR</EMPHASIS> to +the install tree previously created by <COMMAND>ecosconfig</COMMAND> and +uncommenting the relevant <EMPHASIS>XCC</EMPHASIS> line for your +architecture.</PARA> + +<!-- ==================================================== --> + +<SECT1 id="ecos-hello-world"> +<TITLE>eCos Hello World</TITLE> +<PARA>The following code is found in the file <FILENAME><!-- <index></index> -->hello.c</FILENAME> +in the <FILENAME>examples</FILENAME> directory: </PARA> +<SECT2> +<TITLE>eCos<!-- <index></index> --> +hello world program listing</TITLE> +<PROGRAMLISTING>/* this is a simple hello world program */ +#include <stdio.h> +int main(void) +{ + printf("Hello, eCos world!\n"); + return 0; +} </PROGRAMLISTING> +<PARA>To compile this or any other program that is not part of the +eCos distribution, you can follow the procedures described below. Type +this explicit compilation instruction (assuming your current working +directory is also where you built the eCos kernel):</PARA> +<PROGRAMLISTING>$ gcc -g -IBASE_DIR/ecos-work/install/include hello.c -LBASE_DIR/ecos-work/install/lib -Ttarget.ld -nostdlib</PROGRAMLISTING> +<PARA>The compilation instruction above contains some standard GCC +options (for example, <OPTION>-g</OPTION> enables +debugging), as well as some mention of paths (<OPTION>-IBASE_DIR/ecos-work/install/include</OPTION> allows +files like <FILENAME>cyg/kernel/kapi.h</FILENAME> to +be found, and <OPTION>-LBASE_DIR/ecos-work/install/lib</OPTION> allows +the linker to find <OPTION>-Ttarget.ld</OPTION>). </PARA> +<PARA>The executable program will be called <FILENAME>a.out</FILENAME>. </PARA> +<NOTE> +<PARA>Some target systems require special options to be passed to +gcc to compile correctly for that system. Please examine the Makefile +in the examples directory to see if this applies to your target.</PARA> +</NOTE> +<PARA>You can now run the resulting program in the simulator using +GDB the way you ran the test case. The procedure will be the same, +but this time run "gdb" specifying "-nw a.out" on the command line:</PARA> +<PROGRAMLISTING>$ gdb -nw a.out</PROGRAMLISTING> +<PARA>For targets other than the synthetic linux target, you should +now run the usual GDB commands described earlier. Once this is done, +typing the command "run" at the (gdb) prompt ("continue" for real +hardware) will allow the program to execute and print the string +"Hello, eCos world!" on your screen.</PARA> +<PARA>On the synthetic linux target, you may use the "run" command +immediately - you do not need to invoke simulator macros, nor the +"load" command.<!-- <conditionaltext> --></PARA> + +</SECT2> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="sample-twothreads"> +<TITLE>A Sample Program with Two Threads</TITLE> +<PARA>Below is a program that uses some of eCos' system +calls. It creates two threads, each of which goes into an infinite +loop in which it sleeps for a while (using cyg_thread_delay()). +This code is found in the file <EMPHASIS><!-- <index></index> -->twothreads.c +in th</EMPHASIS>e exampl<EMPHASIS>es director</EMPHASIS>y.</PARA> +<SECT2> +<TITLE>eCos <!-- <index></index> --> +two-threaded program listing</TITLE> +<PROGRAMLISTING>#include <cyg/kernel/kapi.h> +#include <stdio.h> +#include <math.h> +#include <stdlib.h> + +/* now declare (and allocate space for) some kernel objects, + like the two threads we will use */ +cyg_thread thread_s[2]; /* space for two thread objects */ + +char stack[2][4096]; /* space for two 4K stacks */ + +/* now the handles for the threads */ +cyg_handle_t simple_threadA, simple_threadB; + +/* and now variables for the procedure which is the thread */ +cyg_thread_entry_t simple_program; + +/* and now a mutex to protect calls to the C library */ +cyg_mutex_t cliblock; + +/* we install our own startup routine which sets up threads */ +void cyg_user_start(void) +{ + printf("Entering twothreads' cyg_user_start() function\n"); + + cyg_mutex_init(&cliblock); + + cyg_thread_create(4, simple_program, (cyg_addrword_t) 0, + "Thread A", (void *) stack[0], 4096, + &simple_threadA, &thread_s[0]); + cyg_thread_create(4, simple_program, (cyg_addrword_t) 1, + "Thread B", (void *) stack[1], 4096, + &simple_threadB, &thread_s[1]); + + cyg_thread_resume(simple_threadA); + cyg_thread_resume(simple_threadB); +} + +/* this is a simple program which runs in a thread */ +void simple_program(cyg_addrword_t data) +{ + int message = (int) data; + int delay; + + printf("Beginning execution; thread data is %d\n", message); + + cyg_thread_delay(200); + + for (;;) { + delay = 200 + (rand() % 50); + + /* note: printf() must be protected by a + call to cyg_mutex_lock() */ + cyg_mutex_lock(&cliblock); { + printf("Thread %d: and now a delay of %d clock ticks\n", + message, delay); + } + cyg_mutex_unlock(&cliblock); + cyg_thread_delay(delay); + } +} </PROGRAMLISTING> +<PARA>When you run the program (by typing <PROGRAMLISTING>run</PROGRAMLISTING> at +the (<EMPHASIS>gdb</EMPHASIS>) prompt) the output should look like +this:</PARA> +<PROGRAMLISTING>Starting program: BASE_DIR/examples/twothreads.exe +Entering twothreads' cyg_user_start() +function +Beginning execution; thread data is 0 +Beginning execution; thread data is 1 +Thread 0: and now a delay of 240 clock ticks +Thread 1: and now a delay of 225 clock ticks +Thread 1: and now a delay of 234 clock ticks +Thread 0: and now a delay of 231 clock ticks +Thread 1: and now a delay of 224 clock ticks +Thread 0: and now a delay of 249 clock ticks +Thread 1: and now a delay of 202 clock ticks +Thread 0: and now a delay of 235 clock ticks </PROGRAMLISTING> +<NOTE> +<PARA>When running in a simulator the <!-- <index></index> --> +delays might be quite long. On a hardware board (where the clock +speed is 100 ticks/second) the delays should average to +about 2.25 seconds. In simulation, the delay will depend on the +speed of the processor and will almost always be much slower than +the actual board. You might want to reduce the delay parameter when running +in simulation.</PARA> +</NOTE> +<PARA><XREF LINKEND="FIGURE-TWOTHREADS-WITH-SIMPLE-PRINTS"> shows how this multitasking program executes. +Note that apart from the thread creation system calls, this program +also creates and uses a <EMPHASIS><!-- <index></index> -->mutex</EMPHASIS> for synchronization +between the printf() calls in the two threads. This is because +the C library standard I/O (by default) is configured not +to be thread-safe, which means that if more than one thread is using +standard I/O they might corrupt each other. This is fixed +by a mutual exclusion (or <EMPHASIS>mutex</EMPHASIS>) lockout mechanism: the threads +do not call printf() until cyg_mutex_lock() +has returned, which only happens when the other thread calls cyg_mutex_unlock().</PARA> +<PARA>You could avoid using the mutex by configuring the C library +to be thread-safe (by selecting the component <LITERAL>CYGSEM_LIBC_STDIO_THREAD_SAFE_STREAMS</LITERAL>). +Keep in mind that if the C library is thread-safe, you can no longer +use printf() in cyg_user_start(). </PARA> +<FIGURE ID="FIGURE-TWOTHREADS-WITH-SIMPLE-PRINTS"><!-- <xref> --> +<TITLE>Two threads with simple print statements after random +delays</TITLE> +<GRAPHIC ENTITYREF="graphic9"></GRAPHIC> +</FIGURE> +</SECT2> +</SECT1> +</CHAPTER> +<CHAPTER ID="CLOCKS-AND-ALARM-HANDLERS"> +<TITLE>More Features — <!-- <index></index> -->Clocks and Alarm +Handlers</TITLE> +<PARA>If a program wanted to execute a task at a given time, or +periodically, it could do it in an inefficient way by sitting in +an infinite loop and checking the real-time clock to see if the +proper amount of time has elapsed. But operating systems usually provide +system calls which allow the program to be interrupted at the desired +time.</PARA> +<PARA>eCos provides a rich timekeeping formalism, involving <EMPHASIS>counters</EMPHASIS>, <EMPHASIS>clocks</EMPHASIS>, <EMPHASIS>alarms</EMPHASIS>, and <EMPHASIS>timers</EMPHASIS>. +The precise definition, relationship, and motivation of these features +is beyond the scope of this tutorial, but these examples illustrate +how to set up basic periodic tasks.</PARA> +<PARA><EMPHASIS><!-- <index></index> -->Alarms are events that happen at +a given time, either once or periodically. A thread associates an +alarm handling function with the alarm, so that the function will +be invoked every time the alarm “goes off</EMPHASIS>”.</PARA> + +<!-- ==================================================== --> + +<SECT1 id="sample-alarms"> +<TITLE>A Sample Program with Alarms</TITLE> +<PARA><!-- <index></index> --><FILENAME>simple-alarm.c</FILENAME> (in the examples +directory) is a short program that creates a thread that creates an +alarm. The alarm is handled by the function <FUNCTION>test_alarm_func()</FUNCTION>, +which sets a global variable. When the main thread of execution +sees that the variable has changed, it prints a message.</PARA> +<EXAMPLE> +<TITLE>A sample <!-- <index></index> --> +program that creates an alarm</TITLE> +<PROGRAMLISTING> /* this is a very simple program meant to demonstrate + a basic use of time, alarms and alarm-handling functions in eCos */ + +#include <cyg/kernel/kapi.h> + +#include <stdio.h> + +#define NTHREADS 1 +#define STACKSIZE 4096 + +static cyg_handle_t thread[NTHREADS]; + +static cyg_thread thread_obj[NTHREADS]; +static char stack[NTHREADS][STACKSIZE]; + +static void alarm_prog( cyg_addrword_t data ); + +/* we install our own startup routine which sets up + threads and starts the scheduler */ +void cyg_user_start(void) +{ + cyg_thread_create(4, alarm_prog, (cyg_addrword_t) 0, + "alarm_thread", (void *) stack[0], + STACKSIZE, &thread[0], &thread_obj[0]); + cyg_thread_resume(thread[0]); +} + +/* we need to declare the alarm handling function (which is + defined below), so that we can pass it to cyg_alarm_initialize() */ +cyg_alarm_t test_alarm_func; + +/* alarm_prog() is a thread which sets up an alarm which is then + handled by test_alarm_func() */ +static void alarm_prog(cyg_addrword_t data) +{ + cyg_handle_t test_counterH, system_clockH, test_alarmH; + cyg_tick_count_t ticks; + cyg_alarm test_alarm; + unsigned how_many_alarms = 0, prev_alarms = 0, tmp_how_many; + + system_clockH = cyg_real_time_clock(); + cyg_clock_to_counter(system_clockH, &test_counterH); + cyg_alarm_create(test_counterH, test_alarm_func, + (cyg_addrword_t) &how_many_alarms, + &test_alarmH, &test_alarm); + cyg_alarm_initialize(test_alarmH, cyg_current_time()+200, 200); + + /* get in a loop in which we read the current time and + print it out, just to have something scrolling by */ + for (;;) { + ticks = cyg_current_time(); + printf("Time is %llu\n", ticks); + /* note that we must lock access to how_many_alarms, since the + alarm handler might change it. this involves using the + annoying temporary variable tmp_how_many so that I can keep the + critical region short */ + cyg_scheduler_lock(); + tmp_how_many = how_many_alarms; + cyg_scheduler_unlock(); + if (prev_alarms != tmp_how_many) { + printf(" --- alarm calls so far: %u\n", tmp_how_many); + prev_alarms = tmp_how_many; + } + cyg_thread_delay(30); + } +} + +/* test_alarm_func() is invoked as an alarm handler, so + it should be quick and simple. in this case it increments + the data that is passed to it. */ +void test_alarm_func(cyg_handle_t alarmH, cyg_addrword_t data) +{ + ++*((unsigned *) data); +} </PROGRAMLISTING> +</EXAMPLE> +<PARA>When you run this program (by typing <COMMAND>run</COMMAND> at +the (<EMPHASIS>gdb</EMPHASIS>) prompt) the output should look like +this:</PARA> +<SCREEN>Starting program: BASE_DIR/examples/simple-alarm.exe +Time is 0 +Time is 30 +Time is 60 +Time is 90 +Time is 120 +Time is 150 +Time is 180 +Time is 210 + --- alarm calls so far: 1 +Time is 240 +Time is 270 +Time is 300 +Time is 330 +Time is 360 +Time is 390 +Time is 420 + --- alarm calls so far: 2 +Time is 450 +Time is 480 </SCREEN> +<NOTE> +<PARA>When running in a simulator the <!-- <index></index> --> +delays might be quite long. On a hardware board (where the clock +speed is 100 ticks/second) the delays should average to +about 0.3 seconds (and 2 seconds between alarms). In simulation, +the delay will depend on the speed of the processor and will almost +always be much slower than the actual board. You might want to reduce +the delay parameter when running in simulation.</PARA> +</NOTE> +<PARA>Here are a few things you might notice about this program:</PARA> +<ITEMIZEDLIST> +<LISTITEM> +<PARA>It used the cyg_real_time_clock(); +this always returns a handle to the default system real-time <!-- <index></index> --> +clock. </PARA> +</LISTITEM> +<LISTITEM> +<PARA><!-- <index></index> -->Alarms are based on <!-- <index></index> --> +counters, so the function cyg_alarm_create() uses +a counter handle. The program used the function cyg_clock_to_counter() +to strip the clock handle to the underlying counter handle. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>Once the alarm is created it is <!-- <index></index> --> +initialized with cyg_alarm_initialize(), which +sets the time at which the alarm should go off, as well as the period +for repeating alarms. It is set to go off at the current time and +then to repeat every 200 ticks. </PARA> +</LISTITEM> +<LISTITEM> +<PARA>The alarm handler function test_alarm_func() +conforms to the guidelines for writing alarm handlers and other <!-- <index></index> --><!-- <index></index> --> +delayed service routines: +it does not invoke any functions which might lock the scheduler. +This is discussed in detail in the <CITETITLE>eCos Reference Manual</CITETITLE>, in the chapter Requirements for programs.</PARA> +</LISTITEM> +<LISTITEM> +<PARA>There is a <EMPHASIS>critical region</EMPHASIS> in this +program: the variable <LITERAL>how_many_alarms</LITERAL> is accessed +in the main thread of control and is also modified in the alarm +handler. To prevent a possible (though unlikely) race condition +on this variable, access to <LITERAL>how_many_alarms</LITERAL> in +the principal thread is protected by calls to <FUNCTION>cyg_scheduler_lock()</FUNCTION> +and <FUNCTION>cyg_scheduler_unlock()</FUNCTION>. When the scheduler +is locked, the alarm handler will not be invoked, so the problem +is averted. </PARA> +</LISTITEM> +</ITEMIZEDLIST> +</SECT1> +</CHAPTER> +</PART> +<PART ID="APPENDICES"> +<TITLE>Appendices</TITLE> +<APPENDIX ID="REAL-TIME-CHARACTERIZATION"> +<TITLE>Real-time characterization</TITLE> +<PARA>For a discussion of real-time performance measurement for eCos, see the eCos +Users' Guide. + </PARA> +<PARA> Sample numbers: + </PARA> + +<!-- ==================================================== --> + +<SECT1 id="rt-arm-aeb1"> +<TITLE>Board: ARM AEB-1 Revision B Evaluation Board</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: ARM AEB-1 Revision B Evaluation Board + +CPU : Sharp LH77790A 24MHz + + + +Startup, main stack : stack used 404 size 2400 +Startup : Interrupt stack used 128 size 2048 +Startup : Idlethread stack used 80 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 13 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 193.49 microseconds (290 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 7 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 110.19 104.67 116.00 3.26 42% 28% Create thread + 34.00 34.00 34.00 0.00 100% 100% Yield thread [all suspended] + 24.67 24.67 24.67 0.00 100% 100% Suspend [suspended] thread + 25.05 24.67 25.33 0.33 57% 42% Resume thread + 37.14 36.67 37.33 0.27 71% 28% Set priority + 3.81 3.33 4.00 0.27 71% 28% Get priority + 80.00 80.00 80.00 0.00 100% 100% Kill [suspended] thread + 33.90 33.33 34.00 0.16 85% 14% Yield [no other] thread + 45.90 44.00 46.67 0.54 57% 14% Resume [suspended low prio] thread + 24.57 24.00 24.67 0.16 85% 14% Resume [runnable low prio] thread + 42.29 36.67 43.33 1.61 85% 14% Suspend [runnable] thread + 33.90 33.33 34.00 0.16 85% 14% Yield [only low prio] thread + 24.67 24.67 24.67 0.00 100% 100% Suspend [runnable->not runnable] + 80.00 80.00 80.00 0.00 100% 100% Kill [runnable] thread + 43.33 43.33 43.33 0.00 100% 100% Destroy [dead] thread + 106.29 101.33 107.33 1.41 85% 14% Destroy [runnable] thread + 144.95 141.33 166.00 6.01 85% 85% Resume [high priority] thread + 78.31 76.67 254.67 2.75 99% 99% Thread switch + + 4.00 4.00 4.00 0.00 100% 100% Scheduler lock + 16.37 16.00 16.67 0.33 56% 43% Scheduler unlock [0 threads] + 16.37 16.00 16.67 0.33 56% 43% Scheduler unlock [1 suspended] + 16.37 16.00 16.67 0.33 56% 43% Scheduler unlock [many suspended] + 16.37 16.00 16.67 0.33 56% 43% Scheduler unlock [many low prio] + + 10.67 10.67 10.67 0.00 100% 100% Init mutex + 28.67 28.67 28.67 0.00 100% 100% Lock [unlocked] mutex + 30.44 30.00 31.33 0.33 59% 37% Unlock [locked] mutex + 25.42 25.33 26.00 0.15 87% 87% Trylock [unlocked] mutex + 22.50 22.00 22.67 0.25 75% 25% Trylock [locked] mutex + 5.75 5.33 6.00 0.31 62% 37% Destroy mutex + 185.33 185.33 185.33 0.00 100% 100% Unlock/Lock mutex + + 20.17 20.00 20.67 0.25 75% 75% Create mbox + 2.92 2.67 3.33 0.31 62% 62% Peek [empty] mbox + 32.42 32.00 32.67 0.31 62% 37% Put [first] mbox + 3.00 2.67 3.33 0.33 100% 50% Peek [1 msg] mbox + 32.50 32.00 32.67 0.25 75% 25% Put [second] mbox + 2.92 2.67 3.33 0.31 62% 62% Peek [2 msgs] mbox + 32.83 32.67 33.33 0.25 75% 75% Get [first] mbox + 32.67 32.67 32.67 0.00 100% 100% Get [second] mbox + 31.33 31.33 31.33 0.00 100% 100% Tryput [first] mbox + 27.58 27.33 28.00 0.31 62% 62% Peek item [non-empty] mbox + 32.83 32.67 33.33 0.25 75% 75% Tryget [non-empty] mbox + 26.50 26.00 26.67 0.25 75% 25% Peek item [empty] mbox + 28.00 28.00 28.00 0.00 100% 100% Tryget [empty] mbox + 3.25 2.67 3.33 0.15 87% 12% Waiting to get mbox + 3.25 2.67 3.33 0.15 87% 12% Waiting to put mbox + 30.83 30.67 31.33 0.25 75% 75% Delete mbox + 101.08 100.67 101.33 0.31 62% 37% Put/Get mbox + + 11.17 10.67 11.33 0.25 75% 25% Init semaphore + 24.17 24.00 24.67 0.25 75% 75% Post [0] semaphore + 27.08 26.67 27.33 0.31 62% 37% Wait [1] semaphore + 22.75 22.67 23.33 0.15 87% 87% Trywait [0] semaphore + 22.21 22.00 22.67 0.29 68% 68% Trywait [1] semaphore + 7.33 7.33 7.33 0.00 100% 100% Peek semaphore + 5.92 5.33 6.00 0.15 87% 12% Destroy semaphore + 110.04 110.00 110.67 0.08 93% 93% Post/Wait semaphore + + 9.54 9.33 10.00 0.29 68% 68% Create counter + 3.92 3.33 4.00 0.15 87% 12% Get counter value + 4.00 4.00 4.00 0.00 100% 100% Set counter value + 30.92 30.67 31.33 0.31 62% 62% Tick counter + 5.75 5.33 6.00 0.31 62% 37% Delete counter + + 13.83 13.33 14.00 0.25 75% 25% Create alarm + 46.67 46.67 46.67 0.00 100% 100% Initialize alarm + 3.67 3.33 4.00 0.33 100% 50% Disable alarm + 45.67 45.33 46.00 0.33 100% 50% Enable alarm + 8.33 8.00 8.67 0.33 100% 50% Delete alarm + 36.33 36.00 36.67 0.33 100% 50% Tick counter [1 alarm] + 214.67 214.67 214.67 0.00 100% 100% Tick counter [many alarms] + 62.67 62.67 62.67 0.00 100% 100% Tick & fire counter [1 alarm] + 1087.04 1075.33 1278.67 21.91 93% 93% Tick & fire counters [>1 together] + 246.35 240.67 412.00 10.35 96% 96% Tick & fire counters [>1 separately] + 168.01 167.33 237.33 1.08 99% 99% Alarm latency [0 threads] + 187.36 168.00 234.67 3.60 86% 1% Alarm latency [2 threads] + 187.37 167.33 235.33 3.59 85% 1% Alarm latency [many threads] + 303.12 280.00 508.67 3.21 98% 0% Alarm -> thread resume latency + + 36.65 36.00 38.67 0.00 Clock/interrupt latency + + 65.79 52.00 152.67 0.00 Clock DSR latency + + 316 316 316 (main stack: 752) Thread stack used (1120 total) +All done, main stack : stack used 752 size 2400 +All done : Interrupt stack used 280 size 2048 +All done : Idlethread stack used 268 size 2048 + +Timing complete - 30390 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-at91-eb40"> +<TITLE>Board: Atmel AT91/EB40</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> +Board: Atmel AT91/EB40 +CPU : AT91R40807 (ARM7TDMI core), 32MHz +512KB RAM, 64K Flash + +Startup, main stack : stack used 420 size 2400 +Startup : Interrupt stack used 144 size 4096 +Startup : Idlethread stack used 84 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 3 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 127.53 microseconds (130 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 25 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 86.48 71.29 101.56 7.99 48% 28% Create thread + 20.70 20.51 21.48 0.31 80% 80% Yield thread [all suspended] + 17.15 16.60 17.58 0.48 56% 44% Suspend [suspended] thread + 17.07 16.60 17.58 0.49 52% 52% Resume thread + 25.51 25.39 26.37 0.21 88% 88% Set priority + 3.16 2.93 3.91 0.36 76% 76% Get priority + 52.34 51.76 52.73 0.47 60% 40% Kill [suspended] thread + 20.70 20.51 21.48 0.31 80% 80% Yield [no other] thread + 28.98 28.32 30.27 0.48 60% 36% Resume [suspended low prio] thread + 17.11 16.60 17.58 0.49 52% 48% Resume [runnable low prio] thread + 27.85 26.37 28.32 0.52 96% 4% Suspend [runnable] thread + 20.70 20.51 21.48 0.31 80% 80% Yield [only low prio] thread + 17.23 16.60 17.58 0.45 64% 36% Suspend [runnable->not runnable] + 52.34 51.76 52.73 0.47 60% 40% Kill [runnable] thread + 33.01 32.23 33.20 0.31 80% 20% Destroy [dead] thread + 72.03 70.31 72.27 0.38 80% 4% Destroy [runnable] thread + 96.99 95.70 112.30 1.22 64% 96% Resume [high priority] thread + 51.48 49.80 164.06 1.76 99% 99% Thread switch + + 2.78 1.95 2.93 0.26 84% 15% Scheduler lock + 11.81 11.72 12.70 0.17 90% 90% Scheduler unlock [0 threads] + 11.81 11.72 12.70 0.17 90% 90% Scheduler unlock [1 suspended] + 11.81 11.72 12.70 0.17 90% 90% Scheduler unlock [many suspended] + 11.81 11.72 12.70 0.17 90% 90% Scheduler unlock [many low prio] + + 5.49 4.88 5.86 0.46 62% 37% Init mutex + 20.20 19.53 20.51 0.42 68% 31% Lock [unlocked] mutex + 24.44 24.41 25.39 0.06 96% 96% Unlock [locked] mutex + 18.25 17.58 18.55 0.42 68% 31% Trylock [unlocked] mutex + 16.11 15.63 16.60 0.49 100% 50% Trylock [locked] mutex + 6.10 5.86 6.84 0.37 75% 75% Destroy mutex + 124.21 124.02 125.00 0.30 81% 81% Unlock/Lock mutex + + 9.28 8.79 9.77 0.49 100% 50% Create mbox + 2.93 2.93 2.93 0.00 100% 100% Peek [empty] mbox + 22.58 22.46 23.44 0.21 87% 87% Put [first] mbox + 2.44 1.95 2.93 0.49 100% 50% Peek [1 msg] mbox + 22.58 22.46 23.44 0.21 87% 87% Put [second] mbox + 2.44 1.95 2.93 0.49 100% 50% Peek [2 msgs] mbox + 22.71 22.46 23.44 0.37 75% 75% Get [first] mbox + 22.71 22.46 23.44 0.37 75% 75% Get [second] mbox + 21.18 20.51 21.48 0.42 68% 31% Tryput [first] mbox + 18.98 18.55 19.53 0.48 56% 56% Peek item [non-empty] mbox + 22.46 22.46 22.46 0.00 100% 100% Tryget [non-empty] mbox + 18.31 17.58 18.55 0.37 75% 25% Peek item [empty] mbox + 19.53 19.53 19.53 0.00 100% 100% Tryget [empty] mbox + 2.69 1.95 2.93 0.37 75% 25% Waiting to get mbox + 2.93 2.93 2.93 0.00 100% 100% Waiting to put mbox + 23.86 23.44 24.41 0.48 56% 56% Delete mbox + 67.60 67.38 68.36 0.33 78% 78% Put/Get mbox + + 5.37 4.88 5.86 0.49 100% 50% Init semaphore + 16.97 16.60 17.58 0.46 62% 62% Post [0] semaphore + 18.98 18.55 19.53 0.48 56% 56% Wait [1] semaphore + 15.81 15.63 16.60 0.30 81% 81% Trywait [0] semaphore + 15.29 14.65 15.63 0.44 65% 34% Trywait [1] semaphore + 5.62 4.88 5.86 0.37 75% 25% Peek semaphore + 6.35 5.86 6.84 0.49 100% 50% Destroy semaphore + 72.36 72.27 73.24 0.17 90% 90% Post/Wait semaphore + + 7.08 6.84 7.81 0.37 75% 75% Create counter + 3.17 2.93 3.91 0.37 75% 75% Get counter value + 3.05 2.93 3.91 0.21 87% 87% Set counter value + 24.11 23.44 24.41 0.42 68% 31% Tick counter + 5.49 4.88 5.86 0.46 62% 37% Delete counter + + 10.92 10.74 11.72 0.30 81% 81% Create alarm + 31.46 31.25 32.23 0.33 78% 78% Initialize alarm + 3.05 2.93 3.91 0.21 87% 87% Disable alarm + 31.49 31.25 32.23 0.37 75% 75% Enable alarm + 7.02 6.84 7.81 0.30 81% 81% Delete alarm + 31.16 30.27 31.25 0.17 90% 9% Tick counter [1 alarm] + 309.26 304.69 425.78 7.28 96% 96% Tick counter [many alarms] + 44.83 43.95 44.92 0.17 90% 9% Tick & fire counter [1 alarm] + 781.68 774.41 893.55 13.62 93% 93% Tick & fire counters [>1 together] + 324.16 320.31 433.59 6.84 96% 96% Tick & fire counters [>1 separately] + 114.26 113.28 167.97 0.84 57% 42% Alarm latency [0 threads] + 126.91 113.28 159.18 8.20 50% 31% Alarm latency [2 threads] + 127.11 113.28 158.20 8.09 51% 28% Alarm latency [many threads] + 196.49 189.45 331.05 2.10 98% 0% Alarm -> thread resume latency + + 23.50 23.44 25.39 0.00 Clock/interrupt latency + + 40.31 33.20 514.65 0.00 Clock DSR latency + + 300 271 312 (main stack: 832) Thread stack used (1120 total) +All done, main stack : stack used 832 size 2400 +All done : Interrupt stack used 288 size 4096 +All done : Idlethread stack used 272 size 2048 + +Timing complete - 30350 ms total + +PASS:<Basic timing OK> +EXIT:<done> + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-arm-ebsa285"> +<TITLE>Board: Intel StrongARM EBSA-285 Evaluation Board</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: Intel StrongARM EBSA-285 Evaluation Board + +CPU : Intel StrongARM SA-110 228MHz + + +Startup, main stack : stack used 404 size 2400 +Startup : Interrupt stack used 136 size 4096 +Startup : Idlethread stack used 80 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 1 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 4.61 microseconds (16 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 4.97 3.26 7.34 0.60 50% 4% Create thread + 0.73 0.54 2.17 0.14 60% 37% Yield thread [all suspended] + 0.98 0.82 2.99 0.23 81% 68% Suspend [suspended] thread + 0.54 0.27 1.63 0.03 92% 6% Resume thread + 0.83 0.54 1.90 0.10 73% 14% Set priority + 0.21 0.00 0.54 0.21 25% 48% Get priority + 2.25 1.90 10.05 0.37 96% 67% Kill [suspended] thread + 0.70 0.54 1.09 0.14 53% 45% Yield [no other] thread + 0.96 0.82 1.36 0.14 50% 48% Resume [suspended low prio] thread + 0.53 0.27 0.82 0.03 92% 6% Resume [runnable low prio] thread + 0.90 0.82 1.63 0.13 70% 70% Suspend [runnable] thread + 0.70 0.54 0.82 0.13 57% 42% Yield [only low prio] thread + 0.55 0.54 0.82 0.01 98% 98% Suspend [runnable->not runnable] + 1.64 1.63 2.17 0.02 98% 98% Kill [runnable] thread + 0.97 0.82 4.62 0.20 98% 64% Destroy [dead] thread + 2.17 1.90 2.17 0.01 98% 1% Destroy [runnable] thread + 6.06 5.16 10.60 0.53 59% 31% Resume [high priority] thread + 1.69 1.63 5.98 0.11 90% 90% Thread switch + + 0.14 0.00 1.36 0.14 99% 50% Scheduler lock + 0.37 0.27 0.54 0.13 62% 62% Scheduler unlock [0 threads] + 0.38 0.27 0.54 0.13 60% 60% Scheduler unlock [1 suspended] + 0.37 0.27 0.54 0.13 63% 63% Scheduler unlock [many suspended] + 0.37 0.27 0.54 0.13 63% 63% Scheduler unlock [many low prio] + + 0.34 0.00 1.90 0.15 78% 6% Init mutex + 0.88 0.54 4.62 0.37 93% 71% Lock [unlocked] mutex + 0.79 0.54 4.35 0.26 93% 53% Unlock [locked] mutex + 0.59 0.27 2.17 0.10 93% 3% Trylock [unlocked] mutex + 0.50 0.27 0.82 0.09 78% 18% Trylock [locked] mutex + 0.18 0.00 0.54 0.13 59% 37% Destroy mutex + 3.85 3.80 5.16 0.08 96% 96% Unlock/Lock mutex + + 0.64 0.27 3.53 0.24 81% 15% Create mbox + 0.61 0.27 2.17 0.21 68% 18% Peek [empty] mbox + 0.87 0.54 5.16 0.31 59% 87% Put [first] mbox + 0.08 0.00 0.54 0.12 71% 71% Peek [1 msg] mbox + 0.71 0.54 1.09 0.14 56% 40% Put [second] mbox + 0.08 0.00 0.27 0.12 68% 68% Peek [2 msgs] mbox + 0.89 0.54 4.89 0.31 62% 81% Get [first] mbox + 0.76 0.54 1.09 0.17 43% 37% Get [second] mbox + 0.76 0.54 3.26 0.21 96% 50% Tryput [first] mbox + 0.65 0.54 2.45 0.17 81% 81% Peek item [non-empty] mbox + 0.76 0.54 2.72 0.19 53% 43% Tryget [non-empty] mbox + 0.58 0.54 0.82 0.06 87% 87% Peek item [empty] mbox + 0.61 0.54 0.82 0.10 75% 75% Tryget [empty] mbox + 0.10 0.00 0.54 0.13 65% 65% Waiting to get mbox + 0.10 0.00 0.54 0.13 65% 65% Waiting to put mbox + 0.77 0.54 3.26 0.20 53% 43% Delete mbox + 2.10 1.90 6.25 0.30 93% 93% Put/Get mbox + + 0.34 0.27 1.09 0.11 81% 81% Init semaphore + 0.60 0.27 1.09 0.12 68% 6% Post [0] semaphore + 0.59 0.54 0.82 0.08 81% 81% Wait [1] semaphore + 0.59 0.54 2.17 0.10 96% 96% Trywait [0] semaphore + 0.48 0.27 0.82 0.11 71% 25% Trywait [1] semaphore + 0.24 0.00 0.82 0.09 78% 18% Peek semaphore + 0.19 0.00 0.54 0.13 62% 34% Destroy semaphore + 2.28 2.17 4.08 0.18 93% 90% Post/Wait semaphore + + 0.43 0.00 2.72 0.23 90% 6% Create counter + 0.40 0.00 1.63 0.25 68% 28% Get counter value + 0.13 0.00 0.82 0.15 96% 59% Set counter value + 0.71 0.54 1.63 0.16 50% 46% Tick counter + 0.16 0.00 0.54 0.14 53% 43% Delete counter + + 0.47 0.27 1.36 0.15 59% 37% Create alarm + 1.58 1.09 7.07 0.44 71% 68% Initialize alarm + 0.12 0.00 1.09 0.16 96% 65% Disable alarm + 1.01 0.82 2.45 0.17 53% 43% Enable alarm + 0.21 0.00 0.27 0.09 78% 21% Delete alarm + 0.78 0.54 1.90 0.12 71% 25% Tick counter [1 alarm] + 3.90 3.80 4.35 0.13 68% 68% Tick counter [many alarms] + 1.25 1.09 1.63 0.14 53% 43% Tick & fire counter [1 alarm] + 19.88 19.84 20.11 0.07 84% 84% Tick & fire counters [>1 together] + 4.37 4.35 4.62 0.05 90% 90% Tick & fire counters [>1 separately] + 3.83 3.80 7.61 0.06 99% 99% Alarm latency [0 threads] + 4.46 3.80 7.88 0.27 71% 24% Alarm latency [2 threads] + 16.06 13.59 26.36 1.05 54% 10% Alarm latency [many threads] + 6.67 6.52 22.83 0.29 98% 98% Alarm -> thread resume latency + + 1.89 0.82 9.78 0.00 Clock/interrupt latency + + 2.17 1.09 7.34 0.00 Clock DSR latency + + 11 0 316 (main stack: 744) Thread stack used (1120 total) +All done, main stack : stack used 744 size 2400 +All done : Interrupt stack used 288 size 4096 +All done : Idlethread stack used 268 size 2048 + +Timing complete - 30210 ms total + +PASS:<Basic timing OK> +EXIT:<done> + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-arm-ep7211"> +<TITLE>Board: Cirrus Logic EDB7111-2 Development Board</TITLE> +<SECT2> +<TITLE>CPU : Cirrus Logic EP7211 73MHz</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: Cirrus Logic EDB7111-2 Development Board + +CPU : Cirrus Logic EP7211 73MHz + + + +Startup, main stack : stack used 404 size 2400 +Startup : Interrupt stack used 136 size 4096 +Startup : Idlethread stack used 88 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 0 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 356.69 microseconds (182 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 22.71 17.58 37.11 3.07 46% 34% Create thread + 4.36 3.91 5.86 0.70 76% 76% Yield thread [all suspended] + 4.24 3.91 7.81 0.56 84% 84% Suspend [suspended] thread + 4.09 1.95 7.81 0.45 85% 3% Resume thread + 5.31 3.91 11.72 0.92 65% 32% Set priority + 2.11 1.95 3.91 0.28 92% 92% Get priority + 11.54 9.77 25.39 0.99 62% 28% Kill [suspended] thread + 4.46 3.91 9.77 0.82 75% 75% Yield [no other] thread + 7.57 5.86 13.67 0.69 75% 20% Resume [suspended low prio] thread + 3.94 1.95 5.86 0.18 92% 3% Resume [runnable low prio] thread + 7.02 5.86 13.67 1.05 53% 45% Suspend [runnable] thread + 4.42 3.91 9.77 0.79 76% 76% Yield [only low prio] thread + 4.24 1.95 5.86 0.61 79% 1% Suspend [runnable->not runnable] + 11.29 9.77 27.34 1.14 57% 37% Kill [runnable] thread + 6.29 3.91 11.72 0.84 71% 4% Destroy [dead] thread + 13.52 11.72 31.25 0.90 70% 25% Destroy [runnable] thread + 24.50 21.48 42.97 1.69 79% 12% Resume [high priority] thread + 8.79 7.81 19.53 1.05 99% 53% Thread switch + + 1.66 0.00 3.91 0.52 83% 15% Scheduler lock + 2.59 1.95 3.91 0.86 67% 67% Scheduler unlock [0 threads] + 2.62 1.95 3.91 0.88 65% 65% Scheduler unlock [1 suspended] + 2.61 1.95 3.91 0.87 66% 66% Scheduler unlock [many suspended] + 2.58 1.95 3.91 0.85 67% 67% Scheduler unlock [many low prio] + + 2.69 1.95 5.86 0.96 65% 65% Init mutex + 4.88 3.91 9.77 1.10 96% 56% Lock [unlocked] mutex + 4.64 3.91 11.72 1.05 71% 71% Unlock [locked] mutex + 3.97 1.95 7.81 0.47 81% 9% Trylock [unlocked] mutex + 3.48 1.95 3.91 0.67 78% 21% Trylock [locked] mutex + 1.77 0.00 3.91 0.44 84% 12% Destroy mutex + 31.92 29.30 42.97 1.65 71% 18% Unlock/Lock mutex + + 4.09 3.91 9.77 0.35 96% 96% Create mbox + 1.83 0.00 3.91 0.34 87% 9% Peek [empty] mbox + 5.31 3.91 9.77 0.96 62% 34% Put [first] mbox + 1.59 0.00 1.95 0.60 81% 18% Peek [1 msg] mbox + 5.19 3.91 9.77 1.04 56% 40% Put [second] mbox + 1.65 0.00 3.91 0.62 78% 18% Peek [2 msgs] mbox + 5.43 3.91 9.77 0.86 68% 28% Get [first] mbox + 5.31 3.91 7.81 0.96 59% 34% Get [second] mbox + 4.76 3.91 9.77 1.07 62% 62% Tryput [first] mbox + 4.82 1.95 9.77 1.15 93% 3% Peek item [non-empty] mbox + 5.55 3.91 11.72 0.82 71% 25% Tryget [non-empty] mbox + 3.97 1.95 7.81 0.59 75% 12% Peek item [empty] mbox + 4.33 3.91 7.81 0.69 81% 81% Tryget [empty] mbox + 1.59 0.00 3.91 0.79 68% 25% Waiting to get mbox + 1.71 0.00 3.91 0.53 81% 15% Waiting to put mbox + 5.25 3.91 9.77 1.01 59% 37% Delete mbox + 17.82 15.63 29.30 1.14 65% 18% Put/Get mbox + + 2.69 1.95 5.86 0.96 65% 65% Init semaphore + 3.78 1.95 7.81 0.46 84% 12% Post [0] semaphore + 4.27 3.91 7.81 0.62 84% 84% Wait [1] semaphore + 3.72 1.95 7.81 0.66 75% 18% Trywait [0] semaphore + 3.29 1.95 5.86 0.92 62% 34% Trywait [1] semaphore + 2.32 1.95 3.91 0.59 81% 81% Peek semaphore + 1.89 0.00 3.91 0.24 90% 6% Destroy semaphore + 15.75 13.67 29.30 1.07 68% 21% Post/Wait semaphore + + 2.69 1.95 5.86 0.96 65% 65% Create counter + 1.83 0.00 1.95 0.23 93% 6% Get counter value + 1.53 0.00 3.91 0.76 71% 25% Set counter value + 4.82 3.91 5.86 0.97 53% 53% Tick counter + 1.89 0.00 1.95 0.12 96% 3% Delete counter + + 3.78 1.95 7.81 0.46 84% 12% Create alarm + 7.99 5.86 15.63 0.70 81% 9% Initialize alarm + 1.71 0.00 1.95 0.43 87% 12% Disable alarm + 7.14 5.86 11.72 1.04 56% 40% Enable alarm + 2.50 1.95 3.91 0.79 71% 71% Delete alarm + 4.94 3.91 7.81 1.04 96% 50% Tick counter [1 alarm] + 19.47 17.58 23.44 0.36 87% 9% Tick counter [many alarms] + 7.63 5.86 11.72 0.55 81% 15% Tick & fire counter [1 alarm] + 99.06 97.66 105.47 1.05 59% 37% Tick & fire counters [>1 together] + 22.15 21.48 27.34 0.96 71% 71% Tick & fire counters [>1 separately] + 359.16 357.42 378.91 0.87 71% 25% Alarm latency [0 threads] + 364.03 357.42 402.34 3.03 58% 15% Alarm latency [2 threads] + 408.25 402.34 416.02 2.89 53% 24% Alarm latency [many threads] + 381.16 376.95 492.19 2.48 95% 46% Alarm -> thread resume latency + + 9.79 5.86 19.53 0.00 Clock/interrupt latency + + 12.13 5.86 31.25 0.00 Clock DSR latency + + 12 0 316 (main stack: 752) Thread stack used (1120 total) +All done, main stack : stack used 752 size 2400 +All done : Interrupt stack used 288 size 4096 +All done : Idlethread stack used 276 size 2048 + +Timing complete - 30450 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT2> +<SECT2> +<TITLE>CPU : Cirrus Logic EP7212 73MHz</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: Cirrus Logic EDB7111-2 Development Board + +CPU : Cirrus Logic EP7212 73MHz + + + +Startup, main stack : stack used 404 size 2400 +Startup : Interrupt stack used 136 size 4096 +Startup : Idlethread stack used 88 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 0 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 356.32 microseconds (182 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 22.43 15.63 33.20 3.02 68% 18% Create thread + 4.48 3.91 5.86 0.81 70% 70% Yield thread [all suspended] + 4.42 3.91 7.81 0.78 75% 75% Suspend [suspended] thread + 4.12 1.95 5.86 0.49 82% 3% Resume thread + 5.62 3.91 11.72 0.64 78% 18% Set priority + 2.17 1.95 3.91 0.38 89% 89% Get priority + 11.54 9.77 27.34 0.88 70% 25% Kill [suspended] thread + 4.64 3.91 9.77 0.96 65% 65% Yield [no other] thread + 7.51 5.86 15.63 0.72 76% 21% Resume [suspended low prio] thread + 3.88 1.95 9.77 0.42 82% 10% Resume [runnable low prio] thread + 7.14 5.86 13.67 1.00 59% 39% Suspend [runnable] thread + 4.52 3.91 7.81 0.86 70% 70% Yield [only low prio] thread + 4.15 1.95 7.81 0.49 85% 1% Suspend [runnable->not runnable] + 11.26 9.77 27.34 1.17 56% 39% Kill [runnable] thread + 6.22 3.91 13.67 0.88 70% 7% Destroy [dead] thread + 13.64 11.72 33.20 1.02 64% 26% Destroy [runnable] thread + 24.17 21.48 41.02 1.49 82% 12% Resume [high priority] thread + 8.80 7.81 21.48 1.08 98% 54% Thread switch + + 1.60 0.00 1.95 0.58 82% 17% Scheduler lock + 2.61 1.95 3.91 0.87 66% 66% Scheduler unlock [0 threads] + 2.59 1.95 3.91 0.86 67% 67% Scheduler unlock [1 suspended] + 2.61 1.95 3.91 0.87 66% 66% Scheduler unlock [many suspended] + 2.59 1.95 3.91 0.86 67% 67% Scheduler unlock [many low prio] + + 2.62 1.95 3.91 0.88 65% 65% Init mutex + 4.82 3.91 9.77 1.09 96% 59% Lock [unlocked] mutex + 4.39 3.91 9.77 0.79 81% 81% Unlock [locked] mutex + 3.84 1.95 7.81 0.36 87% 9% Trylock [unlocked] mutex + 3.54 1.95 5.86 0.69 75% 21% Trylock [locked] mutex + 1.83 0.00 3.91 0.34 87% 9% Destroy mutex + 34.61 31.25 46.88 1.68 78% 9% Unlock/Lock mutex + + 3.97 1.95 7.81 0.24 93% 3% Create mbox + 1.83 0.00 3.91 0.34 87% 9% Peek [empty] mbox + 4.76 3.91 9.77 1.07 62% 62% Put [first] mbox + 1.71 0.00 3.91 0.64 75% 18% Peek [1 msg] mbox + 5.00 3.91 9.77 1.10 96% 50% Put [second] mbox + 1.65 0.00 1.95 0.52 84% 15% Peek [2 msgs] mbox + 5.31 3.91 11.72 1.05 59% 37% Get [first] mbox + 5.13 3.91 7.81 0.99 56% 40% Get [second] mbox + 4.76 3.91 11.72 1.12 96% 65% Tryput [first] mbox + 4.46 3.91 7.81 0.82 75% 75% Peek item [non-empty] mbox + 5.55 3.91 9.77 0.82 68% 25% Tryget [non-empty] mbox + 4.03 1.95 7.81 0.58 78% 9% Peek item [empty] mbox + 4.27 3.91 5.86 0.59 81% 81% Tryget [empty] mbox + 1.77 0.00 3.91 0.44 84% 12% Waiting to get mbox + 1.59 0.00 1.95 0.60 81% 18% Waiting to put mbox + 5.37 3.91 9.77 0.91 65% 31% Delete mbox + 16.66 13.67 27.34 1.42 90% 3% Put/Get mbox + + 2.62 1.95 5.86 0.92 68% 68% Init semaphore + 3.84 1.95 7.81 0.47 81% 12% Post [0] semaphore + 4.21 3.91 7.81 0.53 87% 87% Wait [1] semaphore + 3.48 1.95 5.86 0.76 71% 25% Trywait [0] semaphore + 3.60 1.95 5.86 0.62 78% 18% Trywait [1] semaphore + 2.26 1.95 5.86 0.53 87% 87% Peek semaphore + 1.89 0.00 1.95 0.12 96% 3% Destroy semaphore + 16.05 13.67 29.30 1.40 59% 18% Post/Wait semaphore + + 2.38 1.95 3.91 0.67 78% 78% Create counter + 2.01 0.00 3.91 0.35 84% 6% Get counter value + 1.89 0.00 3.91 0.24 90% 6% Set counter value + 4.58 3.91 5.86 0.88 65% 65% Tick counter + 1.71 0.00 1.95 0.43 87% 12% Delete counter + + 3.84 1.95 7.81 0.36 87% 9% Create alarm + 7.99 5.86 15.63 0.47 93% 3% Initialize alarm + 2.01 0.00 3.91 0.35 84% 6% Disable alarm + 6.53 5.86 13.67 1.01 75% 75% Enable alarm + 2.32 1.95 3.91 0.59 81% 81% Delete alarm + 4.76 3.91 7.81 1.01 59% 59% Tick counter [1 alarm] + 19.53 17.58 23.44 0.24 90% 6% Tick counter [many alarms] + 7.57 5.86 13.67 0.75 75% 21% Tick & fire counter [1 alarm] + 98.57 97.66 105.47 1.14 96% 62% Tick & fire counters [>1 together] + 22.15 21.48 27.34 0.96 71% 71% Tick & fire counters [>1 separately] + 359.18 357.42 384.77 1.10 65% 31% Alarm latency [0 threads] + 362.63 357.42 396.48 2.55 43% 27% Alarm latency [2 threads] + 408.22 402.34 416.02 2.73 55% 21% Alarm latency [many threads] + 378.63 375.00 494.14 2.56 93% 71% Alarm -> thread resume latency + + 9.78 5.86 19.53 0.00 Clock/interrupt latency + + 12.21 5.86 31.25 0.00 Clock DSR latency + + 12 0 316 (main stack: 752) Thread stack used (1120 total) +All done, main stack : stack used 752 size 2400 +All done : Interrupt stack used 288 size 4096 +All done : Idlethread stack used 276 size 2048 + +Timing complete - 30550 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT2> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-arm-pid"> +<TITLE>Board: ARM PID Evaluation Board</TITLE> +<SECT2> +<TITLE>CPU : ARM 7TDMI 20 MHz</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: ARM PID Evaluation Board + +CPU : ARM 7TDMI 20 MHz + + + +Startup, main stack : stack used 404 size 2400 +Startup : Interrupt stack used 136 size 4096 +Startup : Idlethread stack used 84 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 6 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 120.74 microseconds (150 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 50 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 99.01 68.00 129.60 15.62 50% 26% Create thread + 21.60 21.60 21.60 0.00 100% 100% Yield thread [all suspended] + 15.65 15.20 16.00 0.39 56% 44% Suspend [suspended] thread + 15.79 15.20 16.00 0.31 74% 26% Resume thread + 23.65 23.20 24.00 0.39 56% 44% Set priority + 2.26 1.60 2.40 0.24 82% 18% Get priority + 51.39 51.20 52.00 0.29 76% 76% Kill [suspended] thread + 21.60 21.60 21.60 0.00 100% 100% Yield [no other] thread + 29.47 28.00 29.60 0.22 86% 2% Resume [suspended low prio] thread + 15.60 15.20 16.00 0.40 100% 50% Resume [runnable low prio] thread + 27.73 24.00 28.00 0.40 74% 2% Suspend [runnable] thread + 21.60 21.60 21.60 0.00 100% 100% Yield [only low prio] thread + 15.65 15.20 16.00 0.39 56% 44% Suspend [runnable->not runnable] + 51.39 51.20 52.00 0.29 76% 76% Kill [runnable] thread + 27.66 27.20 28.80 0.41 54% 44% Destroy [dead] thread + 68.93 64.80 69.60 0.35 72% 2% Destroy [runnable] thread + 91.26 90.40 107.20 0.64 66% 32% Resume [high priority] thread + 49.14 48.80 49.60 0.39 57% 57% Thread switch + + 2.20 1.60 2.40 0.30 75% 25% Scheduler lock + 10.20 9.60 10.40 0.30 75% 25% Scheduler unlock [0 threads] + 10.20 9.60 10.40 0.30 75% 25% Scheduler unlock [1 suspended] + 10.20 9.60 10.40 0.30 75% 25% Scheduler unlock [many suspended] + 10.20 9.60 10.40 0.30 75% 25% Scheduler unlock [many low prio] + + 6.85 6.40 7.20 0.39 56% 43% Init mutex + 18.40 18.40 18.40 0.00 100% 100% Lock [unlocked] mutex + 19.57 19.20 20.00 0.40 53% 53% Unlock [locked] mutex + 16.55 16.00 16.80 0.34 68% 31% Trylock [unlocked] mutex + 14.55 14.40 15.20 0.24 81% 81% Trylock [locked] mutex + 3.55 3.20 4.00 0.39 56% 56% Destroy mutex + 119.85 119.20 120.00 0.24 81% 18% Unlock/Lock mutex + + 12.85 12.80 13.60 0.09 93% 93% Create mbox + 1.65 1.60 2.40 0.09 93% 93% Peek [empty] mbox + 20.70 20.00 20.80 0.17 87% 12% Put [first] mbox + 1.65 1.60 2.40 0.09 93% 93% Peek [1 msg] mbox + 20.70 20.00 20.80 0.17 87% 12% Put [second] mbox + 1.65 1.60 2.40 0.09 93% 93% Peek [2 msgs] mbox + 20.85 20.80 21.60 0.09 93% 93% Get [first] mbox + 20.85 20.80 21.60 0.09 93% 93% Get [second] mbox + 19.90 19.20 20.00 0.17 87% 12% Tryput [first] mbox + 17.60 17.60 17.60 0.00 100% 100% Peek item [non-empty] mbox + 20.90 20.80 21.60 0.17 87% 87% Tryget [non-empty] mbox + 16.80 16.80 16.80 0.00 100% 100% Peek item [empty] mbox + 17.65 17.60 18.40 0.09 93% 93% Tryget [empty] mbox + 1.85 1.60 2.40 0.34 68% 68% Waiting to get mbox + 1.85 1.60 2.40 0.34 68% 68% Waiting to put mbox + 19.40 19.20 20.00 0.30 75% 75% Delete mbox + 65.05 64.80 65.60 0.34 68% 68% Put/Get mbox + + 7.05 6.40 7.20 0.24 81% 18% Init semaphore + 15.55 15.20 16.00 0.39 56% 56% Post [0] semaphore + 17.35 16.80 17.60 0.34 68% 31% Wait [1] semaphore + 14.60 14.40 15.20 0.30 75% 75% Trywait [0] semaphore + 14.20 13.60 14.40 0.30 75% 25% Trywait [1] semaphore + 4.55 4.00 4.80 0.34 68% 31% Peek semaphore + 3.75 3.20 4.00 0.34 68% 31% Destroy semaphore + 70.85 70.40 71.20 0.39 56% 43% Post/Wait semaphore + + 6.05 5.60 6.40 0.39 56% 43% Create counter + 2.25 1.60 2.40 0.24 81% 18% Get counter value + 2.25 1.60 2.40 0.24 81% 18% Set counter value + 19.70 19.20 20.00 0.37 62% 37% Tick counter + 3.45 3.20 4.00 0.34 68% 68% Delete counter + + 9.05 8.80 9.60 0.34 68% 68% Create alarm + 29.60 29.60 29.60 0.00 100% 100% Initialize alarm + 2.15 1.60 2.40 0.34 68% 31% Disable alarm + 29.35 28.80 29.60 0.34 68% 31% Enable alarm + 5.10 4.80 5.60 0.37 62% 62% Delete alarm + 23.20 23.20 23.20 0.00 100% 100% Tick counter [1 alarm] + 138.00 137.60 138.40 0.40 100% 50% Tick counter [many alarms] + 40.40 40.00 40.80 0.40 100% 50% Tick & fire counter [1 alarm] + 704.25 697.60 804.00 12.47 93% 93% Tick & fire counters [>1 together] + 155.20 155.20 155.20 0.00 100% 100% Tick & fire counters [>1 separately] + 105.20 104.80 151.20 0.76 99% 94% Alarm latency [0 threads] + 117.57 104.80 149.60 7.13 57% 25% Alarm latency [2 threads] + 117.49 104.80 148.80 7.10 58% 26% Alarm latency [many threads] + 192.59 177.60 316.00 1.93 98% 0% Alarm -> thread resume latency + + 22.10 21.60 24.00 0.00 Clock/interrupt latency + + 38.69 32.80 61.60 0.00 Clock DSR latency + + 297 276 316 (main stack: 752) Thread stack used (1120 total) +All done, main stack : stack used 752 size 2400 +All done : Interrupt stack used 288 size 4096 +All done : Idlethread stack used 272 size 2048 + +Timing complete - 30350 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT2> +<SECT2> +<TITLE>CPU : ARM 920T 20 MHz</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: ARM PID Evaluation Board + +CPU : ARM 920T 20 MHz + + +Startup, main stack : stack used 404 size 2400 +Startup : Interrupt stack used 136 size 4096 +Startup : Idlethread stack used 84 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 15 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 291.41 microseconds (364 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 50 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 257.78 168.00 568.00 48.70 56% 28% Create thread + 50.21 49.60 50.40 0.29 76% 24% Yield thread [all suspended] + 36.26 36.00 36.80 0.35 68% 68% Suspend [suspended] thread + 37.20 36.80 37.60 0.40 100% 50% Resume thread + 56.24 56.00 56.80 0.34 70% 70% Set priority + 5.20 4.80 5.60 0.40 100% 50% Get priority + 122.75 122.40 123.20 0.39 56% 56% Kill [suspended] thread + 50.19 49.60 50.40 0.31 74% 26% Yield [no other] thread + 69.49 66.40 69.60 0.21 92% 2% Resume [suspended low prio] thread + 37.01 36.80 37.60 0.31 74% 74% Resume [runnable low prio] thread + 64.75 55.20 65.60 0.38 80% 2% Suspend [runnable] thread + 50.19 49.60 50.40 0.31 74% 26% Yield [only low prio] thread + 36.24 36.00 36.80 0.34 70% 70% Suspend [runnable->not runnable] + 122.75 122.40 123.20 0.39 56% 56% Kill [runnable] thread + 67.76 67.20 68.00 0.34 70% 30% Destroy [dead] thread + 167.07 158.40 168.00 0.35 92% 2% Destroy [runnable] thread + 213.49 212.00 249.60 1.46 84% 90% Resume [high priority] thread + 122.81 120.00 389.60 4.17 99% 99% Thread switch + + 4.70 4.00 4.80 0.17 87% 12% Scheduler lock + 23.70 23.20 24.00 0.37 62% 37% Scheduler unlock [0 threads] + 23.60 23.20 24.00 0.40 100% 50% Scheduler unlock [1 suspended] + 23.70 23.20 24.00 0.37 62% 37% Scheduler unlock [many suspended] + 23.60 23.20 24.00 0.40 100% 50% Scheduler unlock [many low prio] + + 15.65 15.20 16.00 0.39 56% 43% Init mutex + 42.40 42.40 42.40 0.00 100% 100% Lock [unlocked] mutex + 45.37 44.80 46.40 0.36 65% 31% Unlock [locked] mutex + 39.20 39.20 39.20 0.00 100% 100% Trylock [unlocked] mutex + 34.45 34.40 35.20 0.09 93% 93% Trylock [locked] mutex + 8.00 8.00 8.00 0.00 100% 100% Destroy mutex + 284.42 284.00 284.80 0.40 53% 46% Unlock/Lock mutex + + 29.40 28.80 29.60 0.30 75% 25% Create mbox + 3.35 3.20 4.00 0.24 81% 81% Peek [empty] mbox + 49.35 48.80 49.60 0.34 68% 31% Put [first] mbox + 3.35 3.20 4.00 0.24 81% 81% Peek [1 msg] mbox + 49.35 48.80 49.60 0.34 68% 31% Put [second] mbox + 3.35 3.20 4.00 0.24 81% 81% Peek [2 msgs] mbox + 49.15 48.80 49.60 0.39 56% 56% Get [first] mbox + 49.15 48.80 49.60 0.39 56% 56% Get [second] mbox + 47.80 47.20 48.00 0.30 75% 25% Tryput [first] mbox + 41.40 40.80 41.60 0.30 75% 25% Peek item [non-empty] mbox + 49.40 48.80 49.60 0.30 75% 25% Tryget [non-empty] mbox + 40.15 40.00 40.80 0.24 81% 81% Peek item [empty] mbox + 40.95 40.80 41.60 0.24 81% 81% Tryget [empty] mbox + 4.05 4.00 4.80 0.09 93% 93% Waiting to get mbox + 4.05 4.00 4.80 0.09 93% 93% Waiting to put mbox + 45.60 45.60 45.60 0.00 100% 100% Delete mbox + 153.27 152.80 153.60 0.39 59% 40% Put/Get mbox + + 16.80 16.80 16.80 0.00 100% 100% Init semaphore + 36.60 36.00 36.80 0.30 75% 25% Post [0] semaphore + 39.60 39.20 40.00 0.40 100% 50% Wait [1] semaphore + 34.80 34.40 35.20 0.40 100% 50% Trywait [0] semaphore + 33.35 32.80 33.60 0.34 68% 31% Trywait [1] semaphore + 10.30 9.60 10.40 0.17 87% 12% Peek semaphore + 8.80 8.80 8.80 0.00 100% 100% Destroy semaphore + 166.92 166.40 167.20 0.36 65% 34% Post/Wait semaphore + + 13.60 13.60 13.60 0.00 100% 100% Create counter + 4.85 4.80 5.60 0.09 93% 93% Get counter value + 4.80 4.80 4.80 0.00 100% 100% Set counter value + 45.25 44.80 45.60 0.39 56% 43% Tick counter + 7.75 7.20 8.00 0.34 68% 31% Delete counter + + 20.80 20.80 20.80 0.00 100% 100% Create alarm + 69.30 68.80 69.60 0.37 62% 37% Initialize alarm + 4.80 4.80 4.80 0.00 100% 100% Disable alarm + 67.35 67.20 68.00 0.24 81% 81% Enable alarm + 11.80 11.20 12.00 0.30 75% 25% Delete alarm + 54.80 54.40 55.20 0.40 100% 50% Tick counter [1 alarm] + 372.35 363.20 652.80 17.53 96% 96% Tick counter [many alarms] + 95.50 95.20 96.00 0.37 62% 62% Tick & fire counter [1 alarm] + 1757.92 1707.20 1996.80 81.43 81% 81% Tick & fire counters [>1 together] + 404.37 404.00 404.80 0.40 53% 53% Tick & fire counters [>1 separately] + 256.57 254.40 395.20 2.17 98% 97% Alarm latency [0 threads] + 296.60 255.20 359.20 23.53 53% 31% Alarm latency [2 threads] + 307.49 265.60 357.60 27.52 53% 53% Alarm latency [many threads] + 467.04 432.00 788.80 5.03 97% 1% Alarm -> thread resume latency + + 55.63 54.40 60.80 0.00 Clock/interrupt latency + + 101.23 80.80 1433.60 0.00 Clock DSR latency + + 316 316 316 (main stack: 752) Thread stack used (1120 total) +All done, main stack : stack used 752 size 2400 +All done : Interrupt stack used 288 size 4096 +All done : Idlethread stack used 272 size 2048 + +Timing complete - 30780 ms total + +PASS:<Basic timing OK> +EXIT:<done> + </LITERALLAYOUT> +</SECT2> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-arm-iq80310"> +<TITLE>Board: Intel IQ80310 XScale Development Kit</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: Intel IQ80310 XScale Development Kit + +CPU: Intel XScale 600MHz + + +Startup, main stack : stack used 388 size 2400 +Startup : Interrupt stack used 148 size 4096 +Startup : Idlethread stack used 76 size 1120 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 73 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 12.11 microseconds (399 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 6.53 5.48 8.55 0.50 53% 23% Create thread + 0.37 0.03 3.24 0.18 87% 1% Yield thread [all suspended] + 0.24 0.00 2.06 0.12 87% 1% Suspend [suspended] thread + 0.25 0.00 0.73 0.06 71% 1% Resume thread + 0.36 0.09 0.82 0.10 89% 1% Set priority + 0.03 0.00 0.42 0.05 90% 90% Get priority + 1.07 0.52 6.39 0.18 92% 1% Kill [suspended] thread + 0.33 0.06 0.91 0.08 78% 3% Yield [no other] thread + 0.55 0.03 1.06 0.09 85% 1% Resume [suspended low prio] thread + 0.28 0.00 1.79 0.11 84% 4% Resume [runnable low prio] thread + 0.43 0.00 1.00 0.12 76% 1% Suspend [runnable] thread + 0.31 0.00 1.24 0.09 82% 4% Yield [only low prio] thread + 0.21 0.00 0.42 0.04 73% 1% Suspend [runnable->not runnable] + 1.00 0.88 1.45 0.04 78% 4% Kill [runnable] thread + 0.59 0.42 3.97 0.13 81% 87% Destroy [dead] thread + 1.43 1.27 1.94 0.07 78% 7% Destroy [runnable] thread + 3.12 2.58 5.09 0.33 56% 34% Resume [high priority] thread + 0.87 0.36 1.39 0.07 86% 0% Thread switch + + 0.15 0.00 1.39 0.21 81% 81% Scheduler lock + 0.16 0.00 0.64 0.08 85% 7% Scheduler unlock [0 threads] + 0.16 0.00 0.64 0.08 75% 8% Scheduler unlock [1 suspended] + 0.16 0.00 0.70 0.08 78% 6% Scheduler unlock [many suspended] + 0.16 0.00 0.64 0.07 81% 4% Scheduler unlock [many low prio] + + 0.45 0.00 1.39 0.34 56% 46% Init mutex + 0.43 0.18 3.27 0.23 87% 87% Lock [unlocked] mutex + 0.48 0.09 3.88 0.26 84% 71% Unlock [locked] mutex + 0.35 0.21 2.24 0.21 87% 84% Trylock [unlocked] mutex + 0.26 0.00 0.67 0.13 78% 9% Trylock [locked] mutex + 0.21 0.00 1.27 0.24 78% 75% Destroy mutex + 2.58 2.09 3.09 0.13 75% 9% Unlock/Lock mutex + + 0.99 0.21 2.48 0.41 65% 28% Create mbox + 0.04 0.00 0.39 0.07 90% 87% Peek [empty] mbox + 0.47 0.27 3.48 0.29 90% 78% Put [first] mbox + 0.02 0.00 0.39 0.03 90% 90% Peek [1 msg] mbox + 0.29 0.15 0.58 0.04 68% 3% Put [second] mbox + 0.02 0.00 0.45 0.04 93% 93% Peek [2 msgs] mbox + 0.48 0.21 3.67 0.26 84% 87% Get [first] mbox + 0.35 0.09 0.82 0.11 75% 3% Get [second] mbox + 0.50 0.21 3.18 0.33 90% 68% Tryput [first] mbox + 0.39 0.15 1.39 0.19 78% 68% Peek item [non-empty] mbox + 0.43 0.18 3.33 0.23 87% 90% Tryget [non-empty] mbox + 0.28 0.03 0.79 0.06 68% 3% Peek item [empty] mbox + 0.28 0.21 0.58 0.05 71% 65% Tryget [empty] mbox + 0.01 0.00 0.36 0.02 96% 90% Waiting to get mbox + 0.05 0.00 0.45 0.09 87% 84% Waiting to put mbox + 0.42 0.09 2.88 0.20 84% 12% Delete mbox + 1.39 1.27 2.39 0.14 87% 87% Put/Get mbox + + 0.35 0.00 1.36 0.45 75% 68% Init semaphore + 0.19 0.00 0.45 0.04 81% 3% Post [0] semaphore + 0.25 0.21 0.88 0.06 84% 81% Wait [1] semaphore + 0.32 0.06 1.79 0.21 78% 68% Trywait [0] semaphore + 0.20 0.00 0.52 0.06 62% 3% Trywait [1] semaphore + 0.07 0.00 0.45 0.10 84% 81% Peek semaphore + 0.06 0.00 0.52 0.06 71% 78% Destroy semaphore + 1.45 1.42 1.79 0.04 87% 87% Post/Wait semaphore + + 0.70 0.00 2.88 0.47 43% 34% Create counter + 0.05 0.00 0.42 0.09 87% 84% Get counter value + 0.02 0.00 0.45 0.04 93% 93% Set counter value + 0.38 0.12 0.58 0.06 59% 3% Tick counter + 0.03 0.00 0.48 0.05 93% 78% Delete counter + + 1.10 0.39 4.30 0.47 62% 53% Create alarm + 0.58 0.03 3.12 0.18 87% 3% Initialize alarm + 0.04 0.00 0.42 0.07 90% 90% Disable alarm + 0.54 0.36 1.36 0.12 84% 43% Enable alarm + 0.03 0.00 0.70 0.06 84% 84% Delete alarm + 0.50 0.24 0.97 0.08 84% 6% Tick counter [1 alarm] + 5.30 5.12 5.97 0.14 84% 75% Tick counter [many alarms] + 0.82 0.64 1.36 0.11 78% 43% Tick & fire counter [1 alarm] + 14.13 13.85 14.55 0.09 78% 3% Tick & fire counters [>1 together] + 5.56 5.45 6.00 0.09 78% 71% Tick & fire counters [>1 separately] + 9.69 9.45 12.52 0.22 64% 71% Alarm latency [0 threads] + 9.98 9.48 12.76 0.23 69% 14% Alarm latency [2 threads] + 10.38 9.48 24.67 0.59 74% 45% Alarm latency [many threads] + 11.72 11.30 21.33 0.32 81% 58% Alarm -> thread resume latency + + 1.87 1.82 10.42 0.00 Clock/interrupt latency + + 3.02 2.58 7.67 0.00 Clock DSR latency + + 9 0 260 (main stack: 776) Thread stack used (1120 total) +All done, main stack : stack used 776 size 2400 +All done : Interrupt stack used 268 size 4096 +All done : Idlethread stack used 244 size 1120 + +Timing complete - 30300 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-tx39-jmr3904"> +<TITLE>Board: Toshiba JMR3904 Evaluation Board</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: Toshiba JMR3904 Evaluation Board + +CPU : TMPR3904F 50MHz + + +eCOS Kernel Timings +Note: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 0 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 29.68 microseconds (45 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 24 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 13.62 11.72 27.99 1.51 79% 54% Create thread + 2.77 2.60 3.91 0.26 79% 79% Yield thread [all suspended] + 3.31 2.60 6.51 0.27 83% 12% Suspend [suspended] thread + 2.58 1.95 7.81 0.47 58% 37% Resume thread + 4.94 4.56 11.07 0.60 95% 79% Set priority + 0.71 0.65 1.95 0.10 95% 95% Get priority + 14.97 14.32 25.39 0.87 95% 95% Kill [suspended] thread + 2.25 1.95 9.11 0.57 95% 95% Yield [no other] thread + 7.27 6.51 12.37 0.42 79% 16% Resume [suspended low prio] thread + 2.28 1.95 7.16 0.51 95% 79% Resume [runnable low prio] thread + 4.31 3.26 12.37 0.75 87% 79% Suspend [runnable] thread + 2.17 1.95 7.16 0.42 95% 95% Yield [only low prio] thread + 2.39 1.95 6.51 0.51 95% 58% Suspend [runnable->not runnable] + 13.43 12.37 22.79 0.80 91% 91% Kill [runnable] thread + 22.30 20.83 37.76 1.76 91% 91% Resume [high priority] thread + 4.62 4.56 11.07 0.13 98% 98% Thread switch + + 1.51 1.30 2.60 0.29 68% 68% Scheduler lock + 2.36 1.95 3.26 0.31 61% 37% Scheduler unlock [0 threads] + 2.39 1.95 5.21 0.32 62% 36% Scheduler unlock [1 suspended] + 2.38 1.95 4.56 0.32 61% 37% Scheduler unlock [many suspended] + 2.38 1.95 5.21 0.32 61% 37% Scheduler unlock [many low prio] + + 0.90 0.65 3.26 0.35 71% 71% Init mutex + 2.48 1.95 8.46 0.50 50% 46% Lock [unlocked] mutex + 2.83 2.60 9.11 0.42 93% 93% Unlock [locked] mutex + 2.30 1.95 6.51 0.45 96% 65% Trylock [unlocked] mutex + 1.99 1.30 5.86 0.24 84% 12% Trylock [locked] mutex + 0.04 0.00 1.30 0.08 96% 96% Destroy mutex + 42.40 42.32 44.92 0.16 96% 96% Unlock/Lock mutex + + 1.44 1.30 5.86 0.28 96% 96% Create mbox + 0.51 0.00 1.30 0.25 71% 25% Peek [empty] mbox + 2.93 2.60 9.11 0.51 96% 78% Put [first] mbox + 0.51 0.00 1.30 0.25 71% 25% Peek [1 msg] mbox + 4.19 3.91 5.21 0.34 59% 59% Put [second] mbox + 0.45 0.00 0.65 0.28 68% 31% Peek [2 msgs] mbox + 3.28 2.60 10.42 0.45 65% 31% Get [first] mbox + 3.34 2.60 9.77 0.40 78% 18% Get [second] mbox + 2.69 1.95 9.11 0.40 78% 18% Tryput [first] mbox + 2.75 1.95 7.81 0.32 93% 3% Peek item [non-empty] mbox + 3.15 2.60 9.11 0.48 53% 43% Tryget [non-empty] mbox + 2.22 1.95 6.51 0.41 96% 78% Peek item [empty] mbox + 2.40 1.95 5.86 0.42 50% 46% Tryget [empty] mbox + 0.47 0.00 0.65 0.26 71% 28% Waiting to get mbox + 0.59 0.00 1.30 0.15 84% 12% Waiting to put mbox + 4.01 3.26 10.42 0.40 81% 15% Delete mbox + 26.18 26.04 30.60 0.28 96% 96% Put/Get mbox + + 0.92 0.65 3.91 0.38 71% 71% Init semaphore + 2.24 1.95 6.51 0.43 96% 75% Post [0] semaphore + 2.32 1.95 7.16 0.48 96% 65% Wait [1] semaphore + 2.03 1.30 5.86 0.24 90% 6% Trywait [0] semaphore + 1.91 1.30 4.56 0.23 78% 18% Trywait [1] semaphore + 0.77 0.00 1.95 0.30 65% 9% Peek semaphore + 0.61 0.00 1.95 0.15 84% 12% Destroy semaphore + 22.62 22.14 30.60 0.61 96% 62% Post/Wait semaphore + + 0.92 0.65 3.91 0.38 71% 71% Create counter + 0.69 0.65 1.95 0.08 96% 96% Get counter value + 0.41 0.00 1.30 0.33 56% 40% Set counter value + 3.21 2.60 5.86 0.27 71% 21% Tick counter + 0.65 0.00 3.26 0.16 84% 12% Delete counter + + 1.57 1.30 4.56 0.38 71% 71% Create alarm + 4.52 3.91 13.02 0.57 50% 46% Initialize alarm + 0.61 0.00 1.95 0.15 84% 12% Disable alarm + 4.43 3.91 9.11 0.43 56% 40% Enable alarm + 0.87 0.65 2.60 0.32 71% 71% Delete alarm + 2.93 2.60 6.51 0.43 96% 65% Tick counter [1 alarm] + 14.83 14.32 22.79 0.60 96% 59% Tick counter [many alarms] + 4.88 4.56 11.07 0.51 96% 78% Tick & fire counter [1 alarm] + 83.25 82.03 102.86 1.23 96% 93% Tick & fire counters [>1 together] + 17.58 16.93 27.34 0.61 50% 46% Tick & fire counters [>1 separately] + 26.18 24.74 40.36 0.30 97% 0% Alarm latency [0 threads] + 33.88 29.30 56.64 1.70 85% 6% Alarm latency [2 threads] + 36.37 29.30 61.20 3.25 53% 24% Alarm latency [many threads] + + 7.85 6.51 14.97 0.00 Clock/interrupt latency + +Timing complete - 23540 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-tx49-ref4955"> +<TITLE>Board: Toshiba REF 4955</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: Toshiba REF 4955 + +CPU : Toshiba TX4955 66MHz + +Startup, main stack : stack used 960 size 2936 +Startup : Interrupt stack used 168 size 4096 +Startup : Idlethread stack used 372 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 3 `ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 4.00 microseconds (264 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 11.21 9.58 14.11 0.95 48% 34% Create thread + 0.66 0.65 1.29 0.02 98% 98% Yield thread [all suspended] + 0.63 0.53 3.06 0.17 82% 82% Suspend [suspended] thread + 0.54 0.53 1.06 0.02 98% 98% Resume thread + 0.78 0.74 1.39 0.05 93% 93% Set priority + 0.05 0.05 0.36 0.01 98% 98% Get priority + 2.06 1.89 6.65 0.25 95% 79% Kill [suspended] thread + 0.65 0.65 0.68 0.00 98% 98% Yield [no other] thread + 1.15 1.02 3.03 0.20 81% 81% Resume [suspended low prio] thread + 0.54 0.52 1.18 0.03 96% 96% Resume [runnable low prio] thread + 0.94 0.88 1.27 0.01 95% 1% Suspend [runnable] thread + 0.65 0.65 0.68 0.00 98% 98% Yield [only low prio] thread + 0.54 0.53 0.86 0.01 98% 96% Suspend [runnable->not runnable] + 1.97 1.89 2.98 0.12 84% 84% Kill [runnable] thread + 1.03 0.92 4.94 0.17 89% 89% Destroy [dead] thread + 2.55 2.33 4.38 0.24 89% 70% Destroy [runnable] thread + 5.62 4.11 13.23 0.99 65% 40% Resume [high priority] thread + 1.84 1.83 2.79 0.02 98% 98% Thread switch + + 0.12 0.02 0.65 0.15 74% 74% Scheduler lock + 0.35 0.35 0.35 0.00 100% 100% Scheduler unlock [0 threads] + 0.35 0.35 0.35 0.00 100% 100% Scheduler unlock [1 suspended] + 0.43 0.35 1.17 0.13 78% 78% Scheduler unlock [many suspended] + 0.45 0.35 1.17 0.15 75% 75% Scheduler unlock [many low prio] + + 0.46 0.15 3.38 0.30 62% 50% Init mutex + 0.73 0.64 3.27 0.16 96% 96% Lock [unlocked] mutex + 0.77 0.65 4.50 0.23 96% 96% Unlock [locked] mutex + 0.58 0.55 1.42 0.05 96% 96% Trylock [unlocked] mutex + 0.51 0.50 0.83 0.02 96% 96% Trylock [locked] mutex + 0.12 0.11 0.41 0.02 96% 96% Destroy mutex + 4.72 4.70 5.58 0.05 96% 96% Unlock/Lock mutex + + 1.01 0.67 3.48 0.40 71% 71% Create mbox + 0.02 0.00 0.53 0.03 96% 96% Peek [empty] mbox + 0.89 0.68 4.20 0.29 96% 71% Put [first] mbox + 0.02 0.00 0.33 0.02 96% 96% Peek [1 msg] mbox + 0.69 0.68 0.76 0.01 50% 46% Put [second] mbox + 0.02 0.00 0.30 0.02 96% 96% Peek [2 msgs] mbox + 0.81 0.71 3.83 0.19 96% 96% Get [first] mbox + 0.72 0.71 1.02 0.02 96% 96% Get [second] mbox + 0.81 0.65 2.74 0.22 96% 71% Tryput [first] mbox + 0.67 0.62 2.27 0.10 96% 96% Peek item [non-empty] mbox + 0.77 0.71 2.41 0.10 96% 96% Tryget [non-empty] mbox + 0.59 0.58 0.88 0.02 96% 96% Peek item [empty] mbox + 0.62 0.62 0.67 0.00 96% 96% Tryget [empty] mbox + 0.03 0.02 0.32 0.02 96% 96% Waiting to get mbox + 0.02 0.02 0.06 0.01 50% 46% Waiting to put mbox + 0.75 0.65 3.59 0.18 96% 96% Delete mbox + 2.80 2.77 3.59 0.05 96% 96% Put/Get mbox + + 0.37 0.18 0.88 0.28 71% 71% Init semaphore + 0.48 0.47 0.80 0.02 96% 96% Post [0] semaphore + 0.60 0.59 0.67 0.01 50% 46% Wait [1] semaphore + 0.53 0.50 1.41 0.06 96% 96% Trywait [0] semaphore + 0.51 0.50 0.71 0.01 96% 50% Trywait [1] semaphore + 0.09 0.09 0.15 0.00 96% 96% Peek semaphore + 0.12 0.11 0.41 0.02 96% 96% Destroy semaphore + 3.05 3.05 3.05 0.00 100% 100% Post/Wait semaphore + + 0.57 0.17 2.76 0.24 59% 25% Create counter + 0.06 0.05 0.58 0.03 96% 96% Get counter value + 0.06 0.03 0.64 0.04 96% 96% Set counter value + 0.73 0.71 1.02 0.02 96% 96% Tick counter + 0.12 0.11 0.15 0.01 50% 46% Delete counter + + 0.89 0.64 3.15 0.34 84% 71% Create alarm + 1.00 0.95 2.41 0.09 96% 96% Initialize alarm + 0.09 0.06 0.68 0.04 96% 96% Disable alarm + 1.05 1.00 2.48 0.09 96% 96% Enable alarm + 0.18 0.17 0.50 0.02 96% 96% Delete alarm + 0.90 0.89 1.11 0.01 96% 96% Tick counter [1 alarm] + 5.60 5.59 5.88 0.02 96% 96% Tick counter [many alarms] + 1.53 1.52 2.11 0.04 96% 96% Tick & fire counter [1 alarm] + 25.48 25.47 25.76 0.02 96% 96% Tick & fire counters [>1 together] + 6.22 6.21 6.44 0.01 96% 96% Tick & fire counters [>1 separately] + 2.59 2.56 6.17 0.07 98% 98% Alarm latency [0 threads] + 4.06 3.95 6.24 0.08 78% 57% Alarm latency [2 threads] + 5.03 2.56 9.03 0.89 59% 10% Alarm latency [many threads] + 5.68 5.59 15.45 0.15 99% 99% Alarm -> thread resume latency + + 2.52 1.41 8.12 0.00 Clock/interrupt latency + + 2.05 1.17 6.00 0.00 Clock DSR latency + + 34 0 1072 (main stack: 1320) Thread stack used (1912 total) +All done, main stack : stack used 1320 size 2936 +All done : Interrupt stack used 136 size 4096 +All done : Idlethread stack used 996 size 2048 + +Timing complete - 30360 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-mn10300-stdeval1"> +<TITLE>Board: Matsushita STDEVAL1 Board</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: Matsushita STDEVAL1 Board + +CPU : MN103002A 60MHz + +eCOS Kernel Timings +Note: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 18 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 13.73 microseconds (205 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 24 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 14.36 11.53 23.53 1.81 54% 33% Create thread + 2.64 2.53 5.07 0.20 95% 95% Yield thread [all suspended] + 2.25 1.93 4.80 0.31 45% 83% Suspend [suspended] thread + 2.19 2.00 4.93 0.28 91% 91% Resume thread + 3.42 3.00 8.40 0.47 95% 87% Set priority + 0.31 0.13 1.20 0.19 79% 58% Get priority + 8.26 7.40 18.80 0.93 95% 87% Kill [suspended] thread + 2.58 2.47 5.13 0.21 95% 95% Yield [no other] thread + 5.07 4.53 8.67 0.44 62% 50% Resume [suspended low prio] thread + 2.27 2.07 4.53 0.23 87% 87% Resume [runnable low prio] thread + 4.76 4.07 9.40 0.65 66% 75% Suspend [runnable] thread + 2.63 2.53 4.73 0.18 95% 95% Yield [only low prio] thread + 2.09 1.87 4.27 0.27 91% 79% Suspend [runnable->not runnable] + 10.79 10.00 18.20 0.81 95% 79% Kill [runnable] thread + 20.30 18.40 28.80 1.42 79% 54% Resume [high priority] thread + 5.53 5.47 12.13 0.11 98% 97% Thread switch + + 0.28 0.27 2.20 0.03 97% 97% Scheduler lock + 1.14 1.13 2.00 0.01 99% 99% Scheduler unlock [0 threads] + 1.14 1.13 2.40 0.02 99% 99% Scheduler unlock [1 suspended] + 1.16 1.13 3.33 0.06 95% 95% Scheduler unlock [many suspended] + 1.23 1.20 3.13 0.05 95% 95% Scheduler unlock [many low prio] + + 1.29 1.00 4.20 0.25 65% 50% Init mutex + 2.65 2.47 5.27 0.23 93% 87% Lock [unlocked] mutex + 3.26 3.07 6.80 0.28 93% 87% Unlock [locked] mutex + 2.48 2.33 5.07 0.21 90% 87% Trylock [unlocked] mutex + 2.20 2.07 4.67 0.21 93% 87% Trylock [locked] mutex + 0.23 0.20 1.00 0.05 96% 93% Destroy mutex + 25.11 24.73 27.53 0.21 65% 31% Unlock/Lock mutex + + 2.49 2.00 5.73 0.32 81% 37% Create mbox + 0.11 0.00 1.60 0.15 84% 81% Peek [empty] mbox + 3.01 2.60 9.47 0.52 96% 78% Put [first] mbox + 0.10 0.00 1.67 0.15 87% 81% Peek [1 msg] mbox + 3.09 2.60 8.33 0.50 93% 75% Put [second] mbox + 0.06 0.00 1.13 0.08 96% 87% Peek [2 msgs] mbox + 3.10 2.80 7.93 0.40 93% 84% Get [first] mbox + 3.13 2.80 7.53 0.43 90% 78% Get [second] mbox + 2.99 2.60 8.53 0.52 93% 75% Tryput [first] mbox + 2.65 2.33 6.80 0.42 90% 78% Peek item [non-empty] mbox + 3.05 2.73 7.60 0.42 93% 78% Tryget [non-empty] mbox + 3.16 2.93 6.27 0.31 84% 84% Peek item [empty] mbox + 2.48 2.27 5.73 0.30 84% 84% Tryget [empty] mbox + 0.23 0.13 2.07 0.14 96% 87% Waiting to get mbox + 0.22 0.13 1.93 0.13 96% 75% Waiting to put mbox + 3.08 2.80 7.93 0.42 84% 84% Delete mbox + 16.01 15.53 19.00 0.52 78% 59% Put/Get mbox + + 0.85 0.67 3.27 0.19 96% 50% Init semaphore + 2.00 1.93 3.87 0.12 96% 90% Post [0] semaphore + 2.05 2.00 3.47 0.09 96% 96% Wait [1] semaphore + 1.85 1.80 3.47 0.10 96% 96% Trywait [0] semaphore + 1.82 1.80 2.53 0.04 96% 96% Trywait [1] semaphore + 0.36 0.33 1.33 0.06 96% 96% Peek semaphore + 0.38 0.33 1.87 0.09 96% 96% Destroy semaphore + 12.38 12.20 16.27 0.30 93% 87% Post/Wait semaphore + + 1.18 0.73 4.07 0.24 78% 18% Create counter + 0.20 0.13 1.40 0.11 87% 87% Get counter value + 0.24 0.20 1.40 0.08 93% 93% Set counter value + 3.17 3.13 4.20 0.07 93% 93% Tick counter + 0.44 0.40 1.73 0.08 96% 96% Delete counter + + 2.24 1.67 5.13 0.47 68% 65% Create alarm + 3.86 3.40 9.67 0.51 90% 78% Initialize alarm + 0.15 0.07 1.60 0.12 96% 68% Disable alarm + 3.76 3.47 7.67 0.35 93% 75% Enable alarm + 0.57 0.47 2.73 0.16 96% 84% Delete alarm + 3.64 3.60 4.73 0.07 96% 96% Tick counter [1 alarm] + 21.72 21.67 23.27 0.10 96% 96% Tick counter [many alarms] + 6.13 6.07 8.07 0.12 96% 96% Tick & fire counter [1 alarm] + 101.40 99.53 132.73 2.75 93% 93% Tick & fire counters [>1 together] + 24.21 24.13 26.40 0.14 96% 96% Tick & fire counters [>1 separately] + 11.74 11.60 22.67 0.26 98% 98% Alarm latency [0 threads] + 14.58 11.73 24.93 1.59 54% 28% Alarm latency [2 threads] + 18.18 15.20 41.07 1.96 60% 43% Alarm latency [many threads] + + 3.06 2.13 10.33 0.00 Clock/interrupt latency + +Timing complete - 23480 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-sparclite-sleb"> +<TITLE>Board: Fujitsu SPARClite Evaluation Board</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: Fujitsu SPARClite Evaluation Board + +CPU : Fujitsu SPARClite MB8683X 100MHz + + +eCOS Kernel Timings +Note: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 0 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 17.19 microseconds (17 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 24 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 48.59 47.00 63.01 1.41 66% 70% Create thread + 2.13 2.00 5.00 0.24 95% 95% Yield thread [all suspended] + 2.92 2.00 10.00 0.69 58% 37% Suspend [suspended] thread + 2.13 1.00 10.00 0.66 75% 20% Resume thread + 2.79 2.00 11.00 0.86 95% 54% Set priority + 1.00 0.00 5.00 0.33 79% 16% Get priority + 7.17 5.00 34.00 2.24 95% 95% Kill [suspended] thread + 2.42 2.00 12.00 0.80 95% 95% Yield [no other] thread + 3.46 2.00 14.00 1.10 75% 83% Resume [suspended low prio] thread + 2.00 1.00 9.00 0.58 66% 29% Resume [runnable low prio] thread + 4.21 3.00 20.00 1.38 95% 91% Suspend [runnable] thread + 2.33 2.00 10.00 0.64 95% 95% Yield [only low prio] thread + 2.00 1.00 9.00 0.67 58% 33% Suspend [runnable->not runnable] + 5.79 4.00 30.00 2.07 95% 95% Kill [runnable] thread + 39.34 37.00 75.01 3.36 91% 91% Resume [high priority] thread + 15.20 15.00 31.00 0.40 97% 97% Thread switch + + 1.04 1.00 4.00 0.08 97% 97% Scheduler lock + 1.42 1.00 5.00 0.51 60% 60% Scheduler unlock [0 threads] + 1.41 1.00 5.00 0.50 61% 61% Scheduler unlock [1 suspended] + 1.41 1.00 5.00 0.50 60% 60% Scheduler unlock [many suspended] + 1.40 1.00 5.00 0.50 62% 62% Scheduler unlock [many low prio] + + 1.19 1.00 6.00 0.35 93% 93% Init mutex + 2.34 2.00 12.00 0.64 93% 93% Lock [unlocked] mutex + 3.41 3.00 13.00 0.71 96% 87% Unlock [locked] mutex + 2.16 1.00 10.00 0.49 87% 9% Trylock [unlocked] mutex + 1.78 1.00 7.00 0.59 59% 37% Trylock [locked] mutex + 0.72 0.00 2.00 0.45 65% 31% Destroy mutex + 25.25 24.00 41.00 0.98 71% 25% Unlock/Lock mutex + + 1.44 1.00 9.00 0.68 96% 78% Create mbox + 0.94 0.00 3.00 0.23 84% 12% Peek [empty] mbox + 3.06 2.00 13.00 0.62 71% 25% Put [first] mbox + 0.69 0.00 3.00 0.52 59% 37% Peek [1 msg] mbox + 2.44 2.00 10.00 0.68 96% 78% Put [second] mbox + 0.78 0.00 3.00 0.44 68% 28% Peek [2 msgs] mbox + 3.78 3.00 14.00 0.83 96% 53% Get [first] mbox + 2.97 2.00 9.00 0.61 56% 31% Get [second] mbox + 2.53 2.00 12.00 0.80 96% 75% Tryput [first] mbox + 2.72 2.00 12.00 0.81 96% 56% Peek item [non-empty] mbox + 2.63 2.00 13.00 0.94 90% 75% Tryget [non-empty] mbox + 1.97 1.00 6.00 0.42 68% 21% Peek item [empty] mbox + 2.09 1.00 9.00 0.49 78% 15% Tryget [empty] mbox + 0.84 0.00 4.00 0.42 71% 25% Waiting to get mbox + 0.81 0.00 4.00 0.46 68% 28% Waiting to put mbox + 2.38 2.00 11.00 0.66 96% 87% Delete mbox + 23.41 22.00 47.00 1.47 96% 96% Put/Get mbox + + 1.03 0.00 6.00 0.31 84% 12% Init semaphore + 2.66 2.00 8.00 0.66 96% 50% Post [0] semaphore + 1.97 1.00 10.00 0.55 68% 28% Wait [1] semaphore + 1.78 1.00 8.00 0.63 56% 40% Trywait [0] semaphore + 1.84 1.00 8.00 0.58 62% 34% Trywait [1] semaphore + 1.00 0.00 5.00 0.25 84% 12% Peek semaphore + 0.81 0.00 4.00 0.46 68% 28% Destroy semaphore + 19.03 18.00 41.00 1.37 96% 96% Post/Wait semaphore + + 1.38 1.00 6.00 0.56 75% 75% Create counter + 1.09 1.00 3.00 0.18 93% 93% Get counter value + 1.00 0.00 5.00 0.31 78% 15% Set counter value + 3.09 2.00 6.00 0.35 78% 9% Tick counter + 0.91 0.00 5.00 0.40 75% 21% Delete counter + + 2.53 2.00 9.00 0.70 96% 65% Create alarm + 6.03 5.00 22.00 1.00 50% 46% Initialize alarm + 0.78 0.00 4.00 0.49 65% 31% Disable alarm + 2.91 2.00 13.00 0.91 87% 50% Enable alarm + 0.97 0.00 5.00 0.30 81% 15% Delete alarm + 2.69 2.00 9.00 0.69 96% 50% Tick counter [1 alarm] + 12.00 11.00 23.00 0.69 62% 34% Tick counter [many alarms] + 4.16 3.00 13.00 0.55 84% 12% Tick & fire counter [1 alarm] + 72.69 72.01 87.01 1.03 96% 96% Tick & fire counters [>1 together] + 13.66 13.00 23.00 0.82 96% 62% Tick & fire counters [>1 separately] + 13.26 13.00 42.00 0.51 98% 98% Alarm latency [0 threads] + 16.75 11.00 53.01 2.78 64% 16% Alarm latency [2 threads] + 24.06 18.00 58.01 3.55 67% 25% Alarm latency [many threads] + + 3.61 2.00 13.00 0.00 Clock/interrupt latency + +Timing complete - 23590 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-ppc-cogent"> +<TITLE>Board: Cogent CMA MPC860 (PowerPC) Evaluation </TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: Cogent CMA MPC860 (PowerPC) Evaluation +CPU : MPC860, revision A3 33MHz + + +eCOS Kernel Timings +Note: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 0 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 14.46 microseconds (30 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 24 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 26.78 23.52 41.76 1.97 66% 37% Create thread + 4.00 3.84 4.80 0.23 70% 70% Yield thread [all suspended] + 3.78 3.36 7.68 0.38 50% 45% Suspend [suspended] thread + 3.56 3.36 7.68 0.37 95% 91% Resume thread + 5.28 4.32 12.96 0.76 83% 66% Set priority + 0.84 0.48 3.84 0.39 91% 54% Get priority + 11.76 10.08 32.16 1.70 95% 95% Kill [suspended] thread + 4.14 3.84 8.64 0.45 95% 75% Yield [no other] thread + 7.14 5.76 17.76 1.07 79% 70% Resume [suspended low prio] thread + 3.60 3.36 8.16 0.42 95% 87% Resume [runnable low prio] thread + 6.10 5.28 14.88 0.80 62% 70% Suspend [runnable] thread + 4.00 3.84 5.76 0.25 79% 79% Yield [only low prio] thread + 3.66 3.36 8.64 0.47 95% 79% Suspend [runnable->not runnable] + 11.66 10.08 30.24 1.58 79% 91% Kill [runnable] thread + 31.12 27.84 53.28 2.35 87% 50% Resume [high priority] thread + 7.52 7.20 15.84 0.30 50% 48% Thread switch + + 1.00 0.48 2.88 0.21 63% 14% Scheduler lock + 2.57 2.40 3.84 0.23 65% 65% Scheduler unlock [0 threads] + 2.58 2.40 4.32 0.23 64% 64% Scheduler unlock [1 suspended] + 2.59 2.40 4.32 0.24 62% 62% Scheduler unlock [many suspended] + 2.59 2.40 4.32 0.24 61% 61% Scheduler unlock [many low prio] + + 1.69 1.44 5.76 0.37 96% 71% Init mutex + 4.15 3.84 10.56 0.47 96% 75% Lock [unlocked] mutex + 5.82 5.28 10.56 0.38 62% 28% Unlock [locked] mutex + 3.70 3.36 8.64 0.41 96% 59% Trylock [unlocked] mutex + 3.42 2.88 6.72 0.26 75% 15% Trylock [locked] mutex + 0.36 0.00 1.92 0.25 62% 34% Destroy mutex + 43.41 42.72 45.12 0.34 81% 3% Unlock/Lock mutex + + 3.27 2.88 8.16 0.39 96% 50% Create mbox + 0.57 0.00 2.40 0.34 50% 21% Peek [empty] mbox + 6.16 5.76 11.04 0.48 87% 87% Put [first] mbox + 0.48 0.00 1.92 0.27 50% 28% Peek [1 msg] mbox + 5.92 5.28 10.56 0.35 90% 6% Put [second] mbox + 0.60 0.00 2.40 0.30 62% 12% Peek [2 msgs] mbox + 4.69 4.32 12.00 0.54 93% 93% Get [first] mbox + 4.68 4.32 11.52 0.52 93% 93% Get [second] mbox + 5.86 5.28 11.04 0.47 62% 31% Tryput [first] mbox + 4.00 3.36 9.12 0.38 87% 9% Peek item [non-empty] mbox + 4.59 3.84 12.48 0.61 71% 75% Tryget [non-empty] mbox + 3.75 3.36 7.68 0.34 53% 43% Peek item [empty] mbox + 3.93 3.36 9.60 0.45 65% 31% Tryget [empty] mbox + 0.63 0.00 2.40 0.28 68% 6% Waiting to get mbox + 0.54 0.00 1.92 0.19 75% 9% Waiting to put mbox + 4.84 4.32 12.00 0.47 56% 40% Delete mbox + 24.18 23.52 29.76 0.66 81% 75% Put/Get mbox + + 1.72 0.96 3.84 0.33 90% 6% Init semaphore + 3.15 2.88 6.24 0.34 96% 62% Post [0] semaphore + 3.85 3.36 8.64 0.30 68% 28% Wait [1] semaphore + 3.24 2.88 6.24 0.34 46% 46% Trywait [0] semaphore + 3.22 2.88 6.24 0.32 50% 46% Trywait [1] semaphore + 0.96 0.48 2.88 0.12 84% 12% Peek semaphore + 0.99 0.96 1.92 0.06 96% 96% Destroy semaphore + 24.71 24.00 28.80 0.40 87% 6% Post/Wait semaphore + + 2.31 1.44 6.24 0.77 46% 56% Create counter + 0.45 0.00 0.96 0.08 87% 9% Get counter value + 0.42 0.00 0.96 0.16 75% 18% Set counter value + 4.14 3.84 4.80 0.26 50% 43% Tick counter + 0.91 0.48 2.40 0.19 71% 21% Delete counter + + 5.23 4.32 7.68 0.61 65% 53% Create alarm + 5.58 4.80 12.96 0.72 68% 84% Initialize alarm + 0.75 0.48 1.92 0.30 90% 56% Disable alarm + 8.02 7.20 14.40 0.53 84% 68% Enable alarm + 1.32 0.96 3.84 0.29 56% 40% Delete alarm + 4.63 4.32 6.24 0.28 53% 43% Tick counter [1 alarm] + 23.67 23.52 25.44 0.23 78% 78% Tick counter [many alarms] + 7.24 6.72 10.56 0.21 84% 12% Tick & fire counter [1 alarm] + 106.83 106.56 110.40 0.35 96% 65% Tick & fire counters [>1 together] + 26.18 25.44 29.76 0.46 81% 9% Tick & fire counters [>1 separately] + 10.79 10.08 29.28 0.66 53% 55% Alarm latency [0 threads] + 17.20 13.92 35.52 1.48 67% 21% Alarm latency [2 threads] + 29.69 22.56 47.04 3.58 57% 17% Alarm latency [many threads] + + 7.66 3.84 19.20 0.00 Clock/interrupt latency + +Timing complete - 23530 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-vr4300-vrc4373"> +<TITLE>Board: NEC VR4373</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: NEC VR4373 + +CPU : NEC VR4300 133MHz + + +Startup, main stack : stack used 1304 size 3576 +Startup : Interrupt stack used 980 size 4096 +Startup : Idlethread stack used 494 size 2552 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 3 `ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 6.49 microseconds (431 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 16 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 17.21 16.18 22.14 0.88 75% 68% Create thread + 0.84 0.78 1.29 0.10 81% 81% Yield thread [all suspended] + 0.90 0.62 3.20 0.35 87% 87% Suspend [suspended] thread + 0.74 0.65 1.16 0.12 81% 68% Resume thread + 1.11 0.90 1.70 0.25 75% 68% Set priority + 0.11 0.05 0.35 0.09 75% 75% Get priority + 2.93 2.24 8.27 0.78 93% 75% Kill [suspended] thread + 0.88 0.78 1.92 0.16 93% 81% Yield [no other] thread + 1.82 1.20 4.71 0.62 87% 62% Resume [suspended low prio] thread + 0.70 0.63 0.86 0.09 68% 68% Resume [runnable low prio] thread + 1.21 1.07 1.61 0.13 81% 68% Suspend [runnable] thread + 0.86 0.78 1.58 0.13 81% 81% Yield [only low prio] thread + 0.69 0.62 0.84 0.09 68% 68% Suspend [runnable->not runnable] + 2.64 2.24 4.35 0.43 81% 62% Kill [runnable] thread + 1.50 1.07 5.82 0.56 93% 87% Destroy [dead] thread + 3.66 2.75 7.74 0.82 50% 56% Destroy [runnable] thread + 13.65 8.33 27.88 3.70 50% 43% Resume [high priority] thread + 2.04 1.89 3.32 0.15 46% 49% Thread switch + + 0.19 0.05 0.83 0.13 48% 44% Scheduler lock + 0.50 0.41 1.59 0.13 89% 73% Scheduler unlock [0 threads] + 0.52 0.41 1.29 0.14 89% 64% Scheduler unlock [1 suspended] + 0.56 0.41 1.49 0.15 42% 47% Scheduler unlock [many suspended] + 0.56 0.41 1.41 0.15 43% 47% Scheduler unlock [many low prio] + + 0.57 0.20 2.33 0.27 65% 50% Init mutex + 0.89 0.75 3.35 0.20 96% 75% Lock [unlocked] mutex + 0.90 0.74 4.38 0.25 96% 93% Unlock [locked] mutex + 0.77 0.65 2.63 0.17 96% 75% Trylock [unlocked] mutex + 0.66 0.59 1.16 0.10 75% 75% Trylock [locked] mutex + 0.07 0.00 0.45 0.09 75% 75% Destroy mutex + 7.95 7.71 9.49 0.19 50% 46% Unlock/Lock mutex + + 1.04 0.81 3.44 0.27 93% 68% Create mbox + 0.10 0.02 0.57 0.11 71% 68% Peek [empty] mbox + 1.15 0.83 4.71 0.31 53% 71% Put [first] mbox + 0.10 0.02 0.57 0.12 68% 68% Peek [1 msg] mbox + 1.01 0.83 3.83 0.22 93% 75% Put [second] mbox + 0.09 0.02 0.57 0.10 71% 71% Peek [2 msgs] mbox + 1.03 0.81 5.02 0.27 96% 87% Get [first] mbox + 0.93 0.81 1.61 0.14 84% 62% Get [second] mbox + 1.07 0.77 4.18 0.23 68% 50% Tryput [first] mbox + 0.89 0.72 3.49 0.21 93% 71% Peek item [non-empty] mbox + 1.04 0.83 4.09 0.26 90% 81% Tryget [non-empty] mbox + 0.79 0.68 1.97 0.15 87% 68% Peek item [empty] mbox + 0.84 0.72 2.36 0.17 93% 68% Tryget [empty] mbox + 0.13 0.02 0.59 0.13 87% 62% Waiting to get mbox + 0.13 0.02 0.90 0.13 90% 62% Waiting to put mbox + 0.93 0.77 3.23 0.21 90% 71% Delete mbox + 4.74 4.51 8.80 0.32 93% 78% Put/Get mbox + + 0.50 0.21 1.95 0.29 90% 50% Init semaphore + 0.86 0.57 2.87 0.29 93% 56% Post [0] semaphore + 1.01 0.74 3.62 0.28 93% 56% Wait [1] semaphore + 0.87 0.60 3.17 0.28 90% 59% Trywait [0] semaphore + 0.74 0.62 1.70 0.14 93% 56% Trywait [1] semaphore + 0.36 0.11 1.11 0.26 65% 56% Peek semaphore + 0.25 0.12 1.19 0.14 93% 56% Destroy semaphore + 7.85 7.52 8.93 0.21 62% 43% Post/Wait semaphore + + 0.90 0.44 3.08 0.29 65% 28% Create counter + 0.07 0.05 0.89 0.05 96% 96% Get counter value + 0.06 0.05 0.33 0.02 96% 96% Set counter value + 0.88 0.86 1.62 0.05 96% 96% Tick counter + 0.13 0.12 0.41 0.02 96% 96% Delete counter + + 1.37 0.81 2.95 0.27 62% 25% Create alarm + 1.35 1.17 6.03 0.31 96% 93% Initialize alarm + 0.11 0.08 0.65 0.05 90% 90% Disable alarm + 1.23 1.14 3.05 0.15 93% 87% Enable alarm + 0.21 0.18 0.47 0.04 90% 90% Delete alarm + 1.03 0.99 2.11 0.07 96% 96% Tick counter [1 alarm] + 4.96 4.96 4.96 0.00 100% 100% Tick counter [many alarms] + 1.70 1.67 2.51 0.05 96% 96% Tick & fire counter [1 alarm] + 26.39 26.38 26.71 0.02 96% 96% Tick & fire counters [>1 together] + 5.65 5.64 5.91 0.02 96% 96% Tick & fire counters [>1 separately] + 2.55 2.38 9.86 0.19 96% 54% Alarm latency [0 threads] + 5.37 3.80 9.73 0.95 50% 34% Alarm latency [2 threads] + 8.79 5.83 16.12 1.29 57% 14% Alarm latency [many threads] + + 5.85 2.26 16.24 0.00 Clock/interrupt latency + + 1540 1536 1544 (main stack: 1664) Thread stack used (2552 total) +All done, main stack : stack used 1664 size 3576 +All done : Interrupt stack used 312 size 4096 +All done : Idlethread stack used 1440 size 2552 + +Timing complete - 23810 ms total + +PASS:<Basic timing OK> +EXIT:<done> + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-arm-assabet"> +<TITLE>Board: Intel SA1110 (Assabet)</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: Intel SA1110 (Assabet) + +CPU : StrongARM 221.2 MHz + + + +Microseconds for one run through Dhrystone: 3.3 +Dhrystones per Second: 306748.5 +VAX MIPS rating = 174.586 + +Startup, main stack : stack used 420 size 2400 +Startup : Interrupt stack used 136 size 4096 +Startup : Idlethread stack used 84 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 0 `ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 3.20 microseconds (11 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 5.98 4.88 14.38 0.70 57% 35% Create thread + 0.86 0.81 1.90 0.08 87% 87% Yield thread [all suspended] + 1.05 0.81 3.53 0.19 46% 39% Suspend [suspended] thread + 1.07 0.81 3.80 0.18 48% 35% Resume thread + 1.36 1.09 5.97 0.22 45% 39% Set priority + 0.73 0.54 1.90 0.19 85% 50% Get priority + 2.93 2.44 13.56 0.39 79% 70% Kill [suspended] thread + 0.89 0.81 4.34 0.14 89% 89% Yield [no other] thread + 1.63 1.36 4.61 0.17 57% 29% Resume [suspended low prio] thread + 1.03 0.81 3.53 0.19 46% 42% Resume [runnable low prio] thread + 1.74 1.36 6.51 0.22 87% 6% Suspend [runnable] thread + 0.93 0.81 4.61 0.18 98% 78% Yield [only low prio] thread + 1.06 0.81 3.26 0.19 42% 39% Suspend [runnable->not runnable] + 2.56 1.90 13.02 0.41 87% 34% Kill [runnable] thread + 2.02 1.63 7.05 0.22 92% 3% Destroy [dead] thread + 3.09 2.44 15.19 0.51 78% 46% Destroy [runnable] thread + 6.77 5.43 13.02 0.59 75% 17% Resume [high priority] thread + 1.81 1.63 7.87 0.18 49% 49% Thread switch + + 0.25 0.00 1.36 0.05 89% 10% Scheduler lock + 0.51 0.27 1.36 0.06 85% 13% Scheduler unlock [0 threads] + 0.51 0.27 1.09 0.06 85% 13% Scheduler unlock [1 suspended] + 0.51 0.27 1.09 0.07 85% 14% Scheduler unlock [many suspended] + 0.51 0.27 1.09 0.06 85% 13% Scheduler unlock [many low prio] + + 0.52 0.27 2.17 0.15 62% 31% Init mutex + 0.97 0.54 4.34 0.28 84% 65% Lock [unlocked] mutex + 1.05 0.81 5.15 0.28 96% 96% Unlock [locked] mutex + 0.86 0.54 3.26 0.24 65% 31% Trylock [unlocked] mutex + 0.79 0.54 3.53 0.23 43% 46% Trylock [locked] mutex + 0.33 0.27 1.63 0.11 90% 90% Destroy mutex + 4.16 3.80 8.95 0.30 75% 96% Unlock/Lock mutex + + 0.70 0.54 2.98 0.21 96% 65% Create mbox + 0.59 0.27 1.63 0.14 75% 9% Peek [empty] mbox + 1.33 1.09 5.70 0.31 96% 93% Put [first] mbox + 0.61 0.27 1.63 0.13 81% 3% Peek [1 msg] mbox + 1.35 1.09 5.43 0.31 96% 87% Put [second] mbox + 0.58 0.27 1.36 0.11 78% 6% Peek [2 msgs] mbox + 1.38 1.09 4.88 0.25 59% 37% Get [first] mbox + 1.40 1.09 5.15 0.26 62% 34% Get [second] mbox + 1.27 0.81 4.88 0.28 90% 65% Tryput [first] mbox + 1.34 0.81 4.61 0.22 59% 6% Peek item [non-empty] mbox + 1.47 1.09 5.15 0.27 84% 12% Tryget [non-empty] mbox + 1.12 0.81 4.34 0.23 59% 31% Peek item [empty] mbox + 1.14 0.81 4.07 0.24 71% 25% Tryget [empty] mbox + 0.59 0.27 1.36 0.12 78% 6% Waiting to get mbox + 0.59 0.27 1.36 0.12 78% 6% Waiting to put mbox + 1.28 0.81 5.43 0.32 87% 78% Delete mbox + 2.64 2.17 10.31 0.48 96% 96% Put/Get mbox + + 0.47 0.27 2.17 0.19 46% 46% Init semaphore + 0.77 0.54 3.80 0.26 90% 56% Post [0] semaphore + 0.90 0.54 4.07 0.26 75% 21% Wait [1] semaphore + 0.85 0.54 3.26 0.21 56% 28% Trywait [0] semaphore + 0.69 0.54 2.17 0.18 96% 62% Trywait [1] semaphore + 0.44 0.27 2.17 0.19 96% 56% Peek semaphore + 0.38 0.27 1.90 0.17 96% 75% Destroy semaphore + 2.74 2.44 9.49 0.42 96% 96% Post/Wait semaphore + + 0.43 0.27 1.90 0.18 96% 56% Create counter + 0.49 0.00 2.17 0.18 56% 3% Get counter value + 0.33 0.00 1.63 0.13 78% 6% Set counter value + 1.03 0.81 2.44 0.22 84% 50% Tick counter + 0.42 0.27 1.90 0.20 90% 65% Delete counter + + 0.70 0.54 2.44 0.20 93% 62% Create alarm + 1.65 1.36 6.78 0.40 96% 81% Initialize alarm + 0.75 0.54 1.63 0.18 43% 43% Disable alarm + 1.75 1.36 7.05 0.38 65% 81% Enable alarm + 0.81 0.54 2.44 0.15 62% 28% Delete alarm + 1.01 0.81 2.17 0.16 56% 40% Tick counter [1 alarm] + 4.19 4.07 5.43 0.16 96% 68% Tick counter [many alarms] + 1.48 1.36 3.80 0.20 96% 78% Tick & fire counter [1 alarm] + 20.23 20.07 22.52 0.21 96% 65% Tick & fire counters [>1 together] + 4.70 4.61 6.78 0.16 87% 87% Tick & fire counters [>1 separately] + 2.81 2.71 14.38 0.20 98% 98% Alarm latency [0 threads] + 3.19 2.71 13.56 0.38 73% 59% Alarm latency [2 threads] + 9.71 7.87 18.17 1.25 59% 53% Alarm latency [many threads] + 5.77 5.43 45.57 0.68 97% 97% Alarm -> thread resume latency + + 2.38 0.81 9.49 0.00 Clock/interrupt latency + + 2.02 1.09 7.32 0.00 Clock DSR latency + + 11 0 316 (main stack: 764) Thread stack used (1120 total) +All done, main stack : stack used 764 size 2400 +All done : Interrupt stack used 287 size 4096 +All done : Idlethread stack used 272 size 2048 + +Timing complete - 30220 ms total + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-arm-brutus"> +<TITLE>Board: Intel SA1100 (Brutus)</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: Intel SA1100 (Brutus) + +CPU : StrongARM 221.2 MHz + +Microseconds for one run through Dhrystone: 3.3 +Dhrystones per Second: 306748.5 +VAX MIPS rating = 174.586 + +Startup, main stack : stack used 404 size 2400 +Startup : Interrupt stack used 136 size 4096 +Startup : Idlethread stack used 87 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 0 `ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 3.09 microseconds (11 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 6.63 5.43 18.99 0.77 70% 37% Create thread + 0.83 0.81 2.17 0.04 98% 98% Yield thread [all suspended] + 1.27 0.81 5.15 0.30 68% 73% Suspend [suspended] thread + 1.25 0.81 5.15 0.25 82% 1% Resume thread + 1.52 1.09 7.87 0.30 78% 75% Set priority + 0.97 0.54 2.71 0.28 64% 51% Get priority + 3.45 2.71 19.53 0.66 84% 76% Kill [suspended] thread + 0.90 0.81 6.24 0.17 98% 98% Yield [no other] thread + 1.86 1.36 6.24 0.33 68% 50% Resume [suspended low prio] thread + 1.25 0.81 5.15 0.25 82% 1% Resume [runnable low prio] thread + 2.01 1.63 10.04 0.32 70% 84% Suspend [runnable] thread + 0.90 0.81 6.24 0.17 98% 98% Yield [only low prio] thread + 1.25 0.81 5.15 0.24 84% 1% Suspend [runnable->not runnable] + 2.92 1.90 18.72 0.57 85% 43% Kill [runnable] thread + 2.45 1.90 10.31 0.33 95% 54% Destroy [dead] thread + 3.95 2.71 23.60 0.89 68% 54% Destroy [runnable] thread + 8.55 6.24 19.53 1.15 60% 23% Resume [high priority] thread + 1.85 1.63 11.94 0.21 49% 49% Thread switch + + 0.25 0.00 1.63 0.05 89% 10% Scheduler lock + 0.52 0.27 1.90 0.07 85% 13% Scheduler unlock [0 threads] + 0.51 0.27 1.36 0.06 85% 13% Scheduler unlock [1 suspended] + 0.51 0.27 1.36 0.06 85% 13% Scheduler unlock [many suspended] + 0.51 0.27 1.63 0.06 85% 13% Scheduler unlock [many low prio] + + 0.58 0.27 3.53 0.20 71% 21% Init mutex + 1.07 0.54 5.70 0.35 87% 59% Lock [unlocked] mutex + 1.14 0.81 6.51 0.40 96% 81% Unlock [locked] mutex + 0.96 0.54 5.15 0.34 68% 65% Trylock [unlocked] mutex + 0.94 0.54 4.88 0.34 65% 65% Trylock [locked] mutex + 0.33 0.27 2.17 0.11 96% 96% Destroy mutex + 4.21 3.80 10.85 0.41 71% 96% Unlock/Lock mutex + 0.76 0.54 4.07 0.25 96% 56% Create mbox + 0.75 0.54 1.90 0.20 84% 50% Peek [empty] mbox + 1.56 1.09 6.78 0.39 68% 59% Put [first] mbox + 0.75 0.54 1.90 0.20 84% 50% Peek [1 msg] mbox + 1.55 1.09 6.78 0.40 68% 62% Put [second] mbox + 0.77 0.54 1.63 0.17 46% 37% Peek [2 msgs] mbox + 1.67 1.09 6.24 0.31 87% 34% Get [first] mbox + 1.63 1.09 6.24 0.31 75% 34% Get [second] mbox + 1.50 1.09 6.51 0.40 56% 62% Tryput [first] mbox + 1.58 1.09 5.43 0.37 68% 53% Peek item [non-empty] mbox + 1.79 1.09 7.05 0.43 71% 25% Tryget [non-empty] mbox + 1.29 1.09 5.15 0.32 87% 87% Peek item [empty] mbox + 1.33 1.09 5.97 0.37 96% 84% Tryget [empty] mbox + 0.73 0.54 1.90 0.21 84% 56% Waiting to get mbox + 0.76 0.54 1.90 0.19 40% 43% Waiting to put mbox + 1.47 1.09 6.78 0.39 59% 84% Delete mbox + 2.70 2.17 12.75 0.63 96% 96% Put/Get mbox + + 0.47 0.27 2.71 0.20 96% 50% Init semaphore + 0.89 0.54 4.88 0.33 56% 75% Post [0] semaphore + 0.96 0.54 5.15 0.33 71% 75% Wait [1] semaphore + 0.86 0.54 4.88 0.32 96% 81% Trywait [0] semaphore + 0.69 0.54 3.26 0.22 96% 75% Trywait [1] semaphore + 0.49 0.27 3.26 0.28 84% 84% Peek semaphore + 0.39 0.27 2.44 0.19 96% 78% Destroy semaphore + 2.83 2.44 11.66 0.55 96% 96% Post/Wait semaphore + + 0.52 0.27 3.26 0.20 56% 40% Create counter + 0.59 0.00 2.71 0.34 81% 46% Get counter value + 0.36 0.00 2.44 0.21 81% 9% Set counter value + 1.13 0.81 2.98 0.26 59% 37% Tick counter + 0.39 0.27 1.90 0.19 90% 78% Delete counter + + 0.86 0.54 4.07 0.24 65% 31% Create alarm + 1.86 1.36 9.77 0.54 96% 90% Initialize alarm + 0.77 0.54 2.71 0.23 84% 50% Disable alarm + 1.86 1.36 9.22 0.51 96% 75% Enable alarm + 0.89 0.54 3.26 0.25 65% 21% Delete alarm + 0.99 0.81 3.26 0.21 96% 59% Tick counter [1 alarm] + 4.22 4.07 6.78 0.22 96% 71% Tick counter [many alarms] + 1.51 1.36 4.61 0.24 96% 78% Tick & fire counter [1 alarm] + 20.29 20.07 23.33 0.23 96% 53% Tick & fire counters [>1 together] + 4.71 4.61 7.87 0.20 96% 96% Tick & fire counters [>1 separately] + 2.88 2.71 23.87 0.33 99% 99% Alarm latency [0 threads] + 3.24 2.71 17.36 0.40 79% 58% Alarm latency [2 threads] + 15.71 12.48 27.40 1.47 53% 17% Alarm latency [many threads] + 5.95 5.43 64.56 1.02 97% 97% Alarm -> thread resume latency + + 3.25 0.81 14.11 0.00 Clock/interrupt latency + + 2.68 1.09 12.75 0.00 Clock DSR latency + + 29 0 316 (main stack: 764) Thread stack used (1120 total) +All done, main stack : stack used 764 size 2400 +All done : Interrupt stack used 288 size 4096 +All done : Idlethread stack used 260 size 2048 + + +Timing complete - 30280 ms total + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-ppc-mbx860"> +<TITLE>Board: Motorola MBX</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: Motorola MBX + +CPU : Motorola MPC860 66MHZ + + +Startup, main stack : stack used 643 size 5664 +Startup : Interrupt stack used 427 size 4096 +Startup : Idlethread stack used 236 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 0 `ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 25.36 microseconds (79 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 16 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 27.58 25.60 44.16 2.07 93% 93% Create thread + 5.94 5.76 7.04 0.22 93% 62% Yield thread [all suspended] + 6.06 5.44 10.56 0.57 75% 75% Suspend [suspended] thread + 5.42 4.80 9.60 0.53 87% 81% Resume thread + 7.10 6.40 14.08 0.90 93% 87% Set priority + 0.86 0.64 1.92 0.22 93% 50% Get priority + 16.74 15.04 36.48 2.47 93% 93% Kill [suspended] thread + 6.14 5.76 10.56 0.55 93% 93% Yield [no other] thread + 9.74 8.96 18.56 1.10 93% 93% Resume [suspended low prio] thread + 5.28 4.80 9.28 0.54 93% 81% Resume [runnable low prio] thread + 9.40 8.32 18.56 1.14 93% 93% Suspend [runnable] thread + 6.04 5.76 8.96 0.38 93% 93% Yield [only low prio] thread + 5.68 5.12 9.60 0.52 68% 75% Suspend [runnable->not runnable] + 16.10 14.40 35.20 2.39 93% 93% Kill [runnable] thread + 8.54 7.68 16.00 0.94 93% 87% Destroy [dead] thread + 20.20 18.56 40.64 2.55 93% 93% Destroy [runnable] thread + 39.02 36.48 57.28 3.28 87% 87% Resume [high priority] thread + 13.13 12.80 22.08 0.15 78% 20% Thread switch + + 0.59 0.32 1.60 0.09 82% 16% Scheduler lock + 3.67 3.52 5.12 0.17 99% 54% Scheduler unlock [0 threads] + 3.67 3.52 4.80 0.17 99% 53% Scheduler unlock [1 suspended] + 3.67 3.52 4.80 0.17 54% 54% Scheduler unlock [many suspended] + 3.69 3.52 5.12 0.17 99% 50% Scheduler unlock [many low prio] + + 2.41 2.24 5.44 0.25 96% 75% Init mutex + 6.83 6.40 11.84 0.34 75% 90% Lock [unlocked] mutex + 6.74 6.40 13.12 0.40 96% 96% Unlock [locked] mutex + 5.53 5.12 9.60 0.25 84% 12% Trylock [unlocked] mutex + 4.84 4.48 7.36 0.17 78% 15% Trylock [locked] mutex + 0.34 0.00 0.96 0.06 90% 3% Destroy mutex + 56.10 55.68 59.52 0.21 93% 3% Unlock/Lock mutex + + 4.72 4.48 10.24 0.37 96% 96% Create mbox + 0.75 0.64 1.92 0.16 75% 75% Peek [empty] mbox + 6.79 6.40 12.80 0.41 96% 90% Put [first] mbox + 0.46 0.32 1.60 0.19 93% 68% Peek [1 msg] mbox + 6.68 6.40 12.16 0.37 96% 96% Put [second] mbox + 0.50 0.32 1.60 0.20 93% 56% Peek [2 msgs] mbox + 7.13 6.40 14.08 0.49 90% 46% Get [first] mbox + 6.97 6.40 13.44 0.47 84% 78% Get [second] mbox + 6.24 5.76 11.52 0.38 78% 81% Tryput [first] mbox + 5.98 5.44 11.20 0.39 78% 62% Peek item [non-empty] mbox + 6.52 6.08 13.12 0.49 93% 81% Tryget [non-empty] mbox + 5.50 5.12 10.24 0.30 68% 28% Peek item [empty] mbox + 5.76 5.44 10.88 0.32 96% 96% Tryget [empty] mbox + 0.50 0.32 1.60 0.19 96% 53% Waiting to get mbox + 0.50 0.32 1.60 0.19 96% 53% Waiting to put mbox + 7.45 7.04 15.04 0.49 96% 93% Delete mbox + 37.47 36.80 48.64 0.70 96% 96% Put/Get mbox + + 2.49 2.24 6.08 0.28 96% 56% Init semaphore + 5.09 4.80 8.64 0.27 46% 46% Post [0] semaphore + 6.25 5.76 10.88 0.32 93% 3% Wait [1] semaphore + 4.84 4.48 8.32 0.23 68% 25% Trywait [0] semaphore + 4.98 4.80 8.00 0.26 96% 71% Trywait [1] semaphore + 1.66 1.28 3.84 0.20 68% 15% Peek semaphore + 1.24 0.96 3.20 0.17 65% 31% Destroy semaphore + 40.74 40.32 49.28 0.53 96% 96% Post/Wait semaphore + + 2.65 2.24 6.08 0.23 84% 9% Create counter + 0.85 0.64 2.24 0.22 90% 53% Get counter value + 0.68 0.64 1.92 0.08 96% 96% Set counter value + 7.13 6.72 8.64 0.24 78% 18% Tick counter + 1.30 0.96 3.20 0.12 84% 12% Delete counter + + 3.69 3.52 7.68 0.29 96% 84% Create alarm + 8.98 8.32 17.60 0.61 68% 62% Initialize alarm + 0.96 0.64 2.88 0.14 71% 21% Disable alarm + 8.76 8.32 17.60 0.59 96% 87% Enable alarm + 1.99 1.60 5.12 0.21 81% 12% Delete alarm + 7.44 7.36 9.92 0.15 96% 96% Tick counter [1 alarm] + 21.68 21.44 24.64 0.25 96% 53% Tick counter [many alarms] + 10.95 10.56 15.04 0.26 78% 18% Tick & fire counter [1 alarm] + 132.79 132.48 136.32 0.23 59% 37% Tick & fire counters [>1 together] + 25.18 24.96 28.80 0.29 96% 65% Tick & fire counters [>1 separately] + 23.06 22.72 47.36 0.40 98% 98% Alarm latency [0 threads] + 31.53 27.20 56.00 0.63 96% 0% Alarm latency [2 threads] + 36.86 30.40 58.88 4.15 50% 28% Alarm latency [many threads] + + 11.41 8.96 16.32 0.00 Clock/interrupt latency + + 609 603 651 (main stack: 1059) Thread stack used (1704 total) +All done, main stack : stack used 1059 size 5664 +All done : Interrupt stack used 251 size 4096 +All done : Idlethread stack used 587 size 2048 + +Timing complete - 23690 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-sh-edk7708"> +<TITLE>Board: Hitachi EDK7708</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + + +Board: Hitachi EDK7708 + +CPU: Hitachi SH3/7708 60MHz + + + +Startup, main stack : stack used 444 size 4112 +Startup : Interrupt stack used 76 size 4096 +Startup : Idlethread stack used 96 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 2 `ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 14.75 microseconds (55 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 16 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 15.43 13.60 24.00 1.29 62% 50% Create thread + 3.33 3.20 4.27 0.18 93% 68% Yield thread [all suspended] + 2.90 2.40 5.33 0.36 81% 62% Suspend [suspended] thread + 2.93 2.67 4.80 0.27 93% 87% Resume thread + 4.30 3.73 10.13 0.73 93% 93% Set priority + 0.65 0.27 2.13 0.28 68% 62% Get priority + 9.72 8.53 21.33 1.45 93% 93% Kill [suspended] thread + 3.33 3.20 4.53 0.20 93% 75% Yield [no other] thread + 5.30 4.80 10.13 0.65 93% 87% Resume [suspended low prio] thread + 2.80 2.40 4.53 0.27 81% 75% Resume [runnable low prio] thread + 4.82 4.00 8.27 0.49 68% 25% Suspend [runnable] thread + 3.32 3.20 4.00 0.16 93% 68% Yield [only low prio] thread + 2.82 2.40 4.27 0.25 81% 12% Suspend [runnable->not runnable] + 9.45 8.53 19.47 1.25 93% 93% Kill [runnable] thread + 5.30 4.53 11.20 0.74 87% 93% Destroy [dead] thread + 11.83 10.67 25.07 1.65 93% 93% Destroy [runnable] thread + 19.53 17.33 31.20 1.88 75% 75% Resume [high priority] thread + 6.70 6.67 11.47 0.07 99% 99% Thread switch + + 0.33 0.27 0.80 0.10 75% 75% Scheduler lock + 1.74 1.60 2.67 0.14 99% 50% Scheduler unlock [0 threads] + 1.72 1.60 3.20 0.14 99% 57% Scheduler unlock [1 suspended] + 1.81 1.60 3.20 0.10 75% 23% Scheduler unlock [many suspended] + 1.86 1.60 3.20 0.02 94% 4% Scheduler unlock [many low prio] + + 1.22 1.07 3.20 0.20 96% 65% Init mutex + 3.21 2.93 5.87 0.17 68% 28% Lock [unlocked] mutex + 3.36 2.93 7.47 0.30 84% 75% Unlock [locked] mutex + 2.83 2.67 5.33 0.22 96% 65% Trylock [unlocked] mutex + 2.53 2.40 2.93 0.14 96% 53% Trylock [locked] mutex + 0.28 0.27 0.80 0.03 96% 96% Destroy mutex + 20.09 19.73 23.20 0.23 84% 12% Unlock/Lock mutex + + 2.38 2.13 4.53 0.17 59% 34% Create mbox + 0.45 0.27 1.33 0.15 56% 40% Peek [empty] mbox + 3.70 3.20 7.20 0.29 84% 59% Put [first] mbox + 0.45 0.27 0.80 0.13 62% 34% Peek [1 msg] mbox + 3.67 3.20 5.60 0.23 81% 6% Put [second] mbox + 0.42 0.27 0.53 0.13 59% 40% Peek [2 msgs] mbox + 3.98 3.47 7.47 0.24 59% 9% Get [first] mbox + 3.97 3.47 4.80 0.24 59% 12% Get [second] mbox + 3.51 3.20 6.67 0.28 56% 78% Tryput [first] mbox + 3.29 2.93 5.60 0.29 59% 65% Peek item [non-empty] mbox + 4.06 3.47 7.20 0.26 68% 3% Tryget [non-empty] mbox + 3.03 2.67 5.33 0.19 93% 3% Peek item [empty] mbox + 3.36 3.20 4.80 0.18 96% 56% Tryget [empty] mbox + 0.57 0.27 1.33 0.09 84% 3% Waiting to get mbox + 0.52 0.27 1.07 0.11 62% 21% Waiting to put mbox + 3.88 3.47 7.47 0.30 78% 65% Delete mbox + 12.04 11.73 17.33 0.33 96% 96% Put/Get mbox + + 1.17 1.07 2.40 0.16 71% 71% Init semaphore + 2.67 2.40 4.27 0.15 62% 25% Post [0] semaphore + 3.00 2.67 4.53 0.17 65% 12% Wait [1] semaphore + 2.54 2.40 4.80 0.20 96% 71% Trywait [0] semaphore + 2.42 2.40 2.93 0.03 96% 96% Trywait [1] semaphore + 0.79 0.53 2.13 0.15 59% 28% Peek semaphore + 0.77 0.53 1.87 0.12 71% 25% Destroy semaphore + 12.64 12.27 17.07 0.28 84% 96% Post/Wait semaphore + + 1.27 1.07 2.93 0.17 53% 43% Create counter + 0.54 0.27 1.33 0.13 59% 21% Get counter value + 0.47 0.27 1.60 0.17 46% 43% Set counter value + 3.47 3.20 4.80 0.16 53% 28% Tick counter + 0.80 0.53 2.13 0.13 62% 25% Delete counter + + 1.86 1.60 4.00 0.21 43% 40% Create alarm + 5.12 4.80 9.07 0.36 93% 75% Initialize alarm + 0.44 0.27 1.33 0.19 87% 53% Disable alarm + 4.77 4.27 9.60 0.35 87% 62% Enable alarm + 1.02 0.80 2.67 0.18 53% 40% Delete alarm + 3.56 3.47 5.33 0.15 84% 84% Tick counter [1 alarm] + 15.04 14.93 16.27 0.16 71% 71% Tick counter [many alarms] + 5.75 5.60 8.00 0.21 96% 68% Tick & fire counter [1 alarm] + 79.60 79.47 81.07 0.17 96% 65% Tick & fire counters [>1 together] + 17.04 16.80 18.93 0.15 65% 31% Tick & fire counters [>1 separately] + 12.44 12.27 29.60 0.31 96% 96% Alarm latency [0 threads] + 14.06 12.27 27.20 0.53 82% 4% Alarm latency [2 threads] + 19.62 17.07 38.40 1.44 57% 34% Alarm latency [many threads] + + 2.79 2.40 6.13 0.00 Clock/interrupt latency + + 376 376 376 (main stack: 764) Thread stack used (992 total) +All done, main stack : stack used 764 size 4112 +All done : Interrupt stack used 176 size 4096 +All done : Idlethread stack used 352 size 2048 + +Timing complete - 23860 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-sh-cq7708"> +<TITLE>Board: CQ CqREEK SH3 Evaluation Board (cq7708)</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: CQ CqREEK SH3 Evaluation Board (cq7708) + +CPU: Hitachi SH3/7708 60MHz + +Startup, main stack : stack used 448 size 4112 +Startup : Interrupt stack used 80 size 4096 +Startup : Idlethread stack used 96 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 2 `ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 19.17 microseconds (71 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 20.62 14.40 26.93 3.23 48% 26% Create thread + 3.16 2.93 4.27 0.09 78% 20% Yield thread [all suspended] + 2.91 2.40 5.87 0.17 57% 1% Suspend [suspended] thread + 2.73 2.40 6.40 0.19 64% 15% Resume thread + 4.05 3.73 11.47 0.27 62% 90% Set priority + 0.82 0.27 2.67 0.17 56% 3% Get priority + 9.07 8.53 24.27 0.51 78% 71% Kill [suspended] thread + 3.19 2.93 7.20 0.14 70% 28% Yield [no other] thread + 5.45 4.53 17.87 0.49 78% 17% Resume [suspended low prio] thread + 2.67 2.40 5.07 0.15 56% 28% Resume [runnable low prio] thread + 4.95 4.27 11.47 0.28 82% 14% Suspend [runnable] thread + 3.15 2.93 4.53 0.11 73% 25% Yield [only low prio] thread + 2.82 2.40 5.60 0.21 84% 10% Suspend [runnable->not runnable] + 8.92 8.00 24.27 0.51 84% 14% Kill [runnable] thread + 5.10 4.53 12.00 0.27 59% 39% Destroy [dead] thread + 11.81 10.93 37.33 0.81 87% 95% Destroy [runnable] thread + 22.15 20.80 54.67 1.27 92% 92% Resume [high priority] thread + 6.85 6.67 13.60 0.19 99% 50% Thread switch + + 0.27 0.27 1.07 0.01 99% 99% Scheduler lock + 1.74 1.60 2.67 0.14 99% 50% Scheduler unlock [0 threads] + 1.74 1.60 2.93 0.14 99% 50% Scheduler unlock [1 suspended] + 1.81 1.60 4.27 0.11 72% 26% Scheduler unlock [many suspended] + 1.75 1.60 4.00 0.15 50% 49% Scheduler unlock [many low prio] + + 1.22 1.07 4.27 0.23 96% 78% Init mutex + 3.18 2.93 7.20 0.27 96% 53% Lock [unlocked] mutex + 3.40 3.20 8.00 0.31 96% 96% Unlock [locked] mutex + 2.77 2.40 5.87 0.22 87% 9% Trylock [unlocked] mutex + 2.35 2.13 3.47 0.14 65% 31% Trylock [locked] mutex + 0.78 0.53 2.67 0.14 68% 28% Destroy mutex + 22.80 22.40 28.80 0.51 96% 71% Unlock/Lock mutex + + 2.61 2.40 6.13 0.26 96% 62% Create mbox + 0.52 0.27 1.60 0.19 40% 37% Peek [empty] mbox + 3.54 3.20 7.73 0.35 93% 78% Put [first] mbox + 0.50 0.27 1.60 0.17 46% 37% Peek [1 msg] mbox + 3.62 3.20 6.93 0.34 59% 65% Put [second] mbox + 0.52 0.27 2.13 0.23 31% 43% Peek [2 msgs] mbox + 3.93 3.47 10.13 0.43 65% 65% Get [first] mbox + 3.92 3.47 7.47 0.40 56% 56% Get [second] mbox + 3.37 2.93 6.93 0.36 59% 68% Tryput [first] mbox + 3.30 2.67 6.93 0.38 84% 40% Peek item [non-empty] mbox + 3.93 3.47 9.33 0.44 65% 71% Tryget [non-empty] mbox + 2.94 2.67 6.13 0.25 43% 43% Peek item [empty] mbox + 3.23 2.93 6.67 0.27 56% 84% Tryget [empty] mbox + 0.58 0.27 2.67 0.20 62% 21% Waiting to get mbox + 0.55 0.27 1.87 0.14 62% 21% Waiting to put mbox + 3.82 3.47 9.87 0.39 96% 93% Delete mbox + 13.35 12.80 21.33 0.50 87% 78% Put/Get mbox + + 1.22 1.07 2.93 0.19 96% 59% Init semaphore + 2.42 2.13 4.27 0.12 81% 15% Post [0] semaphore + 2.96 2.67 5.07 0.16 68% 21% Wait [1] semaphore + 2.37 2.13 4.53 0.17 62% 34% Trywait [0] semaphore + 2.29 2.13 3.47 0.17 96% 53% Trywait [1] semaphore + 0.66 0.53 2.13 0.17 96% 68% Peek semaphore + 0.81 0.53 2.93 0.13 75% 21% Destroy semaphore + 14.47 14.13 21.33 0.43 96% 96% Post/Wait semaphore + + 1.44 1.07 3.47 0.29 56% 71% Create counter + 0.62 0.27 1.07 0.14 62% 3% Get counter value + 0.56 0.27 1.60 0.17 50% 25% Set counter value + 3.39 3.20 4.27 0.16 53% 40% Tick counter + 0.83 0.53 1.87 0.14 68% 15% Delete counter + + 2.02 1.87 4.00 0.21 93% 68% Create alarm + 5.06 4.27 11.73 0.46 78% 18% Initialize alarm + 0.73 0.27 2.40 0.22 84% 3% Disable alarm + 4.82 4.27 11.47 0.48 81% 65% Enable alarm + 1.19 0.80 3.47 0.22 87% 9% Delete alarm + 3.63 3.47 5.60 0.20 96% 59% Tick counter [1 alarm] + 15.01 14.93 16.53 0.13 87% 87% Tick counter [many alarms] + 5.50 5.33 8.00 0.22 96% 65% Tick & fire counter [1 alarm] + 74.27 74.13 76.80 0.21 96% 78% Tick & fire counters [>1 together] + 16.90 16.53 19.47 0.23 81% 15% Tick & fire counters [>1 separately] + 16.70 16.53 36.27 0.33 98% 98% Alarm latency [0 threads] + 17.85 16.53 34.40 0.47 73% 0% Alarm latency [2 threads] + 63.26 58.40 80.00 2.64 52% 32% Alarm latency [many threads] + 30.37 29.33 124.80 1.68 98% 97% Alarm -> thread resume latency + + 7.37 5.07 17.87 0.00 Clock/interrupt latency + + 9.00 4.53 26.93 0.00 Clock DSR latency + + 106 0 376 (main stack: 764) Thread stack used (992 total) +All done, main stack : stack used 764 size 4112 +All done : Interrupt stack used 176 size 4096 +All done : Idlethread stack used 352 size 2048 + +Timing complete - 30310 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-sh-hs7729pci"> +<TITLE>Board: Hitachi HS7729PCI HS7729 SH3</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED"> + +Board: Hitachi HS7729PCI HS7729 SH3 + +CPU: Hitachi SH3/7729 132MHz + + +Startup, main stack : stack used 464 size 4112 +Startup : Interrupt stack used 92 size 4096 +Startup : Idlethread stack used 94 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 3 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 18.10 microseconds (149 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 18.33 15.52 28.24 1.47 53% 28% Create thread + 3.08 2.91 6.79 0.13 78% 89% Yield thread [all suspended] + 3.23 3.03 6.18 0.16 59% 70% Suspend [suspended] thread + 2.70 2.55 6.18 0.15 54% 82% Resume thread + 4.12 4.00 7.52 0.16 96% 81% Set priority + 0.61 0.48 1.33 0.07 57% 28% Get priority + 9.14 8.61 18.91 0.42 85% 57% Kill [suspended] thread + 3.04 2.91 4.48 0.07 68% 20% Yield [no other] thread + 5.12 4.73 7.88 0.29 60% 53% Resume [suspended low prio] thread + 2.54 2.42 3.03 0.09 39% 40% Resume [runnable low prio] thread + 5.00 4.36 9.45 0.21 75% 1% Suspend [runnable] thread + 3.04 2.91 4.61 0.07 65% 21% Yield [only low prio] thread + 2.91 2.79 3.27 0.08 43% 31% Suspend [runnable->not runnable] + 8.82 8.12 15.39 0.36 68% 29% Kill [runnable] thread + 5.07 4.48 12.73 0.37 76% 50% Destroy [dead] thread + 11.17 10.55 22.91 0.52 78% 67% Destroy [runnable] thread + 22.43 21.45 32.73 0.61 81% 50% Resume [high priority] thread + 7.99 7.88 13.58 0.14 98% 86% Thread switch + + 0.37 0.36 1.33 0.02 97% 97% Scheduler lock + 1.74 1.70 2.06 0.06 70% 70% Scheduler unlock [0 threads] + 1.75 1.70 2.06 0.07 92% 64% Scheduler unlock [1 suspended] + 1.71 1.70 2.42 0.03 89% 89% Scheduler unlock [many suspended] + 1.76 1.70 3.64 0.08 96% 64% Scheduler unlock [many low prio] + + 4.23 3.88 10.67 0.41 96% 93% Unlock [locked] mutex + 3.12 2.91 6.91 0.29 96% 87% Trylock [unlocked] mutex + 2.54 2.42 2.91 0.11 18% 46% Trylock [locked] mutex + 0.88 0.73 3.15 0.14 65% 96% Destroy mutex + 22.33 22.06 25.94 0.23 81% 62% Unlock/Lock mutex + + 1.92 1.82 4.73 0.19 96% 93% Create mbox + 0.61 0.48 1.70 0.15 84% 75% Peek [empty] mbox + 4.00 3.64 9.45 0.36 96% 87% Put [first] mbox + 0.30 0.24 0.73 0.09 84% 75% Peek [1 msg] mbox + 3.82 3.64 6.67 0.22 90% 84% Put [second] mbox + 0.32 0.24 1.33 0.12 81% 81% Peek [2 msgs] mbox + 4.19 3.76 9.21 0.34 84% 50% Get [first] mbox + 3.91 3.76 5.21 0.16 84% 75% Get [second] mbox + 3.51 3.27 8.12 0.34 93% 87% Tryput [first] mbox + 3.25 2.91 7.15 0.30 62% 56% Peek item [non-empty] mbox + 3.86 3.52 8.73 0.37 93% 84% Tryget [non-empty] mbox + 2.87 2.79 3.76 0.12 84% 71% Peek item [empty] mbox + 3.15 3.03 4.24 0.10 46% 40% Tryget [empty] mbox + 0.34 0.24 1.33 0.10 43% 46% Waiting to get mbox + 0.36 0.24 1.45 0.09 53% 37% Waiting to put mbox + 4.49 4.24 10.91 0.41 96% 96% Delete mbox + 12.67 12.36 19.52 0.43 96% 96% Put/Get mbox + + 0.87 0.85 1.45 0.05 93% 93% Init semaphore + 2.74 2.55 4.48 0.18 50% 50% Post [0] semaphore + 3.39 3.15 4.24 0.14 78% 50% Wait [1] semaphore + 2.62 2.42 5.33 0.21 96% 65% Trywait [0] semaphore + 2.76 2.67 3.27 0.08 46% 43% Trywait [1] semaphore + 1.09 0.85 2.91 0.19 68% 56% Peek semaphore + 0.97 0.73 3.39 0.17 90% 65% Destroy semaphore + 13.09 12.85 16.12 0.19 84% 65% Post/Wait semaphore + + 1.57 1.45 3.88 0.15 96% 93% Create counter + 0.91 0.73 2.18 0.16 46% 68% Get counter value + 0.55 0.48 0.97 0.09 90% 62% Set counter value + 4.19 4.00 5.82 0.13 84% 75% Tick counter + 0.87 0.73 3.15 0.16 93% 93% Delete counter + + 2.50 2.30 5.21 0.18 81% 90% Create alarm + 6.16 5.70 12.97 0.47 96% 71% Initialize alarm + 0.50 0.36 1.70 0.11 62% 34% Disable alarm + 5.16 4.85 8.73 0.29 78% 78% Enable alarm + 1.18 1.09 2.30 0.12 84% 65% Delete alarm + 5.22 5.09 7.39 0.14 96% 93% Tick counter [1 alarm] + 52.37 52.12 52.73 0.20 37% 56% Tick counter [many alarms] + 6.73 6.55 8.24 0.13 78% 68% Tick & fire counter [1 alarm] + 108.65 108.61 109.21 0.07 87% 87% Tick & fire counters [>1 together] + 54.25 54.06 54.79 0.11 65% 18% Tick & fire counters [>1 separately] + 17.36 17.09 29.82 0.23 82% 57% Alarm latency [0 threads] + 19.75 17.09 28.00 1.65 46% 40% Alarm latency [2 threads] + 39.02 34.06 50.67 2.00 53% 15% Alarm latency [many threads] + 29.31 28.36 105.09 1.27 98% 97% Alarm -> thread resume latency + + 5.08 3.88 11.15 0.00 Clock/interrupt latency + + 7.32 5.09 16.73 0.00 Clock DSR latency + + 6 0 380 (main stack: 820) Thread stack used (992 total) +All done, main stack : stack used 820 size 4112 +All done : Interrupt stack used 196 size 4096 +All done : Idlethread stack used 360 size 2048 + +Timing complete - 29960 ms total +PASS:<Basic timing OK> +EXIT:<done> </LITERALLAYOUT> +</SECT1> + +<!-- ==================================================== --> + +<SECT1 id="rt-sh-se7751"> +<TITLE>Board: Hitachi Solution Engine 7751 SH4 (se7751)</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: Hitachi Solution Engine 7751 SH4 (se7751) + +CPU: Hitachi SH4/7751 162MHz + + +Startup, main stack : stack used 464 size 4112 +Startup : Interrupt stack used 92 size 4096 +Startup : Idlethread stack used 94 size 2048 + + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + + +Reading the hardware clock takes 1 `ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 14.27 microseconds (96 raw clock ticks) + + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 8.06 5.63 12.15 1.37 46% 29% Create thread + 1.15 1.04 5.19 0.15 98% 98% Yield thread [all suspended] + 1.13 0.89 5.04 0.27 89% 62% Suspend [suspended] thread + 1.11 0.89 5.19 0.26 89% 71% Resume thread + 1.45 1.19 3.56 0.23 53% 53% Set priority + 0.21 0.15 1.19 0.10 90% 79% Get priority + 4.15 3.56 13.04 0.53 68% 64% Kill [suspended] thread + 1.12 1.04 3.70 0.12 98% 70% Yield [no other] thread + 1.75 1.33 8.00 0.38 59% 65% Resume [suspended low prio] thread + 1.10 0.89 4.59 0.25 87% 73% Resume [runnable low prio] thread + 1.59 1.33 5.93 0.33 81% 79% Suspend [runnable] thread + 1.13 1.04 4.30 0.13 98% 71% Yield [only low prio] thread + 1.09 0.89 3.56 0.21 89% 70% Suspend [runnable->not runnable] + 4.96 4.30 11.70 0.44 68% 39% Kill [runnable] thread + 1.95 1.48 8.00 0.34 75% 57% Destroy [dead] thread + 4.41 3.85 10.37 0.47 53% 57% Destroy [runnable] thread + 13.15 11.41 23.85 1.11 73% 39% Resume [high priority] thread + 3.10 2.96 6.22 0.11 41% 39% Thread switch + + 0.13 0.00 1.33 0.06 74% 21% Scheduler lock + 0.76 0.74 1.78 0.03 96% 96% Scheduler unlock [0 threads] + 0.76 0.74 1.78 0.03 96% 96% Scheduler unlock [1 suspended] + 0.77 0.74 2.67 0.05 95% 95% Scheduler unlock [many suspended] + 0.76 0.74 2.37 0.04 95% 95% Scheduler unlock [many low prio] + + 0.52 0.15 2.67 0.26 65% 34% Init mutex + 1.23 1.04 5.63 0.32 93% 93% Lock [unlocked] mutex + 1.45 1.19 5.33 0.31 90% 87% Unlock [locked] mutex + 1.13 0.89 4.15 0.28 90% 84% Trylock [unlocked] mutex + 1.00 0.89 2.96 0.17 87% 87% Trylock [locked] mutex + 0.37 0.30 1.78 0.13 90% 84% Destroy mutex + 9.09 8.59 12.59 0.43 71% 71% Unlock/Lock mutex + 0.93 0.59 4.30 0.40 84% 71% Create mbox + 0.26 0.00 1.19 0.17 71% 59% Peek [empty] mbox + 3.03 2.52 6.37 0.47 50% 59% Put [first] mbox + 0.23 0.00 0.74 0.14 68% 15% Peek [1 msg] mbox + 2.93 2.52 4.74 0.46 71% 59% Put [second] mbox + 0.22 0.00 0.59 0.13 68% 15% Peek [2 msgs] mbox + 2.07 1.63 5.93 0.37 84% 59% Get [first] mbox + 2.06 1.63 4.74 0.34 78% 59% Get [second] mbox + 1.48 1.04 5.48 0.37 62% 53% Tryput [first] mbox + 1.31 1.04 4.89 0.32 96% 75% Peek item [non-empty] mbox + 1.47 1.04 5.78 0.38 84% 65% Tryget [non-empty] mbox + 1.15 0.89 3.11 0.18 71% 56% Peek item [empty] mbox + 1.20 1.04 3.85 0.21 93% 84% Tryget [empty] mbox + 0.21 0.00 0.74 0.14 68% 18% Waiting to get mbox + 0.19 0.00 0.44 0.10 43% 15% Waiting to put mbox + 2.19 1.93 5.78 0.27 93% 71% Delete mbox + 10.23 9.93 11.56 0.15 53% 37% Put/Get mbox + + 0.37 0.15 1.33 0.26 71% 71% Init semaphore + 0.98 0.89 2.52 0.13 96% 68% Post [0] semaphore + 1.08 0.89 3.26 0.15 68% 93% Wait [1] semaphore + 0.98 0.89 3.41 0.16 93% 93% Trywait [0] semaphore + 0.73 0.59 1.63 0.07 71% 25% Trywait [1] semaphore + 0.33 0.30 1.33 0.07 93% 93% Peek semaphore + 0.34 0.30 1.78 0.09 96% 96% Destroy semaphore + 9.36 8.74 10.37 0.33 56% 31% Post/Wait semaphore + + 0.54 0.15 3.26 0.23 59% 37% Create counter + 0.13 0.00 0.59 0.07 68% 25% Get counter value + 0.14 0.00 0.59 0.07 68% 25% Set counter value + 3.74 3.56 5.33 0.17 53% 75% Tick counter + 0.32 0.15 2.07 0.12 71% 21% Delete counter + + 1.59 1.19 3.11 0.29 71% 43% Create alarm + 1.89 1.48 6.37 0.44 87% 78% Initialize alarm + 0.20 0.15 0.74 0.09 87% 84% Disable alarm + 1.62 1.33 5.63 0.41 87% 84% Enable alarm + 0.40 0.30 1.33 0.13 87% 62% Delete alarm + + 4.03 3.70 5.78 0.27 68% 56% Tick counter [1 alarm] + 14.18 13.93 15.70 0.27 81% 75% Tick counter [many alarms] + 4.81 4.59 5.93 0.13 81% 15% Tick & fire counter [1 alarm] + 30.77 30.52 33.63 0.20 75% 65% Tick & fire counters [>1 together] + 15.10 14.52 17.04 0.23 71% 3% Tick & fire counters [>1 separately] + 8.78 8.59 18.22 0.20 97% 89% Alarm latency [0 threads] + 11.29 9.33 17.48 1.02 56% 22% Alarm latency [2 threads] + 18.70 15.70 26.37 1.45 54% 22% Alarm latency [many threads] + 19.40 18.81 57.48 0.65 97% 97% Alarm -> thread resume latency + + 4.18 2.81 8.89 0.00 Clock/interrupt latency + + 3.98 2.52 11.56 0.00 Clock DSR latency + + 6 0 380 (main stack: 728) Thread stack used (992 total) +All done, main stack : stack used 728 size 4112 +All done : Interrupt stack used 196 size 4096 +All done : Idlethread stack used 360 size 2048 + +Timing complete - 29790 ms total + +PASS:<Basic timing OK> +EXIT:<done> </LITERALLAYOUT> +</SECT1> +<SECT1 id="rt-i386-pc"> +<TITLE>Board: PC</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: PC + +CPU: 433MHz Celeron + +Startup, main stack : stack used 124 size 2912 +Startup : Interrupt stack used 280 size 4108 +Startup : Idlethread stack used 62 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 8 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 6.75 microseconds (8 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 64 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 3.93 1.68 8.38 0.93 68% 3% Create thread + 0.71 0.00 3.35 0.84 59% 59% Yield thread [all suspended] + 0.65 0.00 5.03 0.84 64% 64% Suspend [suspended] thread + 0.63 0.00 1.68 0.79 62% 62% Resume thread + 0.76 0.00 1.68 0.83 54% 54% Set priority + 0.39 0.00 1.68 0.60 76% 76% Get priority + 1.34 0.00 6.70 0.67 73% 25% Kill [suspended] thread + 0.68 0.00 1.68 0.81 59% 59% Yield [no other] thread + 0.92 0.00 1.68 0.83 54% 45% Resume [suspended low prio] thread + 0.63 0.00 1.68 0.79 62% 62% Resume [runnable low prio] thread + 0.84 0.00 1.68 0.84 100% 50% Suspend [runnable] thread + 0.73 0.00 1.68 0.82 56% 56% Yield [only low prio] thread + 0.58 0.00 1.68 0.76 65% 65% Suspend [runnable->not runnable] + 1.26 0.00 3.35 0.67 71% 26% Kill [runnable] thread + 0.86 0.00 3.35 0.86 98% 50% Destroy [dead] thread + 1.44 0.00 1.68 0.40 85% 14% Destroy [runnable] thread + 4.45 3.35 6.70 0.89 53% 40% Resume [high priority] thread + 1.62 0.00 1.68 0.10 96% 3% Thread switch + + 0.41 0.00 1.68 0.61 75% 75% Scheduler lock + 0.48 0.00 1.68 0.69 71% 71% Scheduler unlock [0 threads] + 0.59 0.00 1.68 0.76 64% 64% Scheduler unlock [1 suspended] + 0.45 0.00 1.68 0.65 73% 73% Scheduler unlock [many suspended] + 0.45 0.00 1.68 0.65 73% 73% Scheduler unlock [many low prio] + + 0.52 0.00 1.68 0.72 68% 68% Init mutex + 0.79 0.00 5.03 0.93 96% 59% Lock [unlocked] mutex + 0.84 0.00 5.03 0.94 96% 56% Unlock [locked] mutex + 0.63 0.00 1.68 0.79 62% 62% Trylock [unlocked] mutex + 0.52 0.00 1.68 0.72 68% 68% Trylock [locked] mutex + 0.58 0.00 1.68 0.76 65% 65% Destroy mutex + 3.40 3.35 5.03 0.10 96% 96% Unlock/Lock mutex + + 0.99 0.00 1.68 0.81 59% 40% Create mbox + 0.47 0.00 1.68 0.68 71% 71% Peek [empty] mbox + 0.79 0.00 5.03 0.93 96% 59% Put [first] mbox + 0.42 0.00 1.68 0.63 75% 75% Peek [1 msg] mbox + 0.79 0.00 1.68 0.83 53% 53% Put [second] mbox + 0.37 0.00 1.68 0.57 78% 78% Peek [2 msgs] mbox + 0.73 0.00 3.35 0.87 59% 59% Get [first] mbox + 0.73 0.00 1.68 0.82 56% 56% Get [second] mbox + 0.79 0.00 3.35 0.88 56% 56% Tryput [first] mbox + 0.68 0.00 3.35 0.85 62% 62% Peek item [non-empty] mbox + 0.73 0.00 3.35 0.87 59% 59% Tryget [non-empty] mbox + 0.63 0.00 1.68 0.79 62% 62% Peek item [empty] mbox + 0.68 0.00 1.68 0.81 59% 59% Tryget [empty] mbox + 0.26 0.00 1.68 0.44 84% 84% Waiting to get mbox + 0.63 0.00 1.68 0.79 62% 62% Waiting to put mbox + 0.73 0.00 3.35 0.87 59% 59% Delete mbox + 3.25 1.68 3.35 0.20 93% 6% Put/Get mbox + + 0.63 0.00 1.68 0.79 62% 62% Init semaphore + 0.63 0.00 1.68 0.79 62% 62% Post [0] semaphore + 0.63 0.00 1.68 0.79 62% 62% Wait [1] semaphore + 0.52 0.00 1.68 0.72 68% 68% Trywait [0] semaphore + 0.52 0.00 1.68 0.72 68% 68% Trywait [1] semaphore + 0.52 0.00 1.68 0.72 68% 68% Peek semaphore + 0.21 0.00 1.68 0.37 87% 87% Destroy semaphore + 3.30 1.68 3.35 0.10 96% 3% Post/Wait semaphore + + 0.79 0.00 3.35 0.88 56% 56% Create counter + 0.42 0.00 1.68 0.63 75% 75% Get counter value + 0.37 0.00 1.68 0.57 78% 78% Set counter value + 0.73 0.00 1.68 0.82 56% 56% Tick counter + 0.63 0.00 1.68 0.79 62% 62% Delete counter + + 0.89 0.00 3.35 0.89 96% 50% Create alarm + 0.84 0.00 1.68 0.84 100% 50% Initialize alarm + 0.52 0.00 1.68 0.72 68% 68% Disable alarm + 0.89 0.00 3.35 0.89 96% 50% Enable alarm + 0.58 0.00 1.68 0.76 65% 65% Delete alarm + 0.63 0.00 1.68 0.79 62% 62% Tick counter [1 alarm] + 5.03 3.35 6.70 0.10 93% 3% Tick counter [many alarms] + 0.94 0.00 1.68 0.82 56% 43% Tick & fire counter [1 alarm] + 11.16 10.06 11.73 0.76 65% 34% Tick & fire counters [>1 together] + 5.19 5.03 6.70 0.28 90% 90% Tick & fire counters [>1 separately] + 0.01 0.00 1.68 0.03 99% 99% Alarm latency [0 threads] + 0.13 0.00 1.68 0.24 92% 92% Alarm latency [2 threads] + 0.94 0.00 3.35 0.85 53% 45% Alarm latency [many threads] + 1.75 1.68 6.70 0.15 96% 96% Alarm -> thread resume latency + + 41 0 368 (main stack: 1036) Thread stack used (1712 total) +All done, main stack : stack used 1036 size 2912 +All done : Interrupt stack used 368 size 4108 +All done : Idlethread stack used 288 size 2048 + +Timing complete - 28520 ms total + +PASS:<Basic timing OK> +EXIT:<done> + +</LITERALLAYOUT> +</SECT1> +<SECT1 id="rt-v850-cebsa1"> +<TITLE>Board: NEC V850 Cosmo Evaluation Board</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: NEC V850 Cosmo Evaluation Board + +CPU: NEC CEB-V850/SA1 17MHz + +Startup, main stack : stack used 552 size 2936 +Startup : Interrupt stack used 120 size 4096 +Startup : Idlethread stack used 206 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 27 `ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 280.04 microseconds (1190 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 7 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 288.71 280.24 297.18 4.84 42% 28% Create thread + 70.76 70.59 70.82 0.10 71% 28% Yield thread [all suspended] + 59.06 59.06 59.06 0.00 100% 100% Suspend [suspended] thread + 60.00 60.00 60.00 0.00 100% 100% Resume thread + 77.38 77.18 77.41 0.06 85% 14% Set priority + 3.13 3.06 3.29 0.10 71% 71% Get priority + 187.46 187.29 187.53 0.10 71% 28% Kill [suspended] thread + 70.76 70.59 70.82 0.10 71% 28% Yield [no other] thread + 104.40 103.29 104.71 0.32 85% 14% Resume [suspended low prio] thread + 59.06 59.06 59.06 0.00 100% 100% Resume [runnable low prio] thread + 97.11 91.06 98.12 1.73 85% 14% Suspend [runnable] thread + 70.76 70.59 70.82 0.10 71% 28% Yield [only low prio] thread + 59.06 59.06 59.06 0.00 100% 100% Suspend [runnable->not runnable] + 187.46 187.29 187.53 0.10 71% 28% Kill [runnable] thread + 95.63 95.29 97.18 0.44 85% 85% Destroy [dead] thread + 241.28 236.94 242.12 1.24 85% 14% Destroy [runnable] thread + 378.55 370.35 427.06 13.86 85% 85% Resume [high priority] thread + 198.77 183.76 452.94 18.77 96% 96% Thread switch + + 2.59 2.59 2.59 0.00 100% 100% Scheduler lock + 41.29 41.18 41.41 0.12 100% 50% Scheduler unlock [0 threads] + 40.82 40.71 40.94 0.12 100% 50% Scheduler unlock [1 suspended] + 41.29 41.18 41.41 0.12 100% 50% Scheduler unlock [many suspended] + 41.29 41.18 41.41 0.12 100% 50% Scheduler unlock [many low prio] + + 17.94 17.88 18.12 0.09 75% 75% Init mutex + 68.71 68.71 68.71 0.00 100% 100% Lock [unlocked] mutex + 72.10 72.00 73.41 0.15 96% 71% Unlock [locked] mutex + 57.88 57.88 57.88 0.00 100% 100% Trylock [unlocked] mutex + 52.24 52.24 52.24 0.00 100% 100% Trylock [locked] mutex + 12.41 12.24 12.47 0.09 75% 25% Destroy mutex + 427.06 427.06 427.06 0.00 100% 100% Unlock/Lock mutex + + + 34.94 34.82 35.06 0.12 100% 50% Create mbox + 0.76 0.71 0.94 0.09 75% 75% Peek [empty] mbox + 75.29 75.29 75.29 0.00 100% 100% Put [first] mbox + 1.24 1.18 1.41 0.09 75% 75% Peek [1 msg] mbox + 75.76 75.76 75.76 0.00 100% 100% Put [second] mbox + 0.76 0.71 0.94 0.09 75% 75% Peek [2 msgs] mbox + 80.12 80.00 80.24 0.12 100% 50% Get [first] mbox + 79.65 79.53 79.76 0.12 100% 50% Get [second] mbox + 70.12 70.12 70.12 0.00 100% 100% Tryput [first] mbox + 65.76 65.65 65.88 0.12 100% 50% Peek item [non-empty] mbox + 78.00 77.88 78.12 0.12 100% 50% Tryget [non-empty] mbox + 63.12 63.06 63.29 0.09 75% 75% Peek item [empty] mbox + 67.82 67.76 68.00 0.09 75% 75% Tryget [empty] mbox + 1.94 1.88 2.12 0.09 75% 75% Waiting to get mbox + 1.47 1.41 1.65 0.09 75% 75% Waiting to put mbox + 75.59 75.53 75.76 0.09 75% 75% Delete mbox + 252.76 252.71 252.94 0.09 75% 75% Put/Get mbox + + 20.24 20.24 20.24 0.00 100% 100% Init semaphore + 54.35 54.35 54.35 0.00 100% 100% Post [0] semaphore + 66.59 66.59 66.59 0.00 100% 100% Wait [1] semaphore + 52.24 52.24 52.24 0.00 100% 100% Trywait [0] semaphore + 53.41 53.41 53.41 0.00 100% 100% Trywait [1] semaphore + 10.65 10.59 10.82 0.09 75% 75% Peek semaphore + 12.65 12.47 12.71 0.09 75% 25% Destroy semaphore + 276.94 276.94 276.94 0.00 100% 100% Post/Wait semaphore + + 14.94 14.82 15.06 0.12 100% 50% Create counter + 2.18 2.12 2.35 0.09 75% 75% Get counter value + 3.06 3.06 3.06 0.00 100% 100% Set counter value + 78.12 78.12 78.12 0.00 100% 100% Tick counter + 13.82 13.65 13.88 0.09 75% 25% Delete counter + + 26.94 26.82 27.06 0.12 100% 50% Create alarm + 104.18 104.00 104.24 0.09 75% 25% Initialize alarm + 7.65 7.53 7.76 0.12 100% 50% Disable alarm + 104.94 104.94 104.94 0.00 100% 100% Enable alarm + 19.47 19.29 19.53 0.09 75% 25% Delete alarm + 88.53 88.47 88.71 0.09 75% 75% Tick counter [1 alarm] + 418.61 411.29 645.41 14.17 96% 96% Tick counter [many alarms] + 139.59 139.53 139.76 0.09 75% 75% Tick & fire counter [1 alarm] + 2150.21 2096.71 2367.53 83.59 78% 78% Tick & fire counters [>1 together] + 478.15 462.35 733.41 29.61 93% 93% Tick & fire counters [>1 separately] + 219.89 218.59 369.88 2.34 99% 99% Alarm latency [0 threads] + 292.11 218.59 371.53 37.85 50% 25% Alarm latency [2 threads] + 292.96 218.59 370.59 38.12 49% 25% Alarm latency [many threads] + 540.90 495.76 1677.41 17.76 98% 0% Alarm -> thread resume latency + + 79.01 78.59 104.71 0.00 Clock/interrupt latency + + 123.41 85.88 1982.82 0.00 Clock DSR latency + + 522 516 536 (main stack: 1124) Thread stack used (1912 total) +All done, main stack : stack used 1124 size 2936 +All done : Interrupt stack used 288 size 4096 +All done : Idlethread stack used 488 size 2048 + +Timing complete - 32540 ms total + +</LITERALLAYOUT> +</SECT1> +<SECT1 id="rt-v850-cebsb1"> +<TITLE>Board: NEC V850 Cosmo Evaluation Board</TITLE> +<LITERALLAYOUT CLASS="MONOSPACED">Board: NEC V850 Cosmo Evaluation Board + +CPU: NEC CEB-V850/SB1 16MHz (in internal Flash) + + +Startup, main stack : stack used 572 size 2936 +Startup : Interrupt stack used 132 size 4096 +Startup : Idlethread stack used 210 size 2048 + +eCos Kernel Timings +Notes: all times are in microseconds (.000001) unless otherwise stated + +Reading the hardware clock takes 8 'ticks' overhead +... this value will be factored out of all other measurements +Clock interrupt took 118.15 microseconds (472 raw clock ticks) + +Testing parameters: + Clock samples: 32 + Threads: 7 + Thread switches: 128 + Mutexes: 32 + Mailboxes: 32 + Semaphores: 32 + Scheduler operations: 128 + Counters: 32 + Alarms: 32 + + + Confidence + Ave Min Max Var Ave Min Function + ====== ====== ====== ====== ========== ======== + 113.68 111.00 116.50 1.63 42% 28% Create thread + 30.00 30.00 30.00 0.00 100% 100% Yield thread [all suspended] + 29.57 29.50 29.75 0.10 71% 71% Suspend [suspended] thread + 27.43 27.25 27.50 0.10 71% 28% Resume thread + 34.11 34.00 34.25 0.12 57% 57% Set priority + 1.57 1.50 1.75 0.10 71% 71% Get priority + 72.96 72.75 73.00 0.06 85% 14% Kill [suspended] thread + 30.00 30.00 30.00 0.00 100% 100% Yield [no other] thread + 42.75 42.75 42.75 0.00 100% 100% Resume [suspended low prio] thread + 27.00 27.00 27.00 0.00 100% 100% Resume [runnable low prio] thread + 43.64 41.25 44.25 0.68 85% 14% Suspend [runnable] thread + 30.00 30.00 30.00 0.00 100% 100% Yield [only low prio] thread + 29.57 29.50 29.75 0.10 71% 71% Suspend [runnable->not runnable] + 72.93 72.75 73.00 0.10 71% 28% Kill [runnable] thread + 44.89 44.75 45.75 0.24 85% 85% Destroy [dead] thread + 103.00 101.50 103.25 0.43 85% 14% Destroy [runnable] thread + 175.21 171.50 197.50 6.37 85% 85% Resume [high priority] thread + 84.11 79.50 197.25 1.77 98% 0% Thread switch + + 1.00 1.00 1.00 0.00 100% 100% Scheduler lock + 20.06 20.00 20.25 0.09 75% 75% Scheduler unlock [0 threads] + 20.00 20.00 20.00 0.00 100% 100% Scheduler unlock [1 suspended] + 20.06 20.00 20.25 0.09 75% 75% Scheduler unlock [many suspended] + 20.06 20.00 20.25 0.09 75% 75% Scheduler unlock [many low prio] + + 4.00 4.00 4.00 0.00 100% 100% Init mutex + 33.00 33.00 33.00 0.00 100% 100% Lock [unlocked] mutex + 36.77 36.75 37.25 0.03 96% 96% Unlock [locked] mutex + 28.13 28.00 28.25 0.13 100% 50% Trylock [unlocked] mutex + 25.13 25.00 25.25 0.13 100% 50% Trylock [locked] mutex + 4.88 4.75 5.00 0.13 100% 50% Destroy mutex + 187.00 187.00 187.00 0.00 100% 100% Unlock/Lock mutex + + 10.00 10.00 10.00 0.00 100% 100% Create mbox + 0.69 0.50 0.75 0.09 75% 25% Peek [empty] mbox + 34.75 34.75 34.75 0.00 100% 100% Put [first] mbox + 0.69 0.50 0.75 0.09 75% 25% Peek [1 msg] mbox + 35.00 35.00 35.00 0.00 100% 100% Put [second] mbox + 0.69 0.50 0.75 0.09 75% 25% Peek [2 msgs] mbox + 36.00 36.00 36.00 0.00 100% 100% Get [first] mbox + 36.00 36.00 36.00 0.00 100% 100% Get [second] mbox + 31.00 31.00 31.00 0.00 100% 100% Tryput [first] mbox + 29.50 29.50 29.50 0.00 100% 100% Peek item [non-empty] mbox + 35.25 35.25 35.25 0.00 100% 100% Tryget [non-empty] mbox + 27.69 27.50 27.75 0.09 75% 25% Peek item [empty] mbox + 31.06 31.00 31.25 0.09 75% 75% Tryget [empty] mbox + 0.94 0.75 1.00 0.09 75% 25% Waiting to get mbox + 0.94 0.75 1.00 0.09 75% 25% Waiting to put mbox + 37.81 37.75 38.00 0.09 75% 75% Delete mbox + 112.00 112.00 112.00 0.00 100% 100% Put/Get mbox + + 3.19 3.00 3.25 0.09 75% 25% Init semaphore + 25.38 25.25 25.50 0.13 100% 50% Post [0] semaphore + 32.63 32.50 32.75 0.13 100% 50% Wait [1] semaphore + 24.25 24.25 24.25 0.00 100% 100% Trywait [0] semaphore + 25.00 25.00 25.00 0.00 100% 100% Trywait [1] semaphore + 4.00 4.00 4.00 0.00 100% 100% Peek semaphore + 4.88 4.75 5.00 0.13 100% 50% Destroy semaphore + 124.50 124.50 124.50 0.00 100% 100% Post/Wait semaphore + + 6.50 6.50 6.50 0.00 100% 100% Create counter + 1.25 1.25 1.25 0.00 100% 100% Get counter value + 1.44 1.25 1.50 0.09 75% 25% Set counter value + 36.25 36.25 36.25 0.00 100% 100% Tick counter + 5.25 5.25 5.25 0.00 100% 100% Delete counter + + 12.25 12.25 12.25 0.00 100% 100% Create alarm + 49.13 49.00 49.25 0.13 100% 50% Initialize alarm + 2.81 2.75 3.00 0.09 75% 75% Disable alarm + 48.50 48.50 48.50 0.00 100% 100% Enable alarm + 8.25 8.25 8.25 0.00 100% 100% Delete alarm + 46.50 46.50 46.50 0.00 100% 100% Tick counter [1 alarm] + 485.42 482.25 580.00 5.91 96% 96% Tick counter [many alarms] + 64.00 64.00 64.00 0.00 100% 100% Tick & fire counter [1 alarm] + 1109.76 1100.50 1198.00 16.53 90% 90% Tick & fire counters [>1 together] + 505.85 502.00 621.00 7.20 96% 96% Tick & fire counters [>1 separately] + 96.26 95.75 161.25 1.02 99% 99% Alarm latency [0 threads] + 159.20 95.75 160.75 2.52 97% 0% Alarm latency [2 threads] + 159.73 110.50 161.75 1.53 97% 0% Alarm latency [many threads] + 218.45 211.25 445.75 3.55 97% 1% Alarm -> thread resume latency + + 28.24 25.25 43.25 0.00 Clock/interrupt latency + + 60.15 40.50 221.50 0.00 Clock DSR latency + + 472 424 572 (main stack: 1052) Thread stack used (1912 total) +All done, main stack : stack used 1052 size 2936 +All done : Interrupt stack used 280 size 4096 +All done : Idlethread stack used 516 size 2048 + +Timing complete - 30590 ms total + +PASS:<Basic timing OK> +EXIT:<done> + + </LITERALLAYOUT> +</SECT1> +</APPENDIX> +<APPENDIX ID="GNU-GENERAL-PUBLIC-LICENSE"> + <docinfo> + <edition>Version 2, June 1991</edition> + <copyright> + <year>1989</year> + <year>1991</year> + <holder>Free Software Foundation, Inc.</holder> + </copyright> + <address>59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</address> + </docinfo> +<TITLE>GNU General Public License</TITLE> +<LITERALLAYOUT> + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. +</LITERALLAYOUT> +</APPENDIX> + <APPENDIX ID="THE-ECOS-COPYRIGHT-ASSIGNMENT-FORM"> + <docinfo> + <edition>Revision 1.2</edition> + </docinfo> + <TITLE>The eCos Copyright Assignment Form</TITLE> + <section> + <title>Rationale</title> + + <para>This preamble describes how to use the standard eCos copyright assignment +form. The rationale behind this assignment is to avoid any possible confusion +over the legal ownership of eCos, and to indemnify Red Hat and all eCos users +against copyright or patent claims on contributed code used within eCos. +Red Hat would be especially vulnerable, but all users and their eCos based +applications could be affected.</para> + + <para>In virtually all cases, all contributions to eCos for which there are +copyright assignments will be made available publically covered by the +<link linkend="GNU-GENERAL-PUBLIC-LICENSE">GNU General Public License</link> +plus an exception permitting linking eCos with proprietary code in order to make +the license more appropriate for embedded systems. The license provides a +guarantee that the contribution will remain freely available to all.</para> + + <para>This agreement gives Red Hat ownership of your changes but promises that +you will retain the right to use your contributed changes as you see fit. For convenience, +signing this agreement allows you to make further changes and additions and contribute +them as well if you so desire, without the necessity of signing a separate agreement. +There is however no requirement for you to do so. +</para> + + <para>Because employers often can claim ownership over things that employees +write, you may also have to get your employer to sign a disclaimer that says that +they have no claim to the changes you are contributing.</para> + + <para>Please read everything, and if you have any questions, email +<email>ecos-assign@redhat.com</email> for help.</para> + + <para>Thanks for your contribution to eCos!</para> + </section> + + <section id="how-to-assign-copyright"> + <title>How to assign copyright</title> + + <para>The way to assign copyright to Red Hat is to sign an assignment contract. This is +what makes Red Hat the legal copyright holder, so that Red Hat can register the +copyright on the new version. </para> + + <para>If you are employed as a programmer (even at a university), or have made an +agreement with your employer or school that gives them ownership of the software +you write, then Red Hat needs a signed letter from your employer disclaiming +rights to the contributed software. </para> + + <para>The disclaimer should be printed on the company's headed paper, and signed by an +officer of the company, or someone authorized to license the company's +intellectual property. Here is an example of wording that can be used for this +purpose: +<blockquote> + <para><replaceable><INSERT COMPANY NAME></replaceable> hereby disclaims all copyright +interest in the changes and enhancements made by <replaceable><INSERT YOUR NAME></replaceable> to eCos, +including any future revisions of these changes and enhancements.</para> + + <para><replaceable><INSERT COMPANY NAME></replaceable> affirms that it has no other intellectual +property interest that would undermine this release, or the use of eCos, and will do nothing +to undermine it in the future.</para> + + <para><replaceable><INSERT SIGNATURE OF OFFICER OF COMPANY></replaceable></para> + <para><replaceable><INSERT DATE></replaceable></para> + <para><replaceable><INSERT PRINTED NAME OF OFFICER OF COMPANY></replaceable></para> + <para><replaceable><INSERT TITLE OF OFFICER></replaceable></para> + </blockquote></para> + + <para>If your employer says they do have an intellectual property claim that could +conflict with the use of the program, then please contact Red Hat to discuss +possible next steps.</para> + + <para>Below is the usual assignment contract. You need to edit and replace +<replaceable><INSERT NAME OF CONTRIBUTOR></replaceable> with your full name. Please print a +copy, sign, date, and mail it to: +<address> +Legal Department (eCos Assignments) +Red Hat, Inc. +<pob>P.O.Box 13588</pob> +<street>Research Triangle Park</street> +<state>NC</state><postcode>27709-3588</postcode> +<country>USA</country></address> +</para> + <para>Don't forget to include the original signed copy of the employer's disclaimer.</para> + + <para>Please try to print the whole first page of the form on a single piece of paper. If it +doesn't fit on one printed page, put it on two sides of a single piece of paper, and +attach the second page of the form. Please write the date using letters rather than +numbers to avoid any confusion due to international day/month ordering +conventions. </para> + +<note><title>Note</title><para>This text is also available in the eCos software distribution, in the file +assign.txt.</para> + </note> + +<literallayout> + --------------------------------- Cut Here ------------------------------ + +eCos ASSIGNMENT + +For good and valuable consideration, receipt of which I acknowledge, I, +<replaceable>INSERT NAME OF CONTRIBUTOR</replaceable>, hereby transfer to Red Hat, Inc. +my entire right, title, and interest (including all rights under +copyright) in my changes and enhancements to the eCos Operating System and +associated software (herein called the "Software"), subject to the conditions +below. These changes and enhancements are herein called the "Work". The Work +also includes any future changes and enhancements to the Software hereafter +made by me which I also hereby assign. + +Upon thirty days prior written notice, Red Hat agrees to grant me non- +exclusive rights to use the Work (i.e. just my changes and enhancements, +not eCos as a whole) as I see fit; (and Red Hat's rights shall otherwise +continue unchanged). + +I hereby agree that if I have or acquire hereafter any patent or interface +copyright or other intellectual property interest dominating the software +enhanced by the Work (or use of that software), such dominating interest +will not be used to undermine the effect of this assignment, i.e. Red Hat +and the general public will be licensed to use, in that program and its +derivative works, without royalty or limitation, the subject matter of the +dominating interest. This license provision will be binding on my heirs, +assignees, or other successors to the dominating interest, as well as on +me. + +I hereby represent and warrant that I am the sole copyright holder for the +Work and that I have the right and power to enter into this contract. I +hereby indemnify and hold harmless Red Hat, its officers, employees, and +agents against any and all claims, actions or damages (including +attorney's reasonable fees) asserted by or paid to any party on account of +a breach or alleged breach of the foregoing warranty. I make no other +express or implied warranty (including without limitation, in this +disclaimer of warranty, any warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE). + +Agreed: +[signature] + + + + + +[Print Name] + +Date: +[Please write using letters] + +For Red Hat: + + + + + + + + Date: + + -------------------- Cut Here and print on separate page ----------------- + +[Please print your name here] + + + + +[For the copyright registration, of what country are you a citizen?] + + + + +[In what year were you born?] + + + + +[Please write your email address here] + + + + +[Please write your address here, so we can mail a signed copy of the +agreement back to you] + + + +[Please write a brief description of the contribution] + + + + + + + + + + +[Which files have you changed so far, and which new files have you written +so far?] + + +</literallayout> + </section> + </appendix> +</PART> +</BOOK>
