Basic information on embedded and embedded industry

insert image description here
In terms of technical implementation, embedded products are divided into two categories: one is simple, without operating system support; the other is complex, with operating system. As far as the current development direction is concerned, the latter is the trend. The former can be divided into 3 layers from the program realization: hardware layer, driver layer, application layer; the latter is divided into 4 layers: hardware layer, driver layer, system layer, application layer.
Therefore, embedded development generally requires four types of engineers from bottom to top: embedded hardware development, embedded driver development, embedded system development, and embedded software development.

1. What is Embedded?

When it comes to embedded, we have to talk about Metaverse and Internet of Things . Metaverse is the inevitable trend of future Internet development, and one of its cores is "Internet of Things", whether it is smart wearable devices or smart home ports, etc. It will serve as a sensor port entrance for the development of the Metaverse in the future. The realization of the metaverse must be inseparable from the Internet of Things, because the Internet of Things can turn virtuality into reality . With the advancement of the metaverse concept and the rapid development of the Internet of Things, the disappearing embedded has also taken advantage of the trend. There is no way, when the word "smart" is mentioned, it will never be separated from embedded. In the application of the Internet of Things, embedded Type technology is really important.
insert image description here
Embedded is mainly divided into two aspects: operating system and hardware. The direction of employment is wider and deeper. Employment opportunities and entry benefits are better than ordinary software engineers. The main work content is to develop some bottom-level software that is most closely related to hardware, and to engage in the development of embedded operating systems and application software. After the embedded hardware is designed, various functions will be realized entirely by software. A lot depends on the embedded software, which accounts for the most work of the embedded system.

2. What kind of work can be done by embedded?

Embedded design involves a wide range of fields , as long as it is an electronic product, it cannot be separated from embedded development. The currently developing industries are:

1. Smart car industry

Cars such as BYD Han and BYD Qin are currently more popular. The development of all sensors in the car requires the use of embedded technology .

2. Smartphone Industry

At present, the bottom layer of the Android system of the main process, and the bottom layer driver of Hongmeng also need embedded technology support. Job content : operating system transplantation, which is relatively complicated, Linux, Hongmeng, Android, etc. Now many mobile phone manufacturers (such as Huawei, Xiaomi, OV, etc.) launch operating systems that modify the kernel and replace the UI interface. It is easier for major manufacturers to directly change jobs ;

3. Smart hardware

At present, better smart bracelets, smart watches, smart locks, smart access control, etc. are all input into embedded products . Job content : smart hardware/IOT. At present, there are many job hunting positions, and the market prospect is great. However, there are certain requirements for the level of personnel. You need to be familiar with some commonly used protocols such as TCP/IP, HTTP, MQTT, etc., and you also need a certain ability to read datasheets. The salary is good.

If you decide to enter embedded development, it is best to be stable in one industry. For example, automotive sensors, mobile phone underlying drivers, etc. As the age grows, the technology becomes more and more skilled, and the later stage will become easier and easier . Learning to be embedded will really make you more popular as you get older, and the straight rise in wages is not just a dream.

Having said so much, what skills are needed to enter the embedded industry?

3. What skills should you have to enter the embedded industry?

1. Embedded hardware development

Embedded hardware development is done by hardware engineers, who are generally from automation, electronics, communication and other majors. They are required to be familiar with circuits and other knowledge, very familiar with various common components, master the development ability of analog circuit and digital circuit design, and be familiar with hardware Development mode and design mode, familiar with various chips and peripherals, familiar with 8-bit 16-bit 32-bit processor embedded hardware platform development.

Some require experience in FPGA development, proficiency in commonly used hardware design tools: Protel/PADS (PowerPCB)/Cadence/OrCad. Generally, 4~8 layers of high-speed PCB design experience are required. Since I am not a hardware engineer, I am not familiar with this area, so I dare not speak nonsense.

2. Embedded driver development

Embedded driver development can be done by hardware engineers or software engineers, mainly depends on the equipment. At present, driver development, unless it is a simple device driver, is actually transplanted in many cases, so it is more necessary to master the hardware and system characteristics of the target platform.

