Embedded-Engineering-Roadmap README

The project's README from github.com/m3y54m/Embedded-Engineering-Roadmap. As one markdown file: README.md.

Embedded Systems Engineering Roadmap

GitHub Repo stars GitHub forks GitHub watchers GitHub contributors GitHub tag (with filter) GitHub all releases

This roadmap is designed to help beginners aspiring to build a career as an Embedded Engineer/Developer, as well as assist current practitioners in expanding their skills.

Embedded engineering demands a solid understanding of hardware functionality as well as software development and programming skills. If you really want to pursue this career you must be highly motivated and passionate about it. As the well-known saying goes, "Hardware is hard!". But don't panic and be patient for the challenges you may encounter along this exciting journey. By dedicating enough time and effort practicing and doing projects you will soon find yourself as a real embedded engineer! 😀

❓ What is an Embedded System?

▶️ ISO/IEC/IEEE 24765 Standard:

computer system that is part of a larger system and performs some of the requirements of that system. For example, a computer system used in an aircraft or rapid transit system.

The hardware and software of an embedded system are usually minimized and optimized for specific functions. The embedded system includes at least one microcontroller, microprocessor or digital signal processor. The embedded system designed to optimize reliability, cost, size and power saving for applications.

▶️ "Making Embedded Systems" Book:

An embedded system is a computerized system that is purpose built for its application.

▶️ "Computer Organization and Embedded Systems" Book:

A physical system that employs computer control for a specific purpose, rather than for general-purpose computation, is referred to as an embedded system.

▶️ Analog Devices Glossary:

An embedded system is a system in which the computer (generally a microcontroller or microprocessor) is included as an integral part of the system.

Often, the computer is relatively invisible to the user, without obvious applications, files, or operating systems. Examples of products with invisible embedded systems are the controller that runs a microwave oven or the engine control system of a modern automobile.

▶️ Embedded Systems Glossary:

A combination of computer hardware and software, and perhaps additional mechanical or other parts, designed to perform a dedicated function.

In some cases, embedded systems are part of a larger system or product, as in the case of an antilock braking system in a car.

🗺️ The Roadmap

Embedded Systems Engineering Roadmap

The embedded systems engineering roadmap is structured into three fundamental areas: SOFTWARE, HARDWARE, and SOFT SKILLS.

While the intersection of hardware and software is prevalent in embedded systems, specific job titles tend to emphasize one aspect over the other. For instance, roles like "Embedded Software Engineer/Developer," "Firmware Engineer/Developer," and "Embedded Linux Engineer/Developer" predominantly focus on software development. In contrast, positions such as "Embedded Hardware Engineer" and "Hardware Design Engineer" primarily deal with hardware design and electronics. Moreover, there are roles like "Embedded Systems Engineer" that necessitate a comprehensive understanding of both hardware and software.

It's crucial to note that each company in the embedded industry may have unique requirements for a given job title. Therefore, it's essential to tailor your focus based on your career aspirations. If you're seeking an embedded software position, prioritize the software-related skills outlined in the roadmap. Conversely, if you're interested in an embedded hardware job, concentrate on hardware skills and dedicate more time to learning electronics.

The roadmap provides a comprehensive guide to the essential topics for a typical "Embedded Systems Engineer" role. By delving into both software and hardware aspects, you can develop the necessary skills to thrive in this dynamic field. However, if you have a clear preference for software or hardware, you can tailor your learning path accordingly.

🔗 For more information about the history behind this roadmap, read this article: Embedded Systems Roadmap: Bridging the Gap

[!NOTE] Remember that the importance of individual software and hardware skills can differ depending on the specific requirements of the company and the job role.

[!TIP] To differentiate between the types of learning resources and the quality of their content, specific symbols are used before each item.

Resource types:

  • 📘 : Books
  • 🎞️ : Videos
  • 📝 : Write-ups, articles, and blog posts
  • 🔗 : Other links that do not fit into any of the above categories

Content quality symbols:

  • 👶 : Easy-to-understand and beginner-friendly resources. Refer to them if you do not have prior knowledge in a topic.
  • 💎 : Well-known references that have truly invaluable and comprehensive content. Refer to them if you want to deepen your understanding of a topic.

[!IMPORTANT]
This repository is not affiliated with or financially supported by any content creator, publisher, or organization. We do not endorse or recommend any specific paid resources. Both free and paid resources are included to provide a range of options, allowing you to choose what best suits your needs and preferences.

😕 Don't Know Where to Start!

If you feel overwhelmed by the extensive list of topics in the roadmap, you're not alone. Before delving too deeply, let's ease into it with some simple starter projects. Learning embedded systems engineering takes time and effort. Don't get discouraged if you don't understand something right away. Keep practicing and you will eventually get there.

⚒️ Projects

Engaging in hands-on projects is the most effective approach to learning. Rather than solely relying on theoretical knowledge from books or articles. Undertaking projects allows for practical learning experiences. Even a seemingly basic project has the potential to teach you more than hours of aimless reading. You can refer to books, articles, and courses when faced with difficulties in understanding the problems in real-world projects.

Don't try to build a complex project right away. Start with small, manageable projects to get your feet wet.

🔎 Search and Ask!

Use search engines to find the answers to your questions.

If you can't find what you're looking for using search engines, AI chatbots can also provide assistance. Keep in mind that AI may provide incorrect answers in some cases. It's best to confirm any answers with more reliable references.

If you have reservations about relying on AI advice alone, you can also ask your questions from real people:

✳️ Career Development

As an embedded systems engineer, it's essential to stay up-to-date with industry trends, best practices, and new technologies to advance your career. Here are some resources to help you achieve your career goals:

