Book Image

Raspberry Pi Computer Architecture Essentials

By : Andrew K. Dennis, Teemu O Pohjanlehto
Book Image

Raspberry Pi Computer Architecture Essentials

By: Andrew K. Dennis, Teemu O Pohjanlehto

Overview of this book

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.
Table of Contents (18 chapters)
Raspberry Pi Computer Architecture Essentials
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface
Index

Drawing a line


Next, we are going to start drawing to the screen; this is where things get interesting.

The following program demonstrates how to draw a line on the screen. You can then use this as a base to further explore creating new shapes if you wish.

Let's start by creating a new file to store this program in:

vim sixth_c_prog.c

Plotting pixels and drawing lines

The following code demonstrates how to turn the screen black and draw a line on it. With these two concepts you should be able to go on to create more complex graphics drawing programs. The line forms the basis of any shape, such as a triangle or square.

Add the following code to the file you created:

#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>


char *device_map = 0;
struct fb_fix_screeninfo fixed_info;
struct fb_var_screeninfo var_info;

void pixel_plotter(int x, int y, int c)
{
    unsigned int pix_offset = x + y * fixed_info.line_length;...