BA Embedded Systems Course from the University of Applied Science Mittweida that took place in 2019.
NOTE: The code commentary might appear in German.
The course provided a comprehensive understanding of C programming language and included fundamentals like code formation, naming conventions, operators, and data types. Regarding the implementation, the class delved into different function behavior, communication, file and storage management, while also covering various data structures, enumerations, and unions. We also learned about memory management, the different types of pointer handling, and how to work with standard and custom libraries. The course even discussed compilation, preprocessing, and the use of various tools and components.
Regarding the Unix file systems: processes, kernel, signals, and device drivers were explored in-depth, along with its concepts about concurrency, synchronization, and inter-process communication. The communication then continued to cover networks, including sockets and client-server applications.
The Repository is split in two main parts:
templates
- Collection of 26 sample projects provided within the course to learn and experiment
- Structured, documented, polished, and set up with builds for easy integration
main projects
- Numbered set of 13 own projects planned and developed from scratch
- Projects have increasing difficulty on changing topics
- Input and Output
- Data Types and Structures
- Circle Calculation
- Bubble Sort Random Inputs
- File Copy
- Property Reading
- File Scanner
- Directory Check
- Softlink Detector
- OS File Operations
- Memory Mapped Cloning
- Environment Path Locator
- Forking Mechanisms
- Child Process Calculation
- Process ID Syncronisation
- External Process Forwarding
- Signal Process Synchronization
- Message Queue File Transfer
- Unix Socket File Transfer
- Multi-Thread File Transfer
- Network File Transfer
Look into templates to get a full description
Datagrams: Connectionless and Settled CommunicationFile Handling: Write, Read, and CopyMemory Management: Mapping and SharingMessage Queues: POSIX and System VNetwork Transfers: Sniffing, TCP and UDP TransfersPipe Handling: Forking, Duplication, Opening, and ClosingSemaphore Restrictions: Single or Multi-Accesss, SynchronizationSignals and Operating Systems: Delaying, Masking, and JumpingSocket Management: Pairs and StreamsTerminal I/O: NonblocksThreads: Mutex, Data Keys, Syncronization
Instead of the provided makefiles, you can also run custom tools by compiling the c files. In some cases, further information for dependencies can be found within the makefile.
#1 Run the makefile inside the folder
make
#2 Run the built executable
./executable [params]