[见者有分] 嵌入式开发与行业应用软件的开发有什么不同?

justkk 2010-10-22 01:26:22
何谓嵌入式开发?
嵌入式开发涉及什么语言、技术?
与传统的行业(如金融、通信)应用软件开发有什么不同?
...全文
307 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
boat 2011-03-23
  • 打赏
  • 举报
回复
本科学的是通信工程,搞电子,单片机这一块的。现在大四,刚开始学习嵌入式linux。觉得这里面的东西实在是太多了。当然不可能面面俱到,能掌握好某一块的知识就非常不错了。
hrx1989 2011-03-20
  • 打赏
  • 举报
回复
现在做应用,还是想要往系统那块走。。
李迟 2010-10-24
  • 打赏
  • 举报
回复
从软件角度来看,PC上的软件可以不用去考虑硬件,可以使用哪些软件开发的各种东东,设计模式、mvc、XP。。。。
而嵌入式方面,面对的硬件平台很多,OS也很多,在底层需要有针对性地进行开发(其实像Linux,很多底层的东东都实现好了),再往上的,基本上差不多。而基于Linux,个人认为在PC上跟在开发板的程度没区别,在PC上测试通过的,一般情况下也能在开发板上通过,当然,也有例外。
我硬件基本功不行,像许多资料中提到的数电、模电这些东西我头很疼,也不怎么去碰,所谓术业有专攻。
如果硬件又牛、软件又牛、算法又牛,肯定有很多公司抢着要,不过,这付出的可就比别人多了不知多少了。

周末了,接点分。
Applic 2010-10-23
  • 打赏
  • 举报
回复
嵌入式开发可分两类,一类做硬件设计,熟悉电子通信和定义硬件接口、也写最底层的硬件驱动、BootLoader、BSP等,一类是做软件系统和增值应用,这是市场比较大和广阔的
vcprg 2010-10-23
  • 打赏
  • 举报
回复
跟pc机都是计算机,总的开发流程都是差不多的吧,只不过pc机的硬件都有大厂商做,绝大多数是在开发应用。而嵌入式搞的是专用计算机,定制性,专用性更强一点,所以要根据需求从板级硬件做起,如果实力够强,可以从芯片做起,做完硬件就开始做软件咯,在嵌入式软件平台中也有像Linux之类的操作系统,有MySQL之类的数据库,有类似MFC这样的QT。
金融业里要用到嵌入式就有ATM机,pos机这些吧。
通信就多咯,交换机,路由器,手机。。。。
justkk 2010-10-23
  • 打赏
  • 举报
回复
嵌入式是不是涉及硬件特性较多?
需要关心具体的硬件细节,比如..
justkk 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jihen 的回复:]
我现在就在被培训,是linux的,主要是用c语言,最好学好汇编,讲的c++还有java等都适用于应用程序开发,属于高层开发,底层都是c居多,而且如果你要学嵌入式,一定要接触linux,建议先熟悉linux基础命令,然后再深入点,学shell编程啦,再接着就可以学linux高级编程了……
[/Quote]
之前一直做行业应用软件的开发,对Linux编程有些基础,命令、shell也有些许掌握..
最近看到嵌入式,不知道编程的方面有什么不同,就发帖随便问问
大家也随便聊聊哈
tangxianghenggood 2010-10-23
  • 打赏
  • 举报
回复
什么c语言,单片机,uc/os操作系统,linux,wndows ce 模数电路 都都要学,讲下没什么很大的作用,最重要的还是要加油去做,去实践!

其实没什么不同,都基于硬件编程

基于pc机 和基于 特殊的硬件而已, 楼主


加油 come on
leafsoar 2010-10-23
  • 打赏
  • 举报
回复
我感觉“嵌入式” 约等于 “工控”
Corepy 2010-10-23
  • 打赏
  • 举报
回复
嵌入式貌似很火,不知具体行业到底如何。
Corepy 2010-10-23
  • 打赏
  • 举报
回复
嵌入式开发的相关硬件基础

对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。另外,汇编语言、C/C++、数据结构和算法、特别是操作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理,但重点应是在嵌入式软件,特别操作系统级软件,那将是我们的优势。
我们的研究生里有些是学电子、通信类专业过来的,有较好的模拟电路和单片机基础,学嵌入式非常合适。嵌入式本身就是从单片机发展过来的,只是单片机不带OS,而现在很多嵌入式应用越来越复杂,以至不得不引入嵌入式操作系统。另外,为追求更高速的信号处理速度,现在在一些速度要求较高的场合,有不少公司是将一些DSP算法,如MPEG压缩解压缩算法等用硬件来实现,这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术,这方面的人目前市场上也很缺。
Corepy 2010-10-23
  • 打赏
  • 举报
