1、嵌入式系统开发

--平台种类繁多。

--资源受限。

--专用系统。

--需要与底层的硬件设备进行通信和交互操作。与设备相关。

--数要是对设备控制和操作。

--对编译器的要求较高,不同处理器平台有各自的编译器和调试软件。

--需要专门的调试工具,尤其是一些专用设备。

--对代码的质量要求高,要求可执行的程序占用的存储空间少。

--由于多任务同时运行,产生的错误比较多,因此在稳定性和性能上要求很高。

2、通用PC系统开发

--平台种类较少。

--资源不受限制。

--通用系统。

--与底层操作通过系统软件的接口函数API来实现,与设备无关。

--主要是数据处理和UI界面处理。

--对编译器没有特别的要求,通常使用一些通用的编译器和调试软件。

--不需要专门的调试工具。

--对代码的质量没有特别的要求,在存储空间上也没有太多的限制。

--在稳定性和性能方面没有嵌入式系统要求那么严格。

在 实际中,我发现嵌入式软件开发有很多地方和其他的应用软件是大不一样的,比如说,在嵌入式软件中对位的操作用的是非常之多,很大的一个原因是很多接口控制 芯片为了减少地址线或简约操作,很多控制都是用位来表示的,还有就是要注意的编译器的优化问题,对于一些端口或者的实时变化的变量,在定义声明的时候一定 要将其声明为volatile,一个定义为volatile的变量是说这变量可能会被意想不到地改 变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的 备份,否则会有灾难性的错误。还有就是嵌入式软件大部分是对很多接口芯片的操作,比如说常用的IIC接口、SPI接口、USB接口、RS232接口、红外接口、LCD控制器接口、触摸屏接口、以太网、can总线等等,还需要熟悉一些常用器件的确定时序,例如AD转换器和DA转换器、电源控制芯片、信号发生芯片。有时候做的系统比较大还需要了解其他嵌入式芯片的接口很如何兼容,简单的一个例子就是,假若使用ARM作为控制处理器,控制输入输出和显示,使用DSP作为数据的高速处理,使用FPGA作为数据的采集和存储器控制以及一些AD的控制,那么就需要通过嵌入式软件将三者接口联系起来。在其他的软件设计中,我想一台好点PC电脑,装上几个软件就控制工作了,但是对嵌入式软件来说,很多时候用到很多专门的软件和设备,例如JTAG口代理软件,ADS1.2编译环境,什么串口调试助手和以太网检测工具啊,有时候要测试硬件上的问题,那就需要一台示波器,最好是多通道高速的,至少电压表得有一个,好一点的有信号发生器、逻辑分析仪等等。对于测量控制领域我觉得稍微大一定的系统使用ucos+ucgui很好的,linux的实时性不是很好,而且入门操作都不太容易,但是对于实时性要求不太高的,用linux也是一个非常好的选择。

软件开发和嵌入式开发区别

嵌入式开发主要针对硬件开发,开发的软件用在单片机、ARM上,嵌入式开发要了解硬件的结构,工作原理,开发语言现在主流用C语言。

一般的软件开发多指面向对象,.net开发,做网站,做系统等等,这方面流行的语种比较多。VC、VB、PB、JAVA、ASP、JSP。

嵌入式计算机系统的设计过程

1.       需求分析

确定设计任务和目标,并制定说明规格文档,作为下一步设计的指导和验收标准。需求分析往往要与用户反复交流,以明确系统功能需求,性能需求,环境、可靠性、成本、功耗、资源等需求。

2. 体系结构设计

体系结构设计是嵌入式系统的总体设计,它需要确定嵌入式系统的总体构架,从功能上对软硬件进行划分。在此基础上,确定嵌入式系统的硬件选型(主要是处理器选型),操作系统的选择和开发环境的选择。

3. 硬件的设计、制作及测试

在这一阶段要确定硬件部分的各功能模块及模块之间的关联,并在此基础上完成元器件的选择、原理图绘制、印刷电路板(PCB)设计、硬件的装配与测试、目标硬件最终的确定和测试。

4. 软件的设计、实现及测试

这部分工作与硬件开发并行、交互进行。软件设计主要完成引导程序的编制、操作系统的移植、驱动程序的开发、应用软件的编写等工作。设计完成后,软件开发进入实现阶段。这一阶段主要是嵌入式软件的生成(编译、链接),调试和固化运行,最后完成软件的测试。

5. 系统集成

将测试完成的软件系统装入制作好的硬件系统中,进行系统综合测试,验证系统功能是否能够正确无误地实现,最后将正确的软件固化在目标硬件中。本阶段的工作是整个开发过程中最复杂、最费时的,特别需要相应的辅助工具支持。

6. 系统性能测试及可靠性测试

测试最终完成的系统性能是否满足设计任务书的各项性能指标和要求。若满足,则可将正确无误的软件固化在目标硬件中;若不能满足,在最坏的情况下,则需要回到设计的初始阶段重新进行设计方案的制定。

2.       软件开发和嵌入式开发的特点

3.       嵌入式计算机系统同通用型计算机系统相比具有以下特点: |

1.嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。

2.嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。

3.嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。

4.嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。 5.为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。

6.嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。

