2. Linux skill requirements,
Linux Embedded engineer skill requirements:
1. C Language
Basic C language, basic C language programming, and advanced programming, including data types, arrays, pointers, structures, linked lists, file operations, queues, and stacks.
2. Linux Basics
Concepts and installation methods of the Linux operating system. Learn about the directory structure, basic commands, Vim + GCC + GDB + make, shell Makefile script file writing, and build a development environment in Linux.
3. Programming in Linux
Standard Linux I/O library, multi-process and multi-thread programming, inter-process communication (pipelines, fifo, message queues, shared memory, signals, semaphores, etc ), synchronization and mutex
And other important knowledge, mainly understanding of Linux application development and code debugging capabilities.
4 Linux Network Programming
Computer Networks are widely used in application development of embedded Linux systems. Linux network development, TCP/IP protocol, socket programming, TCP network programming, UDP network programming, Web Programming
To fully understand the development of Linux network applications. Focus on network programming APIs, master the programming methods of TCP protocol servers and the implementation of concurrent servers, and understand the HTTP protocol and its implementation methods,
Familiar with the Principles and programming methods of UDP broadcast and multicast, master the design of the network communication system of the hybrid C/S architecture, master the implementation and methods of Web programming technologies such as HTML and JavaScript.
5. data structures and algorithms
Data structures and algorithms are widely used in the development of embedded underlying drivers, communication protocols, and various engines. The control of data structures and algorithms affects the robustness and Stability of programs. Learning at this stage is important to understand the data structure
And the basic content of the algorithm. Including sequence table, linked list, queue, stack, tree, graph, hash table, various search and sorting algorithms, and its C language implementation process.
6. C ++/Qt
C ++ is one of the main languages for Linux application development. In this stage, we need to master the object-oriented programming ideas and important content of C ++. Graphical interface programming is an important part of embedded application development. Qt due to cross-platform
, Object-oriented, supports 2D/3D rendering, rich APIs, supports XML, multi-language and other powerful functions, and is widely used in the field of Embedded GUI development. In this phase, I learned how to use and use Qt graphics library.
Program and port it to the Development Platform for use. Master applications of IDE, Qt components, layout manager, signal and slot mechanism, mouse, keyboard, drawing events, and file processing.
7. Cortex-ARM Development Platform
Master s5p210 system resources, clock controller, power management, abnormal interrupt controller, nand flash Controller and other modules to prepare for the underlying platform construction. Linux platform includes kernel pruning, kernel porting,
Cross-compilation, kernel debugging and Bootloader introduction, production and Principle Analysis, root file system creation, and addition of its own modules to the kernel, run its own Linux system, integrated deployment of the entire Linux System
Process.
8. driver development
Linux Kernel Mechanism, driver and user-level application interface, master the system's concurrent operations on the device. Familiar with working principles of hardware development, basic knowledge of ARM hardware interfaces, and knowledge of devices
Driver principle framework. Familiar with driver development for Linux advanced character devices, Block devices, network devices, and USB devices.