嵌入式展望与学习路线
随着家庭自动化技术的发展,很多以前出现在科幻小说中的场景已经变为现实:只要说“看电视”就可以把电视打开,拉上窗帘,房间的光线逐渐调整到最适宜看电视的程度……或者,在回家的路上,打个电话,家庭自动化系统自动为您提前打开空调,调整室内温度到合适程度,接通通风装置,调节好室内的光线,把预先准备好的食物用微波炉加划‘1,这样,一回到家里就可以享受到清新的空气、舒适的环境,和刚刚热好的食物……
随着IT产业的发展和人们生活水平的提高,“家庭自动化”、“智能家居”、 “网络家电”、“家庭网络”等技术的发展正受到人们的密切关注,相关产品也在逐渐成熟。进一步完善“智能家居”(SmartHome),更好地实现上面描述的情景,给人们的生活带来本质的变化,就是研究家庭自动化技术的意义所在。
下面叙述在智能家居中嵌入式操作系统的开发背景:
传统的嵌入式应用程序一般是基于单任务机制的1151。在这种机制下,系统程序由基于主循环的按固定顺序的功能模块加上一些中断模块构成。这种机制具有程序流程简洁明了,易于编写、控制和修改等特点,在相对简单的应用场合得到广泛应用。现有的智能家居设备软件很多都采用了这种方法来编写,如我们改造设计的伊莱克斯(Electrolux) EW2208F型网络洗衣机、伯乐DCB-198网络冰箱、格兰仕(GaLanz) WD90ODSL23-2网络微波炉、日本松下电工的WT5572WK调速调光器等。
在实际应用中,多数嵌入式系统的功能复杂并且时间要求严格而且准确,在这种情况下,单任务机制往往难以胜任。这时,嵌入式系统往往可以分解为多个相对独立的模块,将这些模块理解为任务,从而引入多任务机制进行管理。引入多任务机制后,可以简化系统程序设计,满足各个任务不同的实时性要求。
展望:随着计算机技术、嵌入式系统和通信技术的不断进步,家庭楼宇自动化科技的快速发展,展望嵌入式系统在家庭楼宇自动化的进一步应用,提出了以下计划:
.把16位/32位嵌入式微处理器进一步应用到家庭智能控制系统中。
.在家庭智能控制系统中,进一步集成安防、照明、门禁、监控、远程设
置等子系统,实现系统的高度集成化、智能化。
.运用电话、互联网、短消息、GPRS等通讯方式,实现系统的远程控制
.实现语音识别控制家用设备
.在深入理解现有家庭楼宇自动化协议的基础上,争取完成具有自主知识产权,能被市场广泛接纳的家庭楼宇自动化协议的制定。
.在扎实的理论实践基础上,争取在嵌入式操作系统的核心技术上取得突破,完成自主知识产权的嵌入式操作系统的开发。
上述计划仍依照循序渐进的原则,最终实现家庭楼宇自动化在国内应用的推广,以及嵌入式核心技术及自主知识产权的获得。
随着经济的发展,人们物质文化需求的日益增长,家庭楼宇自动化系统能大大提高人们的生活品质,为人们带来高度智能化的生活,其市场前景是相当广阔的。在深入研究嵌入式系统以及家庭楼宇自动化协议,吸收国外先进技术的同时,也要放宽眼界,立足于自主研发和自主知识产权。近年来我国家电业遭遇的一系列技术壁垒已经为我们敲响了瞥钟,国内厂商也加紧了自主协议标准的研发步伐。作为科研技术人员,应充分发挥创造性,以提高我国科学技术水平为根本,在家庭楼宇自动化这一领域方兴未艾之时,抓住机遇,占据一席之地
*家庭自动化系统的出现是以计算机、嵌入式系统和通讯技术的快速发展为前提的,其中嵌入式系统扮演了非常重要的角色。
【嵌入式系统定义】
嵌入式系统通常被定义为:以应用为中心,软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统[131,它主要包括四个部分:嵌入式微处理器、外围硬件设备、嵌入式操作系统、应用软件系统等]
目前在商业应用领域中主要有VxWork, uC/OS, uCLinux, RTX51等嵌入式操作系统。
【就业前景】
我国嵌入式就业前景非常好,因为嵌入式系统和软件是当前最热门并且最有发展前途的IT应用领域之一,下面就给大家分析一下嵌入式就业前景。
要说嵌入式行业,就要先从嵌入式系统和软件说起。嵌入式系统和软件是指嵌入在硬件中的非PC操作系统和开发工具软件,分为嵌入式操作系统、嵌入式支撑软件、嵌入式应用软件,被称为“驱动系统的灵魂。”从昔日的时尚电子产品-MP3、手机、PDA,到如今的新宠家电-智能电视、智能冰箱、机顶盒,再到工业生产及机器人尖端技术,进入21世纪后,IT产业的技术含量可谓越来越高,而作为驱动硬件系统的灵魂-嵌入式操作系统也随着IT技术的日趋成熟得到了更为广泛的应用。今天,嵌入式系统产品的研制和应用已经成为我国信息化带动工业化、工业化促进信息化发展的典型例子,也是倍受关注的新的国民经济增长点。据预测,随着Internet的迅速发展和廉价微处理器的出现,嵌入式系统将在日常生活里发挥更大的作用,嵌入式就业前景更加美好。
而CCID最近的一次调查显示,中国嵌入式软件行业存在每年至少50万人才的巨大缺口,并且,这个数字还在以每年20%的速度递增。与此相比,国内嵌入式软件人才供应量正可谓是“杯水车薪”,远远不能满足行业的需要。一方面是需求的增长,一方面则是掌握嵌入式软件开发技能的人才供应缺口巨大。嵌入式就业前景之所以这么好,是因为嵌入式技术人才稀缺,身价自然就高。从收入上来说,嵌入式人才是当之无愧的白领。
相关数据表明:早在2004年,全球嵌入式系统产品的产值已经达2000亿美元。2006年与嵌入式软件对应的设备全球时常出货量达到14亿台,2009年将达到22亿台。与之对应的是,2006年中国嵌入式软件的市场价值是220亿元,2010年将达到550亿元。移动嵌入式产品则将是未来销量增长最快的消费电子类产品之一。嵌入式系统的广泛应用带来的必然是对相关技术人才的极大需求,然而与这组逐年攀升的数字呈现对比的是国内嵌入式软件领域技术人员的极度匮乏。在中国的各大跨国公司及国内家电巨头如INTEL、TI、SONY、三星、TCL、联想和康佳等企业,都面临着嵌入式人才严重短缺的问题。据悉,目前国内3G核心嵌入式人才不足10000人,以区区10000人的阵容去争夺价值数百亿元的市场,其尴尬局面可想而知。
据了解,初入门的嵌入式开发人员月薪一般都能达到3000-5000元,中高级开发人员年薪都在万元以上,有10年工作经验的高级嵌入式工程师年薪在30万元左右。此外,嵌入式人才的工作环境与发展前景也有优势:一是工作强度相对较低。搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事,所开发的产品通常是通用的,不会因客户的不同而修改,一个产品型号开发完了,往往还有较长一段空闲时间进行充电和休整。二是职业发展相对顺利。从事企业应用软件的人,工作范围广,项目变化大,日常的积累很难产生质变,容易遭遇职业瓶颈;而从事嵌入式软件的人,所涉及的专业技术范围就是比较固定的一个领域,时间长了会越来越有经验。
从上面的文章中我们都应该对嵌入式就业前景有了很深的认识,既然现在嵌入式就业前景这么好,对嵌入式有兴趣的朋友可要把握住机会了,无论是自学还是参加培训都要抓紧,毕竟趁现在嵌入式就业前景这么好的时候找一份不错的工作还是不难的。
【优劣分析】
从事嵌入式软件开发的好处是:
(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。
(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。
(4)兴趣所在,这是最主要的。
从事嵌入式软件开发的缺点是:
(1) 入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。
(2)这方面的企业数量要远少于企业计算类企业。
(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。
(4)平台依托强,换平台比较辛苦。
【总体规划】
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等。
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。
说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。
注意:要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。
不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!
技术是通过编程编程再编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫长。而是要编程编程再编程,完了再编程,再编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。
【详细规划】
这个是购买的视频目录,其实已经把嵌入式学习的步骤总结出来了:
**第一阶段--环境及基础篇**
05 软件视频包-嵌入式Linux软件开发入门培训视频
共有46个视频,介绍嵌入式linux 入门需要掌握的基础知识,包括linux 的基础知识,shell基础,vi编辑器,包括嵌入式linux 的C语言编程 学习完本视频可以掌握C语言和linux,对linux下的C编程有一定的了解。
如果还没有基础,建议从最基本的C语言和linux开始学。如果你觉得你的基础还不错,也可以跳过这部分,但是建议还是复习一遍,毕竟基础扎实一点更好。
06_1 软件视频包-Linux强化视频
强化下Linux方面的知识,这个文件夹下有个《01 Linux学习视频》,当然,如果你觉得你的Linux还可以的话,这部分的内容是可以跳过的,这样的速度更快
06_2 软件视频包-Linux强化视频
其中02 Linux 深入网络视频是接上06_01上的,这部分的内容是讲Linux网络工程师的,这部分的内容我们可以先不学
03 Linux shell强化视频这部分的视频我们需要学习下,毕竟shell在嵌入式行业中还是需要使用的,学习这部分的内容最重要的是也要动手去操作,老师写了什么脚本,我们也应该去跟着写下,运行下
04 Linux shell深入视频也可以学习,这样对于shell 我们就有了完整的了解。
07 软件视频包-Linux下的C编程上
这个主要介绍Linux下的C编程和调试环境,这部分的教程很不错,因为这部分的教程老师也讲了很多的例子,这部分的内容也有对应课本,建议也可以购买下,《新手学Linux C编程》
08 软件视频包-中嵌第一阶段(Linux系统基础)
其实本部分的内容和前面的内容有点重复,还是那句老话,觉得简单的跳过,不然就当复习,因为很多知识就是要靠重复记忆的。 还有一点就是老师讲课都有带一些实验,记得你也要动手操作,反正环境都有了,操作了才不容易忘记。
在这里,也告诉大家一个很好用的查询Linux函数如何使用的方法,一般我们可以是用man进行查询,比如我们要查询memcpy这个函数是怎么使用的,有什么样的参数,需要引入什么的头文件,我们只需要在终端中输入man memcpy就可以查询到手册,也可以查询到这个函数的使用方法。
**第二阶段--Linux应用编程强化阶段**
09 软件视频包-Linux下的C编程下
这部分的内容一定要认真看,这是您打好基础的时候,还有一点,再次强调下,就是老师上课上说的程序您一定要去实验,可以先在虚拟机上写程序,不要觉得我听懂了,那为了进度,就一直看下去,记住,动手才是最重要!动手绝对可以加深您的理解!
10 软件视频包-中嵌第二阶段(Linux编程)
这部分的内容很重的,希望你们在学习的过程中多动手,也记下笔记,方便以后的复习。
**第三阶段--嵌入式学习阶段**
11_1 硬件视频包-可选-单品机经典培训教程
这个简单建议你学习下单片机,毕竟单片机还是比较简单,但是如果你想直接进入下一步第三阶段(ARM程序设计)也未尝不可。
11_2 硬件视频包-可选-单品机经典培训教程
本阶段是可选阶段
12_1 硬件视频包-可选-数字电子技术基础
本阶段是可选阶段,可以说这部分的内容几乎覆盖了整个嵌入式硬件的基础
硬件方向,无基础的同学可先别学,这个阶段适合以后想学习硬件的同学,但是我不建议没有基础的同学去搞硬件,相对入门比较难,如果以后想做嵌入式的软件的同学也可以不急着看硬件的内容。当然了解下更好
13 硬件视频包-可选-电路分析培训教程
本阶段是可选阶段
14 软件视频包-中嵌视频第三阶段(ARM)
这部分还是很不错的,唯一有点遗憾是视频27 28 29由于老师录制的时候忘记录制声音了,导致没有声音,不过这影响不大,我们可以看关于国嵌的相应的内容不至于断节。
相关的知识其实还好我们有其他的视频可以代替了,可以参考 光盘 (07)\16 软件视频包-ARM初学者视频\第一讲 ARM体系结构和软件(2) 这部分的内容也是讲ARM处理器以及指令的。
15 软件视频包-ARM初学者工具使用方法
这部分我们主要讲解一些ARM开发使用的工具,老师在讲解的此课
程的时候,我们需要了解他的原理,以及怎么样把这些知识应用到不同的
开发板
16 软件视频包-ARM初学者视频
不过不一定要去买他们的开发板的,关键你要把这些外设的原理和
ARM的相关知识掌握
17_1 软件视频包-ARM开发板视频教程
如果学习本教程的时候,您需要安装ubuntu,可以直接从光盘 (17)\32
开发工具包-安装好的ubuntu拷贝
这些内容都是相对比较抽象,如果有什么不懂的,不明白的,一定要先记住概念,等你以后接触多了,遇到相关的知识时,你会豁然开朗的
17_2 软件视频包-ARM开发板视频教程
PS:学习至此,我们对于linux 编程,ARM的体系结构都有了一定的了解,以及对于嵌入式常见的各种外设熟悉了。其实现在对于嵌入式系统的知识还是比较欠缺的,而这些其实是非常重要的,虽然不能说可以决定你的高度,但是了解嵌入式系统,可以它却可以决定你的宽度,了解了嵌入式系统,对于你以后程序优化,程序分析都有非常大的帮助
18 软件视频包-嵌入式系统30学时
19 软件视频包-嵌入式系统设计培训教程
20 软件视频包-ARM S3C44B0 嵌入式微处理器原理及应用
21_1 软件视频包-嵌入式系统及应用开发培训视频
21_2 软件视频包-嵌入式系统及应用开发培训视频
接下来的关于嵌入式系统的课程知识点很宽,比培训机构的视频没有深度,但是更有广度,培训机构的内容太功利化,只教要用的知识,其实这是不够的,如果真的要学好,你还是需要懂得方方面面后才能再精通某一方面。
**第四阶段--嵌入式高级阶段 **
25_1 软件视频包-底层内核和驱动培训视频
25_2 软件视频包-底层内核和驱动培训视频
26_1 软件视频包-驱动内核学习阶段
这部分主要讲关于u-boot分析之编译,u-boot分析之Makefile结构分析以及u-boot分析之源代码分析等等
26_2 软件视频包-驱动内核学习阶段
这部分主要讲u-boot分析之u-boot命令实现,u-boot分析_uboot启动内核,内核启动流程分析之编译体验,内核启动流程分析之配臵,内核启动流程分析之Makefile,内核启动流程分析之内核启动,构建根文件系统之init 进程分析,.构建根文件系统之构建根文件系统。
26_3 软件视频包-驱动内核学习阶段
这部分主要讲构建根文件系统之启动第1个程序、构建根文件系统之busybox、字符设备驱动程序之概念介绍、字符设备驱动程序之LED驱动程序、字符设备驱动程序之查询方式的按键驱动程序、字符设备驱动程序之中断方式的按键驱动、字符设备驱动程序之poll机制、字符设备驱动程序之异步通知、字符设备驱动程序之同步互斥阻塞。
27软件视频包-中嵌第四阶段(驱动内核)
讲述内核,驱动,UBOOT, makefile 等等。 还有嵌入式图形用户界面的编程-Qtopia(Embedded) 嵌入式Boa视频服务器项目指导 通过Make与Makefile对Linux进行移植与裁剪 Uboot介绍以及用Uboot下载Linux内核到三星S3C2410开发板上(基于ARM9内核).
**第五阶段--嵌入式实践阶段 **
28 实践开发包
29 行业视频包
**第六阶段--嵌入式深化阶段**
31 软件视频包-linux 内核编程初级班培训教程
软件视频包-linux内核编程初级班培训教程.rar共有30个视频,都是基于代码分析的,讲述linux内核的基础知识,汇编及保护模式,linux内核体系结构,linux引导程序分析,linux内核代码分析,linux块设备驱动程序分析
32 开发工具包-安装好的ubuntu
这个是安装好的ubuntu,可以用于之前的一些课程的学习
33 开发工具包-RedHat企业版安装光盘
34 软件视频包-linux 内核编程高级班培训教程
如果想学习内核,值得推荐。包括AT&T汇编语法格式 、通用链表、系统寄存器 、寻址方式 、页式内存管理机制、异常与中断处理 、启动步骤、start_kernel简介 内存管理数据结构、用户堆栈空间的扩展、交换页面的分配与释放、分配物理页面、slab机制、外设存储空间的映射、brk、mmap、进程结构要素、创建进程、进程调度与切换、强制调度、中断初始化与响应服务过程、tasklet机制、系统调用、文件系统概述、文件名到i节点的解析过程、文件系统的安装与卸载、可执行文件格式、执行目标程序、无名管道、命名管道、信号、1pci总线、2扫描pci设备、3pci总线中断初始化、4为pci设备分配总线地址。
嵌入式书籍推荐:
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)*
硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
英语基础
1、《计算机与通信专业英语》
系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 *
3、《Building Embedded Linux Systems》
理论基础
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本身。算法,架构方式等都很重要。