这次是写公众号以来最久一次没有更文了,主要是刚进新公司,要熟悉一下环境,而且由于开发项目催的紧,压力比较大,以至于下班时间比较晚;同时在交流群里面也比较少回答网友的问题,不过如果你私聊我,我还是会抽出时间来给你解答;现在终于适应了开发节奏,不会那么难了;同时在今天这篇文章里面申明一下,下次私聊我问问题的网友,不要称呼我大佬和大神哦(大佬和大神的称呼,自己的能力远远达不到),自己也是从啥都不懂,即使现在找到合理的岗位,每天也在努力学习(这里讲个笑话,这几天办理那个社保号的问题,一开始我不知道社保号就是电脑号,直到昨天问同事才知道。)学习是不会中断的,特别是干我们这一行的,正所谓活到老学到老,而且人一生不是来享受的,而是生来都要吃一点苦的,先苦后甜嘛。
有的时候,网友问的问题,我也没遇到过,比如说技术、生活、职场、规划等等,我只会把我知道的告诉你,或者给你提一个合理的建议。好了,废话就不多说,开始今天的分享,那个努力奋斗的我又回来了,哈哈哈哈。
一、从裸机程序镜像uboot.bin说起:
——Uboot学习(二)之Uboot能够实现哪些功能,这篇里面我们已经知道了,Uboot它也是一个裸机程序,不是操作系统;而且Uboot它是由若干个.c文件和.h文件组成,配置编译之后会生成一个uboot.bin,这就是uboot这个裸机程序的镜像文件,所以才说它是一个裸机程序,这里如果对单片机熟悉的话,都是这种方式,先通过编译,最终会生成一个以".bin"结尾的可执行文件,然后通过烧录软件烧写到单片机中去执行。Uboot的方式和这个类似,Uboot.bin镜像文件被合理的烧录到启动介质中拿给SoC去启动。也就是说uboot在没有运行时表现为uboot.bin,一般躺在启动介质中。同时uboot运行时会被加载到内存中然后一条指令一条指令的拿给CPU去运行。
二、uboot的命令式shell界面:
说到这个shell界面,想必各位接触过用Linux的,都或多或少了解过,怎么说,这个shell就是人机交互,可以很好的和程序员就行沟通,程序员把各种命令在shell上输入,按一下回车就会得到你要的结果。刚刚也说了,Uboot它不是操作系统,是一个裸机程序,所以它的命令和Linux命令是有区别的,这一点在下篇文章——Uboot的命令介绍里面会讲到。
三、掌握uboot使用的2个关键点:命令和环境变量
有的时候,我们在Linux里面进行复杂的命令操作时,由于记不住,我们会经常通过写shell脚本或者配置环境变量来达到简单高效的操作,提高工作效率,说到这个配置环境变量,如果没有在Linux下配置过环境变量的话,应该在windows下配置过吧,就比如说,安装java开发工具,这个是经常要配置环境变量的比如:PATH,HOME等等。下面讲Uboot环境变量的时候也会提到。
uboot的环境变量和操作系统的环境变量工作原理和方式几乎完全相同。uboot在设计时借助了操作系统的设计理念(命令行工作方式借鉴了linux终端命令行,环境变量借鉴了操作系统的环境变量,uboot的驱动管理几乎完全照抄了linux的驱动框架)。
环境变量可以被认为是系统的全局变量,环境变量名都是系统内置的(认识就认识,不认识就不认识,这部分是系统自带的默认的环境变量,譬如PATH;但是也有一部分环境变量是自己添加的,自己添加的系统就不认识但是我们自己认识)。系统或者我们自己的程序在运行时可以通过读取环境变量来指导程序的运行。这样设计的好处就是灵活,譬如我们要让一个程序更改运行方法,不用去重新修改程序代码再重新编译运行,而只要修改相应的环境变量就可以了。环境变量就是运行时的配置属性。
四、总结:
前两篇文章,主要是介绍了uboot的来源和简单的工作原理以及今天的Uboot工作方式。后面慢慢开始就会有难度了,学东西就是要从非常基础的东西开始,当你了解了这个东西时干嘛的后,后面学起来就好办了。其实工作当中也是,很多开发用到的知识还是跟你的知识基础、知识面、知识体系等有关,有了基础,后面就会有自己的思维想法,有了想法,你就会有做一些创新。做开发也是,刚开始都不是凭空就能做出来的,要有一定的知识以及认识和准备,才能开发出来一个东西,这过程会遇到很多阻碍你走向成功的不确定性因素。
好了,今天的文章就分享到这里,内容不多,但是通俗易懂,希望在知识面上对你有帮助。