公开/公告号CN102023867A
专利类型发明专利
公开/公告日2011-04-20
原文格式PDF
申请/专利权人 中兴通讯股份有限公司;
申请/专利号CN201010593919.8
发明设计人 彭涛;
申请日2010-12-17
分类号G06F9/44;
代理机构深圳市世纪恒程知识产权代理事务所;
代理人胡海国
地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部
入库时间 2023-12-18 02:05:01
法律状态公告日
法律状态信息
法律状态
2015-10-21
授权
授权
2012-07-11
实质审查的生效 IPC(主分类):G06F9/44 申请日:20101217
实质审查的生效
2011-04-20
公开
公开
技术领域
本发明涉及通信技术领域,尤其涉及一种终端二次开发装置及二次开发平台构建方法。
背景技术
物联网是在计算机互联网的基础上,融合无线数据通信等技术,构造一个覆盖世界万物的网络,从而实现物品间的信息互联与共享。M2M(machineto machine)是机器之间建立连接的所有技术和手段,随着移动通信技术的发展,M2M相关业务和产品成爆发式增长,已经渗入到国民经济的各个方面,在环境监测、智能家居、智能电网、自动抄表等行业已有应用,正在推动着社会生产和生活方式新一轮的变革。
M2M终端在现阶段主要形态为以无线通信方式接入移动运营商的网络,最终实现与行业应用管理服务平台的通信。M2M终端一种主流的开发方式是在无线通讯模组已有软硬件功能的基础上,利用平台软件提供的二次开发接口进行二次开发,现有二次开发平台大多采用行业应用和平台代码耦合在一起。这样导致行业应用软件开发时编译效率较低,并且行业应用软件和平台软件最终生成一个整体的可执行映像文件,不能够实现平台和行业应用独立升级,不利于终端的性能维护。
发明内容
为实现上述目的,本发明提出一种终端二次开发方法及装置,可以提高行业应用终端二次开发效率。
一种二次开发平台构建方法,其包括:
将平台软件与行业应用软件进行分离;
平台软件被编译成平台可执行映像,并预先下载到通讯模组硬件中;
平台软件根据外部指令决定是否加载行业应用程序可执行映像,如果要加载,则跳转至行业应用程序映像入口地址执行;
二次开发平台提供二次开发软件包,软件包中包含二次开发接口,完成行业应用程序对二次开发接口的调用;
平台软件负责二次开发接口的功能实现。
进一步地,在平台软件根据外部指令决定是否加载行业应用程序可执行映像之前,平台软件实现二次开发接口功能,在编译链接时二次开发接口函数的函数指针固定在一个确定的内存地址上,并为行业应用程序映像的加载和执行预留内存空间。
进一步地,所述二次开发软件包中的二次开发接口通过跳转访问平台软件加载空间中确定地址上的二次开发接口函数指针,完成二次开发接口的调用。
进一步地,所述行业应用程序可执行映像的加载包括:
平台可执行映像加载到内存中运行;
平台程序完成平台自身相关初始化,包括硬件初始化、协议栈初始化;
平台代码开始运行,并等待加载行业应用程序的指令;
平台程序收到有效加载行业应用程序的指令,将行业应用程序映像加载至内存,并跳转到行业应用可执行映像入口地址;
执行行业应用程序,行业应用软件开始运行。
进一步地,所述行业应用程序与平台软件的二次开发接口的调用交互包括:
行业应用程序运行;
行业应用程序调用二次开发接口;
行业应用程序的二次开发接口进行地址跳转访问平台软件中的二次开发接口;
平台软件执行二次开发接口函数;
平台软件二次开发函数执行完毕后,返回到行业应用程序继续运行。
一种终端二次开发装置,其特征在于,所述二次开发装置包括二次开发平台,所述二次开发平台包括平台软件、二次开发软件包;
所述二次开发平台提供二次开发接口;
所述平台软件根据外部指令决定是否加载行业应用软件可执行映像,如果加载,则加载后并跳转至行业应用程序映像入口地址执行;
平台软件被编译成平台可执行映像,并预先下载到通讯模组硬件中;
所述二次开发软件包为用户提供二次开发接口,以便用户开发行业应用软件。
进一步地,所述平台软件和行业应用软件分别独立编译链接生成两个独立的可执行映像文件。
进一步地,所述二次开发软件包用于开发行业应用软件,行业应用软件与二次开发接口库通过编译链接脚本构建,生成独立的行业应用可执行映像文件。
进一步地,在平台软件根据外部指令决定是否加载行业应用程序可执行映像之前,平台软件实现二次开发接口功能,在编译链接时二次开发接口函数的函数指针固定在一个确定的内存地址上,并为行业应用程序映像的加载和执行预留内存空间。
进一步地,所述二次开发软件包中的二次开发接口通过跳转访问平台软件加载空间中确定地址上的二次开发接口函数指针,完成二次开发接口的调用。
本发明的有益效果是:与现有技术相比,采用本发明所述的技术方案,可以提高行业应用终端二次开发效率,并且可以分别实现平台软件和行业应用软件的独立升级,便于维护。
附图说明
图1是传统二次开发平台行业应用和平台软件架构示意图;
图2是本发明实施例终端二次开发装置组成示意图;
图3是本发明实施例终端二次开发方法中平台构建流程示意图;
图4是本发明实施例终端二次开发方法中的行业应用程序的加载执行流程示意图;
图5是本发明实施例终端二次开发方法中,行业应用程序运行后,行业应用与平台软件的二次开发接口的交互过程示意图。
具体实施方式
本发明的主要思想是:将平台软件与行业应用软件进行分离;平台软件被编译成平台可执行映像,并预先下载到通讯模组硬件中;平台软件根据外部指令决定是否加载行业应用程序可执行映像,如果要加载,则跳转至行业应用程序映像入口地址执行;二次开发平台提供二次开发软件包,软件包中包含二次开发接口,完成行业应用程序对二次开发接口的调用;平台软件负责二次开发接口的功能实现。
下面结合附图和具体实施例对本发明技术方案做详细描述。
如图1所示,是传统二次开发平台行业应用和平台软件架构示意图,传统二次开发平台行业应用和平台软件是紧密耦合在一起的,行业应用程序无法独立升级,构建时需要与平台软件一起编译链接,耗时长,效率低。本发明所述二次开发平台将行业应用和平台软件分离,生成两个独立的可执行映像,并通过二次开发接口将行业应用软件和平台软件连接。
请参考图2所示,是本发明实施例终端二次开发装置组成示意图,其包括二次开发平台,所述二次开发平台包括:二次开发平台软件、二次开发软件包、通讯模组硬件和二次开发说明文档。
平台软件和行业应用软件分别独立编译链接生成两个独立的可执行映像文件。平台可执行映像文件被预先烧录到通讯模组中。完成M2M终端的基本硬件初始化、协议栈初始化等,为行业应用提供包括短信、语音、数据传输和定制的其他通讯协议等基本业务能力的二次开发接口,并负责接收加载指令,进行行业应用可执行映像的加载。
平台软件被平台提供商或其他编译者编译成平台可执行映像,并预先下载到通讯模组硬件中。
平台软件将不用对行业应用开放。平台软件编译后生成的平台可执行映像文件被预先烧录到通讯模组中,在没有行业应用固件的情况下,通讯模组中的固件仍然可以正常独立运行,具有普通通讯功能,支持AT命令和基本电信业务。
二次开发软件包用于开发行业应用软件,行业应用软件与二次开发接口库通过编译链接脚本构建,生成独立的行业应用可执行映像文件。二次开发软件包中包括二次开发接口库、函数头文件、编译链接脚本模块,用户使用此开发包开发出特定的行业应用程序。行业应用开发商使用二次开发软件包开发,将编译好的行业应用可执行映像文件通过烧录工具烧写到通讯模组中后,该通讯模组就成为具有特定行业应用功能的M2M终端。终端后续的版本升级可以通过网络将行业应用映像文件下载到终端的文件系统中或者非易失性存储器中保存,重新加载即可。
特别的,平台软件在进行编译链接时,需要通过修改分散加载描述文件,为行业应用软件的加载运行预留下一块专用的内存区域。
本实施例中,终端程序运行内存空间地址为0x2000 0000~0x23FF FF00,其中平台软件预留0x2150 0000~0x2170 0000这段内存空间给行业应用程序使用。行业应用映像程序在编译链接时,载入地址为0x2150 0000,入口地址为0x2150 0000。
由于行业应用可执行映像与平台可执行映像分离,需要在两个可执行映像的二次开发接口间建立对应关系,完成实际的接口调用。本发明所述二次开发平台,平台软件中和二次开发包的软件都有二次开发接口的实现。
其中,平台软件实现二次开发接口具体功能。
特别的,平台软件需要将二次开发接口的函数指针在内存中的地址固定。
优选的,本实施例在平台软件中定义一个数组api_array,将二次开发接口函数指针按照一定的次序存放在此数组中,通过修改分散加载文件,将此数组的加载地址固定在内存地址0x20750000上。
二次开发包中,二次开发接口的实现是函数指针跳转,跳转至内存地址0x20750000处存储的指针数组api_array,通过访问其中的二次开发接口函数指针来调用此二次开发接口。
通讯模组硬件用于信息的传递和通讯。
平台软件中和二次开发包的软件都有二次开发接口的实现,用于实现映像分离后的接口调用。
请参考图3所示,是本发明实施例终端二次开发方法中平台的构建流程示意图,其包括:
S301:二次开发平台提供一套二次开发接口;
S302:平台软件实现二次开发接口功能;
在编译链接时二次开发接口函数的函数指针固定在一个确定的内存地址上,并为行业应用程序映像的加载和执行预留内存空间。
S303:平台软件根据外部指令决定是否加载行业应用程序可执行映像,并跳转至应用程序映像入口地址执行;
S304:平台软件代码独立编译成平台可执行映像,并预先下载到通讯模组硬件中;
S305:二次开发平台提供一个二次开发软件包,完成真正的二次开发接口的调用。
二次开发软件包中的二次开发接口通过跳转访问平台软件加载空间中确定地址上的二次开发接口函数指针,完成真正的二次开发接口的调用。
请参考图4所示,是本发明实施例终端二次开发方法中的行业应用程序的加载执行流程示意图,其包括:
S401:终端上电;
S402:平台可执行映像加载到内存中运行;
S403:平台程序完成平台自身相关初始化,包括硬件初始化、协议栈初始化等;
S404:平台代码开始运行,并等待加载行业应用程序的指令;
该控制指令可以通过短信息、语音电话、本地AT命令等多种途径下发给通讯终端;
S405:判断是否加载行业应用程序,如果是,则转入步骤S406,如果不是,则转入步骤S404。
平台程序收到加载行业应用程序的指令,进行判断,如果该指令不是有效指令,则退回到步骤S404;如果该指令有效,则进行步骤S406;
S406:将行业应用程序映像加载至内存,并跳转到行业应用可执行映像入口地址;
将存储在文件系统中的行业应用可执行映像加载到预留的内存空间0x2150 0000~x2170 0000中,然后跳转到该内存地址0x2150 0000,即行业应用可执行映像的程序入口地址去运行。
S407:执行行业应用程序,行业应用软件开始运行。
参考图5所示,是本发明实施例终端二次开发方法中,行业应用程序运行后,行业应用与平台软件的二次开发接口的交互过程示意图,其包括:
S501:行业应用程序运行用户代码;
S502:用户程序调用二次开发接口;
S503:用户程序侧的二次开发接口进行地址跳转访问;
访问内存0x20750000处存储的指针数组api_array,调用对应的函数指针,完成对平台软件二次开发接口函数的调用;
S504:平台侧软件执行二次开发接口函数;
S505:二次开发函数执行完毕后,返回到行业应用程序继续运行。
综上所述,本发明实施例提供了一种支持行业应用软件与平台软件分离的终端二次开发平台,行业应用软件在编译时,仅需要链接二次开发接口库,而不需要与平台软件一起链接,提高了行业应用软件的开发效率,并且支持行业应用和平台软件的独立升级。
以上所描述的仅为本发明较佳实例,当然不能以此来限定本发明的权利范围,因此,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员都可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应当属于本发明所附的权利要求的保护范围。
机译: 诊断装置的二次开发方法和装置
机译: 二次开发方法的显影装置墨粉密度稳定结构的设定方法
机译: 功能手机二次开发的方法和装置