Therefore, at least some knowledge about operating system, system structure, computer composition principle, and data structure must be mastered. Familiar with embedded ARM/MIPS/PowerPC architecture. Have the ability to transplant and develop single-chip microcomputers, one or more 32-bit embedded processors, be familiar with the bootloader process, have solid hardware knowledge, understand hardware schematic diagrams, be able to independently complete related hardware driver debugging, and be able to write software drivers according to the chip manual .

If it involves network equipment, you may also need to master the principles of many high-level network protocols. Personally, although most of this part is not difficult, it is extremely important. Of course, if you want to provide multi-thread support for the upper layer at this level, some drivers are also difficult to write.

3. Embedded system development

I haven't heard of hardware engineers doing embedded system development . To do this, familiarity with the principles of the operating system is essential, such as memory management, such as thread scheduling, such as file systems, etc.; also proficient in processor architecture, instruction set, addressing mode, debugging, assembly and mixed programming and other aspects; familiar with the operating system startup process.

For Linux, you must be familiar with the modification of Linux configuration files, and master the entire process of kernel reduction, kernel transplantation, cross-compilation, kernel debugging, startup program Bootloader writing, root file system creation, and integrated deployment of Linux systems. If this piece is really written, the degree of difficulty is quite terrifying. Fortunately, most of them are transplanted. It is rare to hear that a company is going to develop an operating system. It does not have the strength of Google.

4. Embedded software development

For embedded software development , if there is no operating system, the program is generally not particularly complicated. If there is an operating system support, it is very close to general software development, so it can be regarded as desktop development. This requirement is to be familiar with the API of the system, to be proficient in the advanced programming knowledge of C language, including functions and program structures, pointers, arrays, commonly used algorithms, the use of library functions, and the basic content of data structures; to master the basic ideas of object-oriented programming, And the basic content of C++ language;

Proficient in programming under embedded Linux, proficient in embedded Linux development environment, including system programming, file I/O, multi-process and multi-threading, network programming, GUI graphical interface programming, database; familiar with the programming of commonly used graphics libraries, such as QT, GTK, miniGUI, fltk, nano-x, etc., master the use of network protocols in various application layers, and various audio and video technologies.

5. Generic Skills

General skills In addition, there are some skills that can be used in the above four categories.

(1) Basic skills: engaged in embedded development, there are some essential basic skills

Familiarity with the development platform . Most of the current embedded development is carried out in a linux or linux-like environment, so you should be familiar with the use of linux, you must be able to write shell scripts, you must be able to change configuration files, you must be able to use GCC and GDB, Make Do you need tools?

Use of project management tools . What age is it, can't use CVS, can't use SVN? May I ask, are you still living in the primitive society of the software age?

Data Structures and Algorithms . Engage in software development, do not understand data structure, do not know how to optimize algorithms, do not know how to measure complexity, is it too unreliable? Of course, this does not require knowing all algorithms and memorizing all data structures. At the very least, one needs to know that there is such a thing and what its function is, so that it can be checked when it is used.

programming language . Regarding JAVA, I know that the sudden emergence of JAVA has shocked the programming language world, but under embedded development, it is really unreasonable to not know C or C++ language. Of course, many mobile phone applications are now written entirely in java. If you only want to develop embedded upper-level software and don't want to go deeper, it's okay to only use JAVA. Regarding assembly, well, this may be difficult, after all, it is related to the specific hardware architecture (mainly CPU), but it is really interesting, and at some point, it is irreplaceable.

(2) Special skills: essential for some parts of embedded development, but may not be of much use for some (such as application development)

digital circuit . This 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 it is often not necessarily available in software development. . Because most hardware provides a very complete software interface.

operating system . This refers to the operating system selected on the platform. There are too many embedded product operating systems. But the internal design principles of the operating system all lead to the same goal by different routes. The first thing to learn is the principle of the operating system, to understand several important parts such as process communication, memory management, and file system , because these will be 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, and write applications, and how to use them in specific embedded systems. on the product.

Composition of computer/microcomputer principle . The main purpose is to understand the working principle of the hardware of the microcomputer, and understand how some key structures such as CPU, bus, I/O, and memory work. Design and optimization of software architecture is critical.

(3) Extended capabilities: These may be used

