加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

ARM+嵌入式Linux学习路线

8小时前
95
阅读需 6 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大家好,我是CodeAllen(康哥),今天文章的主题是承接单片机,分享我之前在知乎写的一篇关于嵌入式Linux学习路线的文章,这也是单片机工程师进阶的一个重要方向。

其实对于嵌入式开发,不管是单片机方向还是Linux方向,其难度都不能说很大,但是从很多同学的反馈看则觉得嵌入式的知识门槛很高,我从我这些年的学习感悟中,大概知道了些原因。

嵌入式不同于其他一些纯软的方向,它没有非常具体的学习的学习路线,有些培训班貌似具体的路线,其实是过分冗余,三四个月恨不得把嵌入式技术栈刷完,这显然不是很好的方法,但是很多同学还乐此不疲,失败了还总结为自己不够刻苦,亦或是埋怨嵌入式道路难且长。

我把学习嵌入式的路径大致总结几个关键词,核心知识+实践能力+长期积累,与大家共勉。

先放个总结的脑图,因为技术本就是不断的变化,所以后期会根据实际情况不定期更新,这个更新大家可以点击文末的“阅读原文”跳转到知乎阅读。

虽然嵌入式Linux的学习路线看起来比单片机复杂很多,不过使用类比学习的方法也是完全可以的,这个后边会细说,有什么疑问也可以加我微信交流。对于嵌入式Linux而言,C语言仍然是重中之重,下边就是我提供的一些学习概念和资源,有时间会不断的更新,所以请持续关注!
下边按照脑图的顺序依次分享下:

目的:这部分是属于Linux的入门操作,也是新人比较容易切入的学习点。做到基本了解Linux系统的使用,知道什么是Linux即可。方法:需要在电脑上安装Linux系统,这里比较建议安装虚拟机,然后在虚拟机中安装Linux系统。安装步骤可以参考我的文章:CodeAllen:Ubuntu在虚拟机中的安装方法CodeAllen:虚拟机快速安装VMware ToolCodeAllen: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应用开发:《Unix环境高级编程》《嵌入式Linux应用程序开发详解》《Advanced Programming in the UNIX Environment》(APUE)《Linux高级程序设计》 杨宗德《嵌入式ARM系统原理与实例开发》 杨宗德《深入理解计算机系统》《操作系统:精髓与设计原理》

Linux网络开发:《UNIX Network Programming》(UNP)《TCP/IP详解》

Linux驱动开发:《Linux设备驱动开发》(LDD)《ARM体系结构与编程》杜春雷《linux设备驱动开发详解》宋宝华

Linux内核:《Linux内核完全剖析》《Unix环境高级编程》《深入理解Linux内核》《嵌入式系统》毛德操《Linux内核源代码情景分析》毛德操 胡希明《Linux内核编程》

相关推荐

电子产业图谱

90后500强外企软件研发工程师,专注C/C++/IoT等技术分享。