Home > Article > Operation and Maintenance > What do you need to learn about linux development?
What do you need to learn for Linux development? In fact, Linux development contains a lot of knowledge points. Once you learn these things, you can do a lot of things. The following article will summarize it for you, I hope it will be helpful to you.
Knowledge to learn for Linux development
1: C language: Embedded Linux development engineers need to have a certain amount of C knowledge to learn Language foundation. C language is an important and main programming language in the embedded field. Through a large number of programming examples, it focuses on understanding the basic programming and advanced programming knowledge of C language. Including: basic data types, arrays, pointers, structures, linked lists, file operations, queues, stacks, etc.
2: Linux basics: the concept and installation method of Linux operating system, learn more about the directory structure, basic commands, editor VI, compiler GCC, debugger GDB and Make project management tool under Linux , Shell Makefile scripting and other knowledge, and the construction of embedded development environment.
Three: Linux system programming: focus on learning the standard I/O library, multi-process and multi-threading in Linux multi-task programming, and inter-process communication (pipe, FIFO, message queue, shared memory, signal, signal Quantity, etc.), important knowledge such as synchronization and mutual exclusion on shared resource access control, mainly to improve the understanding of Linux application development and code debugging capabilities.
4: Linux network programming: Computer networks are widely used in the application development process of embedded Linux systems, through Linux network development, TCP/IP protocol, socket programming, TCP network programming, UDP network programming, and Web programming Start with development and other aspects to gain a comprehensive understanding of Linux network application development. Focus on learning APIs related to network programming, be proficient in the programming methods of TCP protocol servers and the implementation of concurrent servers, understand the HTTP protocol and its implementation methods, be familiar with the principles and programming methods of UDP broadcast and multicast, and master the hybrid C/S architecture network communication system Design, familiar with HTML, Java and other Web programming technologies and implementation methods.
5: Data structures and algorithms: Data structures and algorithms will be widely used in the development of embedded underlying drivers, communication protocols, and various engines. The quality of their mastery directly affects the efficiency and simplicity of the program. and robustness. The learning at this stage should focus on understanding the basic content of data structures and algorithms, including sequential lists, linked lists, queues, stacks, trees, graphs, hash tables, various search and sorting algorithms and other applications and their C language implementation processes.
6: C, QT: C is one of the main languages for Linux application development. This stage focuses on mastering the basic ideas of object-oriented programming and the important content of C. Graphical interface programming is a very important link in embedded development. Because QT has powerful functions such as cross-platform, object-oriented, rich API, support for 2D/3D rendering, support for XML, and multiple languages, it has been widely used in GUI development in the embedded field. At this stage, it is based on the QT graphics library The learning enables students to skillfully write GUI programs and transplant QT applications to the Cortex-A8 platform. Including the use of IDE, QT components and layout manager, application of information and slot mechanism, application of mouse, keyboard and drawing event processing and file processing.
Seven: Cortex A8, Linux platform development: Learn the basic reading skills of the chip manual by processing s5pv210 based on ARM Cortex-A8, and master the s5pv210 system resources, clock controller, power management, exception interrupt controller, and nand flash Controller and other modules are prepared for the construction of the underlying platform. The Linux platform includes kernel reduction, kernel transplantation, cross-compilation, use of GNU tools, kernel debugging, Bootloader introduction, production and principle analysis, root file system production, and adding your own modules to the kernel, and running your own production on the s5pv210 experimental platform Linux system, integrated deployment of the entire process of Linux system. At the same time, understand the Android operating system development process. The Android system is an open source operating system based on the Linux platform. The platform consists of an operating system, middleware, user interface and application software. It is the first truly open and complete mobile software created for mobile terminals. Its applications are no longer limited. For mobile terminals, it also includes consumer electronic products such as data TVs, set-top boxes, and PDAs.
8: Driver development: Driver design is an important part of embedded Linux development work, and it is also a difficult part. At this stage of study, you need to be familiar with the Linux kernel mechanism, the interface between drivers and user-level applications, and master the concurrent operations of the system on devices. Be familiar with the working principle of the developed hardware, have basic knowledge of ARM hardware interfaces, be familiar with the resources of ARM Cortex-A8 processor s5pv210, master the Linux device driver principle framework, and be familiar with Linux advanced character devices, block devices, network devices, and USB commonly used in projects Device and other driver development, and be able to independently develop low-level drivers at work.
In fact, learning Linux is step by step, and slowly you will find that everything falls into place.
Recommended: "linux tutorial"
The above is the detailed content of What do you need to learn about linux development?. For more information, please follow other related articles on the PHP Chinese website!