Skip to content
This is an article I wrote four years ago, sharing it again.
Before sharing my learning process, let me explain my work experience and learning background.
I started learning the RT-Thread real-time operating system in early November 2020. Before learning RT-Thread, I had encountered uCOS and FreeRTOS,
but I hadn’t studied these two real-time operating systems applied on microcontrollers in a detailed and systematic way; I was only limited to running demo examples on development boards.
When I worked at an embedded development board company, I systematically studied Linux driver programming. At that time, I bought Wei Dongshan’s 2440 driver tutorial,
but unfortunately, I never worked in a position related to Linux driver development, so I just set it aside after learning it. However, this experience allowed me to understand the importance of establishing abstract thinking.
I once developed two application projects using embedded Linux operating systems, and previously to assist in production, I had also created some desktop tools with the operating system,
so concepts involved in using operating systems for development, such as multi-threading, memory management, inter-thread synchronization and communication, etc., are relatively easy for me to understand.
That is my work experience and learning background before learning RT-Thread.
After nearly two months of studying in my spare time, I have systematically learned the knowledge related to the RT-Thread kernel application, and I have also written some learning summary documents, as shown in the figure below,
and I have created a collection | RT-Thread Learning Notes on my public account, reply with [Technical Document] to download the PDF.
First, summarize with a mind map. Learning methods may not be suitable for everyone, but I hope it can provide you with some reference.
Clarify Your Benefits Goals
Learning or self-improvement after starting work is no longer as simple as it was in college. In college, learning plans are basically arranged by the college, and as students, we just need to follow the plan.
It can be said that many college students, limited by their social experiences, do not know why they need to study a particular course; they just know it is required by the college.
After starting work, personal learning and improvement are purposeful; human nature tends to seek benefits.
You basically cannot invest a lot of time in learning a skill without any purpose. Even if you learn out of interest, it is still for your inner satisfaction,
“seeking inner satisfaction” is also a kind of purpose.
For most workers, self-learning and improvement usually have only two purposes: fame and profit.
Therefore, before learning the RT-Thread operating system (which is not limited to RT-Thread, many workplace skills are similar), you need to clarify why you want to learn this skill and have clear benefits goals.
If you cannot understand this question and just hear that RT-Thread or a certain skill is popular and want to follow the trend to learn, it is better not to waste time rashly, as aimless learning is hard to persist in.
So, what is my benefit goal for learning RT-Thread?
Actually, it is simple: to have material to write for my public account, build my technical background and persona, and actively embrace the open-source community to meet technical leaders from different industries.
Through this learning summary + continuous output loop, I can enhance my skills while connecting with more outstanding talents. If I can help more people, that would be even more perfect.
This continuous learning summary output also increases my leverage for future job hunting. What I present to the company is no longer a dull resume; it can be my technical blog, public account, GitHub, open-source projects, etc. This is also one of my benefit goals.
If you still don’t know how to clarify your learning benefit goals, you need to take the time to think it through,and for most workers, the most direct goal of learning skills is to find a better job.
You can consider job-hopping as one of your benefit goals, but don’t forget that it’s best to showcase your learned skills to the company instead of just writing them down on a resume.
Every paragraph in this article is composed of words, phrases, and sentences, just like when we learned reading comprehension in middle and high school, analyzing the meaning of a paragraph starts from the words or phrases (translating classical Chinese is a painful experience).
Therefore, to learn the RT-Thread operating system, you need to clarify the basic concepts of operating systems.
These basic concepts are generally applicable in operating systems, whether they are real-time operating systems or multi-task time-sharing operating systems.
(When you read this paragraph, you might also wonder, what is a multi-task time-sharing operating system?)
The reason for not understanding a paragraph is simply that the concepts of the words that compose it are not understood. Let’s look at the following paragraph; the parts in the red box involve various concepts, and if you do not understand these concepts, you will not understand this paragraph.
In just a few sentences, there are many operating system concepts, such as what is a thread scheduler? What is preemptive? What is the highest priority? What is an interrupt service routine? And so on…
I can easily understand these sentences because I have previous learning experiences as a foundation.
So, in our daily learning, how do we understand these basic concepts? Here’s a practical method: when searching online, add “how to understand xxx in simple terms” in front, for example, “how to understand multi-threading in simple terms”; you will find many reference answers combined with life examples online.
Now I finally understand why subjects like Chinese, Math, and Foreign Languages can span an entire academic career: learning Chinese can train our reading comprehension skills, while math can help us establish logical reasoning abilities, and learning foreign languages is to communicate better with the world in the context of economic globalization.
Establish Abstract Thinking
Why establish abstract thinking? How can people acquire knowledge through reading texts or watching images and videos?
The reason is that when a person receives external information, they will build a concrete image of the entity in their brain, and this concrete image relies on their social experiences and the richness of their knowledge.
Returning to the topic of how to learn RT-Thread, when I was learning RT-Thread, I first referred to the learning materials provided on its official website. Among this large amount of learning material, the first thing I focused on was the introduction and framework of the RT-Thread operating system.
Never start by looking at the source code, and don’t run demo examples immediately; before establishing the RT-Thread image framework in your brain, looking at this source code is undoubtedly self-defeating.
Why look at the introduction and framework first?
Because this framework helps me build a mental image of RT-Thread, and no matter which part of RT-Thread I study later, it is based on this framework. The framework tells us how the code and modules are organized, so the framework is important!
Careful readers will notice that even this framework introduction involves many basic concepts, which brings us back to the “clarify basic concepts” stage. So, this is a spiral process of continuously clarifying concepts and establishing mental images, repeating this cycle.
When you go to view the operating system code, object-oriented thinking is definitely essential, which brings us back to the question of “what is object-oriented?”
I believe that through online searches, you will have a basic understanding of what object-oriented is, and then it’s about how C language implements object-oriented programming, which can be seen in the following articles.
Embedded C Language Object-Oriented Programming – Summary
Designing a General Key Detection Module Based on State Machines and Object-Oriented Ideas.
How to establish abstract thinking? This question is indeed difficult to answer.
Establishing abstract thinking is not something that happens overnight; it requires a persistent curiosity about the world and largely depends on your life experiences and knowledge volume,
My advice is to read classic books, observe the world, summarize and think, and communicate with friends from different industries.
Continuous Summary Output
Why do I now enjoy writing articles so much? Why do I always suggest everyone to continuously summarize and output?
This is because a person’s cognitive quadrant has the following four states: not knowing what one does not know, knowing what one does not know, not knowing what one knows, and knowing what one knows.
There are many explanations for these four cognitive states online, so I won’t repeat them here.
Continuously outputting through technical articles can help a person clarify their learning process and learning state. This method allows one to identify what they know and what they do not know in the learning process.
I believe that many people, when initially learning a new knowledge point, are usually in the state of “not knowing what they do not know,” meaning they do not know what they do not understand, so they naturally will not ask others.
The saying “a good memory is not as good as a bad pen” is well understood by many. When I learned Linux drivers in 2015, I started recording my learning process in a notebook, but at that time, I had not yet learned to systematically organize and output technical articles.
It was only in the last two years that I decided to write on my public account and blog that I understood the importance of systematic knowledge, so the writing style of my public account and blog is presented through technical collections,
on one hand, to ensure that my learning is not too one-sided, and on the other hand, to concentrate the fragmented knowledge online as much as possible for easier future reference. If it can help you, that is a great encouragement for me.
This continuous summary output brings me positive feedback, allowing me to meet many excellent peers, and I hope my learning summaries can provide some reference for other beginners in embedded systems.