如何学好嵌入式

合集下载

《嵌入式》课程标准

《嵌入式》课程标准

《嵌入式》课程标准《嵌入式技术》课程教学标准目录一、课程名称二、适用专业三、必备基础知识四、课程的地位和作用五、主要教学内容描述六、重点和难点七、内容及要求八、说明一、课程名称:嵌入式技术二、适用专业:电子测量与仪器三、必备基础知识低频电子线路、数字电子技术、单片机原理及应用四、课程的地位和作用1、课程的地位:专业方向课程2、课程的作用学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,最初级的硬件驱动程序等。

五、主要教学内容描述1、嵌入式Linux系统开发:侧重开发环境搭建、内核原理、交叉编译等2、嵌入式Linux应用开发:侧重Linux应用编程、内核编译、系统调用。

3、嵌入式Linux驱动开发:侧重嵌入式Linux系统下的驱动开发、内核的深入分析。

六、重点和难点1、重点:Linux应用编程、内核编译、系统调用2、难点:嵌入式Linux系统下的驱动开发、内核的深入分析七、内容及要求模块一:嵌入式学习基础1、教学内容(1)Linux 基础(2)Shell 编程基础(3)Linux 下的 C 编程基础2、教学要求(1)掌握学学习嵌入式所必须的基本功(2)了解Linux 基础(3)理解Shell 编程基础3、教学手段及方法:多媒体、演示、讨论4、实训项目及要求(1)项目1:安装Linux操作系统内容:安装Linux操作系统、Linux启动过程详解要求:熟练使用Linux系统的基本命令目的:认识Linux系统的常用服务(2)项目2:Shell 编程内容:编写一个测试服务器是否连通的shell脚本程序、编写一个带有循环语句的shell脚本程序、编写一个目录菜单要求:熟悉Linux下的各种Shell、进行shell编程目的:掌握Shell 编程(3)项目3:Linux 下的 C 编程基础内容:编写Hello,World程序、调试一个有问题的程序、编写汉诺塔程序要求:熟悉Gcc编译器、Makefile规则目的:熟悉linux C语言环境模块二:嵌入式开发1、教学内容(1)嵌入式系统开发基础(2)嵌入式系统移植(3)嵌入式Linux 下串口通信(4)嵌入式系统中多进程程序设计(5)嵌入式Linux 网络编程2、教学要求(1)掌握学习嵌入式开发所必须的种种基本技能(2)了解嵌入式开发的基本技能(3)理解嵌入式系统概念3、教学手段及方法:多媒体、演示、讨论4、实训项目及要求(1)项目1:嵌入式系统移植内容:移植Linux2.6内核到ARM9开发板要求:了解移植的概念目的:能够移植Linux内核(2)项目2:Linux下串口通信内容:编写串口通信程序、编写多进程程序要求:熟悉进行串口通信、熟悉文件I/O目的:熟悉串行I/O的基本概念(3)项目3:Linux网络编程内容:使用socket 编写代理服务器、使用socket 编写路由器、编写一个运行在ARM平台的网络播放器、编写一个web服务器要求:了解嵌入式Linux网络体系结构目的:进行嵌入式Linux环境下的socket 编程模块三:项目实战1、教学内容(1)模拟宽带路由器(2)局域网电子点菜系统2、教学要求(1)掌握项目的功能要求(2)了解项目开发的特点(3)理解项目开发基本条件3、教学手段及方法:室外教学、校外实践、社会实践4、实训项目及要求(1)项目1:模拟宽带路由器内容:建立一个内置Web服务器,用NA T方式实现路由功能要求:网卡的半轮询工作模式、网络地址转换——NA T目的:实现一个基于Web管理的简单路由器(2)项目2:局域网电子点菜系统内容:具备与网内应用服务器提取菜单信息以及将客户点菜信息发往应用服务器要求:UDP通讯协议、嵌入式数据库与持久存储目的:实现一个基于UDP通讯的点菜系统八、说明1、建议使用教材和参考资料《嵌入式系统——体系结构、编程与设计》卡莫尔编,贾建斌,李化译,清华大学出版社2、模块学时分配理论、实践、写总结体会4、注意事项(1)教案编写本课程标准对教案的定义是指在本课程完成整体教学设计,确定课程学习项目及各项目组成模块明确的基础上,对每一模块的教学内容按每一教学单元(原则上是2学时为1教学单元)进行的教学方案设计,她包括对本模块学习目标、工作任务、能力要求及学习内容分解到本教学单元中的具体授课内容、课堂活动教学的组织方式与教学要求、课时建议等。

