之前一直从事的是单片机软件开发,单片机的外设也都基本有用过,MCU的bootloder也做过,所以对单片机的启动过程和运行时的状态也有一定的理解,对于Cortex-M4内核也知道些比如中断处理流程、过程调用标准这些,平时都是用的WINDOWS环境下的IDE。
主观感觉:
现在开始接触linux了,整体上给我的感觉就是很复杂、庞大的一个东西,主要还是不知道该从何下手。
内心的一些问题:
做MCU的时候遇到一些不懂得地方总是会去查各种资料,逛公众号、论坛等等去弄懂。比如飞思卡尔的16位单片机的分页机制、逻辑地址和物理地址等等这些概念。但是同样的在学习Linux的时候这样就感觉很痛苦了。首先知道是在RAM中进行程序的读取的,但是是在RAM哪里读出来的呢?不知道,然后查了一下发现了内核空间和用户空间的概念,然后这两个概念又会有新的“MMU”和“内存管理”不懂。然后就去了解MMU和内存管理......
其次因为MCU的烧写文件在生成的时候都是静态链接,地址什么的都是固定的。我想把代码分配到那个区域就分配到那个区域。所以就想从烧写文件上去了解一下,然后就又发现这又是个无底洞,其中涉及到了很多编译链接方面的知识,在这些面前我俨然是一个盲人了。
好吧,前面的概念感觉涉及到的知识和软件实现有点小复杂我就转过去从启动过程开始入手。我是万万没想到啊,uboot这个B挡在了我的面前。eeeeeeee。
其实写这个文吧也不是说真的不想学了。就是想发泄发泄和大家交流一哈,有没有想我这样比较爱钻牛角尖的,遇到不懂的点就想弄懂了再往下继续(其实也是因为耐心还不够)。网上韦东山和正点原子的视频也有看,感觉基本都是先把环境弄好然后代码写起来细的东西也不会过多拓展,确实也,没法拓展东西实在太多了也能理解,当时学stm32的时候我就是看了几节就不看了就自己学了。大家都是怎么入门的呀?(上班摸鱼发帖,路过的同志们捧个人场啦!)
|