Hands-On RTOS with Microcontrollers


Book Description

Build a strong foundation in designing and implementing real-time systems with the help of practical examples Key Features Get up and running with the fundamentals of RTOS and apply them on STM32 Enhance your programming skills to design and build real-world embedded systems Get to grips with advanced techniques for implementing embedded systems Book DescriptionA real-time operating system (RTOS) is used to develop systems that respond to events within strict timelines. Real-time embedded systems have applications in various industries, from automotive and aerospace through to laboratory test equipment and consumer electronics. These systems provide consistent and reliable timing and are designed to run without intervention for years. This microcontrollers book starts by introducing you to the concept of RTOS and compares some other alternative methods for achieving real-time performance. Once you've understood the fundamentals, such as tasks, queues, mutexes, and semaphores, you'll learn what to look for when selecting a microcontroller and development environment. By working through examples that use an STM32F7 Nucleo board, the STM32CubeIDE, and SEGGER debug tools, including SEGGER J-Link, Ozone, and SystemView, you'll gain an understanding of preemptive scheduling policies and task communication. The book will then help you develop highly efficient low-level drivers and analyze their real-time performance and CPU utilization. Finally, you'll cover tips for troubleshooting and be able to take your new-found skills to the next level. By the end of this book, you'll have built on your embedded system skills and will be able to create real-time systems using microcontrollers and FreeRTOS.What you will learn Understand when to use an RTOS for a project Explore RTOS concepts such as tasks, mutexes, semaphores, and queues Discover different microcontroller units (MCUs) and choose the best one for your project Evaluate and select the best IDE and middleware stack for your project Use professional-grade tools for analyzing and debugging your application Get FreeRTOS-based applications up and running on an STM32 board Who this book is for This book is for embedded engineers, students, or anyone interested in learning the complete RTOS feature set with embedded devices. A basic understanding of the C programming language and embedded systems or microcontrollers will be helpful.




Real-Time Concepts for Embedded Systems


Book Description

... a very good balance between the theory and practice of real-time embedded system designs.' —Jun-ichiro itojun Hagino, Ph.D., Research Laboratory, Internet Initiative Japan Inc., IETF IPv6 Operations Working Group (v6ops) co-chair 'A cl







Embedded RTOS Design


Book Description

Embedded RTOS Design: Insights and Implementation combines explanations of RTOS concepts with detailed, practical implementation. It gives a detailed description of the implementation of a basic real-time kernel designed to be limited in scope and simple to understand, which could be used for a real design of modest complexity. The kernel features upward-compatibility to a commercial real-time operating system: Nucleus RTOS. Code is provided which can be used without restriction. Gain practical information on: Scheduling, preemption, and interrupts Information flow (queues, semaphores, etc.) and how they work Signaling between tasks (signals, events, etc.) Memory management (Where does each task get its stack from? What happens if the stack overflows?) The CPU context: storage and retrieval after a context switch With this book you will be able to: Utilize a basic real-time kernel to develop your own prototype Design RTOS features Understand the facilities of a commercial RTOS Explains the principles of RTOS and shows their practical implementation Demonstrates how to prototype a real-time design Code is fully available for free use




Hands-On Embedded Programming with C++17


Book Description

Build safety-critical and memory-safe stand-alone and networked embedded systems Key FeaturesKnow how C++ works and compares to other languages used for embedded developmentCreate advanced GUIs for embedded devices to design an attractive and functional UIIntegrate proven strategies into your design for optimum hardware performanceBook Description C++ is a great choice for embedded development, most notably, because it does not add any bloat, extends maintainability, and offers many advantages over different programming languages. Hands-On Embedded Programming with C++17 will show you how C++ can be used to build robust and concurrent systems that leverage the available hardware resources. Starting with a primer on embedded programming and the latest features of C++17, the book takes you through various facets of good programming. You’ll learn how to use the concurrency, memory management, and functional programming features of C++ to build embedded systems. You will understand how to integrate your systems with external peripherals and efficient ways of working with drivers. This book will also guide you in testing and optimizing code for better performance and implementing useful design patterns. As an additional benefit, you will see how to work with Qt, the popular GUI library used for building embedded systems. By the end of the book, you will have gained the confidence to use C++ for embedded programming. What you will learnChoose the correct type of embedded platform to use for a projectDevelop drivers for OS-based embedded systemsUse concurrency and memory management with various microcontroller units (MCUs)Debug and test cross-platform code with LinuxImplement an infotainment system using a Linux-based single board computerExtend an existing embedded system with a Qt-based GUICommunicate with the FPGA side of a hybrid FPGA/SoC systemWho this book is for If you want to start developing effective embedded programs in C++, then this book is for you. Good knowledge of C++ language constructs is required to understand the topics covered in the book. No knowledge of embedded systems is assumed.