嵌入式软件工程师入门基础知识

嵌入式软件工程师入门基础知识

嵌入式软件工程师入门基础知识嵌入式软件工程师是一种高端的职业,他们的作用是制造、设计和开发最先进的嵌入式系统。

这些系统常常在一些设备上使用,如智能手机、电视机、电子设备和工业设备等等。

作为嵌入式软件工程师,必须要具备一定的基础知识,以下是一些入门基础知识。

1. 学习嵌入式系统基础知识嵌入式软件工程师要首先掌握嵌入式系统的基础知识,如处理器、微控制器、嵌入式操作系统等等。

这些基础知识是开发嵌入式系统所必须的。

2. 掌握编程语言作为一名嵌入式软件工程师,必须熟练掌握C和C ++等编程语言,这两种语言是嵌入式系统开发所必须的编程语言。

3. 熟悉电子电路知识为了能够设计和开发嵌入式系统,嵌入式软件工程师还需要熟练掌握电子电路的知识。

这些知识包括数字电路、模拟电路、信号处理、嵌入式系统电路设计等等。

4. 掌握常用的开发工具开发嵌入式系统时,需要使用各种各样的工具,如调试器、编译器、仿真器等等。

嵌入式软件工程师必须要掌握这些工具,以便在开发嵌入式系统时能够使用这些工具。

5. 学会如何进行测试和调试在嵌入式系统开发中,测试和调试是非常重要的环节。

嵌入式软件工程师必须要学会使用各种测试和调试工具,以便能够快速地找出问题并进行修复。

6. 掌握版本控制系统在嵌入式系统开发中,版本控制系统是非常重要的。

这些系统可以让嵌入式软件工程师进行源代码管理,并且可以方便地协作开发项目。

总之,嵌入式软件工程师必须要具备一定的基础知识,包括嵌入式系统基础知识、编程语言、电子电路知识、常用的开发工具、测试和调试以及版本控制系统等等。

掌握这些知识可以帮助嵌入式软件工程师在开发嵌入式系统时更加得心应手。

如何规划嵌入式学习路线

如何规划嵌入式学习路线

如何规划嵌入式学习路线基础知识学习:了解计算机系统的基本知识,包括操作系统、计算机网络、数据结构和算法等。

学习嵌入式系统的相关知识,包括嵌入式处理器、嵌入式操作系统、嵌入式应用程序设计等。

学习硬件设计的基础知识,如电路设计、模拟电路、数字电路等。

学习C语言和嵌入式系统开发框架,如STM32、Linux等。

学习基础编程:学习嵌入式系统的基础编程,如GPIO、I2C、UART、ADC、PWM等。

学习常用的嵌入式系统开发库和框架,如STM32、Linux等。

学习常用开发工具:学习如何使用开发板的开发工具,如JTAG调试器、烧写器等。

学习如何使用IDE进行嵌入式系统的开发,如Eclipse、Visual Studio等。

实践项目开发:通过实践项目开发,加深对嵌入式系统开发的理解和掌握。

可以选择一些开源项目,如WiFi模块、GPS模块、电机控制器等,进行项目开发。

参加课程和培训:参加一些嵌入式系统开发的课程和培训,可以学习到更多的知识和技能,同时也可以结交一些志同道合的朋友。

需要注意的是,嵌入式系统的学习需要有一定的基础知识和实践经验。

建议在学习过程中选择一些入门级的嵌入式开发书籍和课程,如《C语言嵌入式系统开发》、《嵌入式系统设计与实践》等,同时在实践中不断地学习和提高自己的技能水平。

此外,建议在学习的过程中注重理论与实践的结合,多动手编写代码,不断提高自己的技能水平。

嵌入式物联网需要学的东西真的非常多,不少人因为学的路线不对、内容不对头而和高薪offer擦肩而过,甚至有些老铁压根都不知道要学什么……让人捉急……分享一波自己整理的学习资源吧,基本上要学的内容都有,150多G。

点击这里找小助理0元领取:。

2、怎样学习嵌入式Linux(韦东山)

2、怎样学习嵌入式Linux(韦东山)

作为一个新人,怎样学习嵌入式Linux?(韦东山)被问过太多次,特写这篇文章来回答一下。

在学习嵌入式Linux之前,肯定要有C语言基础。

汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。

C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。

比如写一个数组排序、输入数字求和什么的。

学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析。

以前我是用VC来练习C语言的,经常去尝试着写一些C语言竞赛的题目。

它们是纯C、纯数学、纯逻辑的题目,不涉及界面这些东西,很适合煅炼你的编程能力。

回到主题,首先我们要明白你的目的是什么,大概来说所谓嵌入式Linux 可以分为两部分:底层系统、应用开发。

如果你是想做应用开发,那么你去把C 语言、数据结构、JAVA什么的学好吧。

嵌入式应用开发和PC上的应用开发并没有什么特别要注意的。

也许你说在嵌入式上要做些优化,是的,要优化,但是未经优化的程序和PC上的程序开发没什么差别。

另外,当你有能力去优化时,你已经不用来问这个问题了。

具体到某个例子,比如说开发界面,在PC上我们用VC;在嵌入式Linux里也许我们用QT也许用Android,这个时候你应该去学学QT、Android的编程。

但是基础还是C或JAVA,在此基础上去熟悉它们的接口。

你学过VC的话,也是要花时间去了解那些类、控件的。

如果你的目的是想学习底层系统,这是我的专长,倒是可以说一点。

在回答这个问题之前,我先回答:不少人问我,到底是学驱动还是学应用?我只能说凭兴趣,并且驱动和应用并不是截然分开的1. 我们说的驱动,其实并不局限于硬件的操作,还有操作系统的原理、进程的休眠唤醒调度等概念。

想写出一个好的应用,想比较好的解决应用碰到的问题,这些知识你应该懂2. 做应用门槛低,特别是现在的ANDROID,纯JAVA。

做应用的发展路径个人认为就是业务纯熟。

比如在通信行业、IPTV行业、手机行业,你了解行业的需求。

嵌入式工程师自我修养

嵌入式工程师自我修养

嵌入式工程师自我修养嵌入式工程师自我修养嵌入式工程师是一种需要不断提升自己的职业,因为技术在不断进步,行业也在变化。

自我修养是嵌入式工程师必须具备的一项重要条件。

下面,我将从以下三个方面探讨嵌入式工程师的自我修养。

1.学习能力的提升嵌入式工程师的工作需要持续不断地学习和研究新技术和新产品。

要成为一个好的嵌入式工程师,首先需要有不断学习的意识。

在学习过程中,嵌入式工程师应该注重以下几点:(1)建立知识体系,形成完整的知识结构,掌握基本原理和基本技能。

(2)关注行业动态,掌握各类最新产品、技术和应用,跟踪市场趋势和用户需求。

(3)阅读大量的相关文献,包括技术书籍、学术论文、行业报告等,提高自己的知识水平。

2.实践能力的培养嵌入式工程师的实践能力是非常重要的。

只有在实践中才能真正掌握技能,提高自己的技术水平。

因此,嵌入式工程师应该注重以下几点:(1)积极参与项目,亲自动手去实践。

(2)注重解决实际问题,在项目中紧密结合实际应用场景,掌握核心技术并通过实践不断提高。

(3)积极参与开源社区,学习其他人的优秀实践,不断了解新的技术和方法。

3.团队合作能力的提高嵌入式工程师在工作过程中不仅要有良好的个人能力,还要具备较强的团队合作能力。

因此,嵌入式工程师应该注重以下几点:(1)注重与同事、经理、客户的沟通,及时反馈工作进展。

(2)分享自己的技术经验,为团队成员提供帮助和支持。

(3)协调各方面利益,保证项目的进展和质量。

总的来说,嵌入式工程师自我修养是一个不断提升自己、不断完善自己的过程,需要持之以恒。

希望本文能够对嵌入式工程师们提供一些帮助和参考。

嵌入式系统设计实训课程学习总结嵌入式操作系统移植与应用开发

嵌入式系统设计实训课程学习总结嵌入式操作系统移植与应用开发

嵌入式系统设计实训课程学习总结嵌入式操作系统移植与应用开发嵌入式系统设计实训课程学习总结——嵌入式操作系统移植与应用开发在嵌入式系统设计实训课程中,我学习了嵌入式操作系统移植与应用开发的相关知识,并通过实践项目深化了对这一领域的理解。

本文将对我在这门课程中所学到的内容进行总结,并分享我在实训过程中的体会和收获。

