参数传递方法、单板加载器、单板和单板仿真器的制造方法

文档序号:6636543阅读:160来源:国知局
参数传递方法、单板加载器、单板和单板仿真器的制造方法【专利摘要】本发明实施例提出了一种参数传递方法、单板加载器、单板及单板仿真器,该方法包括:调用命令行参数,其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数;解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数;根据该可执行程序的标识加载该可执行程序,其中,该可执行程序包含参数数据段;将该可执行程序的运行参数写入已加载的该可执行程序的参数数据段;将已加载的该可执行程序发送给远程单板。本发明实施例中,通过将可执行程序的运行参数写入可执行程序的参数数据段,以便单板能够根据可执行程序的参数数据段的信息初始化可执行程序的运行参数,从而实现在单板中支持Main函数的参数传递。【专利说明】参数传递方法、单板加载器、单板和单板仿真器【
技术领域
】[0001]本发明涉及计算机领域,更具体的,涉及一种参数传递方法、单板加载器、单板和单板仿真器。【
背景技术
】[0002]与PC上直接运行可执行程序不同,单板上为了应用程序需要从本地loader加载应用程序,本地loader按照标准可执行文件格式解析应用程序,然后通过串口或者JTAG通道将应用程序拷贝至远程单板,然后单板从规定好的入口地址开始执行可执行程序。通用PC上应用程序可以解析命令行获取运行参数,而单板上直接从程序入口地址开始执行,无法获取命令行参数。[0003]Tensilica公司提供了一套方案支持在单板仿真器上支持Main函数传参。Tensilica公司的解决方案是提供与单板仿真器配套的另外一套libc,通过伪指令(真实硬件中不存在的指令)的方式支持应用程序Main函数传参。此方案需要维护两套需要维护两套libc,不统一,维护复杂,并且要求单板仿真器实现伪指令,真实硬件环境下的单板不支持运行参数传递。[0004]如何实现在真实硬件环境下的单板中支持运行参数传递,是本发明所要解决的问题。【
发明内容】[0005]本发明提供一种参数传递方法、单板加载器、单板及单板仿真器,能够实现在在单板中支持Main函数的参数传递。[0006]第一方面,提出了一种单板加载器,该单板加载器包括:调用单元,用于调用命令行参数,其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数;解析单元,用于解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数;载入单元,用于根据该可执行程序的标识加载该可执行程序,其中,该可执行程序包含参数数据段;数据写入单元,用于将该可执行程序的运行参数写入已加载的该可执行程序中的参数数据段;输出单元,用于将已加载的该可执行程序发送给远程单板。[0007]结合第一方面,在第一种可能的实现方式中,具体实现为:该可执行程序的格式为ELF。[0008]结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,具体实现为:该输出单元具体用于通过联合测试行为组织JTAG接口或串口将已加载的该可执行程序发送给远程单板。[0009]第二方面,提出了一种单板,该单板包括:输入单元,用于接收远程的单板加载器发送的可执行程序,该可执行程序的参数数据段中携带该可执行程序的运行参数;初始化单元,用于根据该可执行程序的参数数据段,初始化该可执行程序的运行参数。[0010]结合第二方面,在第一种可能的实现方式中,该输入单元具体用于通过JTAG接口或串口接收该可执行程序。[0011]结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,该初始化单元还用于初始化该可执行程序中运行参数以外的其它相关值;该单板还包括:执行单元,用于执行该可执行程序。[0012]第三方面,提出了一种单板仿真器,该单板仿真器包括:调用单元,用于调用命令行参数,其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数;解析单元,用于解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数;载入单元,用于根据该可执行程序的标识加载该可执行程序,其中,该可执行程序包含参数数据段;数据写入单元,用于将该可执行程序的运行参数写入已加载的该可执行程序中的参数数据段;初始化单元,用于根据已加载的该可执行程序中的参数数据段,初始化该可执行程序的运行参数。[0013]结合第三方面,在第一种可能的实现方式中,具体实现为:该可执行程序的格式为ELF。[0014]结合第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,该初始化单元还用于初始化该可执行程序中运行参数以外的其它相关值;该单板仿真器还包括:执行单元,用于执行该可执行程序。[0015]第四方面,提出了一种参数传递方法,该方法包括:调用命令行参数,其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数;解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数;根据该可执行程序的标识加载该可执行程序,其中,该可执行程序包含参数数据段;将该可执行程序的运行参数写入已加载的该可执行程序的参数数据段;将已加载的该可执行程序发送给远程单板。[0016]结合第四方面,在第一种可能的实现方式中,具体实现为:该可执行程序的格式为ELF。[0017]结合第四方面或第四方面的第一种可能的实现方式,在第二种可能的实现方式中,将已加载的该可执行程序发送给远程单板具体实现为:通过联合测试行为组织JTAG接口或串口将已加载的该可执行程序发送给远程单板。[0018]第五方面,提出了一种参数传递方法,该方法包括:接收远程的单板加载器发送的可执行程序,该可执行程序的参数数据段中携带该可执行程序的运行参数;根据该可执行程序的参数数据段,初始化该可执行程序的运行参数。[0019]第六方面,提出了一种参数传递方法,该方法包括:调用命令行参数,其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数;解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数;根据该可执行程序的标识加载该可执行程序,其中,该可执行程序包含参数数据段;将该可执行程序的运行参数写入已加载的该可执行程序中的参数数据段;根据已加载的该可执行程序中的参数数据段,初始化该可执行程序的运行参数。[0020]基于以上技术方案,本发明通过在加载阶段将可执行程序的运行参数写入到可执行程序的参数数据段,并在运行阶段根据可执行程序的参数数据段的信息初始化可执行程序的运行参数,从而实现在单板中支持Main函数的参数传递。【专利附图】【附图说明】[0021]为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0022]图1是本发明实施例参数传递方法流程图。[0023]图2是本发明实施例另一参数传递方法流程图。[0024]图3是本发明实施例再一参数传递方法流程图。[0025]图4是本发明实施例再一参数传递方法流程图。[0026]图5是本发明实施例再一参数传递方法流程图。[0027]图6是本发明实施例单板加载器的结构示意图。[0028]图7是本发明实施例单板的结构示意图。[0029]图8是本发明实施例单板仿真器的结构示意图。[0030]图9是本发明实施例另一单板加载器的结构示意图。[0031]图10是本发明实施例另一单板的结构示意图。[0032]图11是本发明实施例另一单板仿真器的结构示意图。【具体实施方式】[0033]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。[0034]为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素。[0035]运行参数传递:所谓运行参数传递指的是C/C++等编程语言中的Main函数,经常带有参数argc,argv,例如,Main函数intMain(intargc,char**argv)及intMain(intargc,char*argv[])中,参数argc,argv的作用包括:argc用于存储命令行输入参数的个数(以空白符分隔),argv用于存储所有的命令行参数。不妨假设可执行程序是hello,exe,如果在命令行运行该程序,且运行目录为该程序所在目录,运行命令为:“hell0.exehelloworld”,则此时argc的值是3,argv[O]是"hell0.exe〃,argv[I]是"hello",argv[2]是〃world〃。[0036]仿真器:(simulator),其软件称为模拟软件,是指主要通过软件模拟硬件处理器的功能和指令系统的程序使计算机或者其他多媒体平台(掌上电脑,手机)能够运行其他平台上的软件。[0037]Libc:Libc是Linux下的ANSIC的函数库。ANSIC是基本的C语言函数库,包含了C语言最基本的库函数。[0038]串口(SerialPort):串行端口,一个输入/输出端口(通道),它可以以每次一位的方式从计算机的CPU或通信设备上接收数据或是向它们发送数据。串行端口用于串行数据通信以及许多外围设备的接口,如:鼠标和打印机。[0039]联合测试行为组织(JointTestAct1nGroup,JTAG):一个由几家主要的电子制造商组成的组织,目的在于制定印制电路板(PrintedCircuitBoard,PCB)板和集成电路(IntegratedCircuit,IC)标准。JTAG通常用来表示该组织提出的国际标准测试协议,主要用于芯片内部测试。[0040]可执行连接格式(ExecutableandLinkableFormat,ELF):为x86架构上的类Unix操作系统的二进制文件格式标准。因其可扩展性与灵活性,也可应用在其它处理器、计算机系统架构的操作系统上。Elf文件中包含一些存储程序和数据的部分,称为段。其中程序段保存二进制程序,数据段用于保存程序的全局变量和静态变量。[0041]当前一些基带单板需要支持多模(UMTS,LTE等网络),在启动单板时需要通过应用程序传参的方式指定启动何种网络。例如通过-LTE选项指定启动LTE网络。[0042]在对单板应用程序和单板进行测试时,需要针对不同场景进行测试。如果不支持应用程序main函数传参,需要对每种测试场景进行编译,构建对应单板应用测试程序。[0043]支持单板应用程序参数传递之后,可以通过单板应用程main函数参数灵活控制测试场景,只需要编译一次,之后就可以通过命令行参数控制测试的应用场景,而且可以对测试场景进行灵活参数配置。[0044]图1是本发明实施例参数传递的方法流程图。图1的方法由单板加载器执行。[0045]101,调用命令行参数。[0046]其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数。[0047]应理解,可执行程序的运行参数,是指可执行程序的主函数的参数。一般情况下,单板的可执行程序的主函数为main函数,可执行程序的运行参数即为可执行程序的main函数的参数。当然,如果可执行程序使用其它函数作为主函数,则运行参数所指的即为该主函数的参数。[0048]本发明实施例的一个具体例子,单板加载器加载可执行程序的调用命令具体如下:loaderHelloword-argument“argvOargvl,,。[0049]其中,loader为单板加载器,Helloword-argument“argvOargvl”为命令行参数的内容,携带可执行程序的标识Helloword及其运行参数argvO、argvl。[0050]另外,在具体的应用中,可执行程序的标识,可以是可执行程序的一个绝对地址,或者是可执行程序的一个相对地址。例如,当单板加载器loader加载文件夹“C:\app\”下的名为Helloword的可执行程序时,可将当前目录设置为Helloword所在的目录“C:\app\”,然后运行命令loaderHe11oword-argument^argvOargvl”,这是相对地址调用的方式。或者,还可直接执行命令loaderC:\app\HeIloword_argument“argvOargvl”,这是绝对地址调用的方式。[0051]另外,单板加载器调用命令行参数时,可在运行界面中手工输入调用命令,也可在可执行脚本中编辑调用命令,然后执行可执行脚本。例如,在批处理文件中输入调用命令等。[0052]102,解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数。[0053]具体的,单板加载器通过解析命令行参数,可得到该可执行程序的标识及该可执行程序的运行参数。例如,根据命令行参数Helloword-argument“argvOargvl”,单板加载器loader可确定可执行程序的标识为Helloword,并确定可执行程序的运行参数argvO、argvlο[0054]103,根据该可执行程序的标识加载该可执行程序。[0055]其中,该可执行程序包含参数数据段。[0056]可选地,可执行程序的格式为ELF。[0057]不妨本发明实施例的一个链接脚本对Helloword内存段定义具体如下:[0058]MEMORY[0059]{[0060]sram0_seg:org=0x38000000,Ien=0x40[0061]sraml—seg:org=0x38000040,Ien=0x40[0062]sram2_seg:org=0x38000080,Ien=0x40[0063]sram3_seg:org=0x380000c0,Ien=0x40[0064]sram4_seg:org=0x38000100,Ien=0x40[0065]sram5_seg:org=0x38000140,Ien=0x40[0066]sraml4_seg:org=0x38000180,Ien=0x7fe80[0067]sraml5_seg:org=0x40000000,Ien=0xffff980[0068]sraml6_seg:org=0x4ffff980,Ien=0x100[0069]sraml7_seg:org=0x4ffffa80,Ien=0x300[0070]sraml8_seg:org=0x4ffffd80,Ien=0x100[0071]sraml9_seg:org=0x4ffffe80,Ien=0x180[0072]......[0073]arg—data—seg:org=0x38201000,Ien=0xl000/*user_defineddatasegmentusedforargumentsstore氺/[0074]}其中,参数数据段为arg_data_seg。[0075]104,将该可执行程序的运行参数写入已加载的该可执行程序中的参数数据段。[0076]首先,可通过段名查找到存放运行参数的参数数据段arg_data_seg。[0077]然后,将运行参数的个数、参数值、参数指针等信息记录到arg_data_seg中。[0078]以loaderC:\app\Helloword_argument“argvOargvl,,的调用命令为例。一段实现的伪代码及其步骤说明具体如下:[0079]//定义数据指针指向自定义数据段[0080]char氺ptr—mem=arg—data—seg—addr;[0081]//备注:内存中参数数据段前三个长整型分别保存argc,argv[0]地址,argv[I]地址[0082]//1.内存参数数据段首地址保存argc的值[0083]((long*)ptr_mem)[0]=(long)2;[0084]//2.保存argv[0]的地址[0085]((long*)ptr_mem)[I]=ptr_mem+sizeof(long)*3;[0086]//3.保存argv[0]的地址[0087]((long*)ptr_mem)[2]=ptr_mem+sizeof(long)*3+length(argv[0]);[0088]//4.保存argv[0]的值[0089]strcpy(ptr_mem+sizeof(long)*3,argv[0]);[0090]//5.保存argv[I]的值[0091]strcpy(ptr_mem+sizeof(long)*3+length(argv[0]),argv[I]);[0092]当然,在具体的实现中,由于参数个数是不确定地,参数数据段的写入可通过for循环、while循环等来实现。本领域的技术人员可以很容易的实现,本发明实施例不再赘述。[0093]105,将已加载的该可执行程序发送给远程单板。[0094]具体地,单板加载器loader可通过JTAG接口或串口将该可执行程序发送给远程单板。[0095]当然,也不排除使用其它接口发送的可能。[0096]本发明实施例中,通过将可执行程序的运行参数写入可执行程序的参数数据段,以便单板能够根据可执行程序的参数数据段的信息初始化可执行程序的运行参数,从而实现在单板中支持Main函数的参数传递。[0097]图2是本发明实施例参数传递的方法流程图。图2的方法由单板执行。[0098]201,接收远程的单板加载器发送的可执行程序。[0099]其中,该可执行程序的参数数据段中携带该可执行程序的运行参数。[0100]具体地,单板可通过JTAG接口或串口接收远程的单板加载器发送的可执行程序。当然,也不排除使用其它接口接收的可能。[0101]202,根据该可执行程序的参数数据段,初始化该可执行程序的运行参数。[0102]在具体的应用中,单板可通过函数库Iibc来实现可执行程序的运行参数的初始化操作。具体地,可修改函数库libc,使之能够从参数数据段解析main函数的参数,并通过修改main函数栈设置main函数的参数argc和argv。[0103]不妨假设单板以图1所示的实施例发送可执行程序。[0104]此时,单板从可执行程序Helloword的参数数据段中,得到可执行程序Helloword的运行参数argvO和argvl,然后初始化Helloword的Main函数的参数。[0105]本发明实施例中,通过接收单板加载器发送的可执行程序,并根据可执行程序中的参数数据段的信息初始化可执行程序的运行参数,从而实现在单板中支持Main函数的参数传递。[0106]可选地,如图3所示,该方法还可包括:[0107]203,初始化该可执行函数中运行参数以外的其它相关值。[0108]204,执行该可执行程序。[0109]图4是本发明实施例参数传递的方法流程图。图4的方法由单板仿真器执行。[0110]401,调用命令行参数。[0111]其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数。[0112]应理解,可执行程序的运行参数,是指可执行程序的主函数的参数。一般情况下,可执行程序的主函数为main函数,可执行程序的运行参数即为可执行程序的main函数的参数。当然,如果可执行程序使用其它函数作为主函数,则运行参数所指的即为该主函数的参数。[0113]本发明实施例的一个具体例子,单板仿真器加载可执行程序的调用命令具体如下:simulatorHelloword-argument“argvOargvl,,。[0114]其中,simulator为单板仿真器,Helloword-argument“argvOargvl”为命令行参数的内容,携带可执行程序的标识Helloword及其运行参数argvO、argvl。[0115]另外,在具体的应用中,可执行程序的标识,可以是可执行程序的一个绝对地址,或者是可执行程序的一个相对地址。例如,当单板仿真器simulator加载文件夹“C:\app\”下的名为HellowOTd的可执行程序时,可将当前目录设置为HellowOTd所在的目录“C:\app\”,然后运行命令simulatorHelloword-argument“argvOargvl”,这是相对地址调用的方式。或者,还可直接执行命令simulatorC:\app\HeIloword_argument“argvOargvl”,这是绝对地址调用的方式。[0116]另外,单板仿真器调用命令行参数时,可在运行界面中手工输入调用命令,也可在可执行脚本中编辑调用命令,然后执行可执行脚本。例如,在批处理文件中输入调用命令等。[0117]402,解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数。[0118]具体的,单板仿真器通过解析命令行参数,可得到该可执行程序的标识及该可执行程序的运行参数。例如,根据命令行参数Helloword-argument“argvOargvl”,单板仿真器simulator可确定可执行程序的标识为Helloword,并确定可执行程序的运行参数argvO、argvlο[0119]403,根据该可执行程序的标识加载该可执行程序。[0120]其中,该可执行程序包含参数数据段。[0121]可选地,可执行程序的格式为ELF。[0122]不妨本发明实施例的一个链接脚本对Helloword内存段定义具体如下:[0123]MEMORY[0124]{[0125]sramO—seg:org=0x38000000,Ien=0x40[0126]sraml—seg:org=0x38000040,Ien=0x40[0127]sram2_seg:org=0x38000080,Ien=0x40[0128]sram3_seg:org=0x380000c0,Ien=0x40[0129]sram4_seg:org=0x38000100,Ien=0x40[0130]sram5_seg:org=0x38000140,Ien=0x40[0131]sraml4_seg:org=0x38000180,Ien=0x7fe80[0132]sraml5_seg:org=0x40000000,Ien=0xffff980[0133]sraml6_seg:org=0x4ffff980,Ien=0x100[0134]sraml7_seg:org=0x4ffffa80,Ien=0x300[0135]sraml8_seg:org=0x4ffffd80,Ien=0x100[0136]sraml9_seg:org=0x4ffffe80,Ien=0x180[0137]......[0138]arg—data—seg:org=0x38201000,Ien=0xl000/*user_defineddatasegmentusedforargumentsstore氺/[0139]}其中,参数数据段为arg_data_seg。[0140]404,将该可执行程序的运行参数写入已加载的该可执行程序中的参数数据段。[0141]首先,可通过段名查找到存放运行参数的参数数据段arg_data_Seg。[0142]然后,将运行参数的个数、参数值、参数指针等信息记录到arg_data_seg中。其实现的伪代码可参考图1的步骤104中的伪代码,本发明实施例在此不再赘述。[0143]405,根据已加载的该可执行程序中的参数数据段,初始化该可执行程序的运行参数。[0144]单板仿真器从已加载的可执行程序Helloword的参数数据段中,可得到可执行程序Helloword的运行参数argvO和argvl,然后初始化Helloword的Main函数的参数。[0145]本发明实施例中,通过将可执行程序的运行参数写入可执行程序的参数数据段中,并在模拟运行可执行程序时根据可执行程序中的参数数据段的信息初始化可执行程序的运行参数,从而实现对单板中支持Main函数的参数传递的仿真模拟。[0146]另外,本发明实施例的方法,只需要一套libc,且不需要在单板仿真器的Iibc中实现伪指令。[0147]可选地,如图5所示,该方法还包括:[0148]406,初始化可执行函数中运行参数以外的其它相关值。[0149]407,执行该可执行程序。[0150]图6是本发明实施例单板加载器600的结构示意图。单板加载器600可包括:调用单元601,解析单元602,载入单元603,数据写入单元604,和输出单元605。[0151]调用单元601,用于调用命令行参数,其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数;[0152]解析单元602,用于解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数;[0153]载入单元603,用于根据该可执行程序的标识加载该可执行程序,其中,该可执行程序包含参数数据段;[0154]数据写入单元604,用于将该可执行程序的运行参数写入已加载的该可执行程序中的参数数据段;[0155]输出单元605,用于将已加载的该可执行程序发送给远程单板。[0156]本发明实施例中,单板加载器600通过将可执行程序的运行参数写入可执行程序的参数数据段,以便单板能够根据可执行程序的参数数据段的信息初始化可执行程序的运行参数,从而实现在单板中支持Main函数的参数传递。[0157]可选地,该可执行程序的格式为ELF。[0158]可选地,该输出单元具体用于通过JTAG接口或串口将该可执行程序发送给远程单板。[0159]单板加载器600还可执行图1的方法,并具备单板加载器或loader在图1所示实施例的功能,本发明实施例在此不再赘述。[0160]图7是本发明实施例单板700的结构示意图。单板700可包括:输入单元701和初始化单元702。[0161]输入单元701,用于接收远程的单板加载器发送的可执行程序。[0162]其中,该可执行程序的参数数据段中携带该可执行程序的运行参数。[0163]初始化单元702,用于根据该可执行程序的参数数据段,初始化该可执行程序的运行参数。[0164]本发明实施例中,单板700通过接收单板加载器发送的可执行程序,并根据可执行程序中的参数数据段的信息初始化可执行程序的运行参数,从而实现在单板中支持Main函数的参数传递。[0165]可选地,输入单元701具体用于通过JTAG接口或串口接收该可执行程序。[0166]可选地,初始化单元702还用于初始化该可执行程序中运行参数以外的其它相关值。另外,如图7所示,单板700还可包括:执行单元703,用于执行该可执行程序。[0167]单板700还可执行图2的方法,并具备单板在图2、图3所示实施例的功能,本发明实施例在此不再赘述。[0168]图8是本发明实施例单板仿真器800的结构示意图。单板仿真器800可包括:调用单元801、解析单元802、载入单元803、数据写入单元804和初始化单元805。[0169]调用单元801,用于调用命令行参数。[0170]其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数。[0171]解析单元802,用于解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数;[0172]载入单元803,用于根据该可执行程序的标识加载该可执行程序。[0173]其中,该可执行程序包含参数数据段。[0174]数据写入单元804,用于将该可执行程序的运行参数写入已加载的该可执行程序中的参数数据段。[0175]初始化单元805,用于根据已加载的该可执行程序中的参数数据段,初始化该可执行程序的运行参数。[0176]本发明实施例中,单板仿真器800通过将可执行程序的运行参数写入可执行程序的参数数据段中,并在模拟运行可执行程序时根据可执行程序中的参数数据段的信息初始化可执行程序的运行参数,从而实现对单板中支持Main函数的参数传递的仿真模拟。[0177]可选地,该可执行程序的格式为ELF。[0178]可选地,该初始化单元805还用于初始化该可执行程序中运行参数以外的其它相关值。另外,如图8所示,该单板仿真器还包括:执行单元806,用于执行该可执行程序。[0179]单板仿真器800还可执行图4的方法,并具备单板仿真器在图4、图5所示实施例的功能,本发明实施例在此不再赘述。[0180]图9是本发明实施例单板加载器900的结构示意图。单板加载器900可包括通道接口901、处理器902和存储器903。[0181]通道接口901、处理器902和存储器903通过总线904系统相互连接。总线904可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。[0182]存储器903,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器903可以包括只读存储器和随机存取存储器,并向处理器902提供指令和数据。存储器903可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。[0183]处理器902,执行存储器903所存放的程序,并具体用于执行以下操作:[0184]调用命令行参数,其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数;[0185]解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数;[0186]根据该可执行程序的标识加载该可执行程序,其中,该可执行程序包含参数数据段;[0187]将该可执行程序的运行参数写入已加载的该可执行程序中的参数数据段;[0188]通过通道接口901将已加载的该可执行程序发送给远程单板。[0189]上述如本发明图1中任一实施例揭示的单板加载器或loader执行的方法可以应用于处理器902中,或者由处理器902实现。处理器902可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器902中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器902可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器903,处理器902读取存储器903中的信息,结合其硬件完成上述方法的步骤。[0190]本发明实施例中,单板加载器900通过将可执行程序的运行参数写入可执行程序的参数数据段,以便单板能够根据可执行程序的参数数据段的信息初始化可执行程序的运行参数,从而实现在单板中支持Main函数的参数传递。[0191]可选地,该可执行程序的格式为ELF。[0192]可选地,通道接口901可以是JTAG接口或串口。在用于通过通道接口901将已加载的该可执行程序发送给远程单板的过程中,处理器902具体用于通过JTAG接口或串口将该可执行程序发送给远程单板。[0193]单板加载器900还可执行图1的方法,并具备单板加载器或loader在图1所示实施例的功能,本发明实施例在此不再赘述。[0194]图10是本发明实施例单板1000的结构示意图。单板1000可包括通道接口1001、处理器1002和存储器1003。[0195]通道接口1001、处理器1002和存储器1003通过总线1004系统相互连接。总线1004可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。[0196]存储器1003,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器1003可以包括只读存储器和随机存取存储器,并向处理器1002提供指令和数据。存储器1003可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。[0197]处理器1002,执行存储器1003所存放的程序,并具体用于执行以下操作:[0198]通过通道接口1001接收远程的单板加载器发送的可执行程序,其中,该可执行程序的参数数据段中携带该可执行程序的运行参数;[0199]根据该可执行程序的参数数据段,初始化该可执行程序的运行参数。[0200]上述如本发明图2-3中任一实施例揭示的单板执行的方法可以应用于处理器1002中,或者由处理器1002实现。处理器1002可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1002中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1002可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1003,处理器1002读取存储器1003中的信息,结合其硬件完成上述方法的步骤。[0201]本发明实施例中,单板1000通过接收单板加载器发送的可执行程序,并根据可执行程序中的参数数据段的信息初始化可执行程序的运行参数,从而实现在单板中支持Main函数的参数传递。[0202]可选地,通道接口1001可以是JTAG接口或串口。在用于通过通道接口1001接收远程的单板加载器发送的可执行程序的过程中,处理器902具体用于通过JTAG接口或串口接收该可执行程序。[0203]可选地,处理器1002还用于初始化该可执行程序中运行参数以外的其它相关值,并执行该可执行程序。[0204]单板1000还可执行图2的方法,并具备单板在图2、图3所示实施例的功能,本发明实施例在此不再赘述。[0205]图11是本发明实施例单板仿真器1100的结构示意图。单板仿真器1100可包括通道接口1101、处理器1102和存储器1103。[0206]通道接口1101、处理器1102和存储器1103通过总线1104系统相互连接。总线1104可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。[0207]存储器1103,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器1103可以包括只读存储器和随机存取存储器,并向处理器1102提供指令和数据。存储器1103可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。[0208]处理器1102,执行存储器1103所存放的程序,并具体用于执行以下操作:[0209]调用单元1101,用于调用命令行参数,其中,该命令行参数携带可执行程序标识及该可执行程序的运行参数;[0210]解析该命令行参数以获取该可执行程序的标识及该可执行程序的运行参数;[0211]根据该可执行程序的标识加载该可执行程序,其中,该可执行程序包含参数数据段;[0212]将该可执行程序的运行参数写入已加载的该可执行程序中的参数数据段;[0213]根据已加载的该可执行程序中的参数数据段,初始化该可执行程序的运行参数。[0214]上述如本发明图4-5中任一实施例揭示的单板仿真器执行的方法可以应用于处理器1102中,或者由处理器1102实现。处理器1102可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1102中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1102可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1103,处理器1102读取存储器1103中的信息,结合其硬件完成上述方法的步骤。[0215]本发明实施例中,单板仿真器1100通过将可执行程序的运行参数写入可执行程序的参数数据段中,并在模拟运行可执行程序时根据可执行程序中的参数数据段的信息初始化可执行程序的运行参数,从而实现对单板中支持Main函数的参数传递的仿真模拟。[0216]可选地,该可执行程序的格式为ELF。[0217]可选地,处理器1102还用于初始化该可执行程序中运行参数以外的其它相关值,并执行该可执行程序。[0218]单板仿真器1100还可执行图4的方法,并具备单板仿真器在图4、图5所示实施例的功能,本发明实施例在此不再赘述。[0219]本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能宄竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。[0220]结合本文中所公开的实施例描述的方法或步骤可以用硬件、处理器执行的软件程序,或者二者的结合来实施。软件程序可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或【
技术领域
】内所公知的任意其它形式的存储介质中。[0221]尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内。【权利要求】1.一种单板加载器,其特征在于,包括:调用单元,用于调用命令行参数,其中,所述命令行参数携带可执行程序标识及所述可执行程序的运行参数;解析单元,用于解析所述命令行参数以获取所述可执行程序的标识及所述可执行程序的运行参数;载入单元,用于根据所述可执行程序的标识加载所述可执行程序,其中,所述可执行程序包含参数数据段;数据写入单元,用于将所述可执行程序的运行参数写入已加载的所述可执行程序中的参数数据段;输出单元,用于将已加载的所述可执行程序发送给远程单板。2.如权利要求1所述的单板加载器,其特征在于,所述可执行程序的格式为可执行连接格式ELF。3.如权利要求1或2所述的单板加载器,其特征在于,所述输出单元具体用于通过联合测试行为组织JTAG接口或串口将已加载的所述可执行程序发送给远程单板。4.一种单板,其特征在于,包括:输入单元,用于接收远程的单板加载器发送的可执行程序,所述可执行程序的参数数据段中携带所述可执行程序的运行参数;初始化单元,用于根据所述可执行程序的参数数据段,初始化所述可执行程序的运行参数。5.如权利要求4所述的单板,其特征在于,所述输入单元具体用于通过联合测试行为组织JTAG接口或串口接收所述可执行程序。6.如权利要求4或5所述的单板,其特征在于,所述初始化单元还用于初始化所述可执行程序中运行参数以外的其它相关值;所述单板还包括:执行单元,用于执行所述可执行程序。7.一种单板仿真器,其特征在于,包括:调用单元,用于调用命令行参数,其中,所述命令行参数携带可执行程序标识及所述可执行程序的运行参数;解析单元,用于解析所述命令行参数以获取所述可执行程序的标识及所述可执行程序的运行参数;载入单元,用于根据所述可执行程序的标识加载所述可执行程序,其中,所述可执行程序包含参数数据段;数据写入单元,用于将所述可执行程序的运行参数写入已加载的所述可执行程序中的参数数据段;初始化单元,用于根据已加载的所述可执行程序中的参数数据段,初始化所述可执行程序的运行参数。8.如权利要求7所述的单板仿真器,其特征在于,所述可执行程序的格式为可执行连接格式ELF。9.如权利要求7或8或所述的单板仿真器,其特征在于,所述初始化单元还用于初始化所述可执行程序中运行参数以外的其它相关值;所述单板仿真器还包括:执行单元,用于执行所述可执行程序。10.一种参数传递方法,其特征在于,包括:调用命令行参数,其中,所述命令行参数携带可执行程序标识及所述可执行程序的运行参数;解析所述命令行参数以获取所述可执行程序的标识及所述可执行程序的运行参数;根据所述可执行程序的标识加载所述可执行程序,其中,所述可执行程序包含参数数据段;将所述可执行程序的运行参数写入已加载的所述可执行程序的参数数据段;将已加载的所述可执行程序发送给远程单板。11.如权利要求10所述的方法,其特征在于,所述可执行程序的格式为可执行连接格Self。12.如权利要求10或11所述的方法,其特征在于,所述将已加载的所述可执行程序发送给远程单板包括:通过联合测试行为组织JTAG接口或串口将已加载的所述可执行程序发送给远程单板。13.—种参数传递方法,其特征在于,包括:接收远程的单板加载器发送的可执行程序,所述可执行程序的参数数据段中携带所述可执行程序的运行参数;根据所述可执行程序的参数数据段,初始化所述可执行程序的运行参数。14.一种参数传递方法,其特征在于,包括:调用命令行参数,其中,所述命令行参数携带可执行程序标识及所述可执行程序的运行参数;解析所述命令行参数以获取所述可执行程序的标识及所述可执行程序的运行参数;根据所述可执行程序的标识加载所述可执行程序,其中,所述可执行程序包含参数数据段;将所述可执行程序的运行参数写入已加载的所述可执行程序中的参数数据段;根据已加载的所述可执行程序中的参数数据段,初始化所述可执行程序的运行参数。【文档编号】G06F9/455GK104503738SQ201410710191【公开日】2015年4月8日申请日期:2014年11月28日优先权日:2014年11月28日【发明者】李书旭,曾建江申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1