先做个自我介绍,我是一名嵌入式程序员。电子信息工程专业。大一时,沉迷于单片机。大二,做开关电源,太阳能充电MPPT算法。大三,学习STM32。大四,由于毕业设计原因,学习过C++,用QT做过上位机。
大学,大一大二,一直是主硬副软。从大三开始,转型到主软副硬。
工作两年,做汽车MCU,已经不做硬件方面的设计,电烙铁已经很久没有摸过了。不知还能否焊0402。用的语言是C语言,松下和瑞萨单片机。
工作第二年后期,想往嵌入式Linux发展。因为MCU做到头,发现也就那些东西。想要更深层次了解计算机原理,还需要往Linux发展。
后面,通过《程序员自我修养——链接 装载与库》这本书,了解到了编译原理。让我初步对计算机有一定了解。
学习,短期是无法看到效果,但长期的复利效应,会发生质的变化。不要再下一次了,这句话,你说了多少年?
一个池塘里的荷花,第一天开一朵,第二天开两朵,第三天开四朵……到第30天正好开满整个池塘,那么开满半个池塘是第几天?很多人认为是第15天,其实不是,是最接近尾声的第29天。
从开满半个池塘,到开满整个池塘,只需要一天的时间。
参考资料:https://www.jianshu.com/p/6a2eac0783bc
程序员的一大优势,就是,可以把重复性劳动,交给程序执行。举例来说,在Linux编译代码,需要输入多条命令,所以发明了Makefile,只用一行命令,就可以执行编译。
我们可以把重复性命令,做成脚本,让脚本去工作。时间可以用来学习,或放松
以下shell,用于编译。仅限参考。(大家可以用shell打包make,并添加适当log,去跟踪编译进程。我编译一次需要半个多小时,通过脚本,这半小时整段时间,可以做其他事情)
知识点:https://blog.csdn.net/bbccaaac/article/details/103199258
#!/bin/sh
echo "make script"
echo "running..."
echo -e "\033[1m--------- start clean ----------\033[0m"
make clean
echo -e "\033[1m---------- end clean -----------\033[0m"
echo -e "\033[1m---- start vs680_q_defconfig ----\033[0m"
make CC=clang ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- vs680_q_defconfig
echo -e "\033[1m----- end vs680_q_defconfig -----\033[0m"
echo -e "\033[1m--------- start Image ---------\033[0m"
make CC=clang ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image -j24
echo -e "\033[1m---------- end Image ----------\033[0m"
echo -e "\033[1m------- start modules --------\033[0m"
make CC=clang ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules -j24
echo -e "\033[1m-------- end modules ---------\033[0m"
echo -e "\033[1;33m$(ls -al ./drivers/soc/berlin/modules/tsp/tsp.ko)\033[0m"
在Windows下,脚本.dat(批处理文件),负责将编译后的文件,push到board。仅限参考。
@rem 此脚本用于push tsp.ko,测试成功
adb root
adb remount
adb push Z:\zzhu\VSSDK\linux_4_14\drivers\soc\berlin\modules\tsp\tsp.ko /vendor/lib/modules
adb shell sync
adb reboot
我们知道,通过uboot烧写后,不能直接使用remount。
@rem 此脚本用于uboot烧写后,无法remount情况。测试成功
adb shell reboot bootloader
TIMEOUT /T 10 /NOBREAK
fastboot flashing unlock
fastboot flashing unlock_critical
fastboot reboot
TIMEOUT /T 30 /NOBREAK
adb root
adb disable-verity
adb reboot
TIMEOUT /T 30 /NOBREAK
adb root
adb remount
是否经常有这种感觉,忙了一天,但不知道都忙了什么,留下的只有疲惫的身体。如果一个人失忆了,那是否等同于虚度光阴,那和植物人有什么区别。
因此我们要记录,记录那些难以攻克的、或者有收获的时刻。
从发现问题开始记录,到寻找问题原因,设计解决方法,验证,再修改方法,再验证,直到解决完毕。这一流程都值得记录。
看到这里,是否觉得很麻烦。问题解决不就行了嘛,搞这么麻烦干嘛。
是的,问题解决就行了,但不能保证不会在发生。那时候,你还能想起当时的解决方法吗?此时就会后悔,当初为什么没有留下记录。
但每次,好了伤疤忘了痛。人最大的问题,就是重来不吸取教训,在重复中度过人生。(此话引用:人类从历史中获得的唯一教训,就是从不吸取任何教训!)