Embedded Linux development in my eyes

Source: Internet
Author: User
In my opinion, the embedded Linux development-general Linux technology-Linux programming and kernel information. The following is a detailed description. 1. Application Development

This type of development is basically the same as that on the PC platform. If you do not consider the hardware differences, it is exactly the same. For example, in the RH9 PC with GCC compiled a hello world Program, to ARM or other platforms, just need to re-Cross-compile the ARM-LINUX-GCC once. Code can be reused completely.

The required technology can be the simplest programming technology. Of course, if it is better, it involves advanced programming technologies such as multi-process multithreading and resource sharing, you need to understand the operating mechanism of the operating system.

2. driver development

This is currently the most popular in Embedded linux development, and programming and debugging are relatively complex. Driver development, as its name implies, is to drive a device. We emphasize that it is to drive a hardware entity device. Because the driver is for a specific hardware device, and the device cannot be simulated on the PC platform, the debugging process must be completed in the target system. If you have compiled a device driver on the PC platform, the driver must be downloaded to the target system for debugging.

Driver developers need to have a deep understanding of the operating mechanism of the kernel and understand the driver model. Unlike the application architecture framework, a usable driver must be written in strict accordance with the framework provided by the kernel. How to Apply for a device, register a device, apply for memory, apply for interruption, apply for DMA, etc. These are all well defined by the kernel. If they do not comply with the specifications, it will be difficult for the driver to run stably in the future. The driver has nothing to do with the CPU architecture. If your PC platform and target system can meet the same device configuration, your driver development will be as easy as application development.

When the driver program is compiled, you can refer to "linux device drivers" (to the Third Edition). In addition, it is best to check the source code under the kernel/drivers directory. The driver can be written in a module or directly into the kernel. Either way, the driver is not the kernel!

3. kernel development

The highest level of Linux program development. Kernel development is simply how to write an operating system. developers need to have a high level of knowledge in software engineering and have a well-known manual Understanding of the hardware platform. Here, I subdivided kernel development into two types of tasks: kernel development and nuclear transfer.

Kernel development is the first linux system, which is designed for the X86 platform. The completion of core development has laid a framework for each task that the operating system needs to complete for the linux system. For example, process management, memory management, file system, device management, interrupt, and DMA. After a kernel comes out, the idea and principle adopted are basically determined.

Nuclear Transfer is the first X86 platform-Based Kernel to port data to ARM, PPC, M68K, and other platforms, or to different processors on the same platform. For different processors, there are some differences in the number of tasks to accomplish the same task. Nuclear Transfer personnel must have a very strong "piracy" capability. We would like to pay tribute to some nuclear developers who are also nuclear transfer personnel.

Kernel development is the write operation system. If you have been familiar with other simple systems such as uc/OS, you will understand the system development process. Kernel development is mostly based on a bare board. The development process requires the support of the CPU simulator, or the CPU itself has the debugging capability.

At present, most people are doing 1 and 2 jobs. In fact, 3 jobs only need to be done once. After all, the number of CPUs and the number of hardware platforms are limited. Unless you are using a new design of CPU, the linux-2.6 has provided most of the CPU support, and repeat the kernel is wasted.

I used to think that embedded linux development is often called kernel development. After all, drivers are sometimes part of the kernel. kernel development can also improve the technical content of work. From a purely technical perspective, it can only be regarded as a driver development.
Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.