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