How to Get Started in Embedded Development?

Many university students find it challenging to get started in embedded systems due to the vast amount of content and knowledge involved. Questions arise such as: Do you have a solid grasp of C language fundamentals? Are you familiar with assembly language? How well do you understand circuit theory? Can you read circuit diagrams? How proficient are you with AD software? Can you design circuits?

Prospects of the Embedded IndustryThere is a saying that the next era will be the era of the Internet of Things (IoT), where life will be smart and interconnected. All household appliances will be centralized to a single terminal, allowing control over everything around you, similar to the system that Zuckerberg wrote for his home, where a voice assistant controls the entire house.All these smart devices require us embedded developers to integrate them into programs, enabling control over them.Recently, the chip incidents involving Huawei and ZTE have struck a chord with every citizen. Due to U.S. sanctions, Huawei’s Kirin chips will become obsolete, as domestic technology, equipment, and processes cannot produce 7nm chips. The country has invested hundreds of billions in the chip sector, and talent in this area is extremely scarce.It is rumored that Alibaba has acquired Zhongtian Micro, the only independent embedded CPU IP Core company, to develop chips and alleviate our “chipless” pain. Learning embedded systems is perfectly applicable here.Related articles recommend: Is there really no future in the embedded industry? Learning embedded systems involves both software and hardware knowledge, and it feels promising when you see that you can work with practical microcontrollers.The future of embedded work allows you to create what you want, and these will be intelligent devices. Developing a device is quite rewarding, such as access control systems, thermal printers, electronic watches, robotic vacuum cleaners, etc.In the end, if you truly enjoy embedded systems, then study hard. The subsequent learning in embedded systems can be somewhat challenging, and this is where your interest will play a crucial role. Related articles recommend: Sharing experiences in embedded development, treating learning as a hobby.Since you like it and know it’s good, you should learn it regardless of the difficulty. Success in learning is not about who is smarter, but rather who has spent more time learning and acquiring knowledge.How to Get Started in Embedded SystemsIf you want to learn embedded systems well during university, start from your freshman year. Embedded systems are not easy to learn; they involve too many components and concepts, unlike software which is easier to grasp.You may have seen numerous training programs for JAVA, Python, big data, and databases, but rarely do you hear about embedded systems training, right?This is because getting started is difficult; you need to master software knowledge, learn hardware knowledge, and understand the communication principles between various hardware components. In other words, learning embedded systems requires a certain foundational knowledge. Related articles: Pitfalls and pathways in the embedded industry.If you are a freshman, you should participate in school activities and make friends. During this time, pay attention to when the laboratory is recruiting new members; it’s best to join when they are looking for new members. Of course, focus on learning C language in your freshman year.In your sophomore year, you should start learning microcontrollers. This requires guidance from teachers or seniors, and having a laboratory environment will help you learn much faster. Trying to learn in your dormitory is nearly impossible.If you joined the laboratory in your freshman year, you should have completed your C language studies by the end of the semester. The pace of learning C language in the laboratory should be faster than in class; if you don’t understand something, ask others or search online. This way, you can start learning microcontrollers in the next semester. When you begin learning, having a set of materials is essential; otherwise, it will be very challenging.How to Determine Mastery of Microcontrollers?

During the freshman stage, you may feel confused, and your thinking has not yet transitioned from high school. You might think that learning means reviewing and practicing everything to be considered proficient. If that’s the case, your ceiling will only be that of a “craftsman”.

Mastery means having a clear understanding of the subject. What does it mean to have a clear understanding? This is crucial; it means mastering the core architecture of microcontrollers and developing your own programming philosophy.By the end of my sophomore year, I had learned about various modules of microcontrollers, but I struggled to use them effectively and could not integrate each module into a project.Fortunately, I participated in an electronics competition where the task was to create a programmable perpetual calendar. We needed to integrate temperature and humidity modules, clock modules, button modules, and LCD modules into the program, ensuring they operated correctly, and finally call each module’s functionality in the main function to complete the project. You don’t necessarily have to master every single knowledge point, but you need to use them accurately; at that point, you can consider yourself proficient.

In your freshman year, focus on learning the essential C language and 51 microcontroller. In your sophomore year, you should complete the 51 microcontroller studies and also focus on higher mathematics, which will be useful for graduate studies or future work.
During your sophomore year, make sure to finish learning the 51 microcontroller, complete a few small projects, and explore modules that interest you, such as infrared sensing modules, Wi-Fi modules, Bluetooth modules, fingerprint detection modules, etc.
There are many modules available, allowing you to realize your own ideas.
For example, you could create a running light, a dynamic digital tube display, simulate the ringtone of “Only Mother is Good in the World”, or tackle a challenging clock timer or infrared control project. Whatever you want to do, ask your teachers if there are relevant modules available.

During your sophomore year, you should also learn schematic design software like Protel99SE or AD (Altium Designer), C++, data structures, and databases. These are all part of your coursework, so focus on learning them well in class.English is also quite important for future work, as you will need to read English documentation; prepare well for the CET-4 and CET-6 exams.In the second semester of your sophomore year, you can also start learning STM32 microcontrollers. I stayed in the school laboratory during the summer of my sophomore year to learn the basics of STM32 by watching videos every day.

In your junior year, learn a language for developing upper-level machines, such as VC or C#. At the same time, you should master STM32 and can start learning the UCOS real-time operating system on STM32. During your junior year, participate in larger projects and competitions; our laboratory often participates in electronics competitions, the Challenge Cup, and the Blue Bridge Cup, showcasing the projects you have developed.
If you have time in your junior year, start working on your graduation project, which should take about two months to complete. We chose to stay at school during the summer to work on our graduation projects based on topics provided by our laboratory teachers.
Once completed, learn LINUX using ARM. Of course, familiarity with LINUX during your school years is sufficient. If you have mastered all this knowledge, you will have done well, and then you can go for internships to gain practical experience in society.

Looking at how much there is to learn, can’t you just choose one direction to study?Actually, the knowledge learned in university is foundational knowledge, which prepares you for deeper learning in the future. When you choose a new direction, if you have been exposed to it in university, it will be much easier to learn. If you have never encountered it, it will take a lot of time to learn, and you won’t have that much time to learn on the job, so learning more is definitely beneficial.The Most Effective Learning Method is Project-Based LearningAfter reviewing the foundational knowledge of microcontrollers, you must engage in projects; doing projects will accelerate your learning. Let me briefly share my experiences gained from working on projects.During my university years, I became very interested in wireless control, finding it fascinating how data exchange between response devices and control devices is invisible yet allows for precise and rapid communication. After some time of study, I chose infrared as my wireless communication tool.The completed project was an “IoT Classroom Air Conditioning Control System”, which primarily implemented functions such as learning and transmitting infrared codes, adding Wi-Fi communication capabilities, scheduling functions, and temperature and humidity detection.Upon receiving this project, I first understood the basic functions, designed a plan, and considered the feasibility of the plan, how each module would work together, and what specific modules were needed. Then, I selected a suitable MCU; it didn’t need to be powerful, just sufficient for the task, and then chose the necessary hardware modules.Once the preparations were complete, I could start with PCB layout. Of course, if conditions do not allow, you can choose an existing microcontroller that has the modules you need. Once the hardware is ready, you can dive into the software programming, where embedded systems excel.During the programming process, pay attention to details, as personal programming habits can lead to hard-to-trace bugs. Various bugs will inevitably arise during the process, so communicate experiences with others, and remember to comment on key code for future reference.

Leave a Comment