How to get started with embedded future development direction of embedded

Many engineers want to develop in the embedded direction, especially after ARM is applied, this trend is increasing, but do you really know how to get started with embedded ? Do you know the future development direction of embedded?

 

 How to get started with embedded future development direction of embedded

Many students or junior engineers are concerned about embedded, especially after ARM has become popular, this trend has continued unabated, but do you really know how to get started with embedded? Do you know the future development direction of embedded?

Let me talk about my background first. I have been a software engineer for 5 years and a project manager for 3 years, all in the embedded field, including consumer electronics and automotive products. It feels that the development of the bottom layer of embedded software has been stuck at the level of 2007. Even now, the technology used is similar to that at that time. What we do basically revolves around the hardware adjustment driver, the kernel is basically Linux, no matter if your system is android or QT orothers, the career development as an engineer has been stagnant. In order to break through this, I chose to be a PM later, and I am still in this position. Whether the change is good or bad, I can't tell, there are losses (the technology is somewhat forgotten), and there are gains; I am also very confused at the moment, there is not much room for improvement, and there are many trivial matters. I really want to change industries. Let's continue to talk about it!

First of all, how can embedded practitioners be divided?

Embedded engineers can be divided into bsp-related and business-related.

The bsp is shallow, tailor the boot loader and kernel according to the needs of the board, integrate the driver, and simply debug various problems of the hardware platform.

To do it deeply, you need to understand the major processor architectures (x86, mips, ppc, arm), understand assembly and c, have certain hardware knowledge, and understand various commonly used high-speed, medium-speed, and low-speed interface protocols (ddr, pcie , usb, ethernet, nor, nand, i2c, spi), will use an oscilloscope to capture signals, measure waveforms, use various protocol analyzers to capture problems, and debug errors in combination with drivers, system mechanisms and debugging methods of linux and vxworks are also required. familiar.

Going a step further, you need to understand the micro-architecture of processors or various business chips, know how to optimize performance, and be responsible for solving various intractable diseases.

In another direction, go deep into the operating system, be very familiar with its kernel and various protocol stacks, know how to optimize performance, and be responsible for solving various intractable diseases.

Basically, if you do the above points, you don't have to worry about the well-off problem. Even if the income is not satisfied, all major domestic and foreign companies can jump. If you don’t want to engage in technology, you can switch to project management or lead a team, or go to a chip company to do technical support. Those with high emotional intelligence can also switch to marketing and sales.

However, in the places I have come into contact with, basically not many people can do it completely, regardless of foreign or private companies. And many things can't be learned by yourself, you need the opportunity to let you play. Maybe there are more opportunities like this in chip companies.

The business direction is broad, the communication industry can go to network architecture, routers, and network storage, and the consumer electronics industry can go to image recognition, video, and graphics, but the industrial control field does not understand. You need to know the products and protocols of your own company or the industry's leading companies very well, understand the needs of your customers, and keep abreast of industry trends. For example, when I was at Intel, Intel worked with Sony to design a chip. After the results were made, Intel, a first-class company that designed processors, was scolded by Sony on the video interface and nand interface. Many details that were not defined in the protocol were designed by the engineers themselves, and did not fit the actual application of Sony. The board was made. many problems.

To be a good person in the business field will have a brighter future. Whether you stay in a system manufacturer or go to a chip company, you will be regarded as a treasure. There is no need to talk about income, and you can still be invited to start a business if you have nothing to do.

Therefore, to understand embedded, it is best to understand business. Embedded is the foundation, and business is the sublimation. If you understand it, you are a god.

Second, if I want to master embedded, what are the aspects involved?

The threshold of embedded development is relatively high. The requirements for programmers are generally interested in the bottom layer, strong learning ability and hands-on ability, able to grasp the problem from the overall situation and details, and have strong system analysis and design ability. Starting from an engineer, there are generally several development directions. One is to become the core of technology and an expert in the field; the other is to train from the project and become a project manager or management talent; another is to use your own technology and Industry experience to start a business.

Hardware and software are going in different directions. Talk about the knowledge that the software needs to learn.

Although it is said that engaging in embedded software is more often learned in actual work, some important basic knowledge is indispensable.

1. Computer composition/microcomputer principle
is mainly to understand the hardware working principle of microcomputer, understand how some key structures such as CPU, bus, I/O, memory and so on work, although it is very boring knowledge, but familiar with peripheral hardware hardware The design and optimization of working methods, operating systems, and software architecture are critical.

2. Operating system
Linux and WinCE are widely used in embedded products. But the internal design principles of the operating system are the same. The first thing to learn is the operating system principle, to understand several important parts such as process communication, memory management, file system, etc., because these are used in software development, especially kernel driver development. Next, you can get familiar with at least one mainstream operating system. Linux is a good choice to understand its kernel architecture, device driver architecture, how to compile, tailor, write applications, and how to use it in specific embedded applications. on the product.

3. Digital circuit
learning This knowledge is mainly to understand some basic circuit knowledge, such as gate circuits, logic circuits, memories, registers, in order to better understand the design of embedded chips, memories, peripherals and other hardware, but often in It may not be used in software development. Because most hardware provides a very complete software interface.

4. Programming language: C language and assembly
For the foundation of C language itself, it is nothing more than to familiarize yourself with structures, functions, arrays, and pointers, but embedded development has higher requirements for C language applications. To be familiar with memory allocation, file access, register access, preprocessing instructions, interrupt handlers, etc., these are the details to pay attention to in use. C language is also very important for program optimization, and these often need to be considered from a global perspective. Assembly is generally related to the instruction set of the processor. It can better understand the working principle of the processor. It is often used in some places where efficiency is required, such as system initialization.

