Skip to main content
Linux For Embedded Systems
ForArabs
Ahmed ElArabawy
Cairo University
Computer Eng. Dept.
CMP445-Embedded Systems
Lecture 1:
Course Overview
The Lecturer
• Ahmed ElArabawy
• Education:
• BSc Alexandria University (1992)
• MSc Alexandria University (1994)
• PhD SMU University, TX, USA (2001)
• Work
• Faculty Staff @ Alexandria Univ.
• Faculty Staff @ Cairo Univ.
• Microsoft, SySDSoft (Egypt)
• Ericsson, Broadcom, Solectek, WiLan Labs (USA)
• Embedded Systems Initiatives
• Linux for Embedded Systems
http://linux4embeddedsystems.com/
https://www.facebook.com/groups/linuxforEmbeddedSystems/
• Raspberry Pi for Arabs
https://www.facebook.com/groups/linuxforEmbeddedSystems/
• More Details
https://www.linkedin.com/in/ahmedelarabawy
This Course
• This is an introductory hands-on course in the area of Embedded
Systems
• We will be using the Raspberry Pi to learn about the basic aspects of
Embedded Development
• We should come out from this course with a decent level of knowledge
and hands on experience with embedded systems
• Although the course addresses embedded systems in general, we will be
focusing on the use the Raspberry Pi Board throughout the course
Why The Raspberry Pi ??
• The reason of selecting the Raspberry Pi for this Course:
• The Raspberry Pi is a very capable board, and can demonstrate all
the aspects of embedded systems that we will study in this
course (ARM Processor, Linux Support, … )
• The Raspberry Pi is very rich in its interfaces (USB, Ethernet,
GPIO, I2C, SPI, UART, CSI, DSI, ….)
• The Raspberry Pi has strong support of different programming
and scripting languages (Bash, Python, Java, C/C++, ..)
• The Raspberry Pi comes with a huge community and tons of
tutorials and projects on the Internet
• The Raspberry Pi is less Expensive than other comparable board
• The Raspberry Pi is more available in local market than other
boards
What About Other Platforms ?
• A lot of the materials in this course is useful for other
embedded system boards
• It is advisable to focus now on the Pi to avoid distractions in
the boards differences, and to have a common platform
• Later, you can apply the same course material on a lot of other
platforms
Course Objectives
• The Internet is full of tutorials, guides, and videos for different projects
on the Pi
• So this course will not try to add to this pile with more projects
• The Objective of this course is to perform a structures and organized
study on Embedded Systems using the Pi and its associated capabilities
• Each lecture will cover one concept in Embedded Systems using the Pi
• I will be building mini-projects in the lecture to apply the concepts of
the lecture
• Then I will be referring to some of the online projects that utilize the
discussed topic
Course Projects
• Most of the projects used in this course are simple projects that
consider a single concept
• Connecting to a specific sensor
• Controlling a specific Motor
• Interfacing to a specific Display
• In real world projects, the system will contain multiple of these
aspects
• So consider the projects in this course as building blocks, for bigger
projects
• You will be assigned to do more projects on your own
Course Logistics
The Course Web Site
• It is not enough to watch the video lectures
• The Course Web Site includes much more resources
• List of applicable Projects
• Useful Links
• More Reading Material
• FAQ
• Assignments
• Quizzes and grading
http://linux4embeddedsystems.com/
Course Project Code
• All code used in this course will be available on the course GitHub
Repository
https://github.com/Linux4EmbeddedSystems
• You will need to have your own GitHub account, so if you don’t have one already,
create one…. It is free
https://github.com/
• You will need the GitHub account to deliver code and associated
documentation for all assigned mini-projects
Course Pre-requisites
• Good Understanding of Linux and its command Line Interface, if you need to refresh
your knowledge on this topic, attending the course C-102 Understanding Linux in
the public section of the website is highly recommended (I will be referring to
specific lectures throughout the course when needed )
• Have access to a Raspberry Pi Board is needed (you will be provided with one)
• Other hardware accessories will be mentioned in each lecture
• This course will use different computer programming and scripting languages:
• It will use some Bash Scripts, no previous advanced knowledge of Bash Scripts are
needed
• It will use some Python Scripts, so it will be useful to have some knowledge about
Python, but it is not a must since python is very easy to learn as we go
• Some parts of the course will be using C Code
• Other parts will be using Java Code
Communication Channels
Course WebSite
• All Students will need to create an account in the course website
http://linux4embeddedsystems.com
• Students will need also to create a GitHub Account
https://github.com/
• Students need to send me the email (used in the course login) and their GitHub
username by Midnight today
• I will enroll you in the course, and send you instructions by email
• Announcements from the lecturer will be put on the website, and sent by email
• The course website will contain,
• Access to the lecture videos, note that the videos will be on youtube, so you can
download them if you need to
• Access to the lecture slides in pdf format
• A list of required reading material. These are part of the course, and will be
included in the midterm and final exams
• A list of optional reading material. These are recommended for those who are
interested in the topic, and they are not going to be part of the exam
• Any course related announcements
• Weekly assignments/mini-projects description
• Quizzes and grades
• Discussion forums
Communication Channels
Discussion Forum
• All student questions should be placed on the discussion
forum in the course website
• Both the Lecturer and the course TAs will be monitoring the
discussion forum to answer course related questions
• Other students are encouraged to respond to their colleague
questions
• You can also post ideas, interesting articles, interesting
embedded news on the discussion forum
• It is highly encouraged to keep the discussion forum active
with students/TAs/Lecturer interaction
Communication Channels
Lecturer Availability
• It is highly recommended to use the discussion forum for
student questions
• However, if you need to address the lecturer directly, you can
communicate to him via email
aelarabawy.cmp445@gmail.com
• Lecturer should be responding to your emails, or will ask you
to post your question on the discussion forum (if the question
does not require a private answer)
• The Lecturer will be available online for interactive
communication with the students on a specified time on
weekly basis (time will be specified via a course
announcement)
Student Groups
AssigningGroups
• Some of the course assignments will be assigned on an
individual basis
• However, most of the course assignments will be assigned on
team/group basis
• Students will need to form teams/groups of 3-4 students per
group
• Each group will need to pick a name to their group (must be a
name related to embedded Systems)
• Each group will need to assign a group leader for their group
• Each group leader will need to send to the Lecturer and TAs
the group name and team member names by midnight
Monday
Project Assignments
• Throughout the course there will be a lot of mini-projects assigned for
students
• Projects will be assigned on group basis
• Sometimes all groups will have the same project, other times, each
group will have their own project
• Each group will be handed over a hardware kit at the beginning of the
course (A Raspberry Pi + Accessories)
• This hardware will remain with the students throughout the full term,
and they will need to return it in a working condition at the end of the
term
• The provided hardware will include most of the required material for
the assigned projects, however, sometimes minor additions may be
required by the students
• Project deliverable will be:
• Showing the TA the project outcome
• Commit the project code and associated documentation to the group leader
GitHub Account
• Send the lecturer an email to inform him of the readiness of the project
Course Grading
• Course Grade will be based on the following:
• Final exam: 70%
• Midterm exam: 10%
• Projects and Assignments: 20%
• All exams will be open book, open notes (all you can bring)
• Exams will cover:
• Lecture material
• Mandatory Reading material
• Assignments and Projects
Course Contents
Course Contents
Overview on Embedded Systems
Course Contents
Overview on Embedded Systems OSs
Course Contents
Unwrapping the Raspberry Pi
Course Contents
Preparing the Raspberry Pi
Course Contents
The Pi as a Linux Box
Course Contents
The Pi Control Arm
Course Contents
Accessing the Pi GPIO
Course Contents
The I2C Interface
Course Contents
The SPI Interface
Course Contents
The 1-Wire Interface
Course Contents
The UART Interface
Course Contents
Using PWM Control
Course Contents
Handling Analog Signals
Course Contents
Motor Control Using the Pi
Course Contents
Using Sensors
Course Contents
Closing the Loop
Course Contents
LED Displays
Course Contents
LCD and Touch Screens
Course Contents
Interfacing to Cameras
Course Contents
The Pi and the Web
Course Contents
Using OpenCV with the Pi
Course Contents
Using FFMPEG With The Pi
Course Contents
Using Matlab with the Pi
Course Contents
Emulating the Pi
http://Linux4EmbeddedSystems.com