ARM+嵌入式Linux学习路线

打个小广告先,欢迎向我咨询,超值的嵌入式职业咨询,详情可以进入查看
CodeAllen的付费咨询

前言一

封面是我毕业后从事的第一份工作,无人机飞控研发,嵌入式真的很有意思,但是确实也需要一点耐心。
OK,言归正传,最近一直有同学问我学习嵌入式的的路线是什么,说实话我当初也是一直在找这个答案,但是很不幸,我找了很多路线但是最后一条也没有走到底。
我是本科就开始学习Linux,参考了很多资料,其中一直在更新的目前看也只有韦东山老师了,当然还不得不提就是原子哥开始做Linux开发板,还是一样的配方(卖板子,资料全部免费,简单粗暴的模式,stm32在国内的普及原子哥功不可没),感觉韦东山老师的压力估计又大了些。
补充:火哥也开始做Linux开发板了,火哥也是我学习STM32路上的榜样,之前还经常在论坛互动,不过工作后由于方向的转换也是很久没去论坛了。
说起单片机,最近我在更嵌入式单片机篇的学习路线,欢迎留言。
嵌入式单片机学习入门到大牛

前言二

简单列举了嵌入式Linux开发的优缺点,仅供参考:

从事嵌入式软件开发的好处是:

  • 目前国内外这方面的人都很稀缺,高阶嵌入式领域入门门槛较高,所以非专业IT人员很难切入这一领域。
  • 与应用软件开发不同,嵌入式领域人才的工作强度通常要低一些(但收入还可以)。
  • 对于创业者而言,嵌入式产品不像应用软件那样容易被盗版。

从事嵌入式软件开发的缺点是:

  • 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
  • 这方面的企业数量要远少于企业计算等应用开发企业。
  • 有少数公司经常要硕士以上的人搞嵌入式Linux,对于学历是有一定门槛的。

正文

先放个总结的脑图,因为技术本就是不断的变化,所以后期会根据实际情况不定期更新
在这里插入图片描述

虽然嵌入式Linux的学习路线看起来比单片机复杂很多,但是才有类比学习的方法也是完全可以的。
对于嵌入式Linux而言,C语言任然是重中之重,下边就是我提供的一些学习概念和资源,有时间会不断的更新,所以请持续关注!

下边按照脑图的顺序依次分享下:

基础学习一

在这里插入图片描述

目的:

这部分是属于Linux的入门操作,也是新人比较容易切入的学习点。
做到基本了解Linux系统的使用,知道什么是Linux。

方法:

需要在电脑上安装Linux系统,这里比较建议安装虚拟机,然后再虚拟机中安装Linux系统。
安装步骤可以参考我的文章:
CodeAllen:Ubuntu在虚拟机中的安装方法
CodeAllen:虚拟机快速安装VMware Tool
CodeAllen:Ubuntu更换下载源,国内用户必备

书籍:

《Linux命令行与shell脚本编程大全(第3版)》
《Linux与Unix Shell 编程指南》

基础学习二

在这里插入图片描述

目的:

上文也说了,对于嵌入式Linux开发,C语言是核心,而对于软件研发,数据结构又是灵魂。至于C++对于嵌入式是属于进阶的角色,也是嵌入式开发后期进入高薪的一个敲门砖,但是并不是必须,所以有精力的同学可以看看。
方法:
嵌入式Linux的C语言学习是在掌握基础C语言的前提下,在继续深挖的学习。所以这种情况就需要多实践,尽可能在Linux系统上实操,并进行debug,因为C语言就是debug的艺术,这是必不可少的能力。
尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。

书籍:

C语言:★★★★★
《C程序设计语言现代方法》
《C Primer Plus》
《C程序设计语言》
《C和指针》
《C陷阱与缺陷》
《专家C编程》
《嵌入式系统编程》
《C语言嵌入式系统编程修炼》
《高质量C++/C编程指南》
数据结构及理论基础:
《算法导论》
《算法》
《数据结构(C语言版)》
《编译原理》

进阶

在这里插入图片描述

目的:

这里的进阶其实就是进入Linux实战阶段,也是之后工作的重点,所以这部分知识是杂糅在一起的,我虽然根据自己的理解把之分解为三部分,但其实这些很多是需要一起学习的,
方法:
对于这部分的方法,简单步骤就是 熟练使用Linux -> Linux系统编程开发 ->驱动开发和Linux内核开发
当然实际这里面还有很多细节,但是很难用概述的方法讲清楚,只能是大家学习的过程中去体会。

书籍:

Linux应用开发:
《嵌入式Linux应用程序开发详解》
《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
《Linux高级程序设计》 杨宗德
《嵌入式系统――体系结构、编程与设计》
《嵌入式ARM系统原理与实例开发》 杨宗德
《深入理解计算机系统》
《操作系统:精髓与设计原理》
Linux网络开发:
《UNIX Network Programming》(UNP)
《TCP/IP详解》
Linux驱动开发:
《Linux设备驱动开发》(LDD)
《ARM体系结构与编程》杜春雷
《linux设备驱动开发详解》宋宝华
Linux内核:
《Linux内核完全剖析》
《Unix环境高级编程》
《深入理解Linux内核》
《嵌入式系统》毛德操
《Linux内核源代码情景分析》毛德操 胡希明
《Linux内核编程》

  • 23
    点赞
  • 175
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeAllen嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值