[发明专利]一种非解释型的动态下载运行方法有效
申请号: | 200810217810.7 | 申请日: | 2008-11-18 |
公开(公告)号: | CN101739288A | 公开(公告)日: | 2010-06-16 |
发明(设计)人: | 彭文剑 | 申请(专利权)人: | 康佳集团股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 深圳市顺天达专利商标代理有限公司 44217 | 代理人: | 高占元 |
地址: | 518053 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 解释 动态 下载 运行 方法 | ||
技术领域
本发明涉及程序运行,更具体地说,涉及一种非解释型的动态下载运行方 法。
背景技术
在很多时候,需要动态下载程序并进行运行,例如从TS流中或者从网络 上下载一个游戏程序到机顶盒中进行运行。这种需求在支持多进程调度的操作 系统上,可以把游戏独立开发成一个可运行文件,把其下载到设备中后当作一 个新进程进行调度执行就可实现。然而对于相当部分不支持多进程调度的嵌入 式操作系统,一般只有使用解释器来解释运行,例如Java虚拟机或JavaScript 解释器。然而,这种方法存在着成本高、效率低的缺点。
嵌入式系统由于其短小精悍,一般不支持多进程调度,而是采用单进程多 线程的模式来进行多任务工作。这样在单进程运行过程中,在不中断现有进程 运行的情况下,就无法对下载得到的程序进行调度而使其运行起来。已有技术 解决动态程序运行的方法有如下两种:
1、使用多个独立运行的系统来实现该功能,即整个系统中存在多个独立 运行系统,在A系统中下载代码到特定位置构成B系统,然后终止A系统启 动B系统运行。这样就实现了程序动态下载运行了。这里下载而来的程序不 能当作原来程序的一个部件运行,而是和原来程序平级关系,只能用其完全替 换原来程序运行。
2、开发的程序代码需要在特定虚拟机或解释器上运行,这就必须在原有 系统中嵌入虚拟机或解释器,在下载下来后要运行时,由虚拟机或解释器对程 序进行翻译解释运行,这是目前动态下载游戏运行所使用的唯一方法。
然而,以上两种方法都存在各自的缺点:
1、对于第一种,每个下载来的程序是个完整独立的进程代码,这样就存 在着大量的重复代码(如硬件驱动代码等),这大大提高了对程序存储器空间 的要求。而且各个程序不能并行运行,A程序在运行B程序就无法运行,这 样许多功能是无法通过这种方式来实现。比如游戏的下载运行,用户一般是需 要在看电视时通过选择需要下载的游戏来进行下载,下载完后能不影响继续看 电视而启动游戏运行。这里由于需要把游戏运行当作原来程序的一个部件(或 者一个线程)运行才能实现,原来程序仍然运行实现播发节目功能的同时,游 戏线程启动游戏运行。
2,对于第二种,把虚拟机当作原来程序的一个线程在后台运行,当有需 要时就对下载来的游戏数据进行解释运行。它具有通用性强的特点,却存在着 很大的缺陷:第一就是运行效率低下,第二就是虚拟机或者解释器本身代码量 巨大,而大大增大了代码空间,第三是如果重头开发游戏运行描述方法进而开 发相应的虚拟机或者解释器,难度太大成本太高;而使用现有的Java和 JavaScript等解释器技术又面临着大量专利或版权问题,需要交纳大量授权使 用费,大大提高了产品成本。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述下载的程序不能并行 运行以及需要特定的解释器来运行的缺陷,提供一种非解释型的动态下载运行 方法。
本发明解决其技术问题所采用的技术方案是:构造一种非解释型的动态下 载运行方法,包括以下步骤:
S1、使预定程序作为主程序的一个线程运行,并定义一个函数指针作为 预定程序的任务入口函数;
S2、从对主程序进行编译联接时形成的各函数地址分配文件中,获取可 能需要调用的各驱动函数所在地址;
S3、基于预定程序的驱动函数类型,定义相应的驱动函数指针,加入各 设备的初始化函数及驱动函数,组成完整的预定程序代码进行测试;
S4、删除各设备的初始化函数及驱动函数,将预定程序中的驱动函数指 针初始值设置成对应驱动函数的地址;
S5、进行预定程序代码部分的编译联接,正确配置编译联接参数,使生 成的主代码和预定程序代码在地址上没有重叠区域;
S6、将预定程序代码的起始放置地址、主函数入口地址和必要信息以及 完整的预定程序目标代码打包;
S7、下载打包的文件后,提取起始放置地址和预定主函数入口地址,将 预定程序代码旋转到指定的内存地址上,启动预定程序的线程来运行下载的预 定程序。
在本发明所述的动态下载运行方法中,所述驱动函数的地址是整数值。
在本发明所述的动态下载运行方法中,所述预定程序的起始放置地址和主 函数入口地址是从预定程序代码的各函数地址分配文件中获取的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于康佳集团股份有限公司,未经康佳集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810217810.7/2.html,转载请声明来源钻瓜专利网。