[ARM入门] 嵌入式Linux入门的疑惑/问题

[复制链接]
1308|2
手机看帖
扫描二维码
随时随地手机跟帖
情意深深|  楼主 | 2021-11-9 11:42 | 显示全部楼层 |阅读模式
之前一直从事的是单片机软件开发,单片机的外设也都基本有用过,MCU的bootloder也做过,所以对单片机的启动过程和运行时的状态也有一定的理解,对于Cortex-M4内核也知道些比如中断处理流程、过程调用标准这些,平时都是用的WINDOWS环境下的IDE。

主观感觉:
现在开始接触linux了,整体上给我的感觉就是很复杂、庞大的一个东西,主要还是不知道该从何下手。

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

使用特权

评论回复

相关帖子

devcang| | 2021-11-24 16:11 | 显示全部楼层
先准备开发环境,如host linux(可以是虚拟机)、arm的编译器,和开发板需要对应的linux版本源码,等。

结构上,相似的,BOOT、arm linux内核与定制、文件系统。也可以是裸奔的,那有BOOT就可以。
是裸奔、还是需要OS,就看目标应用的了,看偏向哪一边。

然后再到具体的应用(系统)

使用特权

评论回复
mark301600| | 2021-11-25 10:10 | 显示全部楼层
很久没在21回贴了,看到楼主的话很有些感悟,同作为一个非计算机出身的嵌入式工程师,这些都是我所经历过的。个人认为,一定一定一定要从系统的角度来入手,了解一些计算机系统的基本原理以后按照应用->驱动->uboot这条路线从上往下来学习,而从单片机转入linux系统的工程师往往喜欢从下往上来学习,这样不是说走不通,只是学习效率非常低下,而且往往费了很大的力气弄明白了底层的某个知识点后,却发现还是无法完成一个完整的固件程序输出,非常打击学习热情。在此建议楼主如果还是对整体编写完整程序还是没理顺的话,还是先看看计算机的基本原理再来学习linux吧。仅个人建议。

使用特权

评论回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则