嵌入式软件开发和其他软件开发的区别相关推荐

  1. 普通开发人员与软件工程师的区别

    普通开发人员与软件工程师的区别: 对比1: A.普通开发人员: 掌握了计算机基础知识: 熟悉计算机资源,学会了编程语言,喜欢卖弄技巧,喜欢比较编程语言的优劣: 以能编出某种特殊功能的程序为荣,不懂原理 ...

  2. 软件工程:浅谈人工智能软件开发与传统软件开发的区别

    题目:浅谈人工智能软件开发与传统软件开发的区别 摘要:人工智能的飞速发展带动着软件工程的发展,最终使得软件工程产生新的变革.因为人工智能特有的性质,因而导致了人工智能软件与传统软件的差异性.本文对比了 ...

  3. 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同

    转:减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同 本篇文章讨论并不是:不要使用存储过程,因为有些事情还是要存储过程来完成,不可能不用.而是关于:"业务逻辑是不是要封装在存 ...

  4. 软件企业需求的人才(开发人员与软件开发工程师综合对比篇)

    昨天在公司收到一封内部邮件,邮件中有个很有意思的PPT,节选一部分放出来 普通开发人员与软件工程师的区别: 对比1: A.普通开发人员: 掌握了计算机基础知识: 熟悉计算机资源,学会了编程语言,喜欢卖 ...

  5. 面经实习:美团测试开发 成都华为 软件开发

    面经:美团测试开发一面 华为 软件开发 HR说面试已过 博主是双非在校研二控制工程学生这篇文章用来记录我的面试经验,目前是自学Python.数据库.非科班. 美团 岗位:测试开发实习 笔试:3月中旬左 ...

  6. java开发用怎么软件开发_Java 9中的5个功能将改变您开发软件的方式(还有2个不会)...

    java开发用怎么软件开发 有望在Java 9中发布的最令人兴奋的功能是什么? 近期不要对Java 9相对沉默而分心.JDK提交者正在努力准备下一个版本,预计在2015年12月才完成功能的下一个版本. ...

  7. 项目周期一般多久_深圳app开发公司的软件开发要多久?

    深圳app开发公司的软件开发要多久?手机APP开发可以帮助企业俘获更多新客户,展示其自身的品牌效果.随着移动互联网的发展,人们的工作重心慢慢的从电脑端转移到手机端了,越来越多的人除了工作需要基本都不会 ...

  8. 恩施软件开发人员每月多少钱_恩施软件开发学习,恩施软件开发学习哪家好,恩施软件开发学习一般能拿多少工资...

    恩施软件开发学习,恩施软件开发学习哪家好,恩施软件开发学习一般能拿多少工资 首页 > 软件 > 恩施软件开发学习 作者:镀金池   发布时间:2017-11-22 18:54 因为cent ...

  9. 浅谈移动软件开发与电脑软件开发发展前景

    首先,先说下当下的情况,我国经济的高速发展对计算机软件行业需求越来越高,因此国家根据实际需求加大了对软件行业的各项投入,如资金.人力.物力.政策. 软件行业是国家重点鼓励和支持的行业,他的发展前景肯定 ...

最新文章

  1. CenterNet算法快速入门
  2. 如何将txt格式的数据导入到MATLAB中,并绘制图线
  3. 超酷的超级DataGrid
  4. WebConfig的经典使用,大家一起交流一下吧!!!
  5. Python语言程序设计之urllib.request抓取页面,网易公开课之《麻省理工学院公开课:算法导论》
  6. android bitmap 占用内存大小,drawable与bitmap内存占用大小
  7. 华为被上汽狂DISS:智能驾驶时代车企呼唤“主权”?
  8. aix 的c库为什么都是静态库_关于AIX  libpthread.a 静态库
  9. 定义一个圆类——Circle,在类的内部提供一个属性:半径(r),同时 提供 两个 方 法 : 计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) 。
  10. Redis之Redis内存模型
  11. 信息学奥赛一本通(1038:苹果和虫子)
  12. 软件开发除了23种设计模式,还有7个开发原则需要了解
  13. 用于Ubuntu 16.04和18.04的TensorFlow,Keras,Caffe,Caffe,CUDA,cuDNN和NVIDIA驱动程序的单行安装
  14. 基于机器视觉的冲压金属瓶质量检测
  15. 向io设备发出中断请求_深入理解linux内核 —— I/O设备连接
  16. Atitit dubbo使用总结 attilax总结 艾龙 总结 1. 概念 1 1.1. Dubbo提供的注册中心有如下几种类型可供选择: 2 1.1.1. Multicast注册中心 2 1.1
  17. 软考网络工程师真题讲解
  18. 致未来要跟我领小红本的男人
  19. 我的世界起床战争java 版服务器_我的世界中国版起床战争下载-我的世界中国版起床战争服务器_5577安卓网...
  20. 苹果计算机键盘usb,没有USB3.0驱动的苹果电脑与键盘鼠标失灵的关系

热门文章

  1. Ansible 安装libselinux-python之后仍然报错
  2. PHP语言基础知识+函数调用
  3. java关于NEC的红外解码_红外协议之NEC协议
  4. 「干货①」Maya软件小技巧,一般人不会告诉你
  5. ECharts x轴显示正负极
  6. android连连看课程设计报告,Android连连看课程设计专业文件.doc
  7. Samsung Galaxy Note3 N9009 电信版 root
  8. tkinter 实现倒计时(1小时)
  9. CToolBarCtrl详解
  10. GBase 8c V3.0.0数据类型——HLL函数和操作符(废弃函数)