一、嵌入式操作系统移植的基本概念与技术要点1.1 嵌入式操作系统的定义与特点嵌入式操作系统是专门为嵌入式设备设计的操作系统,具有实时性、小巧性、低功耗等特点。

学习过程中,我了解了常见的嵌入式操作系统,如嵌入式Linux、FreeRTOS和VxWorks等,并了解了它们的特点和适用场景。

1.2 嵌入式操作系统移植的基本原理嵌入式操作系统移植是将操作系统适配到目标硬件平台上的过程。

在学习中,我了解了嵌入式操作系统移植的基本原理和步骤,包括硬件驱动适配、中断处理、启动过程等,对于理解操作系统与硬件之间的交互关系有了更深入的认识。

1.3 嵌入式操作系统移植的实践项目实训课程中,我参与了一个嵌入式操作系统移植的实践项目。

在这个项目中,我通过实际操作了解了具体的移植过程和技术要点。

我们选择了嵌入式Linux作为移植对象,在基于ARM架构的开发板上进行了操作系统移植和应用开发。

通过这个项目,我对嵌入式操作系统移植有了更深入的认识,并提升了动手实践的能力。

二、嵌入式应用开发的实践项目2.1 嵌入式应用开发的基本原理嵌入式应用开发是指在嵌入式系统上开发应用程序,利用系统提供的资源和接口实现特定功能。

在实训中,我学习了嵌入式应用开发的基本原理和技术要点,包括编程语言选择、资源管理、任务调度等。

2.2 嵌入式应用开发的实践项目实训过程中,我参与了一个嵌入式应用开发的实践项目。

我们选择了小型智能家居系统作为开发目标,在嵌入式Linux系统上进行了应用程序的开发。

通过该项目,我学习了如何利用操作系统提供的接口与硬件进行交互,并实现了一系列有实际意义的功能,如温度监测、远程控制等。

嵌入式系统学习心得总结

 嵌入式系统学习心得总结

嵌入式系统学习心得总结嵌入式系统学习心得总结嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。

以下为你带来嵌入式系统学习心得总结,希望对你有所帮助!嵌入式系统学习心得总结篇1嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。

特别是随着消费家电的智能化,嵌入式更显重要。

像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。

看到了嵌入式系统的范围,你也应该知道嵌入式系统工程师是做什么的,就是开发上面的那些电子产品的工程师。

关于如何学习嵌入式?学习嵌入式,该学习什么基本的知识呢?首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。

很多人会问,C语言要学到怎么样,我觉得这没有标准的答案。

我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。

其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。

应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。

还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、Android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。

《嵌入式技术及应用》课程标准

《嵌入式技术及应用》课程标准

《嵌入式技术及应用》课程标准一、课程概述嵌入式技术是当前工业自动化、智能设备、物联网等领域中广泛应用的一种技术。

本课程旨在让学生了解嵌入式技术的概念、特点、应用场景和发展趋势,掌握嵌入式系统的基本原理和实现方法,提高学生的实际操作能力和解决问题的能力。

二、课程目标1.掌握嵌入式系统的基本原理和实现方法,包括处理器、内存、外设、操作系统等方面的知识。

2.熟悉嵌入式系统的开发流程和方法,包括需求分析、系统设计、代码编写、测试、调试等环节。

3.能够根据实际需求,选择合适的嵌入式系统平台和应用软件,实现嵌入式系统的应用。

4.能够解决嵌入式系统开发中遇到的问题和故障,提高实际操作能力和解决问题的能力。

三、教学内容与要求1.嵌入式系统概述:介绍嵌入式系统的概念、特点、应用场景和发展趋势,让学生了解嵌入式系统的基本概念和背景知识。

2.处理器和内存:介绍嵌入式系统常用的处理器类型(如ARM、MIPS、X86等),以及内存的种类和特点,让学生了解嵌入式系统中的硬件基础。

3.外设接口:介绍嵌入式系统常用的外设接口(如USB、SPI、I2C、UART等),以及它们在嵌入式系统中的应用,让学生了解嵌入式系统中的外设接口技术。

4.操作系统:介绍嵌入式系统常用的操作系统(如Linux、QNX、uClinux等),以及它们的特点和应用场景,让学生了解嵌入式系统中的操作系统技术。

5.开发环境:介绍嵌入式系统的开发环境(如IDE、编译器、调试器等),以及如何使用它们进行开发,让学生掌握嵌入式系统的开发工具和环境。

