Applying C For The IoT With Linux
Paperback
ISBN13: 9781871962611
Publisher: Lightning Source Inc
Published: May 29 2019
Pages: 334
Weight: 1.27
Height: 0.70 Width: 7.52 Depth: 9.25
Language: English
Applying C is the book you need if you are programming for Single Board Computers (SBCs) that run Linux, or if you do any coding in C that interacts with the hardware. As there isn't a good name for this body of knowledge, it isn't easy to find a single source for it. This book gathers together all of these low-level, hardware-oriented and often hardware-specific ideas. As such it is a moderately advanced book. This is not to say that it is difficult, but it does presuppose that you already know how to program in C and that you know the basic idioms of C.
Starting off from the very simple task of making a program run automatically, we look at how your program works with user-mode Linux. If you are working with hardware, arithmetic cannot be ignored and separate chapters are devoted to integer, fixed-point and floating-point arithmetic. Equally, to handle I/O you need to have a good grasp of files and the pseudo file system. The dev/mem file coupled with memory-mapped files makes it possible to work with raw memory without leaving user mode. Sockets are general-purpose way of communicating over networks and similar infrastructure and here the focus is on sending data over the internet and for this we build a web client and a server.
Next we consider graphics, which you might find unusual in a book on small systems, but today even small systems have GPUs and graphics comes as standard. It is common to think of adding low-cost output devices such as 7-segment displays to IoT devices, but with low cost HDMI/DVI displays available it becomes cost effective to simply use the built-in graphics hardware.
After this we turn to the idea of multi-tasking using Pthreads. As well as looking at threads, we consider locking, using mutex and condition variables, and scheduling. Although interrupts don't exist in user-mode Linux, we can get very close using poll and threading. Now that multiple cores are a feature of even low-cost SBC, in later chapters we cover managing cores, look at C11's atomics and introduce its memory models and barriers. Finally we take a short look at how to mix assembler with C.
Harry Fairhead has a hardware background and, having worked with microprocessors and electronics in general, for many years, he is an enthusiastic proponent of the IoT. He is the author of Fundamental C: Getting Closer To The Machine and his other recent titles include Raspberry Pi IoT in C and Micro: bit IoT in C.
Also in
Programming
Interactive Theorem Proving and Program Development: Coq'art: The Calculus of Inductive Constructions
Castéran, Pierre
Bertot, Yves
Hardcover
The Legend of Zelda(tm) Tears of the Kingdom - The Complete Official Guide: Collector's Edition
Piggyback
Hardcover
Python Crash Course, 3rd Edition: A Hands-On, Project-Based Introduction to Programming
Matthes, Eric
Paperback
Crisis Engineering: Time-Tested Tools for Turning Chaos Into Clarity
Nitze, Marina
Weaver, Matthew
Dickerson, Mikey
Paperback
Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
Kim, Gene
Forsgren Phd, Nicole
Humble, Jez
Paperback
Vibe Coding: Building Production-Grade Software with Genai, Chat, Agents, and Beyond
Yegge, Steve
Kim, Gene
Paperback
Embedded Systems with ARM Cortex-M Microcontrollers in Assembly Language and C: Fourth Edition
Zhu, Yifeng
Paperback
The Legend of Zelda(tm) Tears of the Kingdom - The Complete Official Guide: Standard Edition
Piggyback
Paperback
Fundamentals of Software Architecture: A Modern Engineering Approach
Ford, Neal
Richards, Mark
Paperback
I Have an App Idea: The Essential Guide to Building an App Without Tech Skills
Spann, Amanda
Paperback
AI Projects with Raspberry Pi: High-Performance Artificial Intelligence for Robotics, Security, Home Automation, and Vision
Hattersley, Lucy
Jepson, Brian
Paperback
Make: Electronics: Learning by Discovery: A Hands-On Primer for the New Electronics Enthusiast
Platt, Charles
Paperback
The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
Fournier, Camille
Paperback
The Devops Handbook, 2nd Edition: How to Create World-Class Agility, Reliability, & Security in Technology Organizations
Humble, Jez
Debois, Patrick
Kim, Gene
Paperback
Building Applications with AI Agents: Designing and Implementing Multiagent Systems
Albada, Michael
Paperback
The Developer's Guide to AI: A Field Guide for the Working Developer
Thompson, Danny
Orshalick, Jacob
Reghunadh, Jerry M.
Paperback
Learning Web Design: A Beginner's Guide to Html, Css, Javascript, and Web Images
Robbins, Jennifer
Paperback
The Staff Engineer's Path: A Guide for Individual Contributors Navigating Growth and Change
Reilly, Tanya
Paperback
Cracking the Coding Interview: 189 Programming Questions and Solutions
McDowell, Gayle Laakmann
Paperback
The New AI Cold War: Liberty vs. Tyranny in the Age of Machine Empires
Maginnis, Ltc Robert L.
Paperback
Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures
Sadalage, Pramod
Ford, Neal
Richards, Mark
Paperback
The Return on AI: From Promise to Profit in the Age of Intelligent Business
Mittal, Ashwin
Sawhney, Mohanbir
Paperback
SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL
Shields, Walter
Hardcover
Observability Engineering: Achieving Production Excellence
Miranda, George
Majors, Charity
Fong-Jones, Liz
Paperback
The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
Thomas, David
Hunt, Andrew
Hardcover
Linux Basics for Hackers, 2nd Edition: Getting Started with Networking, Scripting, and Security in Kali
Occupytheweb
Paperback
The Official Raspberry Pi Handbook 2026: Astounding Projects with Raspberry Pi Computers
Makers of Raspberry Pi Official Magazine, The
Paperback
Forecasting: Principles and Practice, the Pythonic Way
Hyndman, Rob J.
Athanasopoulos, George
Paperback
Generative AI Design Patterns: Solutions to Common Challenges When Building Genai Agents and Applications
Lakshmanan, Valliappa
Hapke, Hannes
Paperback
Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software
Robson, Elisabeth
Freeman, Eric
Paperback
Frictionless: 7 Steps to Remove Barriers, Unlock Value, and Outpace Your Competition in the AI Era
Noda, Abi
Forsgren, Nicole
Paperback
Arduino Programming for Beginners: A Comprehensive Beginner's Guide to Learn the Realms of Arduino Programming from A-Z
Protosmith, Ada
Paperback
Concrete Mathematics: A Foundation for Computer Science
Patashnik, Oren
Knuth, Donald
Graham, Ronald
Hardcover
Building AI-Powered Products: The Essential Guide to AI and Genai Product Management
Nika, Marily
Paperback
Grokking Algorithms, Second Edition: An Illustrated Guide for Programmers and Other Curious People
Bhargava, Aditya Y.
Paperback
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems
Agans, David J.
Paperback
Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy
Khononov, Vlad
Paperback
Learning Generative AI Tools for Excel: Speed Up Your Everyday Tasks with Microsoft Excel, Copilot, Chatgpt, and Beyond
Duca, Angelica Lo
Paperback
Site Reliability Engineering: How Google Runs Production Systems
Murphy, Niall Richard
Jones, Chris
Beyer, Betsy
Paperback
The Software Architect Elevator: Redefining the Architect's Role in the Digital Enterprise
Hohpe, Gregor
Paperback
Computer Science from Scratch: Building Interpreters, Art, Emulators and ML in Python
Kopec, David
Paperback
Python Programming for Young Coders: A Hands-On, Project-Based Introduction to Coding for Beginners, Kids, and Teens
Pandey, Anand
Paperback
Learning Php, MySQL & JavaScript: A Step-By-Step Guide to Creating Dynamic Websites
Nixon, Robin
Paperback
Building Safer Technology: A Field Guide to Failing Well
Zunger, Yonatan
Coles, Neil
Kissner, Lea
Paperback
Software Engineering at Google: Lessons Learned from Programming Over Time
Manshreck, Tom
Wright, Hyrum
Winters, Titus
Paperback
Prompt Engineering for Llms: The Art and Science of Building Large Language Model-Based Applications
Ziegler, Albert
Berryman, John
Paperback
Living a Jewish Life, Revised and Updated: Jewish Traditions, Customs, and Values for Today's Families
Diamant, Anita
Cooper, Howard
Paperback
Articulating Design Decisions: Communicate with Stakeholders, Keep Your Sanity, and Deliver the Best User Experience
Greever, Tom
Paperback
Pro C# 10 with .Net 6: Foundational Principles and Practices in Programming
Troelsen, Andrew
Japikse, Phil
Paperback
Adobe Photoshop, 2nd Edition: A Complete Course and Compendium of Features
Laskevitch, Stephen
Paperback
Kubernetes in Action, Second Edition: Deploying and Managing Containers and Cloud-Native Applications
Luksa, Marko
Conner, Kevin
Paperback
Spies, Lies, and Algorithms: The History and Future of American Intelligence
Zegart, Amy B.
Paperback
Electronic Music and Sound Design - Theory and Practice with Max 9 - Volume 1 (Fifth Edition)
Cipriani, Alessandro
Maurizio, Giri
Paperback
