肝了半个月,我整理出了这篇嵌入式开发学习学习路线+知识点梳理)_嵌入式学习路线-程序员宅基地

技术标签: 技术分享  c++  c语言  linux  arm  嵌入式  


不好意思久等了

这篇文章让小伙伴们久等了。

一年多以来,关于嵌入式开发学习路线规划看什么书等问题,被问得没有一百,也有大几十次了。但是无奈自己对这方面了解有限,所以每次都没法交代,搞得实在不好意思。

但是办法总归是有的,正如前篇文章《最近厚着脸皮联系了不少老同学》所聊,虽然我自己不从事这些方向,但寻思了一下,我的同学和朋友中,多少还是有一些从事相关方向并且在一线(或曾在一线)工作过的,所以我就请他们帮忙一起梳理这几个我不熟悉领域的学习路线,这次嵌入式开发就是其中之一。

这篇文章之所以拖这么久,因为沟通实在太费时间了,毕竟大佬们都挺忙,况且梳理总结这件事情本身就比较繁琐,所以等到现在才发出来。

本文在开源项目:https://github.com/hansonwang99/JavaCollection 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...


嵌入式开发难吗?

经过这次和同学的交流,我自己也学到了很多。因为嵌入式方面的很多东西我也不懂,我也算学习了。

站在我个人角度来看,结合以前的学习体验。我觉得嵌入式开发比互联网软开(比如Java后端)还是要难一些的,比如我们搞Java开发的,再怎么说,基本也都是用户态的东西,但嵌入式很多东西都深入到了内核态,所以难度肯定是有的,表现在几个方面吧:

  • 首先,嵌入式它偏底层,软、硬件都要懂,对能力要求本来就要高不少;
  • 其次,嵌入式开发的学习门槛也要高一些,而且像 Linux平台下的开发流程,很多人都不习惯,摸不清;
  • 再者,嵌入式学习的正向反馈可能比较慢,尤其是前期学习阶段,导致没有什么成就感,也就坚持不下去了,所以往往就弃坑了。

但是话说回来,做IT的就是这样,越往底层对人能力的锻炼就越高,所以对于能力来说是在升维,所以反过来,如果嵌入式做得好的,我觉得来做互联网问题也不大,到时候就属于降维打击了。


总体学习思路

总体来说,还是可以把嵌入式学习分为三个大的阶段:

首先基础学习阶段,这就包括通用编程基础(C语言、数据结构/算法、操作系统、计网、计组、Linux系统基础)和基本的硬件基础,扎实地掌握这两大基础,是后续持续发展和不断进步的动力源泉。

其次就是嵌入式应用编程阶段,或者说系统平台编程阶段。因为一般会以特定的嵌入式平台和特定的嵌入式操作系统为依托,熟悉这个系统平台上的编程方法和流程。以常见的ARM+Linux平台为例,需要掌握从内存管理到多任务编程、文件I/O、网络编程,甚至图形化界面编程等几个大的方面。

最后就是深入嵌入式底层开发阶段,最常见的就是内核开发和驱动开发,这些统属于内核态开发范畴,所以需要对操作系统内部机制有所涉猎和理解,在此基础上需要掌握从系统移植到内核开发、驱动开发的各个细节,这是成神之路。

大体思路是这样,接下来看一下详细的学习路线和知识点梳理。


学习路线+知识梳理

花了很长时间,就为了整理这张详细的知识路线脑图。当然由于时间有限、能力也都有限,毕竟嵌入式全体系实在太庞大了,包括我那做嵌入式的同学,也不可能什么都懂,有些东西可能没覆盖到,不足之处,还希望小伙伴们一起交流补充,一起完善进步。


书籍推荐

最后,按照整体的学习路线,再推荐一些对应的经典书籍:


后记:本文在开源项目:https://github.com/hansonwang99/JavaCollection 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...

这次就分享到这里吧,下篇见

每天进步一点点

慢一点才能更快

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangshuaiwsws95/article/details/107830452

智能推荐

ElementUI Pagination 分页修改背景色_el-pagination 美化-程序员宅基地

