“Live up to the time, the creation of non-stop, this article is participating in 2021 year-end summary essay competition”

preface

Hi, my name is Neutionwei, an embedded Linux programmer working in a second-tier city. The first to dig gold to write an article, if you just point to this article, hope you a lot of advice! (No one read it anyway, it was just an official statement).

The year 2021 is over and the year 2022 has begun.

After all, happy time is always short, but when you step out of your comfort zone, it feels slow and even painful. If you are interested in feeling the pain, you can simply do a plank.

work

Looking back on the past, my brain thought that time naturally passed quickly. Unconsciously, I had already started my sixth year in a second-tier city. What has not changed is the love for the city, but part of the mentality has changed.

From the beginning of 2021, I began to develop u-boot, based on the SDK released by the original factory, on the platform of Rockchip RK3399/RK356x!

When I first received this project, it was mainly for RK3399 platform. For U – the Boot, after all, I for this contact is not much, can spend more time to see the source code to learn more, and then according to certain requirements adaptation related drive function, finally took a period of time to change out a version, after the project priority adjustments, RK356x on top priority and different platform using the SDK, it is equivalent to the redevelopment.

For those of you concerned with Rockchip, RK356x is an MPU released in 2020. In 2021, the company invested more manpower and material resources in RK356x. There were many bugs in the new chip, and all the new problems found in the test were chased to THE FAE of RK, haha! To be honest, this process is quite training, but from programmer to “tester”.

During the beginning of the U-boot project on the RK356x platform, THE U-Boot I saw was both familiar and unfamiliar. Why? I compared RK3399 platform u-boot, RK356x platform iterated many versions, Boot mechanism has also changed! Looking at the schematic with DTS, this debugging process will discover that some features are not available, either incomplete or not supported. There was no choice but to consult the original manufacturer or start from source code.

$ ls
Documentation/  PREUPLOAD.cfg  common/    dts/       make.sh*         tools/
Kbuild          README         config.mk  env/       net/
Kconfig         api/           configs/   examples/  post/
Licenses/       arch/          disk/      fs/        scripts/
MAINTAINERS     board/         doc/       include/   snapshot.commit
Makefile        cmd/           drivers/   lib/       test/
Copy the code

In this process, every support for a function, found a bug, feedback to the original factory, their own to try to solve, round and round. Until July, when it delivered an “ok” version and was told it needed more features.

These newly proposed functions are not easy, because these new requirements can not be completed by one person, the whole project finally united four developers, in addition to me, the other three are respectively embedded Android engineer, embedded Linux engineer and Android APP engineer. Good fellow, everybody struggles together, ha ha! We have held several project deadlines and team meetings. Due to the bug, the release before National Day will be delayed until after National Day, and the initial version will not be officially released until the end of October!

After the official release, I was officially relieved and finally had time to clean up the program. After that time, the program became very redundant. In November, I rebuilt the code while dealing with the requirements of the new version. Before you know it, the parts you didn’t understand suddenly become clear.

Looking back over the project, there are a number of technical points used:

Existing functions directly match, do not have the function to think, that is so exciting!

The finished product is as follows:

In reviewing the experience, it is painful and happy, in addition to the technical level can be improve, also change their way of thinking, doing products and the development of thinking is different, especially to do a good product, want to consider many details, including the user experience, these details are very exercise their own thinking and technical skills.

Because u-boot is essentially a bare-metal program, minor logic errors can go something like this:

"Error" handler, esr 0xbf000000

* Reason:        Exception from SError interrupt
* PC         =   000000000025de48
* LR         =   000000000025de1c
* SP         =   00000000f3658550
* ESR_EL2    =   00000000bf000000
* Reloc Off  =   00000000f5470000

x0 : 0000000000000000 x1 : 00000000f56cddf0
x2 : 0000000000000000 x3 : 00000000f3688370
x4 : 00000000f36883d0 x5 : 00000000f3688340
x6 : 000000000000000a x7 : 0000000000000044
x8 : 0000000000000070 x9 : 0000000000000008
x10: 00000000ffffffe8 x11: 0000000000000006
x12: 00000000f368fab0 x13: 00000000f575aac0
x14: 00000000f575aa48 x15: 00000000ffffffff
x16: 00000000f36b5eec x17: 0000000000000101
x18: 00000000f3667d00 x19: 00000000f36b5e00
x20: 00000000f3684c70 x21: 00000000f5765968
x22: 0000000001312d00 x23: 00000000f574c00c
x24: 00000000f3658848 x25: 00000000f3658840
x26: 0000000000000003 x27: 00000000f36b5de0
x28: 0000000000000000 x29: 00000000f3658730


Call trace:
  PC:   [< 0025de48 >]
  LR:   [< 0025de1c >]

