细数嵌入式开发与通用系统开发的不同

2023-05-15 10:27:49 digiproto
嵌入式开发指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。而通用系统开发则是指在具有有多道批处理、分时、实时处理功能中的两种及以上功能的操作系统中进行开发。


与通用系统相比,嵌入式系统和硬件依赖程序十分紧密,因而一些需求只能在特定的硬件上进行实现。为了满足产品开发需求,需要先了解处理器的特性,选择适合产品的处理器进行开发。此外,某些硬件特性也可以通过软件实现,选择硬件实现可以更好地提高性能与可靠性,但是相对而言,硬件的成本会更高。


其次,就系统对软件开发的影响相对而言,不同的嵌入式操作系统比通用系统对软件开发的影响更大。


例如嵌入式开发时,对实时性要求很高的产品更适合在VxWorks系统上开发。而不同的嵌入式操作系统上的开发工具往往也不同,这也会影响到产品的开发。


此外,通用系统软件开发一般采用本地编译方法,即在A平台上编译的代码,在A平台上就可以运行;嵌入式系统软件开发往往采用交叉编译,即在A平台上生成的代码,在不同体系结构的B平台上可以运行,往往在A平台上却不能运行。一般在基于通用操作系统的计算机,即宿主机上使用编译器对代码进行编译,而程序在基于嵌入式系统环境的计算机,即目标机上进行运行。这是因为宿主机上相对而言系统资源更为丰富,在开发软件时可以选择更为方便的集成开发环境和调试工具进行开发,而嵌入式系统中一般没有相关的编译工具去实现代码的编译。


image.png

▲图1:交叉编译过程


在通用软件中的调试中,被调试的程序一般和其运行所需的调试器位于同一计算机上,其中,调试器是通过操作系统提供的调试接口实现对被调试的进程进行控制的。但是,嵌入式软件的调试方法则完全不同,需要进行交叉调试,因为被调试的进程和调试器分别位于目标机和宿主机上。


二者运行在不同的操作系统中,被调试的进程一般在特定硬件平台上的嵌入式操作系统中运行,而调试器进程则是在宿主机上的通用操作系统中运行,这两个进程之间是通过串口或网络实现通信,调试器可以控制与访问被调试进程,并且能够读取与改变其当前的状态。交叉调试主要可以分为软件调试硬件调试软件调试中典型的调试器有gdb调试器,硬件调试最常用到的则是ROM Monitor、ROM Emulator、In-Circuit Emulator和In-Circuit Debugger。


SkyEye天目全数字实时仿真软件


由我司自主研发的SkyEye天目全数字实时仿真软件是一款支持 ARM、TI DSP、PowerPC、X86、SPARC、龙芯、飞腾等多种处理器体系架构的指令级仿真平台,对标产品为美国风河公司的Simics。


SkyEye可以部署在桌面计算机上,开发人员可以基于SkyEye提供的已有模型库的组件(如处理器、内存总线、存储器、片上外设、外围总线设备等),通过图形化搭建功能拖拽需要的组件,来制定与实际目标机相同的虚拟目标系统,使运行在真实目标机上的二进制代码可以不加修改直接在虚拟系统中运行,并且可以得到与在真实目标机下运行相同的结果。


目前,SkyEye搭建的虚拟目标系统支持的目标二进制文件主要包括ELF、raw binary、COFF等格式。配合调试器,在SkyEye中还可以查看虚拟系统中所有的设备信息,包括寄存器,存储器和端口系统等。



标签: 嵌入式 仿真
首页
产品
新闻
联系