How to Succeed in Embedded Systems, MCU, ARM, and DSP

How to Succeed in Embedded Systems, MCU, ARM, and DSP
Article Word Count: 8000 Content Index: ⭐⭐⭐⭐⭐
Many beginners, and even some seasoned professionals who have been in the field for years, often complain about the intense competition in the electronics industry. Feeling dejected only stifles one’s passion; without passion, working in electronics is just a waste of life. Is the competition really that fierce? Compared to other fields, isn’t the competition in sales or management just as tough? In today’s society, which field or industry isn’t competitive?
So, if you want to escape competition, you might as well not live. Of course, if you come from a wealthy family, that’s another story! Therefore, regardless of the industry, there’s no need to question the level of competition.
The answer is: competition is fierce, but it must be faced. The smaller the competition you have to confront, the more impressive your technical skills should be. People in electronics must keep up with the times, but as people age, their brains tend to slow down, which creates a natural cycle of aging and decline for electronic talent (especially in software).
That is to say, technical professionals around the age of 40 generally have three paths.
1. They either start their own business or move into technical management, completely stepping away from hands-on technical work, hiring younger novices to innovate while they rely on their experience to advise.
2. They switch careers, which is hard to judge—whether it’s a blessing or a curse.
3. They continue to work in technology, but this can be exhausting. They push themselves to learn every day, often feeling unappreciated and hesitant to change jobs due to fixed programming mindsets and diminished passion for work. Adapting to a new work environment becomes difficult, and unless they are veterans or already in a leadership position, they can often be replaced by newcomers. This means that after over a decade in technology, this group will gradually fade from the industry, with the new generation pushing the old out.
Thus, true technical talent is always in short supply, provided you really have the capability. So as long as you have the ability, you will always be in demand and not fear competition. Instead of worrying about the level of competition, you should be concerned about how capable you are.
How to Succeed in Embedded Systems, MCU, ARM, and DSP
How to Learn Microcontrollers Well
Learning about microcontrollers involves both hardware and software. It’s not enough to just know a bit of assembly or C language; that only means you know programming. Most microcontroller systems are bare-metal systems without an operating system, meaning there are no interfaces provided by an operating system or application software. This implies that you need to build a simple front-end and back-end system. If you only know how to write application software, using a microcontroller can be quite challenging due to the lack of software interfaces.
Therefore, to learn about microcontrollers, you must first understand hardware. This includes basic components like resistors, capacitors, inductors, transistors, diodes, comparators, etc., and their characteristics and applications. I personally believe that university courses in analog and digital electronics are crucial; mastering analog first lays the foundation for digital. The design concepts introduced in digital electronics, such as logic gates, counters, flip-flops, and arithmetic circuits, are rarely seen in industry today, but their design philosophies are worth studying.
Understanding the internals of microcontrollers or other main controllers (like ARM or DSP) reveals that they are highly integrated versions of these components. Thus, before or while learning microcontroller programming, take some time to study analog and digital electronics to a level of understanding, and then you can start learning microcontroller programming, whether in C or assembly, based on your preference. C language is easy to port, maintain, and allows for rapid programming, but the downside is that the compiled code can be quite large. It is generally used in embedded software fields that require high portability or in larger microcontroller projects where development speed is prioritized over cost. In contrast, assembly language is used in industries with thin profit margins and low costs, such as small appliances. However, nowadays, MCUs are quite cheap, costing just a few dollars for models with tens of kilobytes of FLASH ROM. Given the high cost of labor in today’s technology landscape, C language is more in line with market needs. While learning these theoretical concepts, hands-on experimentation is essential; don’t fear making mistakes; the only thing to fear is being too lazy to try.
After Learning to Program, How to Integrate Microcontrollers?
Beginners who have learned a programming language or those who want to transition from pure software to microcontroller work often face a common dilemma: where to start next?
So I would ask, do you understand hardware? The requirement isn’t high; a basic understanding is sufficient. Hardware skills improve with experience, so the longer you practice, the better you become.
If you have no understanding at all, please refer back to the previous section and learn the basics of hardware.
If you have a slight understanding, then your entry point is to find a suitable entry-level microcontroller among the myriad available. Beginners should base any decision on “ease of access”; once you start, you won’t fear running fast later. Aim to find a general-purpose MCU with plenty of resources and multiple software platforms that are easy to learn. The 8051 core, while simple, is the ancestor; learning this will make it easier to grasp more complex systems, as they are essentially derived from it. Tackling something too advanced from the start can not only be unmanageable but also discourage your fragile spirit.
Once you’ve selected a microcontroller, set up a development platform, starting with the software development platform. Different microcontroller cores or models have different platforms. For the general-purpose 8051 core, KEIL51 is commonly used, while IAR ICC is used for AVR, among many others from various manufacturers. Next, there’s the hardware platform, which refers to the development board. Different microcontrollers have slightly different pin configurations and peripherals, so development boards are tailored accordingly. Many boards sold online aim to be versatile, supporting many MCU models at a low price. If you’re a beginner worried about making mistakes while soldering, buying a board is a good option, especially since modern development boards are affordable and aesthetically pleasing, costing only a few dozen dollars. In the past, they were often hundreds of dollars, which was quite painful. However, I recommend that those who feel comfortable with hardware should take this opportunity to practice soldering, as it deepens your understanding of circuits. In fact, various development boards are essentially the same; as long as you follow these principles while soldering:
First, solder the minimum working environment: the power circuit, reset circuit, and oscillation circuit (now many MCUs integrate internal oscillators with decent accuracy and high frequency). Then, add other commonly used peripheral circuits: button inputs (if there are many buttons, consider using a matrix and learn about matrix scanning), UART, AD/DA, buzzers, seven-segment displays, LED matrix displays, motor drivers, temperature sensors, etc. There are plenty of resources available online for these peripheral circuits; just find a few documents and compare them. Grab a breadboard and start soldering. If something doesn’t work, check if the microcontroller’s operating voltage is normal, whether the oscillator is functioning, and if the reset circuit is correct, etc. If that doesn’t work, just solder another board, haha. With both software and hardware platforms, you can start experimenting, beginning with imitation, then modification, and eventually developing your own unique project from scratch. By the way, the programming for microcontrollers differs from pure software programming; aside from shared programming concepts and most syntax, there are specific register configurations and certain syntax that require time to learn. After mastering the 8051, if you have time, consider exploring other microcontrollers like AVR, PIC, MSP430, or more powerful 8051 variants as a form of advanced practice.
How to Succeed in Embedded Systems, MCU, ARM, and DSP
Are ARM, DSP, and Other Main Controllers Difficult?
ARM, DSP, etc., actually belong to the category of microcontrollers; they just have more advanced cores. However, if you use them as ordinary microcontrollers, it indicates a lack of understanding.
First, let’s talk about ARM chips. The core is the ARM core, with significantly higher clock speeds, often in the hundreds of MHz range. The CPU cache is large, and it has multiple levels of pipelining, greatly improving CPU utilization. The resources of these ICs are sufficient for an embedded operating system to run smoothly, such as WINCE, LINUX, UCOS, etc. You can port an operating system into it and then write application software using the operating system’s interfaces to control its powerful peripherals. Of course, there’s another type of engineer involved here, the embedded driver engineer, who writes drivers for hardware interfaces, providing interfaces for upper-level users. This work is somewhat similar to microcontroller work. Many people want to transition from software to ARM development, but my advice is to first learn microcontrollers before tackling ARM.
DSP, or Digital Signal Processor, as its name suggests, is used for data processing. Its data processing capabilities are far superior to ARM. Generally, its interfaces are not as rich as ARM’s; they are targeted for fast storage and quick access, all geared towards rapid data processing. Its clock speeds are also in the hundreds of MHz range, and it definitely includes DMA. DSPs are commonly used for image processing, video processing, and network data processing. Because it’s designed for data processing, anyone proficient in DSP must master various data processing algorithms, such as Fourier transforms, etc. If you treat DSP like an MCU, that would be a waste—using a $100 device as if it were a $10 one. To use it effectively, you need to master algorithms.
How to Succeed in Embedded Systems, MCU, ARM, and DSP
What is Embedded Software?
Embedded software can be divided into embedded operating system software and embedded application software. Most embedded software resides on chips with ARM cores, such as those from Samsung, Philips, etc. Transitioning from general software development to embedded software is relatively easy, but moving to embedded driver software is more challenging because it involves hardware interfaces, which is typically a transition for those with microcontroller backgrounds. In recent years, this field has gained popularity, particularly in digital products like MID and handheld computers. Now, fresh graduates entering the field are already familiar with Linux, which adds a lot of pressure—those looking to avoid competition should think again.
Embedded systems have often been labeled as having high barriers to entry, and compared to software development, the starting salaries are often joked about as being “starving.” Many people enthusiastically dive into embedded systems, but many also transition into product management or technical sales out of necessity. Is there a future for embedded engineers?
Indeed, while embedded code volumes tend to be lower than pure software, leading to lower starting salaries, the salaries for industry veterans can be quite substantial. Furthermore, looking at the long term, embedded systems permeate various sectors of computing, including consumer electronics, security, automotive electronics, medical electronics, telecommunications, and more, with an annual talent gap of approximately 400,000. This year, the topic of machine learning (ML) is trending, and Arm has launched its neural network machine learning software, Arm NN, which can easily build and run machine learning applications on Arm’s high-efficiency platforms. The embedded industry will continue to innovate, and the embedded market holds promise.
According to a certain individual with 15 years of experience in the field, there is no need to be pessimistic about embedded systems, nor should one be blindly optimistic. Definitions of future prospects vary by time and individual. He stated that factors influencing future development include platform, connections, goals, and opportunities. Gaining project experience is essential for establishing a foothold; having a broad network can provide help at crucial moments; having clear goals allows for focused development. Additionally, he emphasized that one should not get caught up in technical “dead ends.” If possible, aim for management positions; missing opportunities and age can lead to regret.
Moreover, some netizens have pointed out that high-quality living isn’t exclusive to those in the highest-paying industries; workers in second, third, and fourth-ranked sectors can also lead high-quality lives. Those in top-ranking industries may not necessarily live extravagant lives. Every industry is influenced by opportunities and environments; even the best industries have those who struggle, while poor industries still have individuals making significant profits. Additionally, times change; even the once-popular civil service is now increasingly looked down upon. Thus, genuine interest is often the key to success.
Additionally, the embedded field has its share of muddied waters; for example, a certain netizen recently interviewed over a dozen hardware engineers with an average experience of over three years, yet many could not even identify a transistor or MOSFET, nor could they name the three pins correctly. Surprisingly, these individuals were asking for salaries above 10K. The barrier is not high; the challenge lies in genuinely doing the job well.
The ultimate goal for embedded engineers is to become true technical experts.
Embedded technology can generally be divided into programming languages, core technologies, operating systems, bus interfaces, and system integration. A careful look at the CSDN forum sections shows this; aside from system integration, which is only reflected in the embedded systems section, the others have clear corresponding sections. However, the learning path is not straightforward; based on years of observation in the industry, this engineer categorizes embedded engineers’ technical scope into several levels:
1. Junior: 8051 or other microcontrollers, UCOS, I2C, SPI, UART. Assembly and C skills are average, and system integration abilities are weak.
2. Intermediate: Building on the junior level, ARM/MIPS, other RTOS, and understanding Linux, SDIO, USB. Assembly and C skills are good, with a certain level of system integration ability.
3. Senior: This level focuses on advancing from the intermediate level; it’s no longer about mastering specific technologies but understanding the basic principles and composition of currently popular technologies. Hence, any trending technology is easily grasped at this stage. With a solid understanding of all technical principles, system integration capabilities are also exceptional.
For juniors and intermediates, there are clear benchmarks. At this stage, engineers are still in the entry phase, and the evaluation standard often revolves around what technologies they have mastered. The highest realm of learning technology is to understand its composition and patterns. For instance, all interface technologies can be summarized into a few key points: whether they are simplex or duplex, how to initiate transmission, how to respond, how to report errors, how to correct errors, and how to establish advanced applications based on basic transmission. Mastering these concepts makes interface technology straightforward.
How to Succeed in Embedded Systems, MCU, ARM, and DSP
What Work Does Embedded Involve?
1. System Design Work
During the system design phase, a system analyst will determine the basic hardware composition based on requirements, choosing which processor to use, which operating system to adopt, and which software development tools to employ. System analysts typically have comprehensive experience in embedded system design and a solid understanding of the development process.
2. Hardware Design Work
Hardware design personnel need to create hardware schematics based on the results from the system analyst. They must be familiar with the hardware composition of embedded systems. Knowledge of commonly used embedded system processors, memory (Flash, SDRAM), Ethernet MAC chips, audio/video codec chips, power management chips, bus interface circuits (USB, PCI), LCD modules, programmable logic devices (FPGA/CPLD), and wireless communication modules (Bluetooth, WLAN, GPRS) is essential. Many companies provide evaluation board schematics online, which should be studied to understand how processors connect with memory, network cards, LCD modules, and other components. By researching these circuits, one can quickly grasp the overall structure of embedded systems. While these circuits may differ from those in actual products, especially for handheld devices, these differences do not hinder beginners from learning the fundamental hardware composition of embedded systems.
3. Driver and Operating System Porting Work
A significant distinction between modern embedded system development and traditional 8-bit microcontroller systems is the widespread use of embedded operating systems. After receiving a soldered circuit board and conducting basic tests, the next step is to port drivers and the operating system. The first task is to write and port the bootloader, which is equivalent to the BIOS in PC systems. Some embedded operating systems, like uc/OSII, can be developed and debugged without a bootloader, but for Windows CE and embedded Linux systems, a bootloader is essential.
4. Application Development
The application development for embedded systems is not much different from application development on PCs. For Windows CE systems, Microsoft provides relatively complete development tools. Developers can use C# directly on PCs for application development and simulation debugging or connect the target system to a PC for online debugging. Many systems now support J2ME (the embedded version of JAVA), giving JAVA a significant advantage in embedded application development. Additionally, as a professional embedded system software developer, one must understand object-oriented technology and design patterns; however, beginners need not delve deeply into these topics initially. Students learning embedded systems should continuously explore knowledge, and with gradual learning, significant progress will be made.
How to Succeed in Embedded Systems, MCU, ARM, and DSP
Embedded Development Prospects and Current Status
Currently, embedded development is increasingly leaning towards intelligence, or what we call smart hardware (hardware + software). This is evident from the various cutting-edge embedded products. One development trend is a greater emphasis on automated control and human-computer interaction, rather than focusing solely on algorithms. It’s essential to distinguish yourself as an embedded engineer, not an algorithm engineer; you don’t need to deeply understand concepts like “artificial intelligence,” “AlphaGo,” “deep learning,” and “neural networks”—those are for graduate and doctoral students. This isn’t to say your abilities are lacking; rather, it’s about specialization. An embedded engineer’s task is to interface with their “cloud brain,” leveraging their APIs to complete your work. With the rise of advanced disciplines like artificial intelligence and big data, many have questioned, “Does embedded still have a future?” I can confidently tell you: “Embedded has a bright future; cutting-edge embedded technologies are poised to rise, if they haven’t already.” Indeed, while AI and big data may impact embedded systems, the current trend shows that university students are more inclined towards Python programming and machine learning, leading to a decline in embedded scholars compared to previous years. However, fewer scholars do not equate to reduced demand or lower salary levels; currently, the trend in embedded technology is towards integration with intelligent disciplines. Taking Baidu’s robotics as an example, the core of a robot is its “brain,” which consists of data and algorithms. However, for a robot’s body to move and communicate like a human, embedded technology is essential. This is what I mean by the application of embedded technology in conjunction with intelligent disciplines. In the long run, embedded will only become more popular, and the rise of intelligent disciplines will inevitably drive the development of new embedded technologies.
How to Succeed in Embedded Systems, MCU, ARM, and DSP
Comprehensive Skills for Embedded Development
A qualified embedded developer should be a versatile individual, possessing skills across various domains, from hardware to software and applications (power system protection, automation, control, AI, machine learning, etc.), from single boards to complete systems, from technical skills to management, and even a bit of music can enhance team morale during project management.
The knowledge and skill set for embedded systems is vast, and those who excel in everything are rare; most are somewhat proficient in several skills. Based on the hierarchy of embedded development, here’s a comprehensive skills list for embedded developers:
1. Processors
MCU architecture and development. An MCU, commonly known as a microcontroller, reduces the frequency and specifications of a central processing unit (CPU) while integrating memory (Memory), timers, USB, A/D conversion, UART, PLC, DMA, and even LCD driving circuits into a single chip, forming a chip-level computer for various applications. Common MCUs include Intel’s C51/C8051F series, Motorola’s 68K series, and MicroChip’s PIC series.
MPU architecture and development. An MPU refers to a microprocessor unit, typically without peripheral devices (like memory arrays), featuring a highly integrated general-purpose structure. Typical examples include Intel’s X86 series, Freescale’s PowerPC series, P1 series, and ARM architecture processors.
DSP architecture and development. DSP employs a Harvard architecture, allowing multiple memory accesses within the same clock cycle, with multi-level instruction execution pipelines enhancing system execution efficiency. DSP chips are commonly used for complex computations, such as TI’s TMS CXX series, ADI’s SHARC series, and Blackfin series.
2. CPLD & FPGA Architecture and Development
CPLD & FPGA emerged as semi-custom circuits in the ASIC field, addressing the shortcomings of custom circuits while overcoming the limited gate counts of previous programmable devices. They implement various algorithms and combinational logic through programmable logic units.
Program development based on CPLD & FPGA. This includes RTL gate-level logic design, Verilog HDL programming, VHDL programming, and the use of XILINX and ALTERA compilation software, as well as designing low-speed and high-speed serial communication controllers.
3. Circuit Design and Analysis
This includes both analog and digital circuit design, device data sheet reading, schematic and PCB reading, etc.
4. Schematic/PCB Design Tools
Cadence, Altium, PADS, DXP, etc.
5. Circuit Simulation Tool Usage
Multisim, Pspice, ADS, MATLAB, etc.
6. Working Principles and Selection of Discrete Electronic Components
Circuit protection devices, passive components, inductors, DC/DC converters, oscillators, diodes, transistors, voltage regulators, optocouplers, MOSFETs, IGBTs, relays, switches and buttons, LED indicators, PCB terminal blocks, and AC transformers.
7. Working Principles and Selection of Integrated Electronic Components
AD, logic devices, DA, operational amplifiers, counters, flip-flops, latches, decoders, SRAM, SDRAM, DDR, FLASH, EEPROM, interface chips, etc.
8. Failure Analysis and Reliability
Material composition and working principles, metallographic sections, microscopic observations, PCB deformation measurements, HALT testing techniques, reliability calculations, etc.
9. Hardware Testing (Components, Modules, Complete Systems)
Testing methods for components, modules, and complete systems, analyzing testing issues, understanding national and industry standards, and EMC problem analysis and resolution.
10. Operating System Architecture and Development Environment
Understanding operating system principles and basic compilation principles. Operating systems manage CPU resources, peripheral drivers, memory management, thread/process management, file systems, network communication, security mechanisms, interface management, etc. The defining characteristics of embedded real-time operating systems are rapid event response and determinism, widely applied in embedded systems.
General operating systems include Windows, Unix, Linux, etc. Currently, widely used operating systems in the embedded field include embedded real-time operating systems like µC/OS-II, embedded Linux, Windows Embedded, VxWorks, FreeRTOS, QNX, and mobile OSs like Android and iOS.
11. Low-Level Driver Development
Driver development for VxWorks operating systems, Linux porting, Linux development, single-board DTS configuration, root file system generation (Buildroot), U-BOOT porting and development, C language development, Python language development, Makefile writing, and the usage of GNU compilers and toolchains, as well as Linux operating system usage.
This specifically includes Ethernet drivers, SPI drivers, I2C drivers, file system drivers, CAN drivers, etc.
12. System Software Design
Object-oriented design, design patterns, UML, embedded multitasking development, refactoring, multicore development, etc. Understanding common development processes like agile programming and test-driven development.
13. System Software Development
Familiarity with programming languages, including C, C++, C#, QT, Python, JAVA, etc. Understanding web development and development standards.
14. Data Structures and Algorithms
Common data structures and algorithms, graph algorithms, digital signal processing algorithms, wavelet algorithms, etc.
15. Networking and Communication
Computer network principles, TCP/IP protocol principles and analysis, IEC61850 protocol (modeling, MMS, SV, GOOSE, etc.), protocols 103, 104, DNP, Modbus, IoT Zigbee protocol, Bluetooth, Wireshark message analysis tools, HSR protocol, network security, etc.
16. Database
Database principles and design, SQLite/Access/MySQL/SQLServer/Oracle/big data Hadoop, etc.
17. Interface and Graphics Libraries
Zinc, UGL, QT, SVG, MiniGUI, etc.
18. Application Knowledge (Taking Power System Automation as an Example)
Knowledge of power systems, relay protection knowledge, measurement and control knowledge; smart substation network architecture, network division, fault recording, protection signal, remote control, etc.
19. Debugging and Testing
Basic software testing, IEC61850 protocol testing, network testing, time management testing, application function testing (such as relay protection functions), ATS testing development and usage.
20. Project Management
Configuration management such as version management tool Git usage, project planning and task division, project progress tracking, project coordination, etc.
Disclaimer: This article is sourced from the internet, and copyright belongs to the original author. If there are any copyright issues, please contact us for removal.
-END-
How to Succeed in Embedded Systems, MCU, ARM, and DSP
For the embedded IoT industry
Project experience is very important
Especially system project experience
However, surveys find that many lack this experience
To address this issue
We have specially developed a set of project courses
Smart Classroom Project
Now open as a benefit for everyone
Invite 2 friends to form a team for learning
And you can get the course for free
Scan to participate 👇
How to Succeed in Embedded Systems, MCU, ARM, and DSP
How to Succeed in Embedded Systems, MCU, ARM, and DSP

1

“Too Much Effort! This Note is Enough for C Language Beginners…”

2

“Must-Read for Microcontrollers | 2500 Words Teach You How to Feed Dogs…”

3

“So Practical! This 8000+ Word Embedded Systems Vocabulary List is Recommended for You to Save…”

How to Succeed in Embedded Systems, MCU, ARM, and DSP
How to Succeed in Embedded Systems, MCU, ARM, and DSP

This Week’s Live Broadcast | Click to View👇

How to Succeed in Embedded Systems, MCU, ARM, and DSP

Tuesday |1 Hour to Understand Mesh Networking Protocols

1. Is the distribution process in Bluetooth mesh a first-time experience?

2. What are the five stages of distribution?

3. Why is a network entry protocol necessary?

4. What commonalities exist in wireless network entry?

Leave a Comment