communication protocol . As for the non-application layer communication protocol, I really don't know whether it should be put into the scope of the operating system, because many operating systems do not have a network part, but in many ways it is provided by the operating system. Of course, these lower-level communication protocols seem to be of little concern, because there are too many open source protocol stacks. The network protocols at the application layer may be concerned, such as http, ftp, rtsp, rtmp, mms, etc.

Audio and video processing . For example, file packaging, audio and video codecs, various audio and video standards, and streaming media. Ffmpeg is a very good thing, it is recommended to learn it.

information security . This one seems to be gaining more and more attention now.

database . Embedded devices are getting stronger and stronger!

For programmers, doing technology is really tiring and difficult . Search the Internet, and there are complaint posts and emotional posts all over the place, which fully reflect the physical and emotional tests of this profession. If you are not afraid of difficulties and want to continue to develop technology, then work hard, maybe one day you will randomly pick up a job advertisement and look at it with contempt: "Damn! With this little requirement, I will drop the price!", then you are The real big cow!

4. Analysis of Embedded Existing Situation

Many newcomers have come to our research and development for nearly ten years. In the past ten years, some of the same group of personnel have quickly adapted to the environment. Through their own efforts and dedication, they can stand alone for the research and development work and become small experts in a certain field ; However, through guidance and corrections, it has slowly entered the working state. I believe that after a period of time, it will gradually take on a certain aspect of research and development work.

1. They came to work in the same period, why is there such a big difference in their current ability and status?

Through getting along and analyzing, I found that all comrades who make rapid progress have the following characteristics:

  • Diligent , often take the initiative to stay and work overtime in order to solve a technical problem.
  • To study , in order to solve a technical problem, I will actively learn all kinds of information, do experiments frequently, and use facts to verify;
  • Actively communicate with leaders and colleagues in a timely manner, brainstorm, strive for resources from all aspects , make full use of existing experience, avoid detours, and speed up the research and development process.
  • Has a strong sense of professionalism and sacrifice , and will never stop until the goal is reached.

On the contrary, those comrades who grow slowly or have not yet integrated into R&D work have the following characteristics:

  • There is no goal in the work , the energy is scattered, and a lot of time is spent on the Internet, watching videos secretly.
  • Work shirks responsibility , shirks the reason for the lack of work progress to the fact that the work is too difficult or the resources are not enough, but I don't take the initiative to fight for resources.
  • There is no long-term full plan for R&D or even personal career , or the goal of R&D is relatively low, just to make a living; people without foresight must have near-term worries, without lofty ideals, any small interference from the outside world will It makes you half-hearted, so the learning of knowledge is not systematic.
  • I don’t take the initiative to communicate with colleagues and leaders , or even avoid them, for fear that the leaders will check the work.
  • Focus more on life than work .
  • Pay more attention to your own contributions .

Comparing the two, the problem is obvious: R&D work is a very challenging job that requires hard work, a solid theoretical foundation and hands-on ability; in the face of development tasks, you are clear-headed, quick-thinking, clear-headed, and methodical Don't retreat when encountering difficulties, and don't be discouraged when encountering setbacks; you need to have team spirit, courage, wisdom and determination to resolve conflicts and difficulties, and have a fairly strong psychological quality;

Therefore, the quality and psychological state of the personnel are decisive . Comrades who are motivated can grow very quickly with a little guidance; comrades who are not proactive will struggle in work, take a lot of effort, and their mood will be affected.

2. Re-discuss ability and diligence and others

(1) Stupid birds fly first and enter the forest early. The cognition of things is directly proportional to the frequency and time of the stimulation of things to the brain . If you do a thing often and think about it often, you can realize the truth and understand the depth of things. It is achieved by constantly discovering mistakes in practice and constantly correcting them.

If people are not diligent and spend too much time and attention on places other than work, they will cut off the important link of practice. The level and experience will never be improved, and the improvement of ability will not be mentioned . It is the job, the increase in income, in the final analysis, the improvement of the individual's competitiveness in society. Don't improve your core competitiveness, indulge in the Internet and other things all day long, isn't it a bit of a waste of money?

(2) Personal positioning determines the attitude of work, thinking determines habits, habits determine behavior, and behavior affects your core competitiveness .

(3) Change yourself, not others and the environment .

Guess you like

Origin blog.csdn.net/weixin_40209493/article/details/128919335