嵌入式linux基础教程
① linux嵌入式开发学习步骤有哪些
新手必读哦,来自华清远见高级讲师总结的“linux嵌入式开发11大步骤”
Linux 基础
Shell 编程基础
Linux 下的 C 编程基础
嵌入式系统开发基础
嵌入式系统移植
嵌入式 Linux 下串口通信
嵌入式系统中多进程程序设计
嵌入式系统中多线程程序设计
嵌入式 Linux 网络编程
GUI 程序开发
Linux 字符设备驱动程序
文件系统
(步骤详细内容请去华清远见嵌入式学院首页查看)
② 嵌入式系统自学
嵌入式系统软件工程 方法实用技术及应用,免费下载
链接:https://pan..com/s/10No3IypKyLg01bV4T9b22w
《嵌入式系统软件工程:基础知识、方法和应用》系统地阐述嵌入式系统软件工程所涉及的过程、方法、内容,以及在典型工业领域中的应用。全书内容分为两大部分:第一部分介绍嵌入式系统软件工程方法论,主要包括嵌入式软件的开发过程(需求工程、软件和系统体系结构、编程和测试等内容),开发和测试中所采用的标准,与安全性相关的软件系统的准入,以及嵌入式软件所涉及的法律问题:第二部分介绍嵌入式系统软件在汽车领域、轨道交通领域、航天领域、医疗器械、工业自动化、通信系统中的应用,在每个应用领域重点介绍具体应用领域的一些特定需求、技术和限制条件,以及它们对于嵌入式系统软件开发过程的影响。
③ 新手如何学习Linux
新手学习建议找准学习方向报班学习。
Linux主体分为“运维”与“开发”两个方向,无论你是Linux相关从业者,还是说爱好都可以归类到这里,其中“运维”一般是初学者或者转行人员的首选,而Linux运维主要是对服务器稳定、性能与安全方面的维护和调试。
实际上Linux入门并不困难,只要具备Linux基础,读懂Linux的命令格式,大多数的服务架构都是可以按照文档部署出来。当然做Linux开发,个人建议去参加培训学习更有效率,如果报班学习则大概需要4-6个月时间。
学习主要内容有:
1)网络基础与linux系统的管理
2)优化及高可用技能
3)虚拟化与云平台技术
4)开发运维
毕业后可从事的工作有:
1)Linux运维工程师
2)数据库工程师
3)云计算运维工程师
4)自动化运维工程师
5)云计算架构工程师等
互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。
想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。
祝你学有所成,望采纳。
④ 嵌入式开发如何入门
嵌入式开发主要有两种,像STM32、飞思卡尔等系列单片机属于无操作系统的,直接对寄存器或者利用库函数操作的,这种学习来难度相对小一些,就业前景也不错。
还有一些像ARM9,或者CortexA8、A9系列的可以运行Linux或者安卓操作系统的嵌入式软件系统开发,由于需要学习的内容较多,学习时间较长,那么学习起来就有一定的难度,工资也相对高一些。
课程内容主要包括:
②Linux核心操作与算法:Linux系统使用,Linux-c编程核心技术,精品数据结构,Linux-c编程精髓;
③核心操作与算法:Linux系统编程,Linux网络编程核心技术,UI编程,Java核心编程,安卓核心技术;
④ARM+Linux底层开发:数字电路,ARM编程核心,Linux系统开发,嵌入式Linux驱动开发;
⑤大型项目实践:每期安排各类型真实的项目,详细可以找我要资料。
互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。
想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。
祝你学有所成,望采纳。
⑤ 学嵌入式linux需要先学什么
韦东山:6000字长文告诉你如何学习嵌入式linux
链接:网页链接
第1章 单片机和Linux的区别
1.1 有哪些产品使用单片机或Linux
所有的电子产品,所用技术都可以认为要么是单片机,要么是Linux;GUI方面主要是QT/Android,它们都是运行于Linux之上的。
下面我们用类比和逻辑推导出嵌入式Linux系统的组成,没错,“推导”。
从上图可以知道:
① 组成:
嵌入式Linux系统
= bootloader + linux内核 + 根文件系统(里面含有APP)。
② bootloader:
它的目的是启动内核,去哪等读内核?读到哪里?去Flash等外设读内核,存到内存里去。所以需要有Flash里外设的驱动能力,为了调试方便还会有网络功能。
所以,可以认为 booloader = 裸机集合,它就是一个复杂的单片机程序。
③ Linux内核
Linux内核的最主要目的是去启动APP,APP保存在哪里?保存在“根文件系统”里。“根文件系统”又保存在哪里?在Flash、SD卡等设备里,甚至可能在网络上。所以Linux内核要有这些Flash、SD卡里设备的驱动能力。
不仅如此,Linux内核还有进程调度能力、内存管理等功能。
所以:Linux内核 = 驱动集合 + 进程调度 + 内存管理等。
2.3 要学习bootloader吗
Bootloader有很多种,常用的叫作u-boot。
在实际工作中,对于u-boot基本上是修修改改,甚至不改。但是u-boot本身是很复杂的,比如为了便于调试,它支持网络功能;有些内核是保存在FAT32分区里,于是它要能解析FAT32分区,读FAT32分区的文件。
花那么多精力去学习u-boot,但是工作中基本用不到,这对初学者很不友善。
所以,对于初学者,我建议:理解u-boot的作用、会使用u-boot的命令,这就可以了。
如果你的工作就是修改、完善bootloader,那么再去研究它吧。
2.4 要学习Linux内核、要学习驱动程序吗
之前我们说过Linux内核 = 驱动集合 + 进程调度 + 内存管理等,如果要学习Linux内核,从驱动程序入手是一个好办法。
但是人人都要学习Linux内核、人人都要学习Linux驱动吗?显然不是。
作为初学者,懂几个简单的驱动程序,有利于工作交流;理解中断、进程、线程的概念,无论是对驱动开发、应用程序开发,都是很有好处的。
所以对于初学者,建议前期只学习这几个驱动:LED、按键、中断。
① LED驱动程序:
这是最简单的驱动程序。
② 按键驱动程序:
它也比较简单,从它引入“中断”。
③ 中断:
从“中断”它可以引入:休眠-唤醒、进程/线程、POLL机制、异步通知等概念。这些概念无论是对驱动开发,还是对应用开发,都很重要。
所以,对于初学者,我建议必须学习这几个驱动:LED、按键、中断。
入门之后,如果你想从事内核开发、驱动开发,那么可以去钻研几个驱动程序(输入系统、I2C总线、SPI总线等),掌握若干个大型驱动程序后,你对内核的套路就有所了解了,再去研究其他部分(比如进程管理、文件系统)时你会发现套路是如此通用。
摄像头(VL42)、声卡ALSA驱动是Linux中比较复杂的2类驱动,它们是很难的,如果工作与此相关再去研究。
2.5,要学习Linux应用程序吗?先学一些基础技能
要学,即使以后你只想研究内核,一些基本的应用开发编写能力也是需要的:
① 基本设备的访问,比如LCD、输入设备
② 进程、线程、进程通信、线程同步与互斥
③ 休眠-唤醒、POLL机制、信号
④ 网络编程
①②③部分的知识,跟驱动有密切的关系,它们是相辅相承的。
掌握了基本驱动开发能力、基本应用开发能力之后,在工作中你就可以跟别人友好沟通了,不至于一脸懵逼。
2.6,应用程序是怎么启动的?要了解一下根文件系统
你辛辛苦苦写出了应用程序,怎么把它放到板子上,让它开机就自动启动?
你写的程序,它依赖于哪些库,这些库放到板子上哪个目录?
怎么做一个可升级的系统?即使升级中途断电了,也要保证程序至少还可以运行老的版本?
这些都需要我们了解一下根文件系统。
先了解一下init进程:它要读取配置文件,根据配置文件启动各个APP。
了解了init进程,你就了解了根文件系统的组成,就可以随心所欲裁剪系统,为你的项目制作出最精简的系统。
第3章 学习方法
3.1,先不要打破砂锅问到底
嵌入式涉及的东西太多太杂了,如果心里没有主线,碰到什么都要去研究个透彻,最终反而忘记自己要学什么了。
嵌入式涉及硬件知识、软件知识,软件里涉及汇编、ARM架构、C语言、Makefile、Shell;又分为bootloader、内核、驱动、基本的APP、GUI。
比如我们会用到Makefile,了解它的基本规则,会用我们提供的Makefile就可以。
不需要深入研究那些make函数,因为在工作中都有现成的Makefile给你使用,不需要自己去编写一套Makefile。何必花上好几天去深入研究它呢?
比如我们会用到bootloader,难道又要花上几个月来深入研究u-boot吗?工作中基本不需要改u-boot,会用那几个命令就可以。
甚至有些学员先去买本shell的书来学习shell命令,何必?我们在视频中用到什么命令,你不懂时再去网络一下这些命令就可以了。
不要脱离初学者的主线:应用基础、驱动基础。有了这2个基础后,你想深入研究某部分时,再去花时间吧。
3.2,思路要清晰,不怕抄代码
视频里的代码,请你一定要自己去写一次、写多次。为什么我现在写驱动那么熟?我2009年在华清远见上课时,
每次上课我都要给学生写一次那些驱动,十几次下来闭着眼睛都知道内核的套路了。
记不住那些函数?我也记不住,我都是去参考同类的驱动程序,这又不是闭卷考试。
但是要理清楚思路,你写这个程序要完成什么功能、怎么实现这些功能?这个要弄清楚。
有了思路后再写代码,不知道怎么写?没关系,看看视频,看看示例,然后关闭视频看看能否自己写出来。
3.3,对自己的方向很了解,我只能带你到这里了
我的专长是操作系统,是快速地带领大家掌握一些项目开发的基础知识。
如果你决定深入研究某方面时,我并不能带你多久。你要去看源码,去看这方面的专业书籍。
比如想深入钻研内核的内存管理时,它有页表映射(你需要阅读ARM架构的手册)、SLAB分配器、vmalloc/malloc实现、mmap实现、缺页中断、父进程子进程之间的页面管理等等,内容非常多。有时候连书籍都没有,你需要直接啃代码。
当你想从事某个行业时,就需要深入研究行业相关的知识。
比如CAN总线,它可以写成一本书:CAN协议、CAN报文、Socket CAN、车身网络拓扑结构,CAN应用报文,CAN网络管理报文,CAN诊断报文。
想做物联网网关,需要深入研究MQTT,MQTT协议相对简单,但是MQTT英文原版协议有130多页,中文版有近100页,是一本小书了。
每个行业都有自己的业务逻辑,在掌握基本的编程能力之一,你需要结合具体的业务去深入学习。
-☆ END ☆-
⑥ 嵌入式linux怎么学学习嵌入式linux有什么方法
个人总结的嵌入式学习步骤:
嵌入式学习步骤分为三个阶段
1.:基础与理论阶段
主要包括一些理论知识,你至少了解这行业吧,基本的Linux系统使用;其次就是嵌入式核心开发语言C语言(必须精通);了解c语言数据结构及经典算法编程;最后就是要了解嵌入式产品的一个基本的开发流程,这对后续的开发有很大的帮助,不至于是那么的迷茫。
2.:嵌入式系统核心开发
整理了下,至少这些是你要学会的,当前企业招人,应用层的开发挺多,特别刚入行前期,神马驱动的、移植的相关的可能你还不熟练,找工作就靠下面这些知识点了。
嵌入式 linux应用编程;
嵌入式 Linux并发程序设计;
嵌入式 Linux网络编程;
嵌入式数据库开发;
嵌入式 Linux应用综合项目;
ARM处理器编程;
ARM硬件接口开发;
3.:底层
嵌入式底层一般会涉及到,如何把你写的程序移植到开发板上运行,那么就会接触到系统移植、内核驱动开发等等,这是嵌入式工程师最高境界。主要要学以下这些:
嵌入式Linux系统开发;
嵌入式Linux内核开发;
嵌入式Linux驱动开发基础;
嵌入式Linux驱动高级开发;
嵌入式学习步骤就是这么多,除以上相关学习内容外,对于嵌入式学习者来讲还应该具备一些学习态度和学习方法。
1.在学习和工作中要脚踏实地
在对所学内容有一定了解之后,在任何项目进行中就保留自己的想法,如果自己能够解决更好,如果不能可以找其他朋友帮忙,共同探讨遇到的问题,如果只懂执行过程,没有自己的想法,即使人家把代码给咱,咱又能了解多少?
2.多看代码、多写代码
3.及时对自己的知识进行充电。来华清远见星创客精英训练营,是一个不错的进阶提升的培训班。
建议现在打算学习嵌入式的朋友们一定要多看、多练,见多识广,熟能生巧。
以上嵌入式学习步骤主要涉及的内容有嵌入式专业知识的学习和学习态度的一些小建议,希望以上内容对你会有所帮助
米奇 2017-10-23 17:26:57查看前后消息
首先介绍一下什么是嵌入式,嵌入式学习是以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。由于嵌入式系统通常具有低功耗、体积小、集成度高等等特点,嵌入式系统在我们日常生活中形成了非常大的应用领域。
嵌入式要学什么:
1.嵌入式学习之基础篇阶段:
这部分内容主要是能够看得懂硬件工作原理,特别是操作系统级软件,这部分内容主要有C语言基础,嵌入式Linux操作系统使用,嵌入式LinuxC语言高级编程,数据结构以及经典算法,java语言基础,java语言高级编程等内容,这些科目内容众多,但相对来讲都是一些比较简单的基础,容易掌握。
2.嵌入式学习之linux学习阶段:
这部分内容能够更好地深入掌握Linux系统,主要内容包括嵌入式Linux文件I/O,嵌入式Linux库的制作和使用,嵌入式Linux开发程序设计,嵌入式Linux网络编程,嵌入式数据库开发,嵌入式Linux综合案例等基础相关内容。
3.嵌入式学习之底层开发阶段:
嵌入式学习第三阶段需要掌握嵌入式系统及底层开发相关内容,学习内容主要包括ARM处理器编程,ARM硬件接口编程,物联网基础等ARM相关内容,此外,还包括嵌入式Linux系统移植/内核开发/驱动开发等必备内容。
4.嵌入式学习之拓展与实践阶段:
拓展与实践内容主要包括便携式智能医疗系统,网络机顶盒项目,仓储物联网系统以及智能农业综合实训系统等内容,把所学内容和知识点更好地应用于实践工作中。
以上就是我总结的嵌入式要学什么,要说嵌入式进阶提升,华清远见星创客精英训练营是非常好的修炼场,有最新的项目实战和职场老鸟的带领,对未来就业很有帮助。总之,嵌入式就是要努力用心的学习,就可以学得好。
⑦ 怎么一步一步学嵌入式linux
嵌入式工程师step by step(转)
*(1)首先学嵌入不是为了跟风,而是为了逐浪。不是要看大家都去做
* 这一行才去做。是真的喜欢,这样才能精,才能做到“逐浪”!
*(2)成功的历程是漫长、艰辛的,要有一颗艰韧不拔的心:P
*(3)文章中说的学习过程和资料大致差不多。但可惜的是在我花了很
* 长时间入门后才发现这篇文章,要不那短时间会缩减不少。
* 个人觉得需要注意的一点是:文中提到的步骤不是按步就班的,根据
* 个人的情况补全即可:P
**************************************************************/
近来嵌入式挺火,于是大家都往这里挤。我想提醒大家的是,嵌入式马上也会成为如今的软件业。在你进来之前请先考虑清楚。但只要我们真的学精了一样东西,不管它将来变成什么样,哪怕最后只剩下一个人,那个人也一定就是你自己。
很多人以为搞嵌入式就是随便找本书看看,在电脑上编几个程序就完事。非也,其实嵌入式的门槛是比较高的。具体如下:
1、您得有一定数量的Money。
(1)、开发板贵
(2)、培训费更贵
(3)、开发平台是贵得不能再贵。(除非您只是想玩玩而已)
2、需要学习的东西多。(1)、window环境编程;(2)、Linux环境编程;(3)、单片机
3、最后也是最重要的一点,你得有坚韧不拔之志和一颗平常之心。
(1)、自信 坚强 积极 勤快 (注:好的自信是自觉的!)
(2)、成功其实就是成为最好的您自己
嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,东雪终将化去,春风定会吹来。具体步骤如下:
1、《C语言》第二版 谭浩强 ; 《C程序设计语言》第二版 徐宝文译机戒工业出版社
你能区分开指针数组和数组指针吗?你知道函数指针吗?
你能区分开定义一个变量时系统给它分配的空间与用malloc()函数给一个变量分配的空间有什么不一样吗?
2、《数据结构》C语言版 黄国愉、叶乃青编 清华大学出版社
你能合上书本,用C语言实现书中的单链表、双链表数据结构吗?
3、《实用C++程序设计》第二板 中国电力出版社 Steve_Oualline着
此阶段主要是学习其面向对象的编程思想,加深对C语言和数据结构的理解。
4、学习单片机,最好能找个前辈带一带。
你能用51单片机做出一样实际的东西吗?即使它再简单!
要注意加深对中断的理解。
5、学习ARM单片机。
(1)、细读《ARM微控制器基础与实战》周立工编写 (注:即使你不用书中的开发板)
(2)、细读相关芯片的原版英文文档。如:arm920TE.pdf S3C2410_1.2.pdf
6、学习uCOS!!操作系统。
(1)、细读《嵌入式实时操作系统uC/OS-!!》第二版 召贝贝译
你能把uCOS!!移植到自己的平台上吗?
(2)、能编写在uCOS!!操作系统环境下运行的针对具体硬件的驱动程序
7、熟悉Linux环境,学习Linux环境编程,学习交叉编程
(1)、细读《linux命令大全.pdf》
(2)、细读《GNU Make 使用手册(中译版).pdf》
(3)、学习创建交叉编程环境.
8、学习Linux操作系统。
(1)、《UNIX环境高级编程》
(2)、细读“joyfire 笔记”,可在“”网站的好书下载栏目获取
(3)、细读《linux内核完全注释》
(4)、细读《understanding the linux kernel 2》
(5)、利用源代码阅读利器工具”Source Insight”进行真正的linux内核原码刨析
(6)、最后进行内核移植,并能编写在linux操作系统环境下运行的针对具体硬件的驱动程序
9、学习Linux设备驱动编写。可参考《Linux设备驱动程序》
10、复习C++,学习用QT进行图形界面编程
(1)、细读《QT编程宝典》
(2)、学会通过查看QT电子文档进行QT GUI实地编程
(3)、学习交叉编程.(其实就是把命令qmake变为tmake)
11、当然,你也可学习一下PCB的制作和设计一个自己的CPU(即软壳)
至此,你已学完嵌入式的整流程!但谨记:一个有思想的人才真是一个力量无边的人;有容乃大,能予方强!
⑧ 该怎样学习嵌入式Linux的基础课程
嵌入式Linux操作系统学习规划
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定)
(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
兴趣的由来:
1、成功观念不同,不虚度此生,就是我的成功。
2、喜欢思考,挑战逻辑思维。
3、喜欢C
C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下:
相信程序员。
不要阻止程序员做那些需要去做的。
保持语言短小精干。
一种方法做一个操作。
使得它运行的够快,尽管它并不能保证将是可移植的。
4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。
5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。
方法步骤:
1、基础知识:
目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构和算法、操作系统、软件工程、网络、数据库。
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。
主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。
2、学习linux:
目的:深入掌握linux系统。
方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。
主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。
3、学习嵌入式linux:
目的:掌握嵌入式处理器其及系统。
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。
(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。
(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。
4、深入学习:
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。
2010-8-21 16:46 回复
122.90.173.* 2楼
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。
说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!
技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。
嵌入式书籍推荐
Linux基础
1、《Linux与Unix Shell 编程指南》
C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata着
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明着
研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
5、《Linux高级程序设计》 杨宗德着
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系统原理与实例开发》 杨宗德着
理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O''Hallaron着
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
C语言书籍推荐
1. The C programming language 《C程序设计语言》
2. Pointers on C 《C和指针》
3. C traps and pitfalls 《C陷阱与缺陷》
4. Expert C Lanuage 《专家C编程》
5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
《编程精粹--Microsoft 编写优质无错C程序秘诀》
6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》
7.《C语言嵌入式系统编程修炼》
8.《高质量C++/C编程指南》林锐
尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。
这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!
这是从网络 福州鼎嵌贴吧看来的 呵呵
建议楼主自己去它那看看
http://tieba..com/f?kw=%E7%A6%8F%E5%B7%9E%E9%BC%8E%E5%B5%8C&fr=tb0_search&ie=utf-8
⑨ 如何快速学习嵌入式Linux课程
如何快速学习嵌入式Linux课程?嵌入式要学哪些课程?嵌入式用一句话概括,就是写程序,用软件控制硬件。嵌入式的应用领域非常多。智能家居,智能农业,智能医疗等等都属于嵌入式。那么嵌入式该怎么学习呢?
1.C语言
自上而下的学习首先是写代码,写用户的应用程序。每种语言的使用目的是不同的,嵌入式的语言是C语言。
所以首先要学习C语言的基本语法,C库提供了大量的函数,我们可以调用以实现一些功能。所以还要熟悉C库的常用函数。
C语言一定要学好,它是基础。Linux内核大部分也是用C语言实现的。
2.Linux系统的基本使用
在学习C语言的过程中,可以适当学会Linux系统的基本使用。你可能没有听说过Linux,但你肯定听说过windows,系统有很多共通之处。可以在学习过程中对比理解。
而且Linux系统提供了C语言的编辑器gcc,你可以在系统上写完代码之后,在系统上编译并运行,这样,在学习C语言的阶段你也熟悉了Linux系统的使用。
3.数据结构
当你学完了C语言的基本语法,此时你的c语言水平只是入门阶段。你还要学习一门没有新知识的课程----数据结构。这门课程就是大量的使用指针、数组、结构体、函数。经过这个阶段你才能算是掌握了C语言。
而且后面学习内核的过程中,内核中也是有大量的链表之类的数据结构的。
4.内核
此时,我们要往下开始系统内核的学习。Linux的内核包括以下几个部分:进程管理、内存管理、网络堆栈、虚拟文件系统、设备驱动等。
内核是一个系统最重要的部件。想要真正的认识它需要你一步一步的积累。这个阶段推荐大家先依次学习文件IO、进程线程、网络编程。
5.设备驱动
驱动是硬件和应用程序之间的桥梁,如果一个应用程序要操作硬件,必须要有驱动。
一句话总结:驱动就是根据相应的硬件,写出驱动程序作为调用接口提供给用户,用户使用该接口就可实现控制硬件的目的。
其次,在驱动的学习中,我们会慢慢学习内核。内核的各种模块,内核源码等等。
6.硬件
对于一个嵌入式工程师来说,能够看懂电路图即可。即只需要掌握基本的电路知识,看懂电路图。至于开发板的画图、布线、腐蚀、焊接等步骤,可以不必深入研究。这些技能是属于硬件工程师们的要求。
另外,一个程序员双语很重要,你学习了面向过程的C语言,推荐大家掌握一门面向对象的语言,可以是c++、java或者python都可。
其次,你要单独实现一个完整的项目,UI界面部分必不可少。做页面可以用qt、可以用网页、也可以用手机端。这可以使你自己做的项目更加完善。
最后我想说,学习不能图快。任何学习都需要踏踏实实沉下心来努力地学,祝你学有所成。嵌入式开发要学习的内容,大概就是以上这些。