整理了嵌入式linux学习路线供参考,但愿对您有所参考价值!linux
1、linux入门程序员
目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操做便利而被普遍采用。而Linux操做系统也只是一个简单的操做系统,简单的使用对于嵌入式开发人 员来讲价值并不很高,真正有价值的是掌握Linux的基本服务和Linux的设计理念、思想,这对于嵌入式开发人员的长期发展是很极其重要的。Linux 系统有不少发行版,RedHat、Ubuntu、Fedora等。做为嵌入式开发人员,咱们没有必要把精力放到使用哪一个Linux发行版上,而是尽快把 Linux系统尽快安装好。若是打算坚持长期学习,那么建议您把本身的电脑作成双系统,而不要在虚拟机上安装。算法
Ubuntu系统下载地址:http://www.ubuntu.org.cn/desktop/get-ubuntu/download/shell
经典书籍推荐:鸟哥的linux私房菜--基础学习篇编程
2、C语言ubuntu
C语言是嵌入式开发必备的基础知识。在Linux下从事C语言的开发,你会以为更为顺畅、更为天然,由于C语言是因unix的出现而诞生的,Linux内 核几乎彻底是由C语言编写完成的。学习C语言,若是不会用指针,那么就称不上会C语言。作嵌入式开发指针更显得尤其重要,因此作嵌入式开发除了掌握位操 做、限定词等,对指针的掌握是不可或缺的。并且要掌握多级指针、函数指针等等。涉及到指针,那么就会讲到内存分配。在大学中,学习C语言通常的学习不多讲 到内存分配,可是若是指望从事嵌入式开发,那么就必须懂得C语言是怎么作内存分配管理的。指针以外,还要学习模块化编译处理、指针与数组、gcc、 Makefile、GDB、递归、结构体、宏定义使用等。C语言是整栋嵌入式大厦的基础,因此在学习嵌入式时,必须把C语言重视起来,多敲代码,多练。一 名优秀的程序员一定是经过“体力劳动”再转向“脑力劳动的”,这也是为何咱们要有“写不出代码=0”思想的缘由所在。数组
若是说C语言至关于文字,那么数据结构就至关于在造句、写文章。代码质量有一部分取决于对数据结构的掌握程度。在数据结构部分咱们要把链表、树、排序做 为学习重点。并且咱们也能够查看一些比较常见的函数(如strcopy、strcat、printf等)在内核中是如何实现的,以及编写代码模拟堆栈,这 不只有利于编写代码质量的提升,并且还能够初步了解Linux内核精髓,为从此工做打下坚实的基础。网络
C++、QT在嵌入式开发领域,是用来开发图形界面的,但愿从事上层应用开发及图形界面,那么在C++、QT方面须要比较深刻的学习。数据结构
经典书籍推荐:《C程序设计语言》《C专家编程》《C陷阱和缺陷》《C和指针》《数据结构与算法分析--C语言描述》socket
《C++ Primer》 《GNU Make》 《C++ QUI QT4编程》
关于C++的经典书籍,请参考另一篇文章:C++学习书籍顺序推荐
3、linux应用程序设计
Linux的思想源于Unix。Linux继承了Unix的优势,可是没有用UNIX的代码,全部程序都是从新编写的,并且Linux与Unix的源码级兼容。Linux是类Unix操做系统。Linux 不只符合 POSIX 标准,并且还包括其它 UNIX 标准的多种特性,例如,UNIX 的 System V 接口文档(System V Interface Document,SVID)和伯克利软件发布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了 UNIX 几个典型特性当中最实用的一些功能:
Linux 采用了 SVR4 的进程间通讯(IPC)机制:共享内存、消息队列、信号。 Linux 支持 BSD Socket 网络编程接口。 许多 Linux 发行版采用 SysV init 机制,支持运行级别。
此阶段的学习是从事嵌入式上层应用开发以及底层开发人员的必修课程。进程、线程、信号、文件锁、socket是这部份内容的重点。要把这些内容学的透彻非要下些苦功夫不可。并且函数是系统提供给咱们的,不免要对计算机系统深刻理解一番。TCP/IP协议也是要涉及到的。有问题建议用Google搜索及登录chinaunix论坛。经过这个阶段的学习,咱们就能够初步实现一些应用程序的开发了,如作本身的shell命令解析器、简单的聊天软件、视频多播等。
经典书籍推荐:
《Unix环境高级编程》 《Unix网络编程》 《TCP/IP详解卷I》《深刻理解计算机系统》
4、arm体系结构
从这部分开始,咱们将真正进入嵌入式开发学习阶段。首先咱们要知道采用哪一种处理器。目前通用嵌入式处理器有ARM、MIPS、PowerPC、X86等。从市场产品占有率上看,ARM处理器远远领先于同类其它处理器,并逐步掠夺传统51单片机和英特尔市场份额。据招聘网站统计,目前用人单位在技术水平上要求开发人员掌握ARM9及以上平台的开发技术。ARM公司在发布ARM11产品后,更改以往的数字标记更新方式,转为发布ARM Cortex。可是Cortex并非更高端,而是全新系列的处理器,好比Cortex M3,它主要应用于机械加工、工控领域,目的是取代之前的ARM7处理器。
在开始学习前,建议有一块本身的开发板,目前ARM9 2440的开发板价格在400-600元之间,ARM11 6410的开发板价格要高一些,最便宜的也要1200元以上。在此,提醒你们尽可能不要买mini开发板,虽然mini开发板的价格要便宜些,可是与正常开发板相比,mini板功能是不完善的。嵌入式汇编有别于X86汇编,因此若是之前没有接触过汇编语言,那么没有必要先去学X86汇编再学嵌入式汇编,能够直接学习嵌入式汇编。除了汇编咱们还要学习ARM指令集。有了开发板,咱们要下载相对应处理器的DataSheet及开发板电路原理图。ARM体系结构的学习咱们是不能彻底照抄别人代码的,由于咱们本身手中的开发板及处理器与别人是不一样的,除非所用的代码是根据你手中的开发板来编写的。因此,咱们要先去看书、看视频资料理解原理及工做方式等,而后根据本身开发板的电路原理图和DataSheet来编写代码,达到理解外围设备工做原理和操做硬件的目的。
经典书籍推荐:《嵌入式linux应用开发彻底手册》《arm嵌入式系统开发--软件设计与优化》
5、嵌入式提示---linux内核 驱动
众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另一个是嵌入式应用层开发,而薪酬高的、最具价值的无疑是嵌入式内核驱动级别的开发者。真正的嵌入式高手或者企业中的核心开发人员,必定是嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,形成对内核驱动人才的大量需求,因此这些人才是真正企业须要的香饽饽。掌握驱动开发会让本身的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。
因为Linux内核更新速度很快,书籍和视频不可能及时更新,因此咱们再看书和视频后,要本身动手下载内核源码包,去看内核中的代码,在这里能够充分检验C语言、数据结构等基础知识的掌握程度。而驱动的编写仍是要借助外设硬件电路原理图和芯片手册。内核和驱动的知识是让咱们根据不一样的硬件,编写对应的驱动、合理剪裁内核、制做文件系统,并移植到硬件开发板上。若是手里有ARM11 6410及以上的开发板,能够试试在裸板上编写驱动并移植Android系统到开发板上吧。