【VC++开源代码栏目提醒】:本文主要为网学会员提供“嵌入式软件工程师学习指南1 - 技术总结”,希望对需要嵌入式软件工程师学习指南1 - 技术总结网友有所帮助,学习一下!
嵌入式软件工程师学习 1. 嵌入式软件课程体系 自学嵌入式确实不大现实当然也不是说没有这个可能毕竟嵌入式难度也是比较大的。
嵌入式的应用主要是几个方向 一是系统开发侧重开发环境搭建、内核原理、交叉编译等 二是嵌入式Linux应用开发侧重Linux应用编程、内核编译、系统调用 三是底层驱动开发侧重嵌入式Linux系统下的驱动开发、内核的深入分析。
不过初进门者主要往系统开发和应用开发发展有了相关工作经验再进一步向底层驱动靠。
嵌入式课程的目标想自学完课程要掌握以下知识点 ◆ Linux命令、工具和C编程基础 ◆ 嵌入式Linux C语言强化 ◆ 嵌入式Linux上的C编程训练 ◆ Linux高级编程及编程训练 ◆ 嵌入式ARM处理器体系结构及编程训练 ◆ 嵌入式Linux内核环境搭建和编程训练 ◆ 嵌入式Linux驱动理论及驱动程序开发训练 ◆ Android应用研究和系统开发 ◆ Android体系结构和系统移植 ◆ 嵌入式ARM Linux项目实践和训练 嵌入式软件方面最重要的课程包括 1 嵌入式微处理器结构与应用 这是一门嵌入式硬件基础课程我院用这门课取代了传统的“微机原理与接口”课程目前国内已有少部分高校IT专业这样做了因为讲x86微机原理与接口很难找到实际用处只为教学而已。
我们说过嵌入式是软硬件结合的技术搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解包括ARM的汇编指令系统。
若不了解处理器原理怎么能控制硬件工作怎么能写出节省内存又运行高速的最优
代码嵌入式软件设计特别讲究时空效率怎么能写出驱动程序驱动程序都是与硬件打交道的很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器将来若同学到公司中从事嵌入式软件开发公司都会给你一本该设备的硬件规格说明书 xxx Specification您必须能看懂其中的内存分布和端口使用等最基本的说明就像x86汇编一样否则怎么设计软件。
有些同学觉得嵌入式处理器课程较枯燥这主要是硬件课程都较抽象的原因等我们的嵌入式实验室10月份建好后您做了一些实验后就会觉得看得见摸得着。
还有同学对ARM汇编不感兴趣以为嵌入式开发用C语言就足够了。
其实不应仅是将汇编语言当成一个程序设计语言学汇编主要是为了掌握处理器工作原理的。
一个不熟悉汇编语言的人怎么能在该处理器写出最优的C语言
代码。
在嵌入式开发的一些关键部分有时还必须写汇编如Bootloader等可能还包括BSP。
特别是在对速度有极高要求的场合如DSP处理器的高速图像采集和图像解压缩目前主要还要靠汇编写程序我看到过很多公司是这样做的。
当您在一个嵌入式公司工作时在查看描述原理的手册时可能很多都是用汇编描述的我就遇到过这是因为很多硬件设计人员只会写或者喜欢用汇编描述此时您就必须看懂汇编程序否则软硬件人员可能就无法交流。
很多嵌入式职位招聘时都要求熟悉汇编。
2 嵌入式操作系统类课程 除了WinCE的实时性稍差外大多数嵌入式操作系统的实时性都很强所以也可称为实时操作系统Real Time Operating System.从事嵌入式的人至少须掌握一个嵌入式操作系统当然掌握两个更好这在嵌入式的所有技术中是最为关键的了。
目前最重要的RTOS主要包括 第一类、传统的经典RTOS最主要的便是Vxworks操作系统以及其Tornado开发平台。
Vxworks因出现稍早实时性很强据说可在1ms内响应外部事件请求并且内核可极微据说最小可8K可靠性较高等所以在北美Vxworks占据了嵌入式系统的多半疆山。
特别是在通信设备等实时性要求较高的系统中几乎非Vxworks莫属。
Vxworks的很多概念和技术都和Linux很类似主要是C语言开发。
像Bell-alcatel、Lucent、华为等通信企业在开发产品时Vxworks用得很多。
但Vxworks因价格很高所以一些小公司或小产品中往往用不起。
目前很多公司都在往嵌入式Linux转听说华为目前正在这样转。
但无论如何Vxworks在一段长时间内仍是不可动摇的。
与Vxworks类似的稍有名的实时操作系统还有pSOS、QNX、Nucleus等RTOS。
第二类、嵌入式Linux操作系统Linux的前途除作为服务器操作系统外最成功的便是在嵌入式领域的应用原因当然是免费、
开源、支持软件多、呼拥者众这样嵌入式产品成本会低。
Linux本身不是一个为嵌入式设计的操作系统不是微内核的并且实时性不强。
目前应用在嵌入式领域的Linux系统主要有两类一类是专为嵌入式设计的已被裁减过的Linux系统最常用的是uClinux不带MMU功能目前占较大应用份额可在ARM7上跑另一类是跑在ARM 9上的一般是将Linux 2.4.18内核移植在其上可使用更多的Linux功能当然uClinux更可跑在ARM 9上。
很多人预测嵌入式Linux预计将占嵌入式操作系统的50以上份额非常重要。
缺点是熟悉Linux的人太少开发难度稍大。
另外目前我们能发现很多教材和很多大学都以ucOS/II为教学用实时操作系统这主要是由于ucOS/II较简单且
开源非常适合入门者学习实时操作系统原理但由于ucOS/II功能有限实用用得较少所以我院不将其作为教学重点要学习就应学直接实用的比如 uClinux就很实用。
况且熟悉了Linux开发不仅在嵌入式领域有用对开发Linux应用软件对加深操作系统的认识也有帮助可谓一举多得。
据我所知目前Intel、Philip都在大搞ARMLINUX的嵌入式开发Fujitum则是在自己的处理器上大搞Linux开发。
目前在嵌入式Linux领域以下几个方面的人特别难找一是能将Linux移植到某个新型号的开发版上二是能写Linux驱动程序的人三是熟悉Linux内核裁减和优化的人。
我院在该嵌入式Linux方面的课程系列是本科生操作系统必修课然后是Linux程序设计选修课最后是嵌入式Linux系统选修课。
我院在Linux方面目前已有较强力量魏老师和张老师熟悉Linux开发金老师和唐老师熟悉Linux系统管理。
第三类、 Windows CE嵌入式操作系统Microsoft也看准了嵌入式的巨大市场MS永远是最厉害的WinCE出来只有几年时间但目前已占据了很大市场份额特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合WinCE目前已很流行据说有一家卖工控机的公司板子卖得太好以至来不及为客户裁减WinCE。
WinCE目前主要为4.2版.NET开发平台主要为WinCE Platform Builder有时也用EVC环境开发一些较上层的应用由于WinCE开发都是大家熟悉的
VC环境所以我院学过Windows程序设计课程的同学都不会有多大难度这也是WinCE容易被人们接受的原因开发环境方便快速微软的强大技术支持WinCE开发难度远低于嵌入式Linux。
对于急于完成不想拿嵌入式Linux冒险的开发场合WinCE是最合适了找嵌入式Linux的人可没那么好找的毕竟公司不能像学生学习那样试试看保证开发成功更重要。
根据不同的侧重点WinCE还有两个特殊版本一个是MS Pocket PC操作系统专用于PDA上掌上电脑另一个是MS SmartPhone操作系统用于智能手机上带PDA功能的手机两者也都属于WinCE平台。
在PDA和手机市场上除WinCE外著名的PDA嵌入式操作系统还有Palm OS因出现很早很有名、Symbian等但在WinCE的强劲冲击下Palm和Symbian来日还能有多长我院可能是全国高校中唯一一家开设专门的“Windows CE嵌入式操作系统“课程的学校这主要是基于以下原因我院本身前面便有Windows程序设计课程同学学过
VC后再学WinCE非常方便自然通过学习WinCE同样也可了解嵌入式软件的一般开发过程对Linux有惧怕心理的同学也很合适。
很显然嵌入式Linux永远不可能替代WinCE而且将来谁占份额大还很难讲毕竟很多人更愿意接受MS的平台就像各国政府都在大力推LINUX已好长时间但您能看到几个在PC机上真正使用LINUX的用户据我观察目前在嵌入式平台上LINUX是叫得最响但还是WinCE实际用得更多。
嵌入式LINUX可能更多地是一些有长远产品计划的公司为降低成本而进行长远考虑。
此外微软亚洲研究院对我院WinCE课程的支持计划我们也很希望将来我院能有同学通过微软的面试去实习。
WinCE和多媒体如MPEG技术是微软亚洲工程院目前做得较多的项目领域之一他们很需要精通WinCE的人。
总结 关于嵌入式操作系统类课程若您觉得自己功底较深且能钻研下去则可去学嵌入式Linux若您觉得自己
VC功底较好且想短平快地学嵌入式开发则我院的WinCE课程是最好的选择。
3 嵌入式开发的其它相关软件课程 搞嵌入式若能熟悉嵌入式应用的一些主要领域这样的人更受企业欢迎。
主要的相关领域包括 A、数字图像压缩技术这是嵌入式最重要最热门的应用领域之一主要是应掌握MPEG编解码算法和技术如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。
为此我院已预订了一位能开设数字图像处理课程的博士。
B、通信协议及编程技术这包括传统的TCP/IP协议和热门的无线通信协议。
首先大多数嵌入式设备都要连入局域网或Internet所以首先应掌握TCP/IP协议及其编程这是需首要掌握的基本技术其次无线通信是目前的大趋势所以掌握无线通信协议及编程也是是很重要的。
无结通信协议包括无线局域网通信协议802.11系列Bluetooth以及移动通信如GPRS、GSM、CDMA等。
C、网络与信息安全技术如加密技术数字证书CA等。
我院有这方面的选修课。
D、DSP技术DSP是Digital Signal Process数字信号处理的意思DSP处理器通过硬件实现数字信号处理算法如高速数据采集、压缩、解压缩、通信等。
数字信号处理是电子、通信等硬件专业的课程对于搞软件的人若能了解一下最好。
目前DSP人才较缺。
如果有信号与系统、数字信号处理等课程基础对于学习MPEG编解码原理会有很大帮助。
4嵌入式开发的相关硬件基础 对于软件工程专业的学生从事嵌入式软件开发像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。
另外汇编语言、C/C、数据结构和算法、特别是操作系统等软件基础课也是十分重要的。
我们的主要目地是能看懂硬件工作原理但重点应是在嵌入式软件特别操作系统级软件那将是我们的优势。
我们的研究生里有些是学电子、通信类专业过来的有较好的模拟电路和单片机基础学嵌入式非常合适。
嵌入式本身就是从单片机发展过来的只是单片机不带OS而现在很多嵌入式应用越来越复杂以至不得不引入嵌入式操作系统。
另外为追求更高速的信号处理速度现在在一些速度要求较高的场合有不少公司是将一些DSP算法如MPEG压缩解压缩算法等用硬件来实现这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术这方面的人目前市场上也很缺。
2. Window CE操作系统 Windows CE是微软公司嵌入式、移动计算平台的基础它是一个开放的、可升级的32位嵌入式操作系统是基于掌上型电脑类的电子设备操作系统。
WinCE 4.0及其以后的版本开始用windows CE.NET这个名称比如WinCE.NET4.0、WinCE.NET4.2、WinCE.NET5.0、WinCE.NET6.0等而之前的版本1.0 2.0 3.0用的是windows CE这个名称一般就叫wince1.0、wince2.0、wince3.0。
现在最新的版本是WinCE.NET 6.0而windows mobile是从wince发展出来的一个用于手机开发的嵌入式操作系统。
说起Windows CE其实很多人心里都很迷惑它有很多版本而且从Windows CE本身也发展出了很多专用于掌上电脑、手持设备等方面的系统比如ppc等。
这里我们先从版本上来看一下整个Windows CE的发展历程它与ppc以及Smartphone的瓜葛我们将在以后的帖子里详细讲解总结的不对的地方也希望坛友们帮忙指正哦 一、Windows CE是什么 Windows CE是微软公司嵌入式、移动计算平台的基础它是一个开放的、可升级的32位嵌入式操作系统是基于掌上型电脑类的电子设备操作系统它是精简的Windows 95Windows CE的图形用户界面相当出色。
其中CE中的C代表袖珍Compact、消费Consumer、通信能力Connectivit和伴侣CompanionE代表电子产品Electronics。
与Windows 95/98、Windows NT不同的是Windows CE是所有源
代码全部由微软自行开发的嵌入式新型操作系统其操作界面虽来源于Windows 95/98但Windows CE是基于WIN32 API重新开发、新型的信息设备的平台。
Windows CE具有模块化、结构化和基于Win32应用程序接口和与处理器无关等特点。
Windows CE不仅继承了传统的Windows图形界面并且在Windows CE平台上可以使用Windows 95/98上的编程工具如Visual Basic、Visual C等、使用同样的函数、使用同样的界面风格使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。
二、Windows CE都有哪些版本 Windows CE的核心至今已经有1.0、2.0、3.0三种版本若细分小改版则是不计其数 因为Windows CE并非是专为单一装置设计的所以微软为旗下采用Windows CE作业系统的产品大致分了三条产品线Pocket PC掌上电脑、Handheld PC手持设备及Auto PC。
自3.0以后Windows CE从版本上来看主要有4.0、4.2和5.0。
WinCE1.0 WINCE1.0是一种基于Windows95的操作系统其实就是单色的Windows95简化版本。
90年代中期卡西欧推出第一款采用WinCE1.0操作系统的蛤壳式PDA算是第一家推出真正称得上手掌尺寸的掌上电脑厂商。
作为第一代的WinCE1.0于1996年问世不过它最初的发展并不顺利。
当时Palm操作系统在PDA市场上非常成功几乎成为了整个PDA产品的代名词在这种情况下微软公司被迫为最初WinCE的不断改进的同时微软公司也通过游说、技术支持、直接资助等手段聚集了大量合作厂商使WinCE类的PDA阵容越来越强大。
WinCE2.0 随着Windows95的出现和Windows98的成功另外一个巨人—微软站起来了并迅速地在PC操作系统业界建立了微软帝国。
PDA市场的发展潜力被众多分析家看好嗅觉异常灵敏的“微软”自然不会放过这样一个巨大的市场在其操作系统帝国已经非常稳定的前提下又开始了在PDA市场上的全力冲刺用WinCE2.0操作系统来打造与Palm非常类似的掌上产品。
WinCE2.0不仅比CE1.0快的多而且的彩色显示又众多新型PDA采用新的WinCE2.0系统大有取代Pilot的趋势成为PDA操作系统新的标准。
尽管CE2.0仍然要比Pilot的操作系统需要的空间要大的多但它具有Windows的界面会用PC的人小编估计没有多少人不会使用微软的操作系统。
如果你熟悉Windows95在使用Windows CE的时候就熟门熟路了就不需要重新学习。
而且两者技术上的相似性第三方Windows应用软件开发商们就可以很容易地把自己的应用软件转换成可供CE运行的版本因此Windows CE的可使用软件的种类将会越来越多的。
WinCE3.0 WinCE3.0是微软的Windows Compact Edition是一个通用版本并不针对掌上产品标准PC、家电和工控设备上也可以安装运行但要做许多客户化工作当然也可以做掌上电脑。
微软鼓励大家在任何硬件平台WinCE3.0支持5系列CPU: x86 PowerPC ARM MIPSSH3/4 上使用为了和VxWorksLinux等竞争所以早期的WINCE运行在不同的硬件平台上。
WinCE3.0 Licence费用为20 10 Licence起批量时大致能降到15/Licence。
2000年微软公司将WinCE3.0正式改名为Windows for Pocket PC简称Pocket PC。
就是把Pocket Word和Pocket Excel等一些日常所需的办公软件的袖珍版装了进去Pocket PC同时在娱乐方面的性能做很大的加强。
当然对于微软的所有举动捧场的厂商自然也不会少加入Pocket PC 阵营的现在就有HP、Compaq、Casio等一些著名厂商。
当Compaq的iPAQ 3630的诞生和在市场的热销支持和加入Pocket PC阵营的厂商就越来越多。
2002年智能手机商机再现不少PPC厂商希望推出整合手机功能的PPC于是在2002年8月专门为手机优化过的微软Pocket PC 2002 Phone Edition操作系统匆匆问世2002年10月国内第一款PPC手——多普达686上市了随后熊猫推出了CH860、联想推出ET180。
注低于3.0的Windows CE没有手机版本关于Pocket PCppc的话题这里先暂停下后面会讲到。
WinCE4.0 WinCE.Net即WinCE 4.0是微软于2002年1月份推出的首个以.Net为名的操作系统从名字上我们就可以知道它是微软的.net的一部分。
WinCE.Net是WinCE3.0的升级同时还加入.Net Framework精简版支持蓝牙和.Net应用程序开发。
WinCE4.2 Windows CE.NET 4.2是Windows CE.NET 4.0/4.1的升级版对Windows CE先前版本的强大功能进行了进一步的扩充和丰富基于其开发的设备将从这些微小但重要的变化中获得更好的性能和更强的Windows集成功能。
微软在WinCE4.2版时曾提供开放源
代码不过只针对研究单位而程序
代码较少为200万行。
WinCE5.0 WinCE5.0在2004年5月份推出微软宣布WinCE5.0扩大开放程序源
代码。
在这个开放源
代码计划授权下微软开放250万行源
代码程序作为评估套件evaluationkit。
凡是个人、厂商都可以下载这些源
代码加以修改使用未来厂商OEM时则再依执行时期Run-time授权支付Win CE5.0核心每台机器3美元的授权费用这也是微软第一个提供商业用途衍生授权的操作系统。
wince6.0 wince 6.0是微软于06年11月份推出的也是目前wince的最高版本。
微软在wince 6.0推出时宣布完全公开内核源
代码这是微软难得的大动作主要是迎击Linux、Wind River阵营长期以来对其定制化不足的攻击。
微软硬件合作伙伴可以修改源
代码开发定制化的文件系统、设备驱动程序与其他元件而不需分享他们的最终设计给微软或第三方。
注
开源不等于免费使用wince6.0进行嵌入式开发用户仍需要为开发工具platform builder付费为开发板厂商提供的bsp开发包付费还要为生产的产品付授权费。
所以总体来说该花的钱一分也不会少只不过以前花了钱也不给源
代码现在花了钱能给源
代码了 。
另外Visual Studio Visual Studio 2005专业版也被包含在Win CE 6.0的开发工具中而Platform Builder成为Visual Studio 2005专业版的外挂程序plug-in协助设计人员完成从嵌入式操作系统定制化到应用程序开发等所有工作缩短产品开发的上市时程。
微软称WinCE 6.0可同时支持32000个程序和每个程序高达2GB的虚拟内存定址空间且保有软件的实时real-time功能开发人员可把更多应用程序加入到更复杂的设备中。
作者华清远见嵌入式培训中心 3. Windows CE的开发流程 来源赛迪网技术社区 作者对手太强 这篇文章的目的并不是介绍Windows Embedded CE开发的方方面面只是用一个初涉嵌入式领域的软件开发者的视角来介绍Windows CE开发中最常用的概念和知识解决大家会在实际开发中碰到的一些小问题让大家了解嵌入式开发与应用程序开发到底有哪些不同。
Windows CE概述 从6.0版本开始Windows CE的名字改为Windows Embedded CE当然这也是为了结合Windows Embedded品牌作出的改变。
CE经过了十年的风风雨雨之后终于在CE 6.0这个版本上再次浴火重生了。
CE 6.0经历了CE历史上第二次内核重写使CE操作系统更加符合当今嵌入式开发的方向。
CE 6.0在内核方面的改变主要是为了适应嵌入式设备硬件发展的要求在进程数量方面从过去最多运行32个进程改变为最多运行3万2千个进程内存方面从每个进程最多拥有32M虚拟内存空间改为最多拥有2G虚拟内存空间。
在OS布局方面将关键的驱动程序、文件系统和图形界面管理器GWES移到了内核中这样可以更好解决因为CPU在内核态和用户态间切换而造成的性能损失。
当然从以上的改变我们可以看到CE 6.0较之前版本更加“重量级”了。
操作系统领域关于“微内核”的争论已经持续了很多年CE的改变也许会为某个学派的观点提供支持。
但我们必须指出的是正因为目前的嵌入式设备硬件已经可以支持比较“重量级”的操作系统了所以CE 6.0才会做出如此改变。
CE针对开发者的另一个转变开始自CE 5.0将开发环境Platform Builder整合到Visual Studio中这种做法无疑减轻了微软维护两套IDE的负担从另外一个方面来看CE的开发者也可以享受到更好的开发体验了。
嵌入式开发流程 也许很多初涉嵌入式开发领域的程序员会被一系列的新名词搞得头昏脑胀在这里我希望能够将嵌入式开发的流程展现给大家。
嵌入式开发主要分为三个比较大的部分 1、驱动程序开发 这部分开发是从硬件设计开始的硬件工程师会设计PCB板为我们提供标准开发板SDBStandard Development Board。
当我们拿到开发板之后的第一件事情就是编写boot-loader让开发板启动起来一般是通过JTGA将boot-loader烧录到开发.