Skip to content

The System Programming Internship at STMicroelectronic is a comprehensive program designed to provide participants with practical experience and hands-on learning in system programming under the Linux environment.

License

Notifications You must be signed in to change notification settings

Mahmoud-Abdelraouf/STM_System-Programming-under-Linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Training with STMicroelectronics - System Programming under Linux

Overview

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.

Training Content

Linux History

We delved into the history of Linux, exploring its origins, development milestones, and the philosophy behind open-source software.

Command Line Usage and Build Process

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 Management

  • 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() and exec().

  • 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.

User Management

We covered user management concepts, including user account administration, permissions, and security practices.

Filesystem Management

  • 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.

Skills Acquired

  • 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 Information

Instructor: Reda Maher

LinkedIn: Instructor's LinkedIn Profile URL

Conclusion

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.

About

The System Programming Internship at STMicroelectronic is a comprehensive program designed to provide participants with practical experience and hands-on learning in system programming under the Linux environment.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published