6.应用开发:通过实例项目,让学生掌握如何根据实际需求选择合适的嵌入式系统平台和应用软件,实现嵌入式系统的应用,并掌握如何进行测试和调试。

7.问题解决:通过案例分析,让学生了解在嵌入式系统开发中遇到的问题和故障,并掌握如何分析和解决这些问题,提高学生的实际操作能力和解决问题的能力。

四、教学方法与手段1.理论教学与实践教学相结合:通过课堂讲解、案例分析、实践操作等方式,让学生全面了解嵌入式技术的原理和应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何学好嵌入式的嵌入式近来嵌入式挺火,于是大家都往这里挤。

我想提醒大家的是,嵌入式马上也会成为如今的软件业。

在你进来之前请先考虑清楚。

但只要我们真的学精了一样东西,不管它将来变成什么样,哪怕最后只剩下一个人,那个人也一定就是你自己。

很多人以为搞嵌入式就是随便找本书看看,在电脑上编几个程序就完事。

非也,其实嵌入式的门槛是比较高的。

具体如下: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.pdf6、学习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(即软壳)至此,你已学完嵌入式的整流程!但谨记:一个有思想的人才真是一个力量无边的人;有容乃大,能予方强!以下定义语句中正确的是A)char a='A'b='B'; B)float a=b=10.0; C)int a=10,*b=&a;D)float *a,b=&a;从哪弄来的忘了,在这里对作者说对不起了//////////////////////////////////////////////////////////////////////嵌入式开发。

如PDA手机,掌上电脑,在说开点,就是针对硬件做开发,写驱动..这个工资收入相比于纯WEB开发要高一倍我给你找个文章吧呵呵.嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。

嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。

特别是随着消费家电的智能化,嵌入式更显重要。

像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set TopBox)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。

嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。

一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、BoardSupportPackage(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。

他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。

另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。

如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。

嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有“花头“可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。

从事嵌入式软件开发的好处是:(1)目前国内外这方面的人都很稀缺。

一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很找。

嵌入式人才稀缺,身价自然就高,越有经验价格就越高。

其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。

(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。

搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。

相比而言,搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事。

所开发的产品通常是通用的,不会因客户的不同而修改。

一个产品型号开发完了,往往有较长一段空闲时间(或只是对软件进行一些小修补),有时间进行充电和休整。

另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11等),时间长了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。

若搞应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。

(3)哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软件那样容易被盗版。

土木学院有一个叫启明星的公司开发出一个好象叫“工程e”的掌上PDA(南校区门口有广告),施工技术人员用该PDA可当场进行土木概预算和其它土木计算,据说销路特好。

我认识的某大学老师,他开发的饭馆用的点菜PDA(WinCE平台,可无线连网和上网),据他说销路不错,饭馆点点PDA让客户点菜,多显派头档次。

我记得00级2+2班当年有一组同学在学Windows程序设计课程时用VC++设计了一个功能很强的点菜系统做为课程项目,当时真想建议他们将这个软件做成PDA,估计会有些销路(上海火车站南广场的Macdonald便使用很漂亮的PDA给用户点食品,像摸像样的)。

这些PDA的硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。

从事嵌入式软件开发的缺点是:(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。

(2)这方面的企业数量要远少于企业计算类企业。

特别是从事嵌入式的小企业数量较多(小企业要搞自己的产品创业),知名大公司较少(搞嵌入式的大公司主要有Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半导体、Microtek、研华、华为、中兴通信、上广电等制造类企业)。

这些企业的习惯思维方式是到电子、通信等偏硬专业找人。

由于我院以前毕业生以企业计算为主,所以我院与这些企业联系相对较少。

我院正积极努力,目前已与其中部分公司建立了联系,争取今后能有我院同学到这些企业中实习或就业。

(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。

但大多数公司也并无此要求,只要有经验即可。

我院同学若学习嵌入式,显然应偏重于嵌入式软件,特别是嵌入式操作系统方面,应是我们的强项。

对于搞嵌入式软件的人,最重要的技术显然是(实际上很多公司的招聘广告上就是这样写的):(1)掌握主流嵌入式微处理器的结构与原理(2)必须掌握一个嵌入式操作系统(3)必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。

嵌入式软件方面最重要的课程包括:(1)嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,我院用这门课取代了传统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机原理与接口很难找到实际用处,只为教学而已)。

我们说过,嵌入式是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令系统。

若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书(xxxSpecification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。

相关文档
最新文档