Stack:
        [< 0025de48 >]
        [< 00234780 >]
        [< 00267e00 >]
        [< 0025dc98 >]
        [< 0021181c >]
        [< 0022ea3c >]
        [< 00217d14 >]
        [< 00217eb4 >]
        [< 002175b8 >]
        [< 0022df40 >]
        [< 002087f0 >]
        [< 0022ea3c >]
        [< 00217d14 >]
        [< 00217eb4 >]
        [< 002175b8 >]
        [< 0022df40 >]
        [< 00202c30 >]
        [< 002038fc >]
        [< 00287204 >]
        [< 00218e88 >]
        [< 00201ba8 >]

Copy info from "Call trace..." to a file(eg. dump.txt), and run
command in your U-Boot project: ./scripts/stacktrace.sh dump.txt 

Resetting CPU ...

### ERROR ### Please RESET the board ###
Copy the code

Of course, work is not only work, the company also regularly hold afternoon tea, let people feast their eyes!

In May, the company organized a three-day trip (my first time out of the province)! I remember the tour guide said one impressive words, that is, “your company even part-time staff package travel, this is too good!” .

It happened that there was no epidemic in China during that period of time, and it began to repeat soon after travel, which was also lucky!

2021 is also a year of growth in my job! Of course, in terms of opportunity cost, MY growth rate is certainly not as fast as that of the first-tier large factory programmers.

life

Life is simple, science and engineering male background, their own personal life, also happy to do what I want to do what, no constraints!

On weeknights, I will scroll a little, find some information to study, and then my brain will “sort out” after “liver” to blog:

Occasionally, when I feel my weight is getting too heavy, I spread out my yoga mat and do some exercises:

Of course, going for a night run in the summer is also a good idea:

I don’t go out for almost a day on weekends. What are you doing?

  • Music appreciation
  • Movie watching
  • Or watch classic dramas

When I go out on weekends, I clock in at the park. There are many parks nearby.

It can be a great experience if you invite friends to play with you.

Try a delicious meal together, like this:

You can visit the countryside together, for example:

You can punch in the library together, for example:

You can ride together, like this:

Occasionally, I can go to relatives’ house for dinner, or I can just go out to dinner:

Personally, you can find your own comfort zone if you want to, haha! Because the atmosphere of life is created by oneself, not by money. However, I just ordinary people’s life, hey hey!

Every weekend, I have to call my family. After all, I am my parents’ child. Poof

Regularly also want to “micro” distant friends or classmates, ask about the recent situation, feelings do not decline:

Happiness in life often comes from small things, when others are inconvenient to lend a helping hand, others are happy, you are also happy, this is because happiness can be “contagious”; When a family member or friend tells you something good, you feel happy because happiness can be shared.

blog

It has been 4 years since the first technical blog was registered in CSDN, but the regular maintenance only started in June 2020. Before, it was probably just a random note, but as time passed, it was forgotten.

When I looked at it, I found that I had read a lot of my blog posts. Maybe it was 2-3 years of accumulated reading, haha!

At the beginning of the re-maintenance of the blog, most of the notes were taken from study and work, and some columns were designed like this:

By the way, I also open source all the experiments I did in college before:

When I found myself in the technology a little base, began to output blog in accordance with the tutorial, each output after a release, that feeling, how a cool word got, ha ha! Because the thought of sharing some content to everyone, let everyone take a few detours, is really very happy! Sometimes, I really like being the seeker!

Some people may ask, what’s the use of blogging if you can’t make money? Personally, I think there are many hidden benefits to blogging:

First of all, bloggers have experienced the input, sorting and screening of relevant knowledge, and even the verification of procedures or tools to have a good blog content, and then have to typesetting and beautification, in order to perfectly present to readers. In this process, you will learn a lot of details, knowledge can be consolidated and deepen the impression. True understanding can only be achieved by writing it down, just like oral retelling!

Secondly, it is very pleasant to share my good things to others so that more readers can learn and supplement and get affirmation from readers. Three people, there must be a teacher. Teacher, preaching by karma to solve doubts also!

Again, a good memory is not as good as bad writing, if the human brain is not repeated to do one thing that has been stimulated, knowledge will soon forget, at this time, blog has become their own database, which technical points to use, direct access, convenient, fast and easy!

Finally, the blog is my technical name card, is one of the “projects” to show their technical ability level, in addition to the resume points, but also to meet more “high-quality programmers” in the community, get their recognition and in-depth communication opportunities!

conclusion

All the past is a prologue. A New Year, a new beginning, I hope to be able to further their ideals, while not forgetting to see the scenery around!

My 2022 Flag

1. Maintain technical learning and regularly release dry goods; Exercise, after all, the body is the capital of the revolution; 3. Get to know more “high quality programmers”. Read more books, improve themselves, enrich themselves;

Does it feel ordinary? Haha, but implementing and sticking to it is not so easy.

The last

Feel free to leave your 2021 year-end summary or 2022 Flag in the comments! 2022 we look forward to, together brilliant. Happy New Year and all the best! May all the beauty of 2022 come true. ‘!