Rules
- The class begins promptly, and once 10 minutes have passed, students are not permitted to enter the classroom.
- Taking pictures or recording the whiteboard is not allowed.
- Lab reports must be typed by the students. If the student uses Internet information, the info must be properly referenced.
- The use of AI tools is prohibited. If a student is found to have used AI tools, their lab report grade will be reduced to zero.
- Rubrics for each assigment are public at the current Github repository.
- The assigments will be checked for plagiarism. If the document contains more than 30% similarity to other sources, the grade will be given a zero.
About
This is the website for the Advanced Embedded Systems lecture in the Master of Science program. The course focuses mainly on the Signal Processing Lane and requires basic programming, microcontrollers, GNU-based Operating Systems, and application development. It is highly recommended to have a device similar to the BeagleBone or Raspberry Pi boards to implement and understand how it can be programmed and used to gather information. The main idea is to learn how a GNU/Linux-based operative system can be used to develop hardware-access applications from the terminal or GUI front-end. The lectures will be provided mainly through Git repositories to allow students to reproduce the complete task developed by the instructor. Thus, it is also highly recommended to learn the basics of the Git system.
Tools required for lectures
A tool commonly used to work with embedded systems are terminal emulators. GNU/Unix systems include great options, but there are also recommended alternatives to `CMD` (very limited) for Windows OS.
- InstallHyper
- InstallPower Shell
1. Introduction to the SBCs
We are going to work with a Single Board Computers or Portable Embedded Systems, both systems are really close to Mobile Devices that works (in most of the cases) with Embedded Linux. There are several options to select: Raspberry Pi, DragonBoard, ASUS Tinker Board, cRio, LattePanda, Intel Nuc, Libre Computer, ESP32, NanoPi, BeagleBone, Onion, Intel Galileo, and more. Of course the selected option depends on the final application or applications. For this course, the best options are the: 1) The BeagleBone Black, 2) BeagleBone Nano, and 3) Raspberry Pi; in this priority order. I recommend the BeagleBone Boards because it is highly supported by groups and forums, has great available tools, and several electronic expansion cards to work with. If you want to know prices and more details please visit Best Single Board Computers.
1.1 Basics of GNU/Linux
GNU/Linux is the technical name that receives the Unix based operative systems(OS). The OS are the combination of several open-source projects, the most relevant are the GNU environment (Richard Stallman) and the OS kernel known as Linux (Linus Torvalds).
Nowadays, the word Linux is used to refer to the complete OS instead of the kernel, however, the correct name is GNU/Linux. Thus, the GNU/Linux OS are commonly distributed as compendium of packages or programs, these is known as a distro or distribution. Each distribution has a minimum of packages previously installed to work with.
GNU/Linux is a wide used operative systems in several engineering applications, data science server/computers, real time application, embedded systems, and more. According with [1], GNU/Linux distributions are used in the 78% of the most important servers in the world.
Therefore, I recommend to be in full contact with the work-flow of GNU-Linux. As you may know, there are several Linux distributions to work with, and this distribution must be selected by considering the final application.
Then, if you are a first user of GNU-Linux, I recommend to use Ubuntu. If you have already used a GNU-Linux distribution, I recommend to work with Debian, or if you can handle it a little bit more, use Arch.
Thus, you will need a way to work with many Linux distributions to develop applications. To manage this, you can install a physical instance of each distro in your computer (the best option, but take with care), otherwise you can install the Docker system to have many distros without problems as sand-boxes, or as a last option work with virtual machine instances; not the best option but the easiest.
- RepositoryBasics of GNU/Linux
2. Install microSD and basic connection
Here you can find two repositories to install a new ISO in the BBB’s microSD and make a basic configuration for USB/SSH connection, please follow the instructions below:
- RepositoryFirst steps BeagleBone
- RepositoryFirst connection by USB
- RepositoryInternet sharing over USB
3. Basics of Bash programming
We have already used the ssh protocol to connect our computers to the Beagle/Rasp board. Nevertheless, it is important to understand and use the ssh-keygen tools and how to start programming using bash scripts:
- GiteaLED Bash guide
- GithubLED Bash project
4. Git, Vim, and Oh-My-Bash
Along this lecture two important tools are introduced: GIT version control system and Vim source text editor. Details about the lectures are in the next repositories:
5. Concepts of programming
Python, C, and NodeJS
- GiteaLED (GPIO) using Python
- GiteaGPIO using Bash
- GiteatAccessing the LEDs (ADCs) using C
- GiteatNodeJs
- GiteatThing-Speak
6. Project
The Air Quality Monitor