嵌入式开发学习路线——写给初入门的同仁
一般的应用开发,例如桌面应用的开发,移动应用的开发,通常都是在一个IDE集成开发环境中完成。
开发者,熟悉了IDE的使用,熟悉了相关应用编程接口API,就能开发应用了。不需要关心系统本身的太多东西。
(当然,这并不是说,一般的应用开发,不需要了解很多的系统知识。如果开发者具有深厚的系统知识,那当然对于应用开发大有帮助)。
而嵌入式开发却有所不同,他相当于是做系统集成。
开发者可能需要自己确定使用什么cpu,什么内存,什么flash,使用什么外围设备。
同时,整个系统的软件,包括boot、内核、文件系统、应用程序,可能有部分或全部需要自己去拼凑或开发。
这样的话,光靠一点点编程语言的知识,就难以搞定了。
那怎么办呢,当然要学习一些额外的东西了。
好了,话归正转。下面给出相关的学习资料。资料出现的顺序,也就是我们学习的顺序。
1. C程序设计语言
C语言作者写的书,超级精简。因为精简,所以,这本书要很认真的读。不要求快,要细嚼慢咽,要多思考,要从头到尾(包括附录)的读。
2. Unix环境高级编程 第2版
知名的Unix编程书籍。学完这本书,对一般的Linux应用开发,基本上可以达到得心应手的地步。
3. Unix网络编程 第3版 第1卷
知名的Unix编程书籍。学完这本书,对一般的Linux网络应用开发,基本上可以达到得心应手的地步。
(说句题外话,如果自我要求不高的话,学完这3本书,出去混口饭吃已经不是大问题了。)
(另外,如果想深入一点理解网络,TCP/IP详解 卷2 是一本非常好的书)
4. 深入理解计算机系统
注意,到这里,要进入关键的一步了。这本书,共分为3部分,我们只要看前2部分即可。
这本书,要相当认真的学习。不仅要看,要思考,还要做完所有的练习题(做题非常重要,一定要坚持先做,再看答案)。
同时,书中的内容不可能解答你全部的编程疑问。因此,在学习过程中,对自己以前不理解的概念(如C语法的含义,C++多态究竟是如何实现的等问题),要多写小函数或者小代码片段,多分析他们对应的汇编代码(objdump这个最精确;当然,通过使用-S编译选项也行,它的可读性要好一点,但是可能会带有宏指令)。另外,我的经验是,写小函数时,参与运算的变量,最好将它定义为入参(编译器不敢优化)而不是局部变量或全局变量(容易被编译器优化,导致未能生成你要想看的机器码)。
这本书学完,你将真正成为C语言(甚至C++)的专家。因为你将从机器码的层次,理解C(及C++)的语义究竟是怎么实现的。你还会理解,从C语言代码生成可执行程序的整个过程(预处理,编译,链接,静态库,动态库等)。你还将理解进程的概念,包括进程如何运行,进程如何与OS交互(中断、异常、系统调用)。
5. Linux内核设计与实现
到这里,算是开始踏入Linux内核的大门了。这本书,从比较高的层次介绍Linux内核。是非常好的内核入门书籍。
6. Linux内核源代码情景分析
华人写的书,超级通俗易懂。从帮助读者理解内核的角度来看,本书几乎可以算是最好的一本书了。
7. Linux设备驱动程序
这本书非常注重实用。我们最终的开发,基本上,要么是开发驱动,要么是在内核中做些应用(并与用户态做一定交互)。而这本书恰恰教给我们最老练的开发方法。
8 u-boot学习
这里推荐的不是书籍了,而是一篇网络资料。
http://www.cnblogs.com/heaad/archive/2010/07/17/1779829.html
上面这篇文章,是一篇非常不错的介绍u-boot工作机制的好文。
另外,学习u-boot,最好还是买块开发板,以便于实验。
开发板不用买高档的,买个基本的arm9的就行了。因为我们是学习嵌入式系统原理,有个基本的arm9 CPU就足够了。
当然,如果是做产品,那还是需要根据产品本身的需求来做选型的。
有了开发板,就可以修改、编译、烧写u-boot、内核、根文件系统了。
有了开发板,就可以理解从CPU一通电开始,到Linux跑起来,到最后应用跑起来,在这整个过程中,机器里所发生的一切事情了。
好了,在下能介绍的内容就这么多了。后面搞什么,怎么搞,就看大家自己的啦。
嵌入式开发学习路线——写给初入门的同仁相关推荐
- 嵌入式linux学习论坛,嵌入式linux学习路线分享:教你真正好学的嵌入式开发学习路线...
Linux 是一个开源.免费的操作系统,主要应用于服务器(网站服务器.云计算集群.DNS 等)和嵌入式,同时也被很多程序员用作个人操作系统.Linux 使用 GPL 许可证,允许任何人以任何形式传播其 ...
- 合理的嵌入式开发学习路线
最近网上好多新手问我,怎么样学习嵌入式开发?其实这个问题很复杂,因为嵌入式开发是个非常复杂的领域,既有深度,也有广度,是个软硬结合的领域...我研究的时间也不长,不过以后可能会研究RTOS这一块(最近 ...
- 嵌入式全栈工程师_我花了半个月,整理出了这篇嵌入式开发学习指南(学习路线+知识点梳理)...
不好意思久等了 这篇文章让小伙伴们久等了. 一年多以来,关于嵌入式开发学习路线.规划.看什么书等问题,被问得没有一百,也有大几十次了.但是无奈自己对这方面了解有限,所以每次都没法交代,搞得实在不好意思 ...
- 肝了半个月,我整理出了这篇嵌入式开发学习学习路线+知识点梳理)
不好意思久等了 这篇文章让小伙伴们久等了. 一年多以来,关于嵌入式开发学习路线.规划.看什么书等问题,被问得没有一百,也有大几十次了.但是无奈自己对这方面了解有限,所以每次都没法交代,搞得实在不好意思 ...
- 嵌入式新手学习路线,嵌入式课程学习课程分享
嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发:用高级处理器,arm7,arm9,arm1 ...
- 嵌入式新手学习路线,嵌入式课程学习
嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm1 ...
- 嵌入式系统开发-学习路线
嵌入式系统开发 课程链接 随着嵌入式设备的普及,嵌入式应用的需求量也随之增大,本课程将重点培养基于linux系统下的嵌入式应用开发,包括5个阶段,其中课程涵盖了linux系统下的多进程.多线程嵌入式开 ...
- 01 - 嵌入式的学习路线、职业规划:嵌入式基本知识与开发流程
01 - 嵌入式的学习路线.职业规划 一.职业杂谈 -- (学习路线/行业介绍) 1.什么是嵌入式? 除通用计算机外(界限开始模糊:如树莓派) 特点: 硬件定制 智能控制(计算机技术) 软硬裁剪 2. ...
- 嵌入式Linux应用开发学习路线--自用
嵌入式Linux应用开发学习路线–自用 嵌入式应用开发路线: 对于有简单的ST32基础和AD基础的人比较合适 个人理解: 先按照韦东山老师的思路,学下来,建议一个基本的框架,然后根据嵌入式Linux应 ...
最新文章
- Hadoop 部署实例
- 11.24杭州沙龙预告:数据化经营,智能化决策
- servlet类中@WebServlet 报错,不变色
- 博图wincc连接数据块_西门子博途WINCC 可通过创建画面模板提高编程效率
- 使用Azure DevOps Pipeline实现.Net Core程序的CD
- jni c java互相调用_通过JNI实现Java和C++的相互调用
- iOS UIWebView URL拦截
- javascript 西瓜一期 01.什么是编程 什么是编程语言
- 小白都能理解的FTRL
- 批量修改联系人头像_视频号pr批量剪辑0基础实操课,pr批量处理伪原创一分钟一个视频【共2节】...
- oracle 磁带备份,磁带备份 - Linux下实现自动备份Oracle数据库_数据库技术_Linux公社-Linux系统门户网站...
- ICIAR2018数据集下载
- 如何快速、科学的配置GO语言编译Android环境
- 01背包、完全背包(异同)
- hook(2)Activity启动流程,安卓开发实战
- 3行代码用python实现图片格式转换
- 禅道讲义之超级管理员
- Google play ASO 关键字指南
- 如何修改网站标题和logo
- Pixhawk原生固件PX4之HIL硬件在环仿真