5. Data Structures and Algorithms
Data structures are also important in embedded development. For example, many implementations in operating systems use specific algorithms. Basic data structures need to be mastered, such as various linked lists, trees, graphs, etc.; and the learning of algorithms requires mathematical knowledge as a foreshadowing and is implemented in computer language. For software practitioners, an algorithm is a tool after all, and they can dig deeper in practical applications.

6. Software Engineering/Software Testing/Project Management Fundamentals
These are essential knowledge for software developers.

7. Development platform
Embedded development platform is not limited to one operating system, so it is often overlooked by many people to be familiar with commands, editors and development tools under various operating systems. For example, the development environment of programmers under Linux is often built according to their own habits, and mastering an editor such as Vim/Emacs can greatly improve work efficiency. Sharpening knives does not miss woodcutters.

There are many directions in the embedded field, and it is applied to a wide range of industries. Therefore, in addition to these basic knowledge, some other knowledge may be required in specific applications, each of which can be studied very deeply, to give a few examples.

1. Kernel, driver and middleware

 

Kernel development and driver itself are one direction, driver and hardware interface are related, and the modification and transplantation of kernel requires a deep understanding of OS. As for middleware, it is generally based on the OS or a library that exists between the OS and the application, and the most typical one is Android based on Linux.

2. Communication protocol


There are many kinds of communication protocols, such as network communication protocol, wireless communication protocol, serial port/USB communication protocol and so on.

3. Audio and video technology

involves audio and video processing, compression, codec and so on.

4. Information security

such as encryption technology, identity authentication, digital certificate and so on.

5. Industry knowledge Knowledge

related to specific industries or fields, such as communications, industrial control, electronics, etc.

Here is a learning step that I think is good:

1. Among the basic knowledge, computer components, operating systems, programming languages, and data structures are required.

2. Find a CPU system, understand its core architecture, and learn the instruction set, such as ARM.

3. Find an OS, such as Linux, or traditional RTOS, such as Nucleus, eCos, read the source code and documentation, and understand the internal implementation of the OS, including core content such as processes, tasks, message mechanisms, memory management, device drivers, and interrupts.

4. Find a mature development board with complete board-level information and familiarity with the embedded software development process.

5. In-depth study of other technologies in the course of the project.

In short, the learning of these knowledge is not achieved overnight, the process will be very long, and there are no special skills. Need to see a lot of technical documents and source code, and most of these documents are in English. In the process of working and doing specific projects, you will learn faster, and combining theory with practice is king.

What is the future employment direction of embedded?

There are many development directions of embedded, and the threshold is different. Specifically:

1. Single chip microcomputer: industrial control program (does not run os) - easy to get started, nothing more than mastering assembly and c, and being able to write according to the datasheet, the development prospects are general, and there is not much technical difficulty, unless you have an advantage in the algorithm For example, smart cars will have various PIDs, neural networks in pattern recognition, genetic algorithms in optimization, etc., but these complex controls will generally not run naked (unless the environment is harsh), and they must be powerful processors with os. ;Hardware production - it is a digital circuit, involving the peripherals of the single-chip microcomputer, and it does not feel difficult. As far as I know, only the single-chip microcomputer is not high in hardware or software, and does not have a particularly large technical content. At the same time, the single-chip microcomputer is updated. The replacement is very fast. You need to find a suitable product from a large number of microcontrollers and look at different datasheets.

2. ARM: There are many people doing this. The software is 1. Writing the underlying driver. This entry is not easy to go deep into. It requires a deep understanding of hardware and os, and the development is still very good; 2. Operating system - more complicated , linux, android, etc., you can see that the operating systems launched by many mobile phone manufacturers are still very easy to modify the kernel, change the skin, and find employment; 3. Applications, which are android development or application development on Linux (QT, etc.), do There are many people, the employment is easy and the salary is good, and you need to master c++/java. On the hardware 1. Just like a mobile phone, it is much more difficult to make the overall circuit on the processor than the single-chip microcomputer. 2.soc, architecture development, etc. will be mentioned later

3. FPGA: It is hardware programming. It is very easy to get started, but difficult to do in depth. You need to have a very deep understanding of timing and a lot of project development experience, even if you do it very well, The outlook is still unclear. One of the most popular FPGAs in recent years is the software radio, and the cost cannot be reduced. At the same time, the sampling speed of AD is not enough, which leads to the limited application of FPGA. Generally, companies use it as a verification tool, such as IC design verification. Only FPGA employment will be very narrow and not ideal. It is recommended to learn as a tool.

4. DSP: Algorithm, you need a graduate degree or above from a famous university, and have strong ability in algorithms and mathematics. If you can't do it, don't do it.

5. IC design, doing soc on microprocessors, front-end and back-end, dedicated processors (should also belong to the embedded field), it is difficult to get started, and it is even more difficult to become an expert, for computer architecture, microprocessor structure, integrated circuits, etc. Wait until you have a deeper understanding, and then you have a lot of project experience. However, the domestic market is general, and foreign companies are recruiting fewer people. I hope that the state's supportive policies will play a role starting this year.

6. Microprocessor architecture: It is theoretical and macroscopic. Graduate students can have a relatively shallow understanding of the entire architecture and can do a little design work locally. Doctoral students can have a deeper understanding of the entire structure. Partially Can design. There are more high-performance architectures, low-power architectures, parallel development, etc., because power consumption and parallelism limit the speed of current processors, so there are great prospects for low-power and parallel development. Special processors such as neural network-based architecture processors and cloud computing processors are also a hot spot at present. The development prospects are very good, but the difficulty is not ordinary. It can be seen from the fact that China's contribution to the structure is very small in the world.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324973888&siteId=291194637