Linux学习路线1

嵌入式Linux系统= bootloader + linux内核 + 根文件系统(里面含有APP)

  1. bootloader
    它的目的是启动内核,去哪等读内核?读到哪里?去Flash等外设读内核,存到内存里去。所以需要有Flash里外设的驱动能力,为了调试方便还会有网络功能。
    所以,可以认为 booloader = 裸机集合,它就是一个复杂的单片机程序。
    要学习bootloader吗?Bootloader有很多种,常用的叫作u-boot。在实际工作中,对于u-boot基本上是修修改改,甚至不改。但是u-boot本身是很复杂的,比如为了便于调试,它支持网络功能;有些内核是保存在FAT32分区里,于是它要能解析FAT32分区,读FAT32分区的文件。花那么多精力去学习u-boot,但是工作中基本用不到,这对初学者很不友善。所以,对于初学者,我建议:理解u-boot的作用、会使用u-boot的命令,这就可以了。

  2. Linux内核
    Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件系统”又保存在哪里?在Flash、SD卡等设备里,甚至可能在网络上。所以Linux内核要有这些Flash、SD卡里设备的驱动能力。
    不仅如此,Linux内核还有进程调度能力、内存管理等功能。
    所以:Linux内核 = 驱动集合 + 进程调度 + 内存管理等。
    人人都要学习Linux内核,但是人人都要学习Linux驱动吗?显然不是。
    作为初学者,懂几个简单的驱动程序,有利于工作交流;理解中断、进程、线程的概念,无论是对驱动开发、应用程序开发,都是很有好处的。所以对于初学者,建议前期只学习这几个驱动:LED、按键、中断。
    ① LED驱动程序:这是最简单的驱动程序。
    ② 按键驱动程序:它也比较简单,从它引入“中断”。
    ③ 中断:从“中断”它可以引入:休眠-唤醒、进程/线程、POLL机制、异步通知等概念。
    这些概念无论是对驱动开发,还是对应用开发,都很重要。所以,对于初学者,我建议必须学习这几个驱动:LED、按键、中断。
    入门之后,如果你想从事内核开发、驱动开发,那么可以去钻研几个驱动程序(输入系统、I2C总线、SPI总线等),掌握若干个大型驱动程序后,你对内核的套路就有所了解了,再去研究其他部分(比如进程管理、文件系统)时你会发现套路是如此通用。摄像头(VL42)、声卡ALSA驱动是Linux中比较复杂的2类驱动,它们是很难的,如果工作与此相关再去研究。
    要学习Linux应用程序吗?先学一些基础技能
    要学,即使以后你只想研究内核,一些基本的应用开发编写能力也是需要的:
    ① 基本设备的访问,比如LCD、输入设备
    ② 进程、线程、进程通信、线程同步与互斥
    ③ 休眠-唤醒、POLL机制、信号
    ④ 网络编程
    ①②③部分的知识,跟驱动有密切的关系,它们是相辅相承的。

  3. 根文件系统
    应用程序是怎么启动的?要了解一下根文件系统
    你辛辛苦苦写出了应用程序,怎么把它放到板子上,让它开机就自动启动?你写的程序,它依赖于哪些库,这些库放到板子上哪个目录?怎么做一个可升级的系统?即使升级中途断电了,也要保证程序至少还可以运行老的版本?
    这些都需要我们了解一下根文件系统。先了解一下init进程:它要读取配置文件,根据配置文件启动各个APP。了解了init进程,你就了解了根文件系统的组成,就可以随心所欲裁剪系统,为你的项目制作出最精简的系统。

总的来说

  1. 先理解bootloader (uboot),知道怎么使用
  2. 学习Linux内核,先学习几个简单的驱动程序,再学基本的应用编写
  3. 理解根文件系统,理解初始化进程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式Linux学习路线可以有两种方式。第一种是从零开始学习,包括Linux从零移植开发和UBoot移植。然而,这种方式并不是必须的,因为SOC厂商通常会提供相应的Linux和UBoot,可以在这个基础上进行开发。此外,这种方式需要对应用层的API接口、Linux的文件系统、进程、线程、信号等有深入的理解,对于初学者来说可能比较困难。第二种方式是循序渐进地学习,难度相对较小,不容易让初学者望而却步。在这种方式下,推荐学习《鸟哥的Linux私房菜》和《Linux命令行与shell脚本编程大全》这两本书籍,它们可以帮助你更好地理解Linux的使用。\[1\]\[2\]此外,在学习嵌入式Linux时,不需要过多地学习数据结构知识,只需要掌握链表操作即可,其他如队列、二叉树等不需要学习。同样,也不需要学习文件操作、多线程编程、网络编程等函数的使用,这些知识在编写Linux应用程序时会用到,但在操作系统特别是驱动学习时用不着。\[3\]总之,嵌入式Linux学习路线可以选择从零开始学习或者循序渐进地学习,根据个人情况选择适合自己的方式进行学习。 #### 引用[.reference_title] - *1* *2* [嵌入式Linux入门指南(一)——学习路线篇](https://blog.csdn.net/weixin_51627076/article/details/122588888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【超详细】韦东山:史上最全嵌入式Linux学习路线图](https://blog.csdn.net/qq_33835307/article/details/83062526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值