During my training with STMicroelectronics, I underwent an extensive learning journey covering various aspects of embedded systems development, Linux fundamentals, and software engineering practices. This README provides an overview of the topics covered and the skills acquired during the training period.
We delved into the history of Linux, exploring its origins, development milestones, and the philosophy behind open-source software.
Understanding the command line interface is fundamental to working with Linux-based embedded systems. We learned how to navigate the command line efficiently and explored the build process for compiling and linking software applications.
-
Process Overview: Understanding the concept of processes in Linux and how they interact with the operating system.
-
System Calls and Command Line Arguments: Exploring system calls and their role in process management, along with handling command line arguments in C programs.
-
Process Creation: Learning about process creation using functions such as
fork()
andexec()
. -
Orphan & Zombie Processes: Understanding the concepts of orphan and zombie processes and their implications on system resources.
-
Bash Features: Exploring advanced features of the Bash shell for scripting and automation.
-
Intro to Proc fs: Introduction to the
/proc
filesystem and its role in providing information about processes and system resources. -
IO Redirection in the Shell: Mastering input/output redirection techniques in the shell for efficient command-line usage.
We covered user management concepts, including user account administration, permissions, and security practices.
-
Intro to HDD: Understanding hard disk drive (HDD) fundamentals and their role in storing data on embedded systems.
-
Parsing MBR Partition Tables: Exploring Master Boot Record (MBR) partition tables and techniques for parsing them.
-
File System Formatting, Mounting, and Architecture: Learning about file system formats, mounting procedures, and the underlying architecture of file systems.
-
Directories, Files, Links, and Permissions: Understanding the structure of directories and files, symbolic and hard links, and managing permissions for file access control.
-
Implementing “ls”: Developing a simplified version of the
ls
command to list directory contents.
- Proficiency in using the Linux command line interface for system administration and software development tasks.
- Understanding of process management concepts and system calls in Linux.
- Knowledge of file system management, including formatting, mounting, and permissions.
- Familiarity with Bash scripting for automation and task automation.
- Ability to work with embedded systems and perform low-level tasks such as parsing MBR partition tables.
Instructor: Reda Maher
LinkedIn: Instructor's LinkedIn Profile URL
The training with STMicroelectronics provided a comprehensive understanding of Linux-based embedded systems development and equipped me with the skills necessary to tackle real-world challenges in the field of embedded software engineering. The knowledge gained during this training will be invaluable in my future endeavors in the embedded systems domain.