一般的应用开发,例如桌面应用的开发,移动应用的开发,通常都是在一个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跑起来,到最后应用跑起来,在这整个过程中,机器里所发生的一切事情了。

好了,在下能介绍的内容就这么多了。后面搞什么,怎么搞,就看大家自己的啦。

嵌入式开发学习路线——写给初入门的同仁相关推荐

  1. 嵌入式linux学习论坛,嵌入式linux学习路线分享:教你真正好学的嵌入式开发学习路线...

    Linux 是一个开源.免费的操作系统,主要应用于服务器(网站服务器.云计算集群.DNS 等)和嵌入式,同时也被很多程序员用作个人操作系统.Linux 使用 GPL 许可证,允许任何人以任何形式传播其 ...

  2. 合理的嵌入式开发学习路线

    最近网上好多新手问我,怎么样学习嵌入式开发?其实这个问题很复杂,因为嵌入式开发是个非常复杂的领域,既有深度,也有广度,是个软硬结合的领域...我研究的时间也不长,不过以后可能会研究RTOS这一块(最近 ...

  3. 嵌入式全栈工程师_我花了半个月,整理出了这篇嵌入式开发学习指南(学习路线+知识点梳理)...

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

  4. 肝了半个月,我整理出了这篇嵌入式开发学习学习路线+知识点梳理)

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

  5. 嵌入式新手学习路线,嵌入式课程学习课程分享

    嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发:用高级处理器,arm7,arm9,arm1 ...

  6. 嵌入式新手学习路线,嵌入式课程学习

    嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm1 ...

  7. 嵌入式系统开发-学习路线

    嵌入式系统开发 课程链接 随着嵌入式设备的普及,嵌入式应用的需求量也随之增大,本课程将重点培养基于linux系统下的嵌入式应用开发,包括5个阶段,其中课程涵盖了linux系统下的多进程.多线程嵌入式开 ...

  8. 01 - 嵌入式的学习路线、职业规划:嵌入式基本知识与开发流程

    01 - 嵌入式的学习路线.职业规划 一.职业杂谈 -- (学习路线/行业介绍) 1.什么是嵌入式? 除通用计算机外(界限开始模糊:如树莓派) 特点: 硬件定制 智能控制(计算机技术) 软硬裁剪 2. ...

  9. 嵌入式Linux应用开发学习路线--自用

    嵌入式Linux应用开发学习路线–自用 嵌入式应用开发路线: 对于有简单的ST32基础和AD基础的人比较合适 个人理解: 先按照韦东山老师的思路,学下来,建议一个基本的框架,然后根据嵌入式Linux应 ...

最新文章

  1. Hadoop 部署实例
  2. 11.24杭州沙龙预告:数据化经营,智能化决策
  3. servlet类中@WebServlet 报错,不变色
  4. 博图wincc连接数据块_西门子博途WINCC 可通过创建画面模板提高编程效率
  5. 使用Azure DevOps Pipeline实现.Net Core程序的CD
  6. jni c java互相调用_通过JNI实现Java和C++的相互调用
  7. iOS UIWebView URL拦截
  8. javascript 西瓜一期 01.什么是编程 什么是编程语言
  9. 小白都能理解的FTRL
  10. 批量修改联系人头像_视频号pr批量剪辑0基础实操课,pr批量处理伪原创一分钟一个视频【共2节】...
  11. oracle 磁带备份,磁带备份 - Linux下实现自动备份Oracle数据库_数据库技术_Linux公社-Linux系统门户网站...
  12. ICIAR2018数据集下载
  13. 如何快速、科学的配置GO语言编译Android环境
  14. 01背包、完全背包(异同)
  15. hook(2)Activity启动流程,安卓开发实战
  16. 3行代码用python实现图片格式转换
  17. 禅道讲义之超级管理员
  18. Google play ASO 关键字指南
  19. 如何修改网站标题和logo
  20. Pixhawk原生固件PX4之HIL硬件在环仿真

热门文章

  1. 和“僵尸”好友说拜拜,微信如何批量删除好友?
  2. 绝地求生登录老是显示服务器繁忙,绝地求生服务器繁忙请稍后再试解决方案 专家详解...
  3. 【实验室乱记】基于 STM32 的采集 Adc 与 SD 卡储存
  4. 傻妞机器人安装完整教程【最新版】- 11月24日更新
  5. 编码格式发展历史及简介
  6. 使用Fiddler抓包解决“请在微信客户端打开链接”的问题
  7. CSP-S2022 游记
  8. Python画图设置字体和字号
  9. 工业机器人学习笔记一
  10. 电磁波的穿透能力总结