Beginning STM32


Book Description

Using FreeRTOS and libopencm3 instead of the Arduino software environment, this book will help you develop multi-tasking applications that go beyond Arduino norms. In addition to the usual peripherals found in the typical Arduino device, the STM32 device includes a USB controller, RTC (Real Time Clock), DMA (Direct Memory Access controller), CAN bus and more. Each chapter contains clear explanations of the STM32 hardware capabilities to help get you started with the device, including GPIO and several other ST Microelectronics peripherals like USB and CAN bus controller. You’ll learn how to download and set up the libopencm3 + FreeRTOS development environment, using GCC. With everything set up, you’ll leverage FreeRTOS to create tasks, queues, and mutexes. You’ll also learn to work with the I2C bus to add GPIO using the PCF8574 chip. And how to create PWM output for RC control using hardware timers. You'll be introduced to new concepts that are necessary to master the STM32, such as how to extend code with GCC overlays using an external Winbond ​W25Q32 flash chip. Your knowledge is tested at the end of each chapter with exercises. Upon completing this book, you’ll be ready to work with any of the devices in the STM32 family. Beginning STM32 provides the professional, student, or hobbyist a way to learn about ARM without costing an arm! What You'll Learn Initialize and use the libopencm3 drivers and handle interrupts Use DMA to drive a SPI based OLED displaying an analog meter Read PWM from an RC control using hardware timers Who This Book Is For Experienced embedded engineers, students, hobbyists and makers wishing to explore the ARM architecture, going beyond Arduino limits.




DIY Microcontroller Projects for Hobbyists


Book Description

A practical guide to building PIC and STM32 microcontroller board applications with C and C++ programming Key FeaturesDiscover how to apply microcontroller boards in real life to create interesting IoT projectsCreate innovative solutions to help improve the lives of people affected by the COVID-19 pandemicDesign, build, program, and test microcontroller-based projects with the C and C++ programming languageBook Description We live in a world surrounded by electronic devices, and microcontrollers are the brains of these devices. Microcontroller programming is an essential skill in the era of the Internet of Things (IoT), and this book helps you to get up to speed with it by working through projects for designing and developing embedded apps with microcontroller boards. DIY Microcontroller Projects for Hobbyists are filled with microcontroller programming C and C++ language constructs. You'll discover how to use the Blue Pill (containing a type of STM32 microcontroller) and Curiosity Nano (containing a type of PIC microcontroller) boards for executing your projects as PIC is a beginner-level board and STM-32 is an ARM Cortex-based board. Later, you'll explore the fundamentals of digital electronics and microcontroller board programming. The book uses examples such as measuring humidity and temperature in an environment to help you gain hands-on project experience. You'll build on your knowledge as you create IoT projects by applying more complex sensors. Finally, you'll find out how to plan for a microcontroller-based project and troubleshoot it. By the end of this book, you'll have developed a firm foundation in electronics and practical PIC and STM32 microcontroller programming and interfacing, adding valuable skills to your professional portfolio. What you will learnGet to grips with the basics of digital and analog electronicsDesign, build, program, and test a microcontroller-based systemUnderstand the importance and applications of STM32 and PIC microcontrollersDiscover how to connect sensors to microcontroller boardsFind out how to obtain sensor data via codingUse microcontroller boards in real life and practical projectsWho this book is for This STM32 PIC microcontroller book is for students, hobbyists, and engineers who want to explore the world of embedded systems and microcontroller programming. Beginners, as well as more experienced users of digital electronics and microcontrollers, will also find this book useful. Basic knowledge of digital circuits and C and C++ programming will be helpful but not necessary.




Test Driven Development for Embedded C


Book Description

