D、DSP技术:DSP是Digital Signal Process数字信号处理的意思,DSP处理器通过硬件实现数字信号处理算法,如高速数据采集、压缩、解压缩、通信等。数字信号处理是电子、通信等硬件专业的课程,对于搞软件的人若能了解一下最好。目前DSP人才较缺。如果有信号与系统、数字信号处理等课程基础,对于学习MPEG编解码原理会有很大帮助。
(4)嵌入式开发的相关硬件基础
对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。另外,汇编语言、C/C++、数据结构和算法、特别是操作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理,但重点应是在嵌入式软件,特别操作系统级软件,那将是我们的优势。
我们的研究生里有些是学电子、通信类专业过来的,有较好的模拟电路和单片机基础,学嵌入式非常合适。嵌入式本身就是从单片机发展过来的,只是单片机不带OS,而现在很多嵌入式应用越来越复杂,以至不得不引入嵌入式操作系统。另外,为追求更高速的信号处理速度,现在在一些速度要求较高的场合,有不少公司是将一些DSP算法,如MPEG压缩解压缩算法等用硬件来实现,这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术,这方面的人目前市场上也很缺。
(5) 题外话
另外,能写驱动程序的人目前是非常紧缺的(驱动程序也可归于嵌入式范畴),包括桌面Windows中的DDK开发环境和WDM驱动程序。公司每时每刻都要推出新产品,每一个新产品出来了,要能被操作系统所使用,是必须写驱动程序的。写驱动程序就必须掌握操作系统(如Windows或Linux)的内部工作原理,还涉及到少量硬件知识,难度较大,所以这方面的人很难找。想成为高手的同学,也可从驱动程序方面获得突破。我可说一下自己的经历,三年前我曾短暂地在一家公司写过WinCE驱动程序(正是因为知道这方面的人紧缺,所以才要做这方面的事),尽管那以前从未做过驱动程序,应聘那个职位时正是看准了公司是很难招聘到这方面的人,既然都找不到人,驱动还得有人做,这正是可能有机会切入这一领域的大好机会。面试时大讲自己写过多少万行汇编程序,对计算机工作原理如何清楚,简历中又写着我曾阅读完两本关于Windows Driver Model的两本英文原版书,写过几个小型的驱动程序练习程序(其实根本没写过,我们的同学将来千万不要像我这样,早练就些过硬功夫,就不至于沦落到我这等地步,就不用像我那样去“欺骗”公司了,我这是一个典型的反面教材),居然一切都PASS(当然最重要的是笔试和面试问题还说得过去),这只能说明这一领域找人的困难程度。公司本就未指望找到搞过驱动的人,找个有相关基础的人就算不错了。做了以后,发现也并不是怎样难的。其实搞驱动程序的工作是很舒服的,搞完一个版本就会空一段时间,只有等公司新的芯片推出或新的OS出现后,才需要再去开发新一版驱动,那时有将近一个月时间空闲着在等WinCE .NET Beta版推出,准备将驱动程序升级到CE .NET上,现在在软件学院工作整日忙,无限怀念那段悠闲时光。
很巧合,最近本人无意中再次体会到了嵌入式的迷人之处。上周我那用了3年的手机终于不能WORK了。此次更新,除要求有手机常见功能外,最好有MP3功能(现在很多英语听力都有MP3文件),最好有英汉词典,最好还能读WORD文档。最后选了个满足以上条件的最便宜的手机DOPOD 515(斩了我2.2K,但想想这也算自己对嵌入式事业的支持,这样便也想开了),算得上最低档的智能手机了。回来一查,手机的about显示,本手机Processor是ARM,其OS是MS Smartphone(即WinCE .NET 4.2),这么巧合,简直可做为学习嵌入式课程的产品案例了(等我们的WinCE课程开得有声有色后,希望能从微软研究院搞些Smartphone来开发开发)。有OS的手机果然了得,金山词霸、WORD、EXCEL、REGEDIT等居然都有smartphone版的,PC上的MP3、DOC等居然在download时都可被自动转换成smartphone格式,真是爽。完全可用Windows CE自己开发一些需要的程序download到自己的手机上。现在市面销售PDA智能手机火爆,MS总是财源滚滚。但我已发现国产的ARM+LINUX手机出现在市面上,价格只1.2K。
要么走ARM+WinCE,要么走ARM+LINUX,要么走ARM+VXWORKS。每个搞嵌入式的人都可选一条路,条条大路通罗马。
———————————————————————————————————————————————–
另一篇
- 嵌入式LININX开发第一学习阶段,主要打好基础,学好C编程,Linux系统编程。
2. 嵌入式LININX开发第二学习阶段,掌握ARM汇编程序设计,驱动程序设计。
3.
4. 嵌入式LININX开发第三学习阶段,掌握C++面向对象程序设计,Qt编程。
5.
6. —————————————————————————————————————-
7. 总的原则,不能贪多求快,贵在长期坚持。
好了,话归正转。下面给出相关的学习资料。资料出现的顺序,也就是我们学习的顺序。
1. C程序设计语言
C语言作者写的书,超级精简。因为精简,所以,这本书要很认真的读。不要求快,要细嚼慢咽,要多思考,要从头到尾(包括附录)的读。
2. Unix环境高级编程 第2版
知名的Unix编程书籍。学完这本书,对一般的Linux应用开发,基本上可以达到得心应手的地步。
- 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内核源代码情景分析
虽然是老书,但符合国人的思维习惯,因此非常有助于理解Linux内核。
7. 深入理解Linux内核
新书,老外写的。当然是超级好书,在下就不多说了。
- Linux设备驱动程序
这本书非常注重实用。我们最终的开发,基本上,要么是开发驱动,要么是在内核中做些应用(并与用户态做一定交互)。而这本书恰恰教给我们最老练的开发方法。
9 u-boot学习
这里推荐的不是书籍了,而是一篇网络资料。
上面这篇文章,是一篇非常不错的介绍u-boot工作机制的好文。
另外,学习u-boot,还得舍得花钱。笔者为此也买了一块S3C2440 arm9开发板——TQ2440。
(需要说一下,在下对天发誓,在下绝不是给谁做广告)
开发板不用买高档的,买个基本的arm9的就行了。因为我们是学习嵌入式系统原理,有个基本的arm9 CPU就足够了。如果是做产品,当然需要选型。
有了开发板,就可以修改、编译、烧写u-boot、内核、根文件系统了。
有了开发板,就可以理解从CPU一通电开始,到Linux跑起来,到最后应用跑起来,在这整个过程中,机器里所发生的一切事情了。
好了,在下能介绍的内容就这么多了。后面搞什么,怎么搞,就看大家自己的啦。
-
——————————————————————————————————————–
-
1.初识ARM
相信ARM初学者已经通过各方面的信息(尤其是因特网)对ARM或多或少有所了解。那么,看看您是否对以下我们所提出的概念有所了解:
(1)“ARM”到底指的是什么?(是一家公司?是一款芯片?是一种技术?)
(2)ARM处理器芯片如何分类?
(3)目前有哪些芯片厂商生产ARM处理器芯片?
(4)目前国内应用比较多的ARM处理器芯片有哪些?它们主要应用于哪些领域?
以上四个问题,用户可以通过在网上查找资料很快得出答案。我们之所以只提出问题,不给出答案,是希望用户能够亲自去查阅相关信息和资料,因为这也是ARM学习的一部分。我们希望用户能够与我们给出的学习建议进行一种互动,即我们提出问题,用户通过查找资料来找出答案,这样更有助于用户对知识的理解。
2.一开始就必须掌握ARM体系结构与汇编指令?
未必!我们身边的很多ARM初学者,一开始就抱着有关ARM体系结构的书籍开始苦读,更有甚者,在很多具体内容上钻牛角尖,把大量时间花在了ARM汇编指令上,几个月下来,进展不大,虽然也能知道一些ARM的相关概念,但离真正的具体应用相差甚远,很多初学者会感觉到,学完ARM体系结构后,对ARM的应用还是无从下手,一片茫然,有的甚至就因为这个原因,被挡在了ARM嵌入式开发领域的大门外,从此放弃了ARM嵌入式开发的学习。
请不要误解,并不是主张不看ARM体系结构的相关书籍,关键在于怎么看、看到什么程度。根据经验,ARM初学者对于ARM体系结构的相关知识只需做到“了解”这一程度就可以了,对于ARM的汇编指令完全可以不用记忆,只要能看懂就可以(目前大部分基于ARM的产品开发都采用C语言,汇编语言的使用机会大大减少,只有在操作系统移植以及某些特殊应用中才会用到部分汇编指令)。随着初学者对ARM更深入地学习,有关ARM体系结构与汇编指令的知识以后可能会反复出现,遇到时再有针对性的重点看,相信会取得比较好的效果。
注意:有关ARM体系结构的文档请用户参看配套光盘“用户使用手册”文件夹中的“ARM7TDMI_en.pdf”文件,该文档为ARM公司的官方技术手册,虽然是英文版,但我们建议初学者一开始就养成查看英文手册的习惯,因为很多翻译的资料并不能保证完全翻译正确。
如果初学者对英文确实感到头痛,那也可以找几本ARM体系结构相关书籍来看,北京航空航天大学出版社出版了多本比较不错的ARM相关书籍,用户可以参考。
3.选择ARM的软件集成开发环境
目前,流行的ARM软件集成开发环境有ADS1.2、Keil uV3和IAR等。对于51单片机应用开发工程师来说,Keil开发环境应该应用得比较熟练,若采用Keil uV3进行ARM软件开发,应该可以快速上手。但是,我们并不推荐ARM初学者选择Keil uV3进行ARM软件开发,主要是基于以下2个原因:
(1)Keil uV3是第三方ARM软件集成开发环境,目前支持的ARM芯片种类还不多,所带的编译器也并不完善;
(2)由于Keil uV3为了方便用户的开发,提供了现成的ARM启动文件,换句话说,它屏蔽了ARM开发中的一个重要内容——启动代码的编写,而这一点对初学者来说应该是非常重要的内容。
IAR目前国内应用的人还不多,相关资料也不是很多,所以我们也不推荐初学者使用。
ADS1.2集成开发环境是ARM公司推出的ARM核微控制器集成开发工具。它支持ARM10之前的所有ARM系列微控制器,支持软件调试及JTAG硬件仿真调试,支持汇编、C、C++源程序;具有编译效率高、系统库功能强等特点;可以在Windows 98、Windows 2000、Windows XP以及RedHat Linux上运行。
本开发板配套的所有实验都是采用Wiggler板+H-JTAG调试代理软件,在ADS1.2集成开发环境下进行编写及调试的,非常方便。
基于以上原因,我们推荐ARM初学者使用ADS1.2集成开发环境进行ARM开发。关于ADS1.2集成开发环境的使用,初学者可以参看ADS1.2集成开发环境自带的用户手册。另外,向ARM初学者推荐一本关于ADS1.2集成开发环境使用的好书——ARM开发工具ADS原理与应用 赵星寒 刘涛著 北京航空航天大学出版社 2006年2月第一版。
4.收到开发板后,不要盲目下手做实验!
由于对ARM的神秘感以及初学者的好奇心理,很多ARM初学者在收到我们的开发板后,恨不得一口气就把所有的实验都做完,这样的做法我们坚决反对。由于初学者盲目下手做实验,可能很多实验都做不出正确的结果,甚至损坏开发板,因此我们建议初学者经过下面的几步来进行实验:
(1)收到开发板后请仔细检查所有配件是否齐全或损坏,若有问题,请及时联系我们;
(2)请认真阅读配套光盘中的“ARMSKY-LPC213X_214X教学实验开发板使用手册.pdf”文档,熟悉开发板的硬件资源;
(3)请认真阅读配套光盘中的“如何在ARMSKY-LPC213X_214X教学实验开发板上运行第一个实验程序.pdf”文档,以便在开发板上进行第一个实验。
经过以上三步,用户就应该能够在开发板上做出第一个实验了。接下来,用户可以依次将所有配套实验做一遍,看看都会出现哪些实验效果。
5.如何做好每一个配套实验,达到最好的学习效果?
开发板配套了60多个实验,几乎涵盖了213X/214X系列芯片的所有内部功能器件的使用。初学者如何充分利用这些配套实验进行学习,对于是否能真正掌握ARM嵌入式开发起着决定性作用。然而,很多初学者对这一点认识不足,很多都是把这些实验在开发板上做一遍就认为已经掌握了ARM开发,其实不然,只把这些实验在开发板上做一遍,顶多算是对实验结果进行了验证,根本没有达到掌握ARM开发的目的。因此,我们建议初学者按下面的步骤进行实验:
(1)将配套实验先在开发板上运行一遍,观察实验结果;
(2)仔细分析实验代码,至少需要结合以下两部分资料:
A. ARMSKY-LPC213X_214X教学实验开发板原理图.pdf(在配套光盘的“用户使用手册”文件夹中);
B. LPC213x User Manual.pdf或LPC214x User Manual.pdf(在配套光盘的“用户使用手册”文件夹中);
LPC213X/214X的每个内部功能器件都和一组特定的寄存器相关,要想完成该功能器件所能实现的功能,就必须对这些相关的寄存器进行设置,这些寄存器的详细说明,用户可以在LPC213x User Manual.pdf或LPC214x User Manual.pdf中查看。
(3)自己将实验代码重新写一遍(一个字一个字的敲入计算机,请一定不要复制我们提供的现成代码),然后在ADS1.2下进行调试;
(4)看看是否可以用另外的方法实现实验所要达到的效果,如果可以,可自己编写代码进行调试。
经过以上四步的练习,相信初学者可以很好的掌握LPC213X/214X片内功能器件的使用,对ARM开发流程也有了比较深刻的体会。
6.学ARM必搞嵌入式操作系统?
很多ARM初学者有一个错误的概念——学ARM必搞嵌入式操作系统。认为在ARM上跑嵌入式操作系统就代表技术先进、产品档次高的观点绝对是谬论。持这种观点的人一定是没有做过具体的产品开发。一个嵌入式产品是否需要跑嵌入式操作系统,是由很多因素决定的,例如,产品的功能需求、开发成本、开发周期等都是需要综合考虑的。
对于ARM初学者来说,前期我们并不建议使用嵌入式操作系统。当用户把所有配套实验都熟练掌握后,即对LPC213X/214X的内部功能器件可以做到熟练应用的程度后,可以考虑学习一个具体的嵌入式操作系统。
目前,流行的嵌入式操作系统非常多,例如,uC/OS-II、WinCe、Linux、VxWorks等。对于初学者,我们慎重地推荐源码公开的uC/OS-II嵌入式操作系统。uC/OS-II已经有很多产品成功使用的案例且得到了美国航空管理局的认证,北京航空航天大学出版社也出版了配套的专著。国内熟悉这个嵌入式操作系统的开发人员特别多,十分容易通过网站上的讨论社区得到帮助,更关键的是,初学者可以很容易地通过阅读源码达到彻底掌握嵌入式操作系统的目的。在熟练掌握了uC/OS-II后,用户已经从ARM初学者进入到了ARM应用开发工程师的行列。下一步可根据自己的知识背景、兴趣爱好和开发领域,再选择一个嵌入式操作系统(例如WinCE、Linux或VxWorks等)进行学习,彻底掌握ARM嵌入式系统开发。
7.如何检验学习成果
在经过一段时间的学习后,初学者一定想知道自己达到了一个怎样的程度,我们给初学者提供一个检查自己学习效果的方法:可以仿照我们的开发板,自己做一款类似的开发板出来。当然,没有必要完全按照我们的设计,您可以在自己设计的开发板中加入更多的功能,配套更多的实验。
8.充分利用网络资源,不耻下问!
我们已经进入了信息大爆炸的时代,很多知识都可以通过网络及时地获得。在学习的过程中遇到困难时,可以通过网络获得帮助,只要我们虚心好学,不耻下问(当然要注意在网络上寻求别人帮助的方式方法),一定会得到很多好心人的帮助,使自己每天都有所提高。
9.知识是永远学不完的——学海无涯、人生苦短
学习ARM嵌入式开发,尤其对于初学者而言,不应该过早地、过多地将精力用在嵌入式系统移植、Linux内核的研究和学习上,这些诱人的“热点”很容易使初学者迷失方向,进而忽视对基础知识的深入学习,到头来说得头头是道,可真的干起来却离实际的需求差得太远。知识是永远也学不完的——学海无涯、人生苦短!我们学习的目的是为了满足应用的需求。只要方法得当,掌握ARM嵌入式开发应用技术其实并不难。
10.知识改变命运——学好ARM就有机会,只要努力终将成功! -
————————————————————————————————————–
-
十年研发经验工程师的嵌入式学习书籍大推荐
-
从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步。
为什么选择学习嵌入式?
嵌入式系统无疑是当前最热门最有发展前途的 IT 应用领域之一,同时也是当今 IT 领域仅存的几个金领职位之一。当前的中国 IT 人才面临严重的“后继乏人”, 而且这种缺口由于培训缺乏、教育模式等原因造成的,而缺口最大的,就是高级 IT 人才。如果你从事的 IT 培训不专业,面对竞争越来越激烈的职场,基本找不到 工作。据专家预测,嵌入式每年人才缺口在 30 万左右。
嵌入式行业平均薪资分布
工欲善其事,必先利其器,除了推荐的书籍外,也推荐一下我用的开发板,我学习用的是飞凌的 OK6410 ,感觉算是入门不错的板子,刚刚看到他们官方微博貌似 A8 的 210 和 ARM9 的 2416 准备促销呢,有 50 元的京东购物卡送,想入手的可以关注下。
ARM+Linux嵌入式底层内核驱动方向学习总体路线图
附上ARM学习路径图,希望对学习者能有所启发。
基础学习Ⅰ—Linux入门
目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系统也只是一个简单的操作系统,简单的使用对于嵌入式开发人 员来说价值并不很高,真正有价值的是掌握Linux的基本服务和Linux的设计理念、思想,这对于嵌入式开发人员的长期发展是很极其重要的。Linux 系统有很多发行版,RedHat、Ubuntu、Fedora等。作为嵌入式开发人员,我们没有必要把精力放到使用哪个Linux发行版上,而是尽快把 Linux系统尽快安装好。如果打算坚持长期学习,那么建议您把自己的电脑做成双系统,而不要在虚拟机上安装。
Ubuntu系统下载地址: www.ubuntu.org.cn/
A)经典书籍推荐:
B)经典学习视频推荐:Linux操作系统入门
基础学习Ⅱ—C语言
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方面需要比较深入的学习。
A)经典书籍推荐:
B)经典学习视频推荐:C语言入门
C)经典学习案例:
1、学员成绩管理系统2、计算器3、电子词典4、文件压缩器
基础进阶—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命令解析器、简单的聊天软件、视频多播等。
A)经典书籍推荐:
B)经典学习视频推荐:Linux环境高级编程
C)经典学习案例:
1、串口监听程序 2、图片浏览器 3、MP3播放器 4、聊天程序 5、 ftp程序
6、音频广播程序 7、ping的实现 8、DDos攻击程序 9、ARP攻击程序
嵌入式入门—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来编写代码,达到理解外围设备工作原理和操作硬件的目的。
B)经典学习视频推荐:
1) 嵌入式扫盲篇——十问嵌入式
2)ARM体系结构与Bootloader开发
3)嵌入式ARM Linux开发——ARM汇编
C)经典学习案例:
-
ARM模拟器开发 2. Watchdog控制程序 3. RTC时钟控制程序
-
Uart控制程序 5. LCD控制程序 6. 触摸屏控制程序
-
DMA控制程序 8. 音频控制程序 9. 网卡控制程序
-
文件系统制作 11. ARM-Linux移植
嵌入式提升—Linux内核、驱动
众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪酬高的、最具价值的无疑是嵌入式内核驱动级别的开发 者。真正的嵌入式高手或者企业中的核心开发人员,一定是嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,造成对内核驱动人才的大量需求,所以这 些人才是真正企业需要的香饽饽。掌握驱动开发会让自己的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。
由于Linux内核更新速度很快,书籍和视频不可能及时更新,所以我们再看书和视频后,要自己动手下载内核源码包,去看内核中的代码,在这里可以充分检验 C语言、数据结构等基础知识的掌握程度。而驱动的编写还是要借助外设硬件电路原理图和芯片手册。内核和驱动的知识是让我们根据不同的硬件,编写对应的驱 动、合理剪裁内核、制作文件系统,并移植到硬件开发板上。如果手里有ARM11 6410及以上的开发板,可以试试在裸板上编写驱动并移植Android系统到开发板上吧。
B)经典学习案例:
-
GPIO驱动 2. RTC时钟驱动 3. WatchDog驱动 4. Udev移植 5. 触摸屏输入设备驱动
-
LCD显示设备驱动 7. DMA驱动 8. 音频设备驱动 9. Nand Flash块设备驱动 10. 网络设备驱动
硬件工程师的书籍(等等)
——————————————————————————————————————
4. 嵌入式开发入门之经典
开始进入嵌入式世界,真是一头雾水,不知道如何入手!也不知道该如何学习,学习什么,最近从网上转载这篇文章,对我启发很大,对于初始进入嵌入式的人们很有帮组,好多嵌入式大侠都说这是入门的最好文章.
1、抓住51开发ARM
这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了,自己笨,身边的高才生又看不上51的原理,他们都比较“牛”,说51过时了,你问那个做什么???我比较郁闷!过时吗?我有一点怀疑?
他们不愿意说有他们自己的理由,没有人强求,靠自己好了。
我自己个人的观点:51是一个基础,而且还很重要,这是再我看了ARM之后感觉到的。它可以加速你的ARM学习速度,真得!不相信你试一试好了。
凡是要求一个速度、效率,不要做一些无用功,抓紧身边的每一个一分钟,人是活的,东西(知识、书)是死得,想要做的事情因此就简单了。
2、在网上看到的一篇很不错的ARM文章,粘贴过来,为了和像我一样在很少有人帮助的情况下自学ARM的难兄难弟们
? ARM怎么入门?
? 我不是高手,仍然是菜鸟。但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。
首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。
所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打 发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵
以下问题常被问到,我就想到哪说到哪吧:
一、首先说说ARM的发展
? 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式 微控制器;ARM是嵌入式微处理器;DSP;FPGA。客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。DSP因为数字处理 与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。
? FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!!
值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。写的多的是什么?“嵌入式LINUX”到这相信大家看出来了吧,需要的是硬件中的软件。
二、ARM是硬件还是软件
很难说,ARM是硬件,LINUX是软件。ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。
在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公 司把嵌入式产品开发归为硬件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师”。
三、要不要买开发板&买哪家
? 我的答案是“在你个人的学习方法”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。
1、买
买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确 认硬件没问题。另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0160个脚!那叫一个麻烦~~ 花了多少钱呢?2层板,制版费就300块!当然我把接口都外引了,还做了个20X18的LCD背板,板子比较大。总体下来 元件+LCD 屏+PCB=11XX块!
2、做
自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、 GPRS模块 、SD卡模块,扩了个IIC的35个键子的键盘、把 LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持 和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。再有就是给做 的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。网上流传的原理图多数是龚俊03年画的,再这里对龚 俊表达一下我的敬意!!牛人!但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的 SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖的人。
3、买哪家
? 个人感觉分3类吧:
1)首先是上海无线龙的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱UCLINUX。价 格也合理,一个ARM开发板也只要几百块钱,ARM9最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM9来的。但是,这里如果你看中的是为工 作做准备,还是选能跑UCLINUX的吧。但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!!在这里被无线龙的务实精神感动!你看人家那代码 写的。
2)感觉立宇泰的也不错,硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~
四、要不要有51 AVR等单片机基础
? 有更好,但没有也无所谓。两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过 C语言程序。你看出来了?我是个不折不扣的菜鸟吧?但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。例程里有汇编有C,都看 懂了就OK,不用自己现写!
五、开发都需要学习哪些软件
? 总结起来最主要的有以下几个吧:
1、ADS调试用
? 确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。
有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。便宜成AXF以后再在ARM的RAM里调试。
2、PLASHPGM
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新