🎥 Courses and YouTube Contents

You may have heard that YouTube is a university. And it's true - there is an extensive amount of invaluable free content on embedded systems available on YouTube. You'll also find some excellent free courses through Coursera and EdX. Additionally, Udemy offers some high-quality paid course options.

🕹️ Arduino

If you do not have any background in programming the embedded systems, Arduino boards and libraries are the best choice for you to start and learn the basics. Just keep in mind that most of the Arduino libraries are developed for learning purposes and are not optimized to be used in industry.

Additionally, the Arduino Core takes care of most of the low-level hardware-associated operations that you, as an embedded engineer, should be able to handle yourself or at least have a clear understanding of. If you want to become a professional embedded developer, you should be able to effectively use industry-standard APIs and SDKs provided and approved by microcontroller vendors, such as CMSIS for ARM Cortex-M microcontrollers, STM32Cube for STM32, ESP-IDF for Espressif microcontrollers, etc.

👨‍🏫 Educational Websites

🗺️ Other Helpful Roadmaps

🛠️ IDEs

👨‍💻 VS Code Extensions

🐜 PlatformIO

PlatformIO is a cross-platform, cross-architecture, multiple framework, professional tool for embedded systems engineers and for software developers who write applications for embedded products.

PlatformIO is not yet extensively adopted in industrial and large-scale projects, however, it is an excellent choice for individuals working on smaller projects. This is because it greatly reduces the need to install frameworks and setup build and debug tools, allowing you to concentrate on programming.

📚 Learning Resources

[!WARNING]
It is not necessary to read all the books, articles, or watch all the videos you see here. If you try to do so, you will finally get tired and disappointed. You cannot study all the available content here in a reasonable time because it may take years. It is important to study enough to have at least a basic understanding of the required topics. Of course, the more time you dedicate to studying and doing projects, the more profound your knowledge and expertise will become.

Some of the resources mentioned here will just be used as references. Refer to them only when you need them.


✳️ Soft Skills

Similar to other professions, embedded engineers require soft skills that can't be solely obtained from reading or watching videos. These skills are cultivated through interactions and tackling various work obstacles. Improving soft skills is not a one-size-fits-all approach. It will vary based on one's individual traits and requires self-awareness of your strengths and areas for growth. Enhancing these skills takes time and effort.


✳️ Electronics

🔵 Basic Calculus

🔵 Principles of Electric Circuits

🔵 Electronics Fundamentals

Embedded-Engineering-Roadmap (m3y54m/Embedded-Engineering-Roadmap)

Searching Database…

Что это такое?Это подборка дорожной карты и ресурсов для тех, кто хочет стать инженером встраиваемых систем. Она охватывает программное обеспечение, аппаратную часть и гибкие навыки, необходимые для этой работы.
Это структурированный курс или просто список ссылок?Это структурированная дорожная карта, разделённая на три основные области: программное обеспечение, аппаратная часть и гибкие навыки. В ней собраны отобранные ссылки на книги, видео, статьи и сайты, рядом с которыми стоят значки, показывающие тип и качество ресурса.
С чего полному новичку стоит начать?Начните с простых практических стартовых проектов на Arduino или на платформах вроде ESP32/STM32, а не сразу с книг, так как практика запоминается лучше, чем одна только теория.
Нужны ли мне предварительные знания программирования или электроники, чтобы пользоваться этим?Никаких особых предварительных знаний не требуется, но проект предполагает, что вы готовы осваивать и основы аппаратной части, и программирование, ведь работа со встраиваемыми системами сочетает то и другое.
Все ли ресурсы бесплатные?Нет, в списке есть как бесплатные, так и платные ресурсы (например, курсы на Udemy). Ни один из них конкретно не рекомендуется, поэтому вам нужно выбрать то, что подходит по бюджету.
Это для инженеров, которые занимаются программным обеспечением, или для тех, кто работает с железом?Для обоих: дорожная карта охватывает программное обеспечение, аппаратную часть и гибкие навыки и советует сосредоточиться на разделе, который соответствует вашей целевой должности (инженер встраиваемого ПО или инженер встраиваемого железа).
Рекомендует ли дорожная карта Arduino новичкам?Да, платы и библиотеки Arduino рекомендуются как самая простая отправная точка для тех, у кого нет опыта программирования встраиваемых систем. Однако автор отмечает, что библиотеки Arduino не оптимизированы для промышленного использования, и профессионалам стоит перейти к фирменным SDK, таким как STM32Cube или ESP-IDF.
Что такое PlatformIO и зачем его упомянули?PlatformIO — это кроссплатформенный инструмент для разработки встраиваемых систем, который работает с разными архитектурами. Его упоминают как полезную альтернативу фирменным IDE, особенно для частных разработчиков, работающих над небольшими личными проектами, так как он упрощает настройку набора инструментов сборки.
Рекомендует ли дорожная карта конкретные IDE или расширения для VS Code?Да, в ней перечислены фирменные IDE, такие как Keil MDK, IAR Embedded Workbench, STM32CubeIDE и MPLAB X, а также расширения для VS Code, например Cortex-Debug и Espressif IDF, для разработки встраиваемых систем.
Зачем автор создал эту дорожную карту?Автор создал её, чтобы заполнить пробел между разрозненными материалами по изучению встраиваемых систем и дать начинающим инженерам понятный и структурированный путь, охватывающий и аппаратную часть, и программирование. Это объясняется в связанной статье 'Embedded Systems Roadmap: Bridging the Gap'.
Creator
m3y54m
Size
4.3 MB
Stars
13.6K
Age
3y
Commits · 90 Days