嵌入式应用软件和普通应用软件的区别是什么?
展开全部 嵌入式系统开发是软件开发的一种,嵌入式系统开发就是对于除了电脑之外的所有电子设备上操作系统的开发,开发对象有手机,掌上电脑,机电系统等。
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用 户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能嵌入式系统一般指非PC系统,它包括硬件和软件两部分。
硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。
软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。
有时设计人员把这两种软件组合在一起。
应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
...
应用软件与嵌入式应用软件有什么区别
应用软件,比如QQ,浏览器啊,播放器等等都是应用软件,系统软件就是操作系统,比如Windows7放到嵌入式里边也类似,嵌入式系统开发就是移植一些嵌入式系统,比如Linux,vxworks等,但是往往一个产品开发过程中光有系统是不行的,需要一些功能性软件,比如光装个Windows系统,什么应用软件也没有,也干不了一些具体的工作,所以就需要另外开发一些嵌入式应用软件,来完成某个具体的工作两个的前景没什么好分的,技术到了一定阶段,这两者可以互相转,都没什么问题,很多嵌入式开发者都是两者都在做。
android 五大应用开发框架是什么
展开全部 android应用开发框架是 Application Framework. 其系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。
第二部分将详细介绍这5个部分。
下面自底向上分析各层。
Android架构1、Linux KernelAndroid基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。
Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。
也就是说各层各尽其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。
如果你只是做应用开发,就不需要深入了解Linux Kernel层。
2、Android RuntimeAndroid包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。
每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。
Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。
Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。
两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。
dx 是一套工具,可以将 Java .class 转换成 .dex 格式。
一个dex文件通常会有多个.class。
由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。
Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。
3、LibrariesAndroid包含一个C/C++库的集合,供Android系统的各个组件使用。
这些功能通过Android的应用程序框架(application framework)暴露给开发者。
下面列出一些核心库: 系统C库--标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备 媒体库--基于PacketVideo的OpenCORE。
这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG 界面管理--管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层 LibWebCore--新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图 SGL--基本的2D图形引擎 3D库--基于OpenGL ES 1.0 APIs的实现。
库使用硬件3D加速或包含高度优化的3D软件光栅 FreeType --位图和矢量字体渲染 SQLite --所有应用程序都可以使用的强大而轻量级的关系数据库引擎4、Application Framework通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。
开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。
开发者可以完全使用核心应用程序所使用的框架APIs。
应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。
这一机制允许用户替换组件。
所有的应用程序其实是一组服务和系统,包括: 视图(View)--丰富的、可扩展的视图集合,可用于构建一个应用程序。
包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器 内容提供者(Content Providers)--使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据 资源管理器(Resource Manager)--提供访问非代码资源,如本地化字符串、图形和布局文件 通知管理器(Notification Manager)--使所有的应用程序能够在状态栏显示自定义警告 活动管理器(Activity Manager)--管理应用程序生命周期,提供通用的导航回退功能5、ApplicationsAndroid装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。
所有应用程序都是用Java编程语言写的。
更加丰富的应用程序有待我们去开发! 从上面我们知道Android的架构是分层的,非常清晰,分工很明确。
Android本身是一套软件堆迭(Software Stack),或称为「软件迭层架构」,迭层主要分成三层:操作系统、中间件、应用程序。
从上面我们也看到了开源的力量,一个个熟悉的开源软件在这里贡献了自己的一份力量。
想要从事 linux嵌入式方面的应用软件开发。
我该怎么学呢?
说下我的经历。
我大学是学的软件工程,在学校要把基础学科学好,操作系统,网络,组原,编译,数据结构和算法。
编程的话,我那时候是主攻C++,java也学过。
毕业也找了份通信设备制造商的工作,做的嵌入式软件工程师。
主要做通信设备上协议的开发,工作中主要学习网络协议,内核编程。
我不知道你到底是想学底层的开发,还是只是想学linux下的应用软件开发。
但看你想学linux内核,我就说说我看内核的情况吧。
在刚开始工作的时候,我被要求花2个多星期的时间准备一个ppt给整个部门做个报告,内容是linux内存管理。
相信你也有点基本概念吧,操作系统中可以这么说,最重要的就是内存管理和文件系统这两大块,可想而知对于我一个新人来讲内存管理压力是多么大。
但是我坚持下来了,并通过这两个多星期的学习,真的学到很多东西,所以人有时候就得逼着自己做。
内核学习是非常枯燥的,要想学的话就得持之以恒。
学内核之前,之前说过的基础学科的知识是必要掌握的,接着就可以开始内核之旅了。
首先去买本内核的书吧,understand linux kernel是个不错的选择,英文过的去的话就看英文的,有什么不懂的或难以理解的可以去ChinaUnix论坛上提问,linux书籍有很多,网上搜一下很方便的,给个链接http://www.linuxdiyf.com/viewarticle.php?id=37062。
平时也要结合代码看,2.6的内核直接在网上搜下就能下到。
这是我的个人经历,你可参考下。
嵌入式应用软件开发与嵌入式系统软件开发区别
嵌入式系统开发是软件开发的一种,嵌入式系统开发就是对于除了电脑之外的所有电子设备上操作系统的开发,开发对象有手机,掌上电脑,机电系统等。
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用 户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能嵌入式系统一般指非PC系统,它包括硬件和软件两部分。
硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。
软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。
有时设计人员把这两种软件组合在一起。
应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
什么是嵌入式?
如果在十年前也许有70%的人不曾了解。
但从今天看,不管是从行业应用,还是智能硬件的爆发,物联网时代的来临,大数据等等嵌入式技术都得到了史无前例的发展。
所以如果你还不了解什么是嵌入式,那确实有些OUT了。
简单的说下,嵌入式技术是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统技术。
举个简单的例子:你智能手机其实就是一个嵌入式系统,它的系统配置的一些硬件如存储,CPU、电池,但考虑到功耗,为智能手机特别定制了一个系统。
试想一下,若智能手机还用台式电脑的CPU,那最终成型产品得有几十斤,那样的手机还有人买吗?因此嵌入式系统就是针对产品需求而定制的系统。
嵌入式它最初起源于单片机技术, 是各类数字化的电子、机电产品的核心,主要用于实现对硬件设备的控制、监视或管理等功能。
进入21世纪计算机应用的各行各业中90%左右的开发将涉及到嵌入式开发。
全球嵌入式软件市场年增长率超过12.5%,嵌入式系统带来的工业年产值达一万亿美无,中国未来三年嵌入式软件产业将保持40%以上的年复合增长率。
做软件开发实际上是有高低之分的,开发语言多的去了!如C、C++,再到红透半边天的Java等,该学哪种呢?为什么有些开发者工资很低,而有些开发者却月薪好几万?又为什么3年的Java高级程序员薪水最多也只能15K?而一个嵌入式底层工程师两年经验就敢要15K-20k的薪水?正是由于良好的前景所致。
什么是嵌入式?我想到这里多少有一些了解了。
但是如果想从事嵌入式开发,必须懂的技术也挺多,它并不是天上掉馅饼的行业,一个成熟的嵌入式工程师基本上要了解,应用开发,底层开发,当然这里又会包含很多很多。
具体可看看朱有鹏老师嵌入式的学习路线,跟着一起学习,掌握好基础,然后再慢慢进步。
请问手机上的各种软件是不是嵌入式软件?
不需要分,如果你对我的回答满意,选我最佳就行。
我在嵌入式行业3年了。
我的经验给你讲吧。
如果你要想对手机游戏软件感兴趣的话,你只需要把C c++等编程语言学好即可,游戏编程需要学习什么语言,你就去学什么。
嵌入式开发,包括应用层开发,驱动层。
嵌入式软件开发一般说的是应用层的开发,linux下的话,你基本只需要学会C语言即可。
android下的话,你要学会java。
以及对android的框架要了解。
如果是驱动开发的话,你需要了解的就多了,C语言是基本的,还需要了解硬件等等。
手机软件也分为应用层和底层(驱动层)的开发。
只要是研发,工作强度都不小,经常要加班额。
嵌入式高手请进 软件 硬件
1,、硬件有 前途,但是足有前途的是软硬件兼修的;2、电子工程、通信工程等偏硬件专业,软件、计算机专业;大学的话,排名前几的都还不错。
考研的话也很有帮助,尤其在找工作方面;但是学这个专业的,如果没有点自主学习的精神,再好的大学也是白搭,这也是大学中最需要学习的一样东西。
您对这个真的产生兴趣的时候,专业学校学历都不会是障碍,现在外面的许多培训机构都还是不错,只是贵了点。
3、至于学习步骤嘛,大一跟老师学习咯,基础课还是认真学,对后面深入学习很有帮助;然后就是多上论坛 ,去图书馆借些这方面书籍,能懂多少懂多少,对这一行多了解些,不然说得多您不一定能领会;还有时间的话,就去参加比赛,学校一定会组织的,这种机会不要放过,因为跟一群人一起学习,绝对比孤军奋战效果好;学的多啦,您自己就可以为别人回答您现在提这样的问题,毕竟不同的人总有自己接受知识的特点。
4、如果您现在还没有上大学的话,那就不要担心什么企业工作之类的啦,想的太远不是个好习惯;您都还不清楚自己到底喜不喜欢这一行,想那么多干啥;世界上还有很多东西值得您去喜欢,眼界放开点,兴趣最重要。
下面附上一篇,能看懂多少,看你啦:嵌入式以下几方面:(1)嵌入式硬件(2)BSP bootloader(3)内核 驱动(4)上层应用 以我在嵌入式系统的从业8年多的情况大体是这样,仅供参考 如果在一个层面上有六年及以上工作经验的话,以六年为准。
(1)嵌入式硬件 ---8000-12000,正常价为10000(2)BSP bootloader ---10000-20000,正常价为15000(3)内核驱动 ---10000-15000,正常价为12000(4)上层应用 ---8000-10000,正常价为8000 别外和行业还有关系,比如,做手机公司还要相对高些。
这些情况一般是在外企公司或国内大公司的情况。
小公司很少能开到这个价。
因此说什么公司用什么样的人,是有一定道理的。
还有这四层都是很有前途的,关键要根据自己的特长选择做那一层面,一个学计算机专业的人去搞硬件有点不太好搞,在基础这块就要比电子工程类专业的欠缺。
以上这些仅供参考,但目前国内能真正在嵌入式系统这块做上六年的都很少很少。
国内嵌入式系统是从当年的Motorola的68K体系结构的DragonBall开始的,那个时间就是1999年,2000年底-2001年夏才达到了最高时期,以后才是ARM开始接替。
嵌入式软件方面最重要的课程包括:(1) 嵌入式微处理器结构与应用 这是一门嵌入式硬件基础课程,我院用这门课取代了传统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机原理与接口很难找到实际用处,只为教学而已)。
我们说过,嵌入式是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令系统。
若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书(xxx Specification),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。
有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因,等我们的嵌入式实验室10月份建好后,您做了一些实验后就会觉得看得见摸得着。
还有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。
其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。
一个不熟悉汇编语言的人,怎么能在该处理器写出最优的C语言代码。
在嵌入式开发的一些关键部分,有时还必须写汇编,如Bootloader等(可能还包括BSP)。
特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到过很多公司是这样做的)。
当您在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用汇编描述的(我就遇到过),这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此时您就必须看懂汇编程序,否则软硬件人员可能就无法交流。
很多嵌入式职位招聘时都要求熟悉汇编。
(2) 嵌入式操作系统类课程 除了WinCE的实时性稍差外,大多数嵌入式操作系统的实时性都很强,所以也可称为实时操作系统Real Time Operating System.从事嵌入式的人至少须掌握一个嵌入式操作系统(当然掌握两个更好),这在嵌入式的所有技术中是最为关键的了。
(3) 嵌入式开发的其它相关软件课程 搞嵌入式若能熟悉嵌入式应用的一些主要领域,这样的人更受企业欢迎。
主要的相关领域包括:A、数字图像压缩技术:这是嵌入式最重要最热门的应用领域之一,主要是应掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。
为此,我院已预订了一位能开设数字图像处理课程的博士。
B、通信协议及编程技术:这包括传统的TCP/IP协议和...