Course taught by Prof. Juan Bernardo Gomez Mendoza – Universidad Nacional de Colombia, Sede Manizales
This repository documents the complete learning route for the course Programación de Sistemas Linux Embebidos (Embedded Linux Programming 4201152).
Students explore embedded systems development through Linux, from kernel space to user space, combining C, Python, and shell scripting.
Course Goals
- Understand embedded Linux architecture and low-power SoC platforms.
- Develop simple user- and kernel-space applications.
- Work with drivers, APIs, and system-level software.
- Integrate machine–machine (M2M) and human–machine (HMI) interfaces.
Methodology
- Combination of lectures + hands-on labs.
- Use of virtual machines, WSL, Docker, and SBCs (Raspberry Pi 3/4, BeaglePlay, Lichee RV, etc. (rapspberry pi used on this case)).
- Tasks include writing C programs, shell scripts, kernel modules, and Python utilities.
To keep the work organized, this repo uses a branching model:
-
main
Main branch. Contains stable, reviewed, and clean code/documentation.
Always reflects the state of the project that is ready to be delivered or referenced. -
dev
Development branch. Contains ongoing work and integrates features before merging intomain.
All new features or experiments should be branched offdev.
EmbeddedOnLinuxLR/
├── content/
├── work/
│ ├── work/
│ ├── code/
├── project/
│ ├── Include/ | Lib/ | nbs/ | Scripts/
└── README.md
sudo apt install build-essential git libncurses5-dev
make
./cpuInfo
python3 -m venv work/embeddedOnLinuxPYDevEnv
source work/embeddedOnLinuxPYDevEnv/bin/activate- Linux services = daemons managed by systemd.
/proc= virtual filesystem for kernel info.- Embedded Linux = multi-layered abstraction system.
- Debugging tools:
valgrind,ddd,kcachegrind. - ncurses enables TUI interaction for resource monitoring.
- Class notes →
content/lectures/ - Presentations →
content/classContent/ - interest papers →
/papers/ - code and courses from class →
code - work and projects →
work space
-
work progress and deliverys →
workspace/ -
simulations →
simulations/ -
environments →
local development environment/ -
Reference →
- Repository structure and environment setup
- Import lecture notes and materials
- task as : -rial time monitor resource -Kernel module exercise (heartbeat service) -Raspberry Pi deployment, conection and SSH access -Call-graph visualization in Python and C -services implementation -modular and polymorphism implementation
- project advances
- project delivery
Mateo Almeida (Macreat)
Course: Embedded Systems on Linux @ UNAL 2025-2
GitHub: @Macreat
x
For academic and learning purposes only.