后台-营销-SEO-头部优化文字处修改
SkyEye的概念和应用
SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。
SkyEye目前支持主流的嵌入式硬件平台,可以运行主流的操作系统,此外还能适配国内自主研发的操作系统天脉。通过利用基于LLVM的动态二进制翻译技术,使虚拟处理器在典型的桌面计算机上运行速度可以达到2000MIPS以上。
▲图1:利用虚拟原型来降低产品的周期和成本
▲图2:4个PowerPC运行4个天脉操作系统的截图
SkyEye的优势
SkyEye可与第三方语言或者模型集成
目前已实现SkyEye与SystemC集成进行时序仿真,以及SkyEye与MATLAB或者Simulink集成进行多领域协同仿真。
▲图3:MATLAB与SkyEye连接图
基于可视化图形的硬件建模
基于可视化图形的硬件建模,有效降低了硬件工程师和软件工程师之间的沟通成本。软件工程师可以不依赖于硬件工程师,而根据需要对硬件的配置进行改动。通过这种可视化图形的硬件建模方式,软件人员能够快速搭建硬件模型,并在硬件模型上运行和调试与真实硬件相同的二进制文件,可大大缩短产品研发周期,提高软件调试效率。
▲图4:基于可视化图形的硬件建模
容器化的仿真平台
传统的以虚拟机为最小资源调度单位的模式出现资源利用率低、配置复杂等一系列问题。为适应云计算服务的不断发展,SkyEye支持Docker容器化部署,将配置无误的SkyEye环境封装到Docker,用户可直接加载Docker来运行仿真环境。Docker容器可以随时开随时关,非常适合动态扩容和缩容,使得SkyEye可以弹性的部署在云平台上。同时,通过多个容器,一台机器可以跑多个服务,部署多个SkyEye Docker仿真出多个处理器架构模型。SkyEye Docker不仅支持终端模式输出,还支持Telnet模式,可通过端口映射的方式访问串口的输出数据。
▲图5:SkyEye Docker部署原理
FPGA协同仿真
SkyEye实现了与虚拟FPGA的协同仿真,可以支持UVM的验证方法。虚拟的FPGA通过协同仿真总线与SkyEye相连,用户可以自主的控制仿真运行速度,提高较大规模嵌入式系统的测试效率。SkyEye本身是多架构的功能级别仿真平台,且有丰富的调试功能,可以对多核的嵌入式系统进行调试。
▲图6:SkyEye与虚拟FPGA协同仿真
SkyEye的应用案例
SkyEye DD仿真案例
模拟全系统环境由Core i7管理组合控制DD加电、发射等一系列运行过程。整个全系统环境包含管理组合Core i7应用程序,发控系统应用程序,弹上机系统应用程序以及Windows下的火控模拟器。
▲图7:SkyEye导弹仿真案例
SkyEye卫星仿真案例
超实时仿真子系统是一套基于SPARC处理器的姿轨控嵌入式软件的开发、仿真和验证平台,支持和外部Simulink仿真模型的协同仿真,实现全数字高速闭环仿真运行,用于姿轨控软件的开发调试、系统测试。
▲图8:SkyEye卫星仿真案例
SkyEye载荷软件仿真案例
SkyEye实现了AT697、龙芯等嵌入式处理器的空间站载荷软件的全数字软件仿真,可使代码在软件仿真平台上虚拟运行,同时支持代码质量分析等测试任务。
▲图9:SkyEye载荷软件仿真案例
SkyEye大规模航电系统仿真案例
SkyEye为综合航空电子系统(ICP)提供多机多功能目标系统搭建的环境,可以采用分布式部署方式,通过多路传输数据总线把多种机载电子分系统交联在一起,能实现信息的测量、采集、传输、处理、监控和显示功能,并完成飞行控制、发动机控制、导航、性能管理等任务。
▲图10:SkyEye大规模航电系统仿真案例
SkyEye支持多种处理器模型
指令集架构 | 处理器核心 | SOC芯片 | 编译环境 | 支持的OS |
ARM | ARM9系列 | S3C2410、AT91RM9200、OMAPL138、SOPC国威 | arm-gcc编译器、 RVDS开发环境 | Linux、VxWorks6.9 |
ARM11系列 | S3C6410 | arm-gcc编译器 | Linux | |
CORTEX-M系列 | STM32、STM32F0、TLE987X | arm-gcc编译器、keil | HarmonyOS | |
CORTEX-R系列 | RM48L952 | arm-gcc编译器 | / | |
CORTEX-A系列 | AM335x、IMX6Q、 | arm-gcc编译器 | ReWorks锐华 | |
飞腾FTC662 | FT-2000A | LambdaAE、 Workbench | VxWorks6.9、ACoreOS天脉 | |
DSP | C28x | C2812、F28335 | CCS | / |
C54x | C5416 | CCS | / | |
C55x | C5510 | CCS | / | |
C64x | C6416、C6455、C6474 | CCS | / | |
C66x | C6678 | CCS | Linux | |
C67x | C6701、6713、C6748 | CCS | / | |
POWERPC | MPC603E | MPC8245 | workbench | VxWorks6.9、ReWorks锐华 |
E200Z6 | MPC5554 | |||
E300 | MPC8378、MPC5121 | |||
E500 | MPC8560、P1010、P2020 | |||
E600 | MPC755、MPC8641D | |||
E5500 | T1040 | |||
E6500 | T2080、T4240 | |||
SPARC | SPARC V7 | TSC695F | sparc-gcc编译器 | / |
SPARC V8 | LEON2、BM3803、 AT697F、BM3823、S698PM | Tornado2.2、Workbench | VxWorks6.8、RT-Thread | |
X86 | ATOM | N270 | Workbench | VxWorks6.8 |
PENTIUM | P2、P3、P4 | |||
CORE | I3、I5、I7 | |||
MIPS | GS232 | 龙芯1E | 龙芯IDE开发环境 | Linux、VxWorks6.9 |
LS132R | 龙芯1J | 龙芯IDE开发环境 | / |
SkyEye已支持的外设列表
外设类型(片内) | 定时器所属开发板 | |||
定时器 | am3359_timer | c541x_timer | c64x_timer | c6748_timer |
at91rm9200_timer | c5510_timer | c6678_timer | leon2_timer | |
c28_timer | c6474_timer | c6713_timer | omapl138_timer | |
s3c2410x_timer | s3c6410_timer | stm32f0x_timer | ||
串口 | 16550_uart | c2812_uart | leon2_uart | mpc8245_uart |
am3359_uart | c5510_uart | ls3a_uart | s3c2410x_uart | |
at91rm9200_uart | c6678_uart | mpc5121_uart | s3c6410_uart | |
tsc695f_uart | imx6_uart | |||
ctrl | am3359_ctrl | c6678_ctrl | omapl138_emac_ctrl | s3c6410_sysctrl |
at91rm9200_sysctrl | f28335_ctrl | s3c2410x_sysctrl | ||
emif | c6713_emif | omapl138_emif | ||
gpio | am3359_gpio | c6713_gpio | omapl138_gpio | s3c6410_gpio |
at91rm9200_gpio | f28335_gpio | s3c2410x_gpio | ||
flash | c6713_flash | f28335_flash | ||
iic | am335x_iic | c6713_iic | f28335_iic | mpc8378_iic |
omapl138_iic | sopa_i2c | |||
pll | c64x_pll | c6713_pll | mpc8641_pll | omapl138_pll |
intc | am335x_intc | c6713_intc | c674x_aintc | omapl138_intc |
lcd | omapl138_lcd | |||
pic | mpc5121_ipic | mpc8245_pic | mpc8378_pic | mpc8641d_pic |
p1010_pic | t2080_pic | |||
pie | f28335_pie | |||
spi | am335x_spi | f28335_spi | omapl138_spi | s3c6410_spi |
其他 | t2080_bman | imx6q_analog | c6713_semaphore | c6748_sata |
t2080_fman | at91rm9200_vic | c6748_mcBsp | c6748_upp | |
t2080_qman | c2812_xintf | c6748_ecap | c674x_ehrpwm | |
am335x_prcm | c6713_L2cache | c6748_nand | f28335_adc | |
am335x_rtc | c6713_edma | c6748_rtc | f28335_xintf | |
f28335_can | f28335_sci | leon2_irq | mpc8245_pci | |
f28335_ecap | f28335_xinterrupt | mpc5121_sfifoc | mpc8245_ddr | |
f28335_epwm | f28335_mcbsp | mpc5121_dma | mpc8378_pit | |
mpc8560_dpram | omapl138_emac | omapl138_syscfg | stm32f0x_usart | |
mpc8641_rapidio | omapl138_mcasp | omapl138_usbhost | stm32f0x_rcc | |
omapl138_edmacc | omapl138_psc | omapl138_usbotg | s3c2410x_vic | |
s3c6410_camif | s3c6410_rtc | s3c6410_usbhost | s3c6410_vic | |
s3c6410_mfc | t2080_dcfg |
外设类型(定制/片外) | 定时器所属开发板 | |||
定时器 | c645x_timer | they_timer | rm48x_timer | t104x_timer |
c687_timer | mpc8378_timer | sopc_timer | ||
串口 | c687uart | htey_uart | p1010_duart | sopc_uart |
ft2000a_uart | loongson_uart | |||
ctrl | bm3803_sysctrl | c2812_sysctrl | c5510_sysctrl | sopc_ictl |
sparc_fight_ctrl | sparc_sysctrl | |||
emif | c2812_emif | c6678_emif | rm48x_emif | |
gpio | c5510_gpio | c6748_gpio | sopc_gpio | x86_gpio |
c64x_gpio | ft2000_gpio | |||
flash | amd_flash | am29lv160b_flash | s29gl01gs_flash | loongson_flash |
at697f_flash | s29a016d_flash | |||
iic | at607f_iic | rm48x_iic | ft2000_iic | xdht_iic |
pll | c6678_pll | |||
intc | am3359_intc | c6678_intc | nm3823_intc | xdht_intc |
lcd | s3c6410_lcd | uc1608_lcd | ||
pie | c2812_pie | |||
spi | at697f_spi | ft2000_spi | rm48x_spi | m25p128_spi |
c6678_spi | loongson_spi | sopc_spi | xdht_spi | |
其他 | ad7705 | c687_cldl | loongson_collect | rm48x_sys |
rs485_hdlc | c687_epic | loongson_config | s3c6410_keypad | |
am35x_hecc | c6k_lvds | loongson_hpet | s3c6410_sdhci | |
arinc_bu67118 | can_adv | loongson_ipmb | sopc_a429 | |
at697f_1553_bc | can_bridge | loongson_pwm | sopc_boot | |
at697f_1553b_bc_ram | f28335_can_sja1000 | loongson_sec | sopc_dmac | |
at697f_1553b_rt | ft2000a_cru | mpc8641d_etsec | sopc_fpga | |
bu_61580 | ft2000a_dmac | mpc8378_usb | sopc_fpu | |
bu_61580_ram | ft2000a_gic | p2020_l2_cache | sopc_wdt | |
c2812_xinterrupt | ft2000a_gmac | p2020_ecm | usb_storage | |
c5510_mcbsp | ft2000a_lpc | p2020_elbc | w5100_end | |
c618_sib_bus | ft2000a_mcu | p2020_guts | x86_ad | |
c6678_iic | ft2000a_pcie | p2020_pic | x86_bu61580 | |
c6678_cic | ft2000a_wdg | rm48x_adc | x86_bu_61580_ram | |
c6678_ddr2 | htey_gps | rm48x_esm | x86_rs422 | |
c6678_dsc | htey_client | rm48x_gio | x86_sja1000 | |
c6678_edma | htey_cmd_file | rm48x_io | xdht_can | |
c6678_msmc | htey_hdlc | rm48x_pbist | zn122_atm | |
c6678_mt19f1g | leon2_io | rm48x_pcr | ||
c6678_n25q128 | loongson_1553b_rt | rm48x_pmm | ||
c6678_srio | loongson_adc | rm48x_sci |
连接器(多板之间的总线设备) | ||||
Lvds_bus | ad_linker | can_linker | i2c_bus | spi_bus |
Rs232_bus | arinc_429_bus | dmc_linker | io_linker | std1553b_linker |
Rs422_bus | atm_linker | gpio_gate | rs422_bridge | tsi578_linker |
Rs485_bus | bu61580_bridge | gpio_linker | rs422_linker | ttp_bus |
嵌入式软件测试工具
目标码覆盖率测试工具
该产品是基于仿真技术进行目标码测试的工具。通过在搭建的虚拟目标系统上运行用户的可执行程序,生成执行结果,计算代码覆盖率,展示语句覆盖率、分支覆盖率、函数覆盖率等信息(支持以HTML及Excel形式导出覆盖率报告)。该工具支持DO-178B中A级软件目标码测试覆盖性的相关要求,同时支持各种平台的嵌入式软件的目标码覆盖率测试,如ARM, PowerPC, DSP, MIPS, SPARC等。
▲图11:目标码覆盖率测试工具
基于仿真的自动故障注入工具
该产品是基于符号执行技术和仿真平台技术的自动化故障注入工具。由于基于仿真技术,该工具可以灵活地对任意硬件注入任意故障;同时还可基于符号执行技术,将硬件符号化,准确注入能够影响系统行为的故障。这一工具的优势在于可以避免传统方式的故障注入中的重复注入和遗漏注入。
▲图12:基于仿真的自动故障注入工具界面