Learn the major stages of embedded application layer development

If you are starting from the application development of the application layer, it is recommended to be familiar with the API functions first. If you start from the application layer interface development, it is recommended to learn Qt, WinCE or Android.

However, the real embedded development, familiar with the above is not enough, the following learning curve is recommended:

The first segment is proficient in using the Linux operating system.

Learn the concepts and installation methods of the Linux operating system, understand the basic commands, management configuration and editors under Linux, including the VI editor, GCC compiler, GDB debugger and Make project management tools.

The second stage is proficient in C language under Linux

Through a large number of programming examples focus on the high-level programming knowledge of C language, including functions and program structure, pointers, arrays, commonly used algorithms, the use of library functions, etc., in addition, also learn the basic content of the data structure, including linked lists, queues, stacks , tree, hash table, graph, etc.

The third stage of embedded Linux application programming

Proficient in embedded Linux programming, proficient in embedded Linux development environment, strengthen understanding of Linux application development and coding and debugging capabilities, including system programming, file I / O, multi-process and multi-threading, network programming, GUI graphical interface Programming, database.

The fourth stage of the embedded entry phase - ARM architecture

ARM processor architecture, programming environment, instruction set, addressing mode, debugging, assembly, and mixed programming. ARM's common interface development and hardware circuit design basis (including IO, serial port, watchdog, real-time clock, SPI, IIC, scan keyboard, FLASH operation, etc.), lay a good foundation for future device-driven learning.

Phase 5 Embedded Advanced Phase - Linux Kernel and Driver Development

In-depth kernel details, understand the Linux-related operating mechanism, lay a good theoretical foundation for the latter driver development, including kernel source structure, memory management, process management, interrupt management, system call, kernel synchronization, clock and timer management, signal, scheduling , interprocess communication, file system and I/O device management.

The sixth stage of embedded hardware development (learning software can not learn, but understand the hardware to learn embedded software has a deeper understanding, especially the understanding of the system is more in-depth.)

The content includes the learning of single-chip microcomputer, circuit analysis and circuit principle, PCB design, mainly including Altium Designed, basic knowledge of electronic design, schematic design, advanced, improved, in-depth, design of pcb library, function and production of integrated library, Pcb design preliminary, PCB design improvement, PCB in-depth, basic concepts related to FPGA and CPLD system, etc.

Phase 7 embedded in-depth phase

Become a master, you have to learn more about the kernel and system, including computer system structure and assembly, linux kernel programming, linux kernel basics, assembly and protection mode, linux kernel architecture, linux boot program analysis, linux kernel code analysis , linux block device driver analysis, etc.

Phase 8 practice phase

In fact, it is gradual, learn the basic theoretical knowledge first, then start the experiment, and finally summarize the test results, verify the knowledge and accumulate experience.

Recently, at work, I introduced the role of system engineers to the brothers who did the algorithm. I didn’t understand it. Do you understand if I understood it wrong? My explanation:

The system engineer is researching the system, the system is very complicated, but the system engineer he understands is very complicated, there is no depth, it is mixed, but I don't know how to explain.

E.g:

1. I want to realize a 10ms timing reading of the value of a certain sensor. How can I tell if it can be achieved?

Need to consider the system response time, scheduling mechanism, the impact of various signals, memory allocation and other principles, semaphore principle, interrupt response, system call principle, etc...

2. The timer in nuttx is implemented by signal. Can it be changed to interrupt mode? A process sends a signal, and another process will respond immediately? What is the underlying implementation mechanism of signal?

3. Can the system meet the requirements? For example, can the 5ms control accuracy be achieved? It involves system scheduling, priority, interrupt response time, etc... Multi-tasking switching......., IO performance , calculation bottleneck, etc.

7.5 Mm Nano Tip

7.5 Mm Nano Tip,Smart Pen Infrared,Infrared Pen Touch,Slim Infrared Pen

Shenzhen Ruidian Technology CO., Ltd , https://www.wisonens.com