Anthony J. Massa
Total Page:16
File Type:pdf, Size:1020Kb
EMBEDDED SOFTWARE DEVELOPMENT WITH ECOS™ Anthony J. Massa EMBEDDED SOFTWARE DEVELOPMENT WITH ECOS Anthony J. Massa PRENTICE HALL PROFESSIONAL TECHNICAL REFERENCE UPPER SADDLE RIVER, NJ 07458 WWW.PHPTR.COM WWW.PHPTR.COM/MASSA/ Library of Congress Cataloging-in-Publication Data Massa, Anthony J. Embedded software development with eCos / Anthony J. Massa p. cm.--(Bruce Perens' Open source series) ISBN 0-13-035473-2 1. Embedded computer systems--Programming. 2. Application software--Development. 3. Real-time data processing. I. Title. II. Series. QA76.6 .M364317 2002 005.26--dc21 2002035507 Editorial/production supervision: Techne Group Cover design director: Jerry Votta Cover design: Anthony Gemmellaro Art director: Gail Cocker-Bogusz Interior design: Meg Van Arsdale Manufacturing buyer: Maura Zaldivar Editor-in-Chief: Mark L. Taub Editorial assistant: Kate Wolf Marketing manager: Bryan Gambrel Full-service production manager: Anne R. Garcia © 2003 Pearson Education, Inc. Publishing as Prentice Hall Professional Technical Reference Upper Saddle River, New Jersey 07458 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 <http://www.opencontent.org/openpub/>). Prentice Hall books are widely used by corporations and government agencies for training, marketing, and resale. For information regarding corporate and government bulk discounts please contact: Corporate and Government Sales (800) 382-3419 or [email protected] Other company and product names mentioned herein are the trademarks or registered trademarks of their respective owners. All rights reserved. No part of this book may be reproduced, in any form or by any means, without permission in writing from the publisher. Printed in the United States of America 10 9 8 7 6 5 4 3 2 1 ISBN 0-13-035473-2 Pearson Education LTD. Pearson Education Australia PTY, Limited Pearson Education Singapore, Pte. Ltd. Pearson Education North Asia Ltd. Pearson Education Canada, Ltd. Pearson Educación de Mexico, S.A. de C.V. Pearson Education—Japan Pearson Education Malaysia, Pte. Ltd. This book is dedicated to my girls, Katie and Deanna. You mean the world to me. I love you. CONTENTS Foreword xv Preface xvii Chapter 1 An Introduction to the eCos World 1 1.1 Where It All Started—Cygnus Solutions 1 1.2 The Origins of eCos 2 1.2.1 In a Word: Configurability 3 1.2.2 The eCos Configuration Method 4 1.2.3 eCos Core Components 5 1.2.4 Processor and Evaluation Platform Support 6 1.2.5 eCos Support 6 1.3 Architecture Overview 8 1.3.1 eCos Terminology 8 1.3.1.1 Component Framework 8 1.3.1.2 Component Repository 10 1.3.1.3 Configuration Options 13 1.3.1.4 Components and Packages 14 1.3.1.5 Targets 14 1.3.1.6 Templates 15 1.4 Summary 16 vii viii Contents Chapter 2 The Hardware Abstraction Layer 17 2.1 Overview 17 2.1.1 HAL Directory Structure 19 2.1.1.1 Example HAL Function Call Trace 22 2.1.2 HAL Macro Definitions 23 2.1.3 HAL Configuration 24 2.1.3.1 Common Configuration Components 25 2.1.3.2 Architecture-Specific Configuration Components 25 2.1.4 HAL Startup 26 2.2 Summary 29 Chapter 3 Exceptions and Interrupts 31 3.1 Exceptions 31 3.1.1 HAL and Kernel Exception Handling 32 3.1.2 Application Exception Handling 38 3.2 Interrupts 40 3.2.1 eCos Interrupt Model 40 3.2.1.1 Interrupt and Scheduler Synchronization 41 3.2.2 Interrupt Configuration 42 3.2.3 Interrupt Handling 44 3.2.4 Interrupt Control 50 3.2.4.1 Interrupt Service Routine Management 51 3.2.4.2 Interrupt State Management 53 3.2.4.3 Interrupt Controller Management 54 3.3 Summary 58 Chapter 4 Virtual Vectors 59 4.1 Virtual Vectors 59 4.1.1 Virtual Vector Configuration 63 4.1.2 Virtual Vector Table Initialization 64 4.1.2.1 Communication Channels 67 4.2 Summary 71 Chapter 5 The Kernel 73 5.1 The Kernel 73 5.1.1 Kernel Directory Structure 74 5.1.2 Kernel Startup 75 5.1.3 The Scheduler 77 5.1.3.1 Multilevel Queue Scheduler 79 Contents ix 5.1.3.2 Bitmap Scheduler 81 5.1.3.3 Priority Levels 81 5.1.3.4 Scheduler Configuration 83 5.2 Summary 84 Chapter 6 Threads and Synchronization Mechanisms 85 6.1 Threads 85 6.1.1 Thread Stacks and Stack Sizes 94 6.2 Synchronization Mechanisms 95 6.2.1 Mutexes 95 6.2.2 Semaphores 101 6.2.3 Condition Variables 105 6.2.4 Flags 110 6.2.5 Message Boxes 113 6.2.6 Spinlocks 118 6.3 Summary 120 Chapter 7 Other eCos Architecture Components 121 7.1 Counters, Clocks, Alarms, and Timers 121 7.1.1 Counters 125 7.1.2 Clocks 129 7.1.3 Alarms 130 7.1.4 Timers 133 7.2 Asserts and Tracing 134 7.3 ISO C and Math Libraries 138 7.4 I/O Control System 140 7.4.1 I/O Sub-System 142 7.4.2 Device Drivers 146 7.5 Summary 148 Chapter 8 Additional Functionality and Third-Party Contributions 149 8.1 Compatibility Layers 150 8.1.1 POSIX 150 8.1.1.1 EL/IX 151 8.1.2 µITRON 152 8.2 ROM Monitors 152 8.2.1 CygMon 153 8.2.2 RedBoot 153 8.2.3 GDB Stub 154 x Contents 8.3 File Systems 155 8.3.1 ROM File System 157 8.3.2 RAM File System 158 8.3.3 Journalling Flash File System Version 2 160 8.4 PCI Support 160 8.4.1 PCI Library API 161 8.5 USB Support 165 8.6 Networking Support 167 8.6.1 OpenBSD 168 8.6.2 FreeBSD 169 8.6.3 lwIP 170 8.6.4 Networking Threads 170 8.6.5 Networking Configuration 171 8.6.6 Networking Tests 176 8.6.7 DNS Support 178 8.7 SNMP Support 179 8.8 The GoAhead Embedded WebServer 180 8.9 Symmetric Multi-Processing Support 182 8.10 Additional Features 183 8.11 Summary 184 Chapter 9 The RedBoot ROM Monitor 185 9.1 Overview 185 9.2 RedBoot Directory Structure 187 9.3 Installation and Configuration 188 9.3.1 RedBoot Configuration 189 9.3.2 Host Configuration 193 9.3.2.1 Serial 193 9.3.2.2 Ethernet 194 9.4 User Interface and Command Set 195 9.4.1 RedBoot Commands 196 9.4.1.1 Boot Scripting 204 9.5 Summary 206 Chapter 10 The Host Development Platform 207 10.1 Overview 207 10.2 Configuring the Windows Host 209 10.2.1 Installing the Cygwin Native Tools 210 Contents xi 10.2.1.1 Cygwin Tools Directory Structure 217 10.2.1.2 Upgrading the Cygwin Tools 219 10.2.2 Installing the Platform-Specific Cross-Development Tools 220 10.2.3 Installing the eCos Development Kit 223 10.2.3.1 eCos Development Kit Directory Structure 229 10.2.4 Accessing the Online eCos Source Code Repository 229 10.2.4.1 Installing WinCVS 230 10.2.4.2 Setting WinCVS Preferences 235 10.2.4.3 WinCVS Update Commands 236 10.3 Summary 238 Chapter 11 The eCos Toolset 239 11.1 Packages 239 11.1.1 Package Directory Structure 240 11.1.2 The Component Definition Language Overview 243 11.1.2.1 CDL Script Files 243 11.2 The Configuration Tool 248 11.2.1 Screen Layout 248 11.2.1.1 Saving Configurations 251 11.2.1.2 Importing and Exporting Configurations 253 11.2.1.3 Configuration Window 254 11.2.1.4 Conflicts Window 255 11.2.1.5 Properties Window 256 11.2.1.6 Short Description Window 256 11.2.1.7 Output Window 256 11.2.1.8 Memory Layout Window 256 11.2.1.9 Memory Layout Manipulation 257 11.2.2 eCos Repository Database 264 11.2.3 Graphical Representation of CDL Script Files 266 11.2.4 Using Templates 270 11.2.4.1 Conflicts and Resolutions 272 11.2.5 Package Control 274 11.3 Other eCos Tools 274 11.3.1 The Package Administration Tool 275 11.3.2 The Command-Line Configuration Tool 277 11.4 Building the eCos Tools 277 11.5 Additional Open-Source Tools 277 11.5.1 Source-Navigator 278 xii Contents 11.5.2 Splint 279 11.6 Summary 280 Chapter 12 An Example Application Using eCos 281 12.1 The eCos Build Process 281 12.1.1 A Closer Look 282 12.2 Examples Overview 285 12.2.1 Development Hardware Setup 286 12.2.2 eCos Tools 288 12.3 RedBoot 288 12.3.1 Building RedBoot 288 12.3.2 Installing RedBoot 292 12.3.3 Booting RedBoot 293 12.4 eCos 295 12.4.1 Building eCos 295 12.5 Application 298 12.5.1 Building the Application 299 12.5.2 Loading the Application 303 12.5.3 Debugging the Application 305 12.5.3.1 Using the GDB Command-Line Interface 309 12.6 The eCos Tests 310 12.7 Simulators 311 12.8 Summary 313 Chapter 13 Porting eCos 315 13.1 Overview of Porting 315 13.2 A Platform Porting Example 317 13.2.1 PowerPC HAL Directory and File Structure 320 13.2.2 Porting Hints 334 13.3 Summary 335 Appendix A Supported Processors and Evaluation Platforms 337 Appendix B eCos License 345 B.1 eCos License 345 B.2 GNU General Public License 346 B.2.1 Version 2, June 1991 346 B.2.2 Preamble 346 B.2.3 How to Apply These Terms to Your New Programs 352 Contents xiii Appendix C Cygwin Tools Upgrade Procedure 355 Appendix D Building the GNU Cross-Development Tools 361 About the Author 369 Index 371 About the CD-ROM 392 FOREWORD n 1997, there were over 100 commercially supported embedded operating systems, none of Iwhich had more than a minority share of the overall embedded OS market, not to mention countless thousands of others developed for specific projects (cell phones, radar arrays, net- working equipment, etc.) that had no application developer base beyond that specific project.