Raspberry Pi Computer Architecture Essentials
()
About this ebook
Explore Raspberry Pi's architecture through innovative and fun projects
About This Book- Explore Raspberry Pi 2's hardware through the Assembly, C/C++, and Python programming languages
- Experiment with connecting electronics up to your Raspberry Pi 2 and interacting with them through software
- Learn about the Raspberry Pi 2 architecture and Raspbian operating system through innovative projects
Raspberry Pi Computer Architecture Essentials is for those who are new and those who are familiar with the Raspberry Pi. Each topic builds upon earlier ones to provide you with a guide to Raspberry Pi's architecture. From the novice to the expert, there is something for everyone. A basic knowledge of programming and Linux would be helpful but is not required.
What You Will Learn- Set up your Raspberry Pi 2 and learn about its hardware
- Write basic programs in Assembly Language to learn about the ARM architecture
- Use C and C++ to interact with electronic components
- Find out about the Python language and how to use it to build web applications
- Interact with third-party microcontrollers
- Experiment with graphics and audio programming
- Expand Raspberry Pi 2's storage mechanism by using external devices
- Discover Raspberry Pi 2's GPIO pins and how to interact with them
With the release of the Raspberry Pi 2, a new series of the popular compact computer is available for you to build cheap, exciting projects and learn about programming.
In this book, we explore Raspberry Pi 2's hardware through a number of projects in a variety of programming languages. We will start by exploring the various hardware components in detail, which will provide a base for the programming projects and guide you through setting up the tools for Assembler, C/C++, and Python. We will then learn how to write multi-threaded applications and Raspberry Pi 2's multi-core processor. Moving on, you'll get hands on by expanding the storage options of the Raspberry Pi beyond the SD card and interacting with the graphics hardware. Furthermore, you will be introduced to the basics of sound programming while expanding upon your knowledge of Python to build a web server. Finally, you will learn to interact with the third-party microcontrollers.
From writing your first Assembly Language application to programming graphics, this title guides you through the essentials.
Style and approachThis book takes a step-by-step approach to exploring Raspberry Pi's architecture through projects that build upon each other. Each project provides you with new information on how to interact with an aspect of the Raspberry Pi and Raspbian operating system, providing a well-rounded guide.
Read more from Dennis Andrew K.
Raspberry Pi Home Automation with Arduino - Second Edition Rating: 0 out of 5 stars0 ratings
Related to Raspberry Pi Computer Architecture Essentials
Related ebooks
Raspberry Pi Computer Architecture Essentials Rating: 0 out of 5 stars0 ratingsRaspberry Pi Server Essentials Rating: 0 out of 5 stars0 ratingsHands-On Robotics with JavaScript: Build robotic projects using Johnny-Five and control hardware with JavaScript and Raspberry Pi Rating: 0 out of 5 stars0 ratingsLearn Robotics Programming: Build and control autonomous robots using Raspberry Pi 3 and Python Rating: 0 out of 5 stars0 ratingsRaspberry Pi Essentials Rating: 0 out of 5 stars0 ratingsRaspberry Pi Android Projects Rating: 0 out of 5 stars0 ratingsRaspberry Pi :Raspberry Pi Guide On Python & Projects Programming In Easy Steps Rating: 3 out of 5 stars3/5Learning Raspberry Pi Rating: 0 out of 5 stars0 ratingsRaspberry Pi 3 Projects for Java Programmers: Get the most out of your Raspberry Pi 3 with Java Rating: 0 out of 5 stars0 ratingsInternet of Things Programming Projects: Build modern IoT solutions with the Raspberry Pi 3 and Python Rating: 0 out of 5 stars0 ratingsMachine Learning with the Raspberry Pi: Experiments with Data and Computer Vision Rating: 0 out of 5 stars0 ratingsLearning Raspbian Rating: 5 out of 5 stars5/5Android for the BeagleBone Black Rating: 0 out of 5 stars0 ratingsRaspberry Pi 2 Server Essentials Rating: 0 out of 5 stars0 ratingsHands-On Network Programming with C: Learn socket programming in C and write secure and optimized network code Rating: 0 out of 5 stars0 ratingsGetting Started with Raspberry Pi Zero Rating: 0 out of 5 stars0 ratingsRaspberry Pi LED Blueprints Rating: 0 out of 5 stars0 ratingsBeagleBone Media Center Rating: 0 out of 5 stars0 ratingsInternet of Things with Raspberry Pi 3: Leverage the power of Raspberry Pi 3 and JavaScript to build exciting IoT projects Rating: 0 out of 5 stars0 ratingsFull Stack Web Development with Raspberry Pi 3: Build complex web applications with a portable computer Rating: 0 out of 5 stars0 ratingsRP2040 Assembly Language Programming: ARM Cortex-M0+ on the Raspberry Pi Pico Rating: 0 out of 5 stars0 ratingsCoffeeScript Application Development Rating: 0 out of 5 stars0 ratingsHands-On Embedded Programming with C++17: Create versatile and robust embedded solutions for MCUs and RTOSes with modern C++ Rating: 0 out of 5 stars0 ratingsMastering Sublime Text Rating: 0 out of 5 stars0 ratingsCompTIA Linux+ Certification Guide: A comprehensive guide to achieving LX0-103 and LX0-104 certifications with mock exams Rating: 0 out of 5 stars0 ratingsRaspberry Pi Blueprints Rating: 0 out of 5 stars0 ratingsHyper-V 2016 Best Practices Rating: 0 out of 5 stars0 ratings
Hardware For You
Apple Watch For Dummies Rating: 0 out of 5 stars0 ratingsElectrical Engineering | Step by Step Rating: 0 out of 5 stars0 ratingsmacOS Sonoma For Dummies Rating: 0 out of 5 stars0 ratingsCompTIA A+ Complete Review Guide: Core 1 Exam 220-1101 and Core 2 Exam 220-1102 Rating: 5 out of 5 stars5/5CompTIA A+ Complete Review Guide: Exam Core 1 220-1001 and Exam Core 2 220-1002 Rating: 5 out of 5 stars5/5Chip War: The Fight for the World's Most Critical Technology Rating: 4 out of 5 stars4/5Raspberry Pi Electronics Projects for the Evil Genius Rating: 3 out of 5 stars3/5Chromebook For Dummies Rating: 5 out of 5 stars5/5Exploring Apple iPad: iPadOS 15 Edition: The Illustrated, Practical Guide to Using your iPad Rating: 0 out of 5 stars0 ratingsAfter Steve: How Apple Became a Trillion-Dollar Company and Lost Its Soul Rating: 4 out of 5 stars4/5Exploring Arduino: Tools and Techniques for Engineering Wizardry Rating: 4 out of 5 stars4/5iPhone For Dummies Rating: 0 out of 5 stars0 ratingsiPhone 16 Pro Max User Manual: The Complete Step-By-Step Guide to Maximize your New iPhone 16 Pro Max and iOS 18 Rating: 0 out of 5 stars0 ratingsAmazon Web Services (AWS) Interview Questions and Answers Rating: 5 out of 5 stars5/5Build Your Own PC Do-It-Yourself For Dummies Rating: 4 out of 5 stars4/5Programming Arduino: Getting Started with Sketches Rating: 4 out of 5 stars4/5Upgrading and Fixing Computers Do-it-Yourself For Dummies Rating: 4 out of 5 stars4/5iPhone 15 Pro Max User Guide for Beginners and Seniors Rating: 0 out of 5 stars0 ratingsTeach Yourself VISUALLY MacBook Pro and MacBook Air Rating: 4 out of 5 stars4/5How To Repair Your iPad - Quickly and Professionally!: Fix It Yourself, #5 Rating: 0 out of 5 stars0 ratingsBuilding Confidence Using Your iPhone: Book I — THE ULTIMATE GUIDE Rating: 0 out of 5 stars0 ratingsLaptops For Dummies Rating: 5 out of 5 stars5/5Arduino Electronics Blueprints Rating: 4 out of 5 stars4/5Arduino Essentials Rating: 5 out of 5 stars5/5CompTIA A+ Complete Study Guide: Core 1 Exam 220-1101 and Core 2 Exam 220-1102 Rating: 0 out of 5 stars0 ratingsmacOS Black Book: Mastering Shortcut Keys Rating: 0 out of 5 stars0 ratings
Reviews for Raspberry Pi Computer Architecture Essentials
0 ratings0 reviews
Book preview
Raspberry Pi Computer Architecture Essentials - Dennis Andrew K.
Table of Contents
Raspberry Pi Computer Architecture Essentials
Credits
About the Author
About the Reviewer
www.PacktPub.com
eBooks, discount offers, and more
Why subscribe?
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Introduction to the Raspberry Pi's Architecture and Setup
History and background of the Raspberry Pi
Raspberry Pi hardware specifications
Dimensions
System on Chip
CPU
GPU
SDRAM
4 USB 2.0 ports and 1 SoC on-board USB
MicroSD card port
Ethernet port
Audio
GPIO pins
Video – analog TV out
Video – HDMI port
Basic hardware needed
The microSD card – the main storage and boot device of the Raspberry Pi 2
Preinstalled microSD card versus creating your own
The NOOBS operating system installation manager
Downloading the latest version of Raspbian
Setting up your microSD card and installing the Raspbian operating system
Raspbian installation wrap-up
Check SSH is running
RSA key generation for SSH
Linux and Mac RSA key generation
Windows RSA key generation
Assign a static IP to your Raspberry Pi 2
Installing Screen and Vim
Vim – an optional handy text editor
Running tests on the OS and configuration changes
Diagnostic tests
Over and underclocking the Raspberry Pi
Going further – testing the GPIO pins
Some handy Linux commands
Troubleshooting
Summary
2. Programming on Raspbian
Which programming languages?
Assembly language
Assembling and linking
The C and C++ languages
C – a brief introduction
A quick look at C++
Our first C program
Geany – a handy text editor and development environment
Creating a new C program
C libraries – a trove of reusable code
The C (and C++) compiler
Compiling and running our application
The Python language
A simple Python program
Running a Python program from a file
Summary
3. Low-Level Development with Assembly Language
Back to basics
Multiline comments
Directives
Single line comments
Registers
Branching
The assembler
The linker
Makefiles
Memory and addresses
The .data directive
The .balign directive
Words
Labels
The memory
The addresses
LDR and SUB
Running our program
Adding power to our program – control structures
If else statements
Iteration
Testing our control structures
Summary
4. Multithreaded Applications with C/C++
What are threads?
Thread types
User level threads
Kernel level threads
Hybrid threads
POSIX threads
Steps involved in implementing threads
Creation and termination
Synchronization
Scheduling
An example in C
Trying out our program
A C++ equivalent
The g++ command
Going further – mutexes and joins
Compile and test
Summary
5. Expanding on Storage Options
Booting up
Setting up the external HDD
Getting the disk name
Setting up the HDD
Modifying cmdline.txt
Network-attached storage (NAS)
Installing Samba
Testing the NAS
Mac
Linux
Windows
Summary
6. Low-Level Graphics Programming
VideoCore IV GPU
Sample programs
Accessing the frame buffer
Check the display settings
Testing our C code
Filling the screen with a color
A C program to turn the screen red
Compile and run the C program
Drawing a line
Plotting pixels and drawing lines
Compile and run
Next steps – polygons
Summary
7. Exploring the Raspberry Pi's GPIO Pins
Introduction to GPIO pins
Standard GPIO
I2C
Serial Rx and Tx
SPI
PWM and PPM
GPIO power voltages
Hardware choices
Prototyping shields and boards
Cooking Hacks Arduino bridge shield
Connecting directly to the GPIO pins
Switching an LED on and off
Setting up the hardware
C blinking LED program
Python blinking LED program
Reading data from the GPIO pins in Python
Summary
8. Exploring Sound with the Raspberry Pi 2
Introduction to the Raspberry Pi's sound
Configuring the audio output
Setting the audio output
Interacting with audio through GPIO
Installing the audio drivers
Hardware setup
Loading drivers
Getting some drum tracks
Python drum machine
Audio shields for the Raspberry Pi
C and ALSA
ALSA examples
Introducing Sonic Pi
Setup
Experimenting with Sonic Pi
Summary
9. Building a Web Server
Introduction to web servers
HTTP requests
HTML
Popular web servers available on the Raspberry Pi
Apache
NGINX
Building a Python web server
Python web server code
Adding an index page and a favicon
Adding database support
SQLite
SQL – a quick overview
Python program with SQLite support
Flask – displaying database data via Python
Next steps
Summary
10. Integrating with Third-Party Microcontrollers
Genuino/Arduino microcontroller
Setting up the Arduino software
Installing the IDE on your Raspberry Pi 2
A quick guide to the Arduino IDE
Integration with Arduino
Serial communication over USB
Communication between the Arduino and Raspberry Pi via GPIO
Communication over I2C
Communication over the Web
Summary
11. Final Project
Choose your storage mechanism
Building a Flask-based website
Adding a database
A basic website
Web forms
Add
Edit
Adding in an LED
Building the circuit – a recap
Integrating with our Python app
Extending the project further
Replace the LED with a screen
E-mail support
Playing a sound
Summary
Index
Raspberry Pi Computer Architecture Essentials
Raspberry Pi Computer Architecture Essentials
Copyright © 2016 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: March 2016
Production reference: 1170316
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78439-797-5
www.packtpub.com
Credits
Author
Andrew K. Dennis
Reviewer
Ed Snajder
Commissioning Editor
Amarabha Banerjee
Acquisition Editor
Divya Poojari
Content Development Editor
Trusha Shriyan
Technical Editor
Shivani Kiran Mistry
Copy Editor
Safis Editing
Project Coordinator
Kinjal Bari
Proofreader
Safis Editing
Indexer
Rekha Nair
Production Coordinator
Melwyn Dsa
Cover Work
Melwyn Dsa
About the Author
Andrew K. Dennis is the manager of professional services software development at Prometheus Research. Prometheus Research is a leading provider of integrated data management for research and is the home of HTSQL, an open source navigational query language for RDBMS.
Andrew has a diploma in computing, a BSc in software engineering, and is currently studying for a second BSc in creative computing in his spare time.
He has over 12 years of experience working in the software industry in the UK, Canada, and the USA. This experience includes e-learning courseware development, custom CMS and LMS development, SCORM consultancy, web development in a variety of languages, open source application development, blogging about the integration of web technologies with electronics for home automation, and punching lots of Cat5 cables.
His interests include web development, e-learning, 3D printing, Linux, the Raspberry Pi and Arduino, open source projects, home automation and the use of web technology in this sphere, amateur electronics, home networking, and software engineering.
About the Reviewer
Ed Snajder is a database engineer and hardware hacker working at Jive Software. When not breaking databases and distributed data systems, Ed spends a lot of time in the community evangelizing Raspberry Pi, Arduino, and open source 3D printing. His belief is that if every child could have a Raspberry Pi, we will soon have the flying cars we've always dreamed of. He lives in Portland, Oregon, with his partner, Lindsay and his Shih-Tzus, Obi-wan and Gizmo.
www.PacktPub.com
eBooks, discount offers, and more
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
eBooks, discount offers, and morehttps://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Preface
Are you interested in the myriad features of your Raspberry Pi 2? From the hardware to the software, do you wish to understand how you can interact with these features?
Then this is the book for you!
The Raspberry Pi 2 is one of the latest hardware offerings in the Raspberry Pi family. With many new and improved features than previous versions, there is so much more an enthusiast can do.
This book will walk you through how you can get the most out of your device.
You will learn about how to program on the Raspberry Pi using the Assembly language, Python, and C/C++. This will include building a web server in Python and saving data to an SQLite database. Ever wondered what threads are? These are covered here too.
In addition to this, you will explore the various types of GPIO pins and how these can be used to interact with third party microcontrollers and electronic circuits.
The sound and graphics capabilities of the Raspberry Pi 2 are also experimented with through a number of projects. And to expand the Raspberry Pi's storage option, we will also set up an external HDD via USB.
Finally, the book concludes with a project that brings together many of the technologies explained throughout the chapters.
By the time you finish reading this book, you'll have a firm knowledge of the Raspberry Pi 2 and how you can devise your own projects that use its capabilities.
What this book covers
Chapter 1, Introduction to the Raspberry Pi's Architecture and Setup, provides an introduction to the Raspberry Pi and its hardware architecture. We will explore the various hardware components in detail, and this will provide a basis for the programming projects in future chapters. A quick guide to getting Raspbian installed and SSH enabled is also provided.
Chapter 2, Programming on Raspbian, provides an introduction to the programming languages used in this book. An explanation will be provided of which language is used and why. This chapter will also guide you through setting up the tools for Assembler, C/C++, and Python. Three introduction programs will then be walked through to give you the opportunity to test that your setup works.
Chapter 3, Low-Level Development with Assembly Language, explores programming in the Raspbian operating system using the Assembler programming language.
Chapter 4, Multithreaded Applications with C/C++, having looked at Assembler, we move up the programming hierarchy to C/C++. We learn how to write multithreaded applications and understand their usefulness. Through these applications, we learn more about the multi-core CPU of the Raspberry Pi 2.
Chapter 5, Expanding on Storage Options, offers a guide to expanding the storage options of the Raspberry Pi beyond the SD card.
Chapter 6, Low-Level Graphics Programming, shows you how to interact with the graphics hardware on the Raspberry Pi 2. Here you will learn how to draw to the screen via the frame buffer.
Chapter 7, Exploring the Raspberry Pi's GPIO Pins, shows you how to interact with electronic components using the Raspberry PI's GPIO pins. Here we look at how Python libraries can be used to simplify the process.
Chapter 8, Exploring Sound with the Raspberry Pi 2, gives an introduction to the basics of sound programming using the Raspberry Pi's hardware. Learn about live coding via the Sonic-Pi IDE to generate your own algorithmic music.
Chapter 9, Building a Web Server, expands upon your knowledge of Python to build a web server via Flask. This chapter explores the Ethernet and Wi-Fi capabilities of the Raspberry Pi for delivering web-based applications. In this chapter, you will also learn about using SQLite to store data and display it via a web page. Topics covered also include Apache and NGINX.
Chapter 10, Integrating with Third-Party Microcontrollers, in this chapter we learn how to interact with third-party microcontrollers such as the Arduino. These devices can form the basis of robotics projects and augment the abilities of the Raspberry Pi.
Chapter 11, Final Project, will conclude the book with a final project that brings together many of the topics explored throughout previous chapters.
What you need for this book
The following list provides an overview of the recommended and optional hardware needed for the projects in this book. Where hardware is needed for a specific chapter, the relevant chapter is listed:
Raspberry Pi 2.
USB keyboard.
HDMI monitor.
USB mouse.
MicroSD card.
Wall power unit for the Raspberry Pi 2.
A working Internet connection.
A selection of wires for connecting to the GPIO pins; 12 recommended for Chapter 7, Exploring the Raspberry Pi's GPIO pins, Chapter 10, Integrating with Third-Party Microcontrollers, and Chapter 11, Final Project.
An LED for Chapter 7, Exploring the Raspberry Pi's GPIO pins and Chapter 11, Final Project.
1.6K, 3.3k Ohm resistor for Chapter 10, Integrating with Third-Party Microcontrollers.
270 Ohm resistor for Chapter 7, Exploring the Raspberry Pi's GPIO pins and Chapter 11, Final Project.
USB hard drive for Chapter 5, Expanding on Storage Options.
Cooking Hacks Raspberry Pi to Arduino Bridge Shield or Pi Cobbler. These are optional and not necessary, as the breadboard can replace these.
Breadboard. Only required if not using a third-party shield. Needed for Chapter 7, Exploring the Raspberry Pi's GPIO pins, Chapter 10, Integrating with Third-Party Microcontrollers, and Chapter 11, Final Project.
Arduino Uno. Needed for Chapter 10, Integrating with Third-Party Microcontrollers.
USB cable to connect Arduino to Raspberry Pi. Needed for Chapter 10, Integrating with Third-Party Microcontrollers.
Who this book is for
Are you interested in the architecture that forms the Raspberry Pi 2? Would you like to learn how its components work through interactive projects?
This book provides a hands-on guide to the Raspberry Pi 2's hardware and software. Each chapter builds upon the last to develop applications and electronics that leverage many of the features of the Raspberry Pi 2. From programming sound to integrating with third party microcontrollers, it's all covered here.
Aimed at the Raspberry Pi enthusiast, this is a perfect introductory text on how to get the most out of your new device.
While understanding programming concepts is helpful, no prior knowledge of the programming languages covered in this book is required.
Some simple electronics projects are included but no soldering is required.
Conventions
In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: The cd command allows you to change directories.
A block of code is set as follows:
int main(void)
{
int a;
printf(Please input an integer:
);
scanf(%d
, &a);
printf(You entered the number: %d\n
, a);
return 0;
}
Any command-line input or output is written as follows:
mv /home/pi/test.txt /home/pi/test2.txt
New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: Click on the Generate button.
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.
To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files for this book from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
You can download the code files by following these steps:
Log in or register to our website using your e-mail address and password.
Hover the mouse pointer on the SUPPORT tab at the top.
Click on Code Downloads & Errata.
Enter the name of the book in the Search box.
Select the book for which you're looking to download the code files.
Choose from the drop-down menu where you purchased this book from.
Click on Code Download.
Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:
WinRAR / 7-Zip for Windows
Zipeg / iZip / UnRarX for Mac
7-Zip / PeaZip for Linux
Errata
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one