随着IT产业的发展和人们生活水平的提升,“家庭自动化”、“智能家居”、 “网络家电”、“家庭网络”等技术的发展正受到人们的密切关注,相关产品也在逐渐成熟。进一步完善“智能家居”(SmartHome),更好地实现上面描述的情景,给人们的生活带来本质的变化,就是研究家庭自动化技术的意义所在。linux
下面叙述在智能家居中嵌入式操做系统的开发背景:
传统的嵌入式应用程序通常是基于单任务机制的1151。在这种机制下,系统程序由基于主循环的按固定顺序的功能模块加上一些中断模块构成。这种机制具备程序流程简洁明了,易于编写、控制和修改等特色,在相对简单的应用场合获得普遍应用。现有的智能家居设备软件不少都采用了这种方法来编写,如咱们改造设计的伊莱克斯(Electrolux) EW2208F型网络洗衣机、伯乐DCB-198网络冰箱、格兰仕(GaLanz) WD90ODSL23-2网络微波炉、日本松下电工的WT5572WK调速调光器等。c++
在实际应用中,多数嵌入式系统的功能复杂而且时间要求严格并且准确,在这种状况下,单任务机制每每难以胜任。这时,嵌入式系统每每能够分解为多个相对独立的模块,将这些模块理解为任务,从而引入多任务机制进行管理。引入多任务机制后,能够简化系统程序设计,知足各个任务不一样的实时性要求。git
展望:随着计算机技术、嵌入式系统和通讯技术的不断进步,家庭楼宇自动化科技的快速发展,展望嵌入式系统在家庭楼宇自动化的进一步应用,提出了如下计划:
.把16位/32位嵌入式微处理器进一步应用到家庭智能控制系统中。
.在家庭智能控制系统中,进一步集成安防、照明、门禁、监控、远程设
置等子系统,实现系统的高度集成化、智能化。
.运用电话、互联网、短消息、GPRS等通信方式,实现系统的远程控制
.实现语音识别控制家用设备
.在深刻理解现有家庭楼宇自动化协议的基础上,争取完成具备自主知识产权,能被市场普遍接纳的家庭楼宇自动化协议的制定。
.在扎实的理论实践基础上,争取在嵌入式操做系统的核心技术上取得突破,完成自主知识产权的嵌入式操做系统的开发。
上述计划仍依照按部就班的原则,最终实现家庭楼宇自动化在国内应用的推广,以及嵌入式核心技术及自主知识产权的得到。程序员
随着经济的发展,人们物质文化需求的日益增加,家庭楼宇自动化系统能大大提升人们的生活品质,为人们带来高度智能化的生活,其市场前景是至关广阔的。在深刻研究嵌入式系统以及家庭楼宇自动化协议,吸取国外先进技术的同时,也要放宽眼界,立足于自主研发和自主知识产权。近年来我国家电业遭遇的一系列技术壁垒已经为咱们敲响了瞥钟,国内厂商也加紧了自主协议标准的研发步伐。做为科研技术人员,应充分发挥创造性,以提升我国科学技术水平为根本,在家庭楼宇自动化这一领域方兴未艾之时,抓住机遇,占据一席之地算法
*家庭自动化系统的出现是以计算机、嵌入式系统和通信技术的快速发展为前提的,其中嵌入式系统扮演了很是重要的角色。shell
【嵌入式系统定义】
嵌入式系统一般被定义为:以应用为中心,软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统[131,它主要包括四个部分:嵌入式微处理器、外围硬件设备、嵌入式操做系统、应用软件系统等]数据库
目前在商业应用领域中主要有VxWork, uC/OS, uCLinux, RTX51等嵌入式操做系统。编程
【就业前景】
我国嵌入式就业前景很是好,由于嵌入式系统和软件是当前最热门而且最有发展前途的IT应用领域之一,下面就给你们分析一下嵌入式就业前景。ubuntu
要说嵌入式行业,就要先从嵌入式系统和软件提及。嵌入式系统和软件是指嵌入在硬件中的非PC操做系统和开发工具软件,分为嵌入式操做系统、嵌入式支撑软件、嵌入式应用软件,被称为“驱动系统的灵魂。”从昔日的时尚电子产品-MP三、手机、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)平台依托强,换平台比较辛苦。
【整体规划】
一、基础知识:
目的:能看懂硬件工做原理,但重点在嵌入式软件,特别是操做系统级软件,那将是个人优点。
科目:数字电路、计算机组成原理、嵌入式微处理器结构。
汇编语言、C/C++、编译原理、离散数学。
数据结构和算法、操做系统、软件工程、网络、数据库。
方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不必定全学,可根据须要选修。
主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。
二、学习linux:
目的:深刻掌握linux系统。
方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深刻代码。
主攻书籍:linux内核彻底剖析、unix环境高级编程、深刻理解linux内核、情景分析和源代。
三、学习嵌入式linux:
目的:掌握嵌入式处理器其及系统。
方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编便可,不要重复x86。
(2)嵌入式操做系统类:ucOS/II简单,开源,可供入门。然后深刻研究uClinux。
(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。
主攻书籍:毛德操的《嵌入式系统》及其余arm9手册与arm汇编指令等。
四、深刻学习:
A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。
B、通讯协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。
C、网络与信息安全技术:如加密技术,数字证书CA等。
D、DSP技术:Digital Signal Process,DSP处理器经过硬件实现数字信号处理算法。
说明:太多细节未说明,可根据实际状况调整。重点在于一、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基础
一、《Linux与Unix Shell 编程指南》 *
C语言基础
一、《C Primer Plus,5th Edition》【美】Stephen Prata着
二、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
三、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
四、《嵌入式Linux应用程序开发详解》 *
Linux内核 一、《深刻理解Linux内核》(第三版)
二、《Linux内核源代码情景分析》毛德操 胡希明着
研发方向
一、《UNIX Network Programming》(UNP)
二、《TCP/IP详解》
三、《Linux内核编程》
四、《Linux设备驱动开发》(LDD)*
硬件基础
一、《ARM体系结构与编程》杜春雷着
二、S3C2410 Datasheet
英语基础
一、《计算机与通讯专业英语》
系统教程
一、《嵌入式系统――体系结构、编程与设计》
二、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 *
三、《Building Embedded Linux Systems》
理论基础
一、《算法导论》
二、《数据结构(C语言版)》
三、《计算机组织与体系结构?性能分析》
四、《深刻理解计算机系统》【美】Randal E. Bryant David O''Hallaron着
五、《操做系统:精髓与设计原理》
六、《编译原理》
七、《数据通讯与计算机网络》
八、《数据压缩原理与应用》
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自己。算法,架构方式等都很重要。