kahou

导航

系统底层入门笔记

       作为实习生进入公司,就安排了跟一个从事底层操作系统移植的导师,一开始还是不太适应的,因为自己之前做过的Linux系统下面的都是应用层的东西比较多,还打算是在应用层做个1-3年左右,对Linux系统真的是比较熟悉之后才继续深入学习系统底层,命运总是很棒棒,我要努力学习咯,机会总是不能浪费掉的嘛。

  利用手头上的arm架构contexA53,8核的开发板来慢慢学习一个基本的底层操作系统是怎么来的。

  前面花的比较多的时间弄懂大概的系统组成:

    基本是三个东西嘛,撇开硬件来说:

    1、uboot

    2、kernel

    3、rootfs

  uboot就是最基本的一个可以管理硬件、提供人和硬件交互的小型系统,通过对它的操作,我们才可以对下面的kernel和rootfs进行移植。通常情况下,我们接触到一个新的板子或者是芯片,我们都可以从芯片厂家拿到一个uboot和芯片对应的datasheet,通过这两个资料,我们就可以对uboot的源码进行对应的操作,使得它可以在我们自己设计的板子上面跑,这个工作也就是uboot的移植了,对应的很多技巧这里就不多说了,因为,我也还没有学到家。后面我学到家了,再进行补充吧,现在有一个这样的概念。

  uboot可以移植好之后,就可以通过修改对应env里面的参数,对kernel进行移植了。主要是接收这个kernel的镜像(通常是uImage),可以用tftp啊,nfs啊,串口之类的进行文件的传输。

  rootfs同理,至于rootfs怎么制作,有兴趣可以留言,我可以慢慢跟你说,毕竟自己也是一步一步这样过来的,也参考了很多网上人家做的教程,终于是弄清楚了rootfs里面每一个东西的用途,格式还有对应的影响。

  弄懂了一个底层的操作系统是大概怎么组成的,就要实际操作了,也就是自己动手要移植uboot,不得不说,一开始很痛苦,因为你想要动uboot的源码,你得对最底层的硬件比较熟悉,说白了就是你要懂得他们启动的流程是怎么样的。

  这就需要你去了解各种外设,比如是网卡设备、串口(UART)、I2C、EMMC、NAND FLASH、NOR FLASH、USB、LCD等,要了解基本的硬件原理,硬件组成,还有就是总线时序,知道这些之后,你才可以通过自己设计软件来他们进行配置和管理,使得他们可以正常的工作。

  uboot,我自己理解就是这么一个东西,玩过单片机的都知道,我们写程序只要直接去配置它的引脚电平,芯片里面对应的逻辑就会有对应的功能出来,这样可以类推到uboot,uboot就是一个裸机系统,是直接操作对应的引脚电平,对外设进行初始化,然后再进一步操作。

  以上纯属个人理解,可能不是太准确,如果有错的,欢迎点出,互相进步!

posted on 2018-03-28 17:31  kahou  阅读(332)  评论(0编辑  收藏  举报