发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种嵌入式开发软件输出方法及系统,用于解决上述嵌入式开发软件的系统命令运行输出不够灵活的问题。
为实现上述目的及其他相关目的,本发明提供一种嵌入式开发软件输出方法,包括:所述嵌入式开发软件加载RAMDISK组件以在内存开辟RAMDISK;建立并打开所述RAMDISK内的临时文件;获取所述临时文件的句柄Fd;将所述嵌入式开发软件的标准输出、标准错误输出的描述符分别保存至临时变量tempout、temperr;通过所述标准输出、标准错误输出的描述符,将所述标准输出、标准错误输出重定向至所述句柄Fd;调用所述嵌入式开发软件的系统命令直至该系统命令返回,所述系统命令的运行输出通过所述重定向的句柄Fd写入到对应的临时文件中;通过所述标准输出、标准错误输出的描述符,将所述标准输出、标准错误输出分别重定向回所述临时变量tempout、temperr;关闭所述临时文件,以供从所述临时文件中读取所述运行输出;对所读取的运行输出按照对应于输出对象的格式加以修改后输出。
优选的,所述嵌入式开发软件为Vxworks或Linux系统。
优选的,所述嵌入式开发软件输出方法还包括:在所述嵌入式开发软件初始化时,也对所述RAMDISK进行初始化。
优选的,所述输出对象为串行接口用户终端或非串行接口用户终端。
优选的,所述系统命令是经过封装后运行的。
为实现上述目的及其他相关目的,本发明提供一种嵌入式开发软件输出系统,包括:组件加载模块,用于对所述嵌入式开发软件加载RAMDISK组件以在内存开辟RAMDISK;临时文件处理模块,用于建立并打开所述RAMDISK内的临时文件;获取模块,用于获取所述临时文件的句柄Fd;保存模块,用于将所述嵌入式开发软件的标准输出、标准错误输出的描述符分别保存至临时变量tempout、temperr;重定向模块,用于通过所述标准输出、标准错误输出的描述符,将所述标准输出、标准错误输出重定向至所述句柄Fd;运行输出写入模块,用于在调用所述嵌入式开发软件的系统命令直至该系统命令返回后,将所述系统命令的运行输出通过所述重定向的句柄Fd写入到对应的临时文件中;所述重定向模块,还用于在所述系统命令的运行输出通过所述重定向的句柄Fd写入到对应的临时文件中后,通过所述标准输出、标准错误输出的描述符,将所述标准输出、标准错误输出分别重定向回所述临时变量tempout、temperr;读取模块,用于在所述系统命令的运行输出通过所述重定向的句柄Fd写入到对应的临时文件中并且所述临时文件关闭后,从所述临时文件中读取所述运行输出;修改模块,用于对所读取的运行输出按照对应于输出接口的格式加以修改后输出。
优选的,所述嵌入式开发软件为Vxworks或Linux系统。
优选的,所述嵌入式开发软件输出系统还包括:在所述嵌入式开发软件初始化时,也对所述RAMDISK进行初始化。
优选的,所述输出对象为串行接口用户终端或非串行接口用户终端。
优选的,所述系统命令是经过封装后运行的。
如上所述,本发明提供的一种嵌入式开发软件输出方法及系统,通过在嵌入式开发软件先加载RAMDISK组件,然后在调用要封装的系统命令前,将所述嵌入式开发软件的标准输出及标准错误输出重定向到一个打开的RAMDISK的临时文件的句柄,然后直接调用该系统命令,之后再将系统的标准输出及标准错误输出重定向至原有状态,从而使得系统命令的输出直接输出到所述临时文件中,之后就可以通过读取系统命令输出来修改处理并输出到对应的用户终端,上述处理简单灵活,使用于所有系统命令,没有任何开发难度,且能灵活调整输出格式和输出终端,相比现有技术,大大提升开发效率。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
请参阅图1,本发明提供一种嵌入式开发软件输出方法,包括:
步骤S1:所述嵌入式开发软件加载RAMDISK组件以在内存开辟RAMDISK;
步骤S2:建立并打开所述RAMDISK内的临时文件;
步骤S3:获取所述临时文件的句柄Fd;
步骤S4:将所述嵌入式开发软件的标准输出、标准错误输出的描述符分别保存至临时变量tempout、temperr;
步骤S5:通过所述标准输出、标准错误输出的描述符,将所述标准输出、标准错误输出重定向至所述句柄Fd;
步骤S6:调用所述嵌入式开发软件的系统命令直至该系统命令返回,所述系统命令的运行输出通过所述重定向的句柄Fd写入到对应的临时文件中;
步骤S7:通过所述标准输出、标准错误输出的描述符,将所述标准输出、标准错误输出分别重定向回所述临时变量tempout、temperr;
步骤S8:关闭所述临时文件,以供从所述临时文件中读取所述运行输出;
步骤S9:对所读取的运行输出按照对应于输出对象的格式加以修改后输出。
在本实施例中,所述嵌入式开发软件为Vxworks或Linux系统,尤其适用于Vxworks系统,VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。VxWorks操作系统有以下部件组成:
(1)内核:多任务调度(采用基于优先级抢占方式,同时支持同优先级任务间的分时间片调度),任务间的同步,进程间通信机制,中断处理,定时器和内存管理机制。
(2)I/O系统:VxWorks提供了一个快速灵活的与ANSI C兼容的I/O系统,包括UNIX标准的Basic I/O(creat(),remove(),open(),close(),read(),write(),and ioctl().),Buffer I/O(fopen(),fclose(),fread(),fwrite(),getc(),putc())以及POSIX标准的异步I/O。VxWorks包括以下驱动程序:网络驱动、管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、并口驱动等。
(3)文件系统:支持四种文件系统:dosFs,rt11Fs,rawFs和tapeFs;支持在一个单独的VxWorks系统上同时并存几个不同的文件系统。
(4)板级支持包BSP(Board Support Package):板级支持包向VxWorks操作系统提供了对各种板子的硬件功能操作的统一的软件接口,它是保证VxWorks操作系统可移植性的关键,它包括硬件初始化、中断的产生和处理、硬件时钟和计时器管理、局域和总线内存地址映射、内存分配等等。每个板级支持包包括一个ROM启动(Boot ROM)或其它启动机制。
(5)网络支持:它提供了对其它VxWorks系统和TCP/IP网络系统的"透明"访问,包括与BSD套接字兼容的编程接口,远程过程调用(RPC),SNMP(可选项),远程文件访问(包括客户端和服务端的NFS机制以及使用RSH,FTP或TFTP的非NFS机制)以及BOOTP和代理ARP、DHCP、DNS、OSPF、RIP。无论是松耦合的串行线路、标准的以太网连接还是紧耦合的利用共享内存的背板总线,所有的VxWorks网络机制都遵循标准的Internet协议。
在本实施例中,所述RAMDISK,虚拟内存盘是通过软件将一部分内存(RAM)模拟为硬盘来使用的一种技术。相对于直接的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度。但是RAM的易失性也意味着当关闭电源后这部分数据将会丢失。但是在一般情况下,传递到RAM盘上的数据都是在硬盘或别处永久贮存的文件的一个拷贝。经由适当的配置,可以实现当系统重启后重新建立虚拟盘,广泛应用于各种开发软件:DOS系统:XMSDSK;Windows系统:VSuite Ramdisk;Linux系统:直接格式化并挂载/dev/ramX即可(X是内存盘序号)。
优选的,所述嵌入式开发软件输出方法还包括:在所述嵌入式开发软件初始化时,也对所述RAMDISK进行初始化。
优选的,所述输出对象为串行接口用户终端或非串行接口用户终端,所述串行接口包括:UART口、IrDA、USB、I2C以及SPI等,非串行接口包括:Telnet等。
优选的,所述系统命令是经过封装后运行的,封装程序有利于快速运行,提升效率。
如图2所示,本发明提供一种嵌入式开发软件输出系统1,其技术原理与技术细节与所述嵌入式开发软件输出方法大致相同,因此不另作赘述,所述嵌入式开发软件输出系统1包括:组件加载模块11,用于对所述嵌入式开发软件加载RAMDISK组件以在内存开辟RAMDISK;临时文件处理模块12,用于建立并打开所述RAMDISK内的临时文件;获取模块13,用于获取所述临时文件的句柄Fd;保存模块14,用于将所述嵌入式开发软件的标准输出、标准错误输出的描述符分别保存至临时变量tempout、temperr;重定向模块15,用于通过所述标准输出、标准错误输出的描述符,将所述标准输出、标准错误输出重定向至所述句柄Fd;运行输出写入模块16,用于在调用所述嵌入式开发软件的系统命令直至该系统命令返回后,将所述系统命令的运行输出通过所述重定向的句柄Fd写入到对应的临时文件中;所述重定向模块15,还用于在所述系统命令的运行输出通过所述重定向的句柄Fd写入到对应的临时文件中后,通过所述标准输出、标准错误输出的描述符,将所述标准输出、标准错误输出分别重定向回所述临时变量tempout、temperr;读取模块17,用于在所述系统命令的运行输出通过所述重定向的句柄Fd写入到对应的临时文件中并且所述临时文件关闭后,从所述临时文件中读取所述运行输出;修改模块18,用于对所读取的运行输出按照对应于输出接口的格式加以修改后输出。
优选的,所述嵌入式开发软件为Vxworks或Linux系统。
优选的,所述嵌入式开发软件输出系统1还包括:在所述嵌入式开发软件初始化时,也对所述RAMDISK进行初始化。
优选的,所述输出对象为串行接口用户终端或非串行接口用户终端。
优选的,所述系统命令是经过封装后运行的。
综上所述,本发明提供的一种嵌入式开发软件输出方法及系统,通过在嵌入式开发软件先加载RAMDISK组件,然后在调用要封装的系统命令前,将所述嵌入式开发软件的标准输出及标准错误输出重定向到一个打开的RAMDISK的临时文件的句柄,然后直接调用该系统命令,之后再将系统的标准输出及标准错误输出重定向至原有状态,从而使得系统命令的输出直接输出到所述临时文件中,之后就可以通过读取系统命令输出来修改处理并输出到对应的用户终端,上述处理简单灵活,使用于所有系统命令,没有任何开发难度,且能灵活调整输出格式和输出终端,相比现有技术,大大提升开发效率。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。