文章浏览阅读2.4k次。CSS 代码可以在CSS里面增加其他代码,设置选中后的背景颜色等::v-deep .el-pagination.is-background .el-pager li:not(.disabled).active { background-color: #ff2832;}修改前修改后_el-pagination 美化

flask 返回前端可以拖动进度的视频流_http flask 206-程序员宅基地

文章浏览阅读1.7k次。近期在做一个pc webview的项目,用的是熟悉的flask+pywebview, 涉及到本地视频文件在前端页面上播放,最开始尝试直接打开文件,然后返回read的值,发现前端无法拖动进度条,查阅之后,才知道需要传输视频流,条件是:前端请求头携带 Range, 其值表示视频文件的读取起点后端需要在响应头中添加Content-Length,Content-Range,Accept-Range状态码需返回206具体配置如下,至于原因,不详,自己猜出来的。大概就是通过移动文件的指针来指定开始读取的地_http flask 206

深入java虚拟机 - 垃圾收集 - 火车算法-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏4次。主要看《深入java虚拟机》这本书。 下面转自http://blog.csdn.net/zouxinfox/article/details/1594216 垃圾收集算法一个很大的缺点就是难以控制垃圾回收所占用的CPU时间,以及何时需要进行垃圾回收。火车算法是分代收集器所用的算法,目的是在成熟对象空间中提供限定时间的渐进收集。目前应用于SUN公司的Hotspot虚拟机_火车算法

深入分析RocketMQ 长轮询推送机制_rocketmq长轮询原理-程序员宅基地

文章浏览阅读2.7k次,点赞4次,收藏8次。RocketMQ消费端有两种获取消息的方式,Push方式和Pull方式。但这两种方式都有一定的缺陷,后来采用了一种折中的方法,采用”长轮询“的方式,它既可以拥有Pull的优点,又能达到保证实时性的目的。长轮询的思想:服务端接收到新消息请求后,如果队列里没有新消息,并不急于返回,通过一个循环不断查看状态,每次waitForRunning一段时间(默认是5秒),然后再Check。Broker默认最长阻塞时间为15秒,默认情况下当Broker一直没有新消息,第三次Check的时候,等待时间超过最长阻塞时间,就_rocketmq长轮询原理

php安装扩展的四种方法_群晖 phpize-程序员宅基地

文章浏览阅读1k次。转自:http://doc3.workerman.net/appendices/install-extension.html如何确定PHP安装了哪些扩展运行php -m会列出命令行 PHP CLI 已经安装的扩展,结果类似如下:~# php -m[PHP Modules]libeventposixpcntl...如何确定PHP的php.ini文件的位置当我们..._群晖 phpize

杭电acm——6376 度度熊剪纸条(2018百度之星初赛(A))-程序员宅基地

文章浏览阅读282次。题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=825&pid=1003题目如下:1003任何时候的纸条(最初的纸条或者剪下来后的部分)都不能前后翻转度度熊剪纸条 Accepts: 488 Submissions: 5471 Time Limit: 2000/1000 MS (J...

随便推点

GBase 8a集群性能优化之group by 多列hash重分布_hash group by 优化-程序员宅基地

GBase 8a集群对随机分布表进行多列group by操作时,会以第一列进行hash重分布,可能造成数据倾斜影响性能。

解决 重定向次数过多 尝试清除cookie 的问题_重定向次数过多清除也没用-程序员宅基地

文章浏览阅读10w+次,点赞14次,收藏44次。在做登录防止用户没有登录而访问其他web资源的时候,写了一个过滤器,却在浏览器无法打开,出现重定向次数过多 尝试清除cookie,试过没有用。出现这个问题的原因是因为在过滤器中出现了无限循环重定向。出现无限循环重定向的原因分析如下:先上代码:package net.book.util;import javax.servlet.*;import javax.servlet.a..._重定向次数过多清除也没用

Android实现点击按钮跳转另外页面_android点击按钮跳转到另一个页面-程序员宅基地

文章浏览阅读6.1k次,点赞8次,收藏47次。在manifests->AndroidManifest.xml中添加创建的跳转的界面的activity。_android点击按钮跳转到另一个页面

C++几何库——cgal编译_cgal库 c++-程序员宅基地

文章浏览阅读1.4k次。资源准备cgal安装包:https://www.cgal.org/download/windows.html或者github上的cgal:https://github.com/CGAL/cgal(如果用这个的话,还是需要安装cgal,因为这个项目依赖的gmp的库在安装包里是直接编译好的)cmake安装包:https://cmake.org/boost库:https://dl.bi..._cgal库 c++

分享一个不错的数据分析实战案例【全程附图】EXCEL_数据分析实例-程序员宅基地

文章浏览阅读7w次,点赞59次,收藏419次。利用最近一次的营销活动的信息,分析什么对推销结果的影响最大,如何确定银行定期产品推销中最具价值的客户。_数据分析实例

华为2019校招实习笔试-软件题_华为2018软件类实习笔试题-程序员宅基地

文章浏览阅读8.1k次,点赞2次,收藏32次。[编程|100分] 字符串重排题目描述 给你一个原始字符串,根据该字符串内每个字符出现的次数,按照ASCII码递增顺序重新调整输出。【温馨提示】 (1).原始字符串中仅可能出现“数字”和“字母”; (2).请注意区分字母大小写。 输入描述: eeefgghhh 输出描述: efghegheh 示例1 输入 eeefgghhh 输出 efghegheh[编程|..._华为2018软件类实习笔试题