回复
关于嵌入式系统方向

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。

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

一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像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处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书 (xxx Specification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因,等我们的嵌入式实验室10月份建好后,您做了一些实验后就会觉得看得见摸得着。还有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言的人,怎么能在该处理器写出最优的C语言代码。在嵌入式开发的一些关键部分,有时还必须写汇编,如Bootloader等(可能还包括BSP)。特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到过很多公司是这样做的)。当您在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用汇编描述的(我就遇到过),这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此时您就必须看懂汇编程序,否则软硬件人员可能就无法交流。很多嵌入式职位招聘时都要求熟悉汇编。

[小知识] 目前嵌入式处理器常见的有ARM、PowerPC、MIPS、Motorola 68K、ColdFire(冷火)等,但ARM占据了绝对主流(资料说手机中几乎100%都是ARM处理器)。ARM是一个只卖知识产权的公司,目前获得购买了ARM CPU核授权许可的大公司很多,包括Intel、Samsung、Amstel、Motorola、Philip等,他们都在ARM CPU核的基础上进行了一些外围扩展,形成自己的处理器(如Samsung S3C2410,Motorola i.MXL9328等处理器都是采用ARM 9内核,指令一级是相同的)。而众多中小公司又购买了这些处理器,设计了各种各样的开发板,如华恒等国内很多著名嵌入式公司都生产基于Samsung S3C2410的开发板,供最终用户使用或供教学实验。在ARM这个食物链上,ARM公司是大鱼,Intel、Samsung等公司是小鱼,而华恒等则是虾米,最终用户(想我们要采购嵌入式开发板的实验室)则是喂虾米的。Intel早期生产的是低端ARM(Strong ARM,相当于ARM 7),现在转向主要生产高端ARM(即Intel Xscale处理器,相当于ARM 10,主要用在高端PDA上,如HP和DELL生产的PDA都采用Intel Xscale,价格较高)。目前应用最多的是ARM 7和ARM 9两类处理器。 ARM 7较便宜,可跑uclinux(是一个不支持高级内存管理功能的嵌入式Linux系统)、Vxworks、uc/os II等实时操作系统,但因处理器不带内存管理单元MMU(无内存分页和地址映射机制,所以不能使用虚拟内存),所以不能跑Windows CE,另外通用Linux中的某些内存管理功能也不能用在ARM 7上。ARM 9是一个带MMU功能的高端处理器,可跑WinCE或通用Linux的大多数功能。以上是我的一点了解,可能有不对的地方。我们学院正在建设的嵌入式实验室(10月底到货)包括30套ARM 7系统(拟采用Samsung S3C44b0x开发板,主要用于嵌入式处理器结构、嵌入式linux课程实验),10套ARM 9系统(拟采用Samsung S3C2410x开发板,主要用于Windows CE课程建设),每套实验板都配了高速仿真器,价格都很贵(比我们招标的DELL PC还贵),很容易损坏,同学应爱护使用。

zdl110110 2010-10-23
  • 打赏
  • 举报
回复
来蹭分了,嵌入式新手坐等牛人解惑。
qihuanfengyun 2010-10-22
  • 打赏
  • 举报
回复
呵呵,过来看看大牛观点,顺便接点分!
jihen 2010-10-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 justkk 的回复:]
哈,就你们两个大牛啊

吼一声,散分了,大家踊跃发言哈..
明天结贴..
[/Quote]
我现在就在被培训,是linux的,主要是用c语言,最好学好汇编,讲的c++还有java等都适用于应用程序开发,属于高层开发,底层都是c居多,而且如果你要学嵌入式,一定要接触linux,建议先熟悉linux基础命令,然后再深入点,学shell编程啦,再接着就可以学linux高级编程了。
嵌入式涉及的东西很多,方面也很多,基础最好打牢点,看起来会轻松很多。
pottichu 2010-10-22
  • 打赏
  • 举报
回复
周末,大家都不在,你把帖子结了吧,哈哈大笑 。
justkk 2010-10-22
  • 打赏
  • 举报
回复
哈,就你们两个大牛啊

吼一声,散分了,大家踊跃发言哈..
明天结贴..
pottichu 2010-10-22
  • 打赏
  • 举报
回复
java 纯粹是做应用, 系统级的还是 C 为主。

比如说 android, 虽然是主打 java, 但实质上,
底层的调用,统统是 c/c++.
steptodream 2010-10-22
  • 打赏
  • 举报
回复
家电 移动设备方面  j2me用的好像也挺多的
pottichu 2010-10-22
  • 打赏
  • 举报
回复
我觉得嵌入式开发只是一个概念吧, 区别于 PC 开发。
主要是消费类电子,手持设备,工控等。
语言以 汇编, C/C++ 为主。
区别,不好说。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