Another day without Test-Driven Development means more time wasted chasing bugs and watching your code deteriorate. You thought TDD was for someone else, but it's not! It's for you, the embedded C programmer. TDD helps you prevent defects and build software with a long useful life. This is the first book to teach the hows and whys of TDD for C programmers. TDD is a modern programming practice C developers need to know. It's a different way to program---unit tests are written in a tight feedback loop with the production code, assuring your code does what you think. You get valuable feedback every few minutes. You find mistakes before they become bugs. You get early warning of design problems. You get immediate notification of side effect defects. You get to spend more time adding valuable features to your product. James is one of the few experts in applying TDD to embedded C. With his 1.5 decades of training,coaching, and practicing TDD in C, C++, Java, and C# he will lead you from being a novice in TDD to using the techniques that few have mastered. This book is full of code written for embedded C programmers. You don't just see the end product, you see code and tests evolve. James leads you through the thought process and decisions made each step of the way. You'll learn techniques for test-driving code right nextto the hardware, and you'll learn design principles and how to apply them to C to keep your code clean and flexible. To run the examples in this book, you will need a C/C++ development environment on your machine, and the GNU GCC tool chain or Microsoft Visual Studio for C++ (some project conversion may be needed).




Microprocessors & Microcontrollers


Book Description

Pentium Microprocessor Historical evolution of 80286, 386 and 486 processors, Pentium features and architecture, Pin description, Functional description, Pentium real mode, Pentium RISC features, Pentium super-scalar architecture - pipelining, Instruction paring rules, Branch prediction, Instruction and data caches The floating-point unit.Bus Cycles and Memory OrganisationInitialization and configuration, Bus operations-reset, Non pipelined and pipelined (read and write), Memory organisation and I/O organisation, Data transfer mechanism-8 bit, 16 bit, 32 bit data bus interface.Pentium programmingProgrammer's model, Register set, Addressing modes, Instruction set, Data types, Data transfer instructions, String instructions, Arithmetic instructions, Logical instructions, Bit manipulation instructions, Program transfer instructions and Processor control instructions.Protected ModeIntroduction, Segmentation-support registers, Related instructions descriptors, Memory management through segmentation, Logical to linear address translation, Protection by segmentation, Privilege level-protection, Related instructions, Inter-privilege level transfer of control, Paging-support registers, descriptors, Linear to physical address translation, TLB, Page level protection, Virtual memory.Multitasking, Interrupts Exceptions and I/OMultitasking - Support registers, Related descriptors, Task switching, I/O Permission bit map. Virtual mode - features, Address generation, Privilege level, Instructions and registers available, entering and leaving V86 mode. Interrupt structure - Real, Protected and Virtual 8086 modes, I/O handling in Pentium, Comparison of all three modes.8051 Micro-controllerMicro-controller MCS-51 family architecture, On-chip data memory and program memory organization - Register set, Register bank, SFRs, External data memory and program memory, Interrupts structure, Timers and their programming, Serial port and programming, Other features, Design of minimum system using 8051 micro-controller for various applications.PIC Micro-controllerOverview and features of PIC16C, PIC 16F8XX, Pin diagram, Capture mode, Compare mode, PWM mode, Block diagram, Programmer's model PIC, Reset and clocking.Memory organization - program memory, data memory, Flash, EEPROM, PIC 16F8XX addressing modes, Instruction set, programming, I/O ports, Interrupts, Timers, ADC.




The Designer's Guide to the Cortex-M Processor Family


Book Description

The Designer’s Guide to the Cortex-M Family is a tutorial-based book giving the key concepts required to develop programs in C with a Cortex M- based processor. The book begins with an overview of the Cortex- M family, giving architectural descriptions supported with practical examples, enabling the engineer to easily develop basic C programs to run on the Cortex- M0/M0+/M3 and M4. It then examines the more advanced features of the Cortex architecture such as memory protection, operating modes and dual stack operation. Once a firm grounding in the Cortex M processor has been established the book introduces the use of a small footprint RTOS and the CMSIS DSP library. With this book you will learn: The key differences between the Cortex M0/M0+/M3 and M4 How to write C programs to run on Cortex-M based processors How to make best use of the Coresight debug system How to do RTOS development The Cortex-M operating modes and memory protection Advanced software techniques that can be used on Cortex-M microcontrollers How to optimise DSP code for the cortex M4 and how to build real time DSP systems An Introduction to the Cortex microcontroller software interface standard (CMSIS), a common framework for all Cortex M- based microcontrollers Coverage of the CMSIS DSP library for Cortex M3 and M4 An evaluation tool chain IDE and debugger which allows the accompanying example projects to be run in simulation on the PC or on low cost hardware