用于现场下载无线通信设备软件代码段的系统及方法 发明背景
1.发明领域
本发明一般涉及无线通信设备,特别涉及用于通过无线链路接口对无线通信设备的系统软件中的代码段进行现场更新的系统及方法。
2.相关技术说明
发行用于电话的现场更新软件不是罕见的。一旦电话已经被制造出并销售给公众,那么这些更新可能涉及到在此软件中发现的问题。一些更新可能涉及到电话新功能的使用或者由服务供应商提供的服务。而其它更新则可能涉及到区域性问题或与某些载体(carrier)相关的问题。例如,在某些区域中,载体的网络布局可将无线链路(airlink)接口条件的影响加于手机上,从而引起手机表现出不希望的行为,例如异常的信道搜索、异常的呼叫终止、异常的声音等。
此类更新的传统方法是将无线通信设备收回到最接近的运营商零售/服务出口或收回到制造商以处理这种改变,在本文中无线通信设备也被称为无线设备、电话(phone)、电话机(telephone)或手机。这样地更新涉及到昂贵的成本并且超过成本底线。此外,用户会感到不便且有可能愤怒。经常的实际解决方案是给用户提供新电话。
如果无线通信设备软件可以被便宜地升级而且不会给用户带来不便,那么将是有利的。
如果无线通信设备的软件在不会使用户在相当长时间内没有电话使用的情况下升级,那么将是有利的。
如果无线通信设备软件可以在最小的技术服务时间内或不需要将设备送到服务工厂的情况下得到更新,那么将是有利的。
如果无线设备的系统软件可被区分成多个代码段,从而仅需替换系统软件的特定代码段以更新系统软件,那么将是有利的。如果这些代码段可通过无线链路与无线设备相连,那么将是有利的。
发明概述
无线通信设备的软件更新可带给用户尽可能好的产品和用户体验。昂贵的商业部分涉及到收回手机以更新软件。手机制造完成后,这些更新对于向用户提供增值服务或解决电话使用中发现的问题可能是必须的。本发明使得通过无线链路接口在现场实际升级手机软件成为可能。
因此,本发明提供了一种用于对存储在无线通信设备的存储器中的系统软件进行更新的方法。该方法包括:将系统软件形成为第一组符号库,包括代码段地址表、符号偏移地址表、符号存取器代码、补丁库以及用于多个符号库的读写数据;将所述代码段地址表、符号偏移地址表、符号存取器代码、补丁库、读写数据以及符号存取器代码地址排列进补丁管理器代码段;在多个当前代码段中存储用于无线设备的系统软件;通过无线通信设备的无线接口接收新代码段;在存储器文件系统段中保存新代码段;识别用于更新的当前代码段;用新代码段替代当前代码段以形成用于无线设备的更新的系统软件;及执行更新的系统软件。
在本发明的其它方面中,接收新代码段包括接收新的补丁管理器代码段;并且用新代码段替代当前代码段以形成用于无线设备的更新的系统软件包括用新的补丁管理器代码段替代当前的补丁管理器代码段。
下面将提供上述用于更新无线设备系统软件的方法和用于更新系统软件的无线设备系统的其它详细说明。
附图的简要说明
图1是整个无线设备软件维护系统的示意性方块图。
图2是软件维护系统的示意性方块图,其中突出表明了通过无线链路接口的指令集安装。
图3的示意性方块图示出了用于对无线通信设备中的系统软件进行更新的本发明系统。
图4是无线设备存储器的示意性方块图。
图5的表示出了图3中的代码段地址表。
图6是图3中带有符号的符号库1的详细说明。
图7的表示出了图3中的符号偏移地址表。
图8a到图8c的流程图示出了用于对无线通信设备存储器中的系统软件进行更新的本发明方法。
优选实施方案的详细说明
下面将结合无线设备微处理器或存储器中数据位的操作流程、步骤、逻辑块、代码、方法和其它操作的符号表示而给出详细说明的一些部分。这些说明和表示可使数据处理领域的所属技术人员能最有效地将他们的工作内容转达给本领域所属的其他工作人员。此处的流程、微处理器执行步骤、应用、逻辑块、方法等通常被认为是指可导致所需结果的前后一致的顺次步骤或指令。步骤是指那些需要对物理量进行物理处理的步骤。通常尽管不是必须的,但在微处理器基无线设备中,这些量表现为能够存储、传输、组合、比较或其它可处理的电信号或磁信号的形式。有时为了方便,主要是由于通用的原因而将这些信号称为位、值、单元、符号、字符、项、数字等。其中物理设备(如文中提到的存储器)通过数据线或其它的电连接而与其它的物理设备连接。这些物理设备可被认为与逻辑处理或应用程序相互作用,因此它们与逻辑操作“连接”。例如,存储器可存储或访问代码以进行逻辑操作。
然而应该记住,所有这些术语和相似的术语都应与相应的物理量相关,其仅是加到这些物理量上的方便标记。除非在下面的讨论中另有特别指明,应该理解,在整个发明讨论中所使用的术语,如“处理”或“连接”或“翻译”或“显示”或“提示”或“确定”或“显示”或“识别”等,都指的是无线设备微处理系统中的活动和过程,其可对计算机系统寄存器和存储器中表示物理(电子)量的数据进行处理并转换成在无线设备存储器或寄存器或其它此类信息存储、传输或显示设备中类似地表示物理量的其它数据。
图1是整个无线设备软件维护系统100的示意性方块图。在下面对软件维护系统100做总的说明之后,详细说明本发明的系统软件结构。总系统100说明了一种用于传输系统软件更新程序和指令集(程序)并在无线设备中安装传输的软件的方法。系统软件更新程序或补丁制作指令集(PMIS)是由手机制造商创建的。系统软件可被编制成符号库。符号库被排列进代码段。当欲更新符号库时,软件更新程序102按一个或多个代码段传输。将软件更新程序现场传播到无线通信设备104所代表的无线设备中,或使用公知的常规无线、数据或信息传输协议在单独的通信系统中从基站106传输。由于无线通信设备可容易地被改进以装入任何可用的无线传输协议从而达到接受系统软件和PMIS更新程序的目的,所以本发明不限于任何特定的传输形式。
系统软件也可被认为是不同子系统的集合。代码对象可被紧密结合地连接成这些抽象子集中的一个,所得到的集合可称为符号库。此举提供了源代码(code base)的逻辑分类,并且软件补丁和修补可与这些符号库中的一个关联。在大多数情况下,单独的更新程序与一个或至多两个符号库相关联。而源代码的其余部分、其它符号库则保持不变。
符号库的概念为处理代码和常数提供了方法。另一方面,读写(RW)数据适合于含有针对所有库的基于RAM的数据的唯一单个RW库。
一旦传输的代码段被无线设备104接收到,则其必须被处理。无线设备将覆盖写入非易失性存储器108的特定代码段。非易失性存储器108包括文件系统段(FSS)110和代码存储段112。为最小化在FSS 110中的占用空间,代码段在传输前通常被压缩。更新的代码段通常伴随有其RW数据,它是含有针对各个符号库的所有RW数据的另一类符号库。尽管当执行系统软件时,RW数据被装入随机访问易失性读写存储器114中,但是RW数据总归要被存储在非易失性存储器108中,所以每次无线设备被复位时,其都能被装入随机访问易失性读写存储器114中。这包括第一次被装入随机访问易失性读写存储器中的RW数据。如下面更详细地说明中的那样,RW数据通常和补丁管理器代码段排列在一起。
系统100包括虚拟表的概念。使用这种表,在一个代码段中的符号库可被修补(替换),而不会破坏(替换)系统软件(其它代码段)的其它部分。为了更有效率,虚拟表从随机访问易失性读写存储器114中执行。代码段地址表和符号偏移地址表都是虚拟表。
更新的代码段被无线设备104接收到并存储在FSS 110中。无线设备用户接口(UI)通常将通知用户有新软件可用。作为对UI提示的响应,用户以修补或更新操作来回答通知和信号。可选择地,更新操作可自动进行。当进行更新操作时,无线设备可能不能进行标准的通信任务。补丁管理器代码段包括也被装入随机访问易失性读写存储器114中的非易失性读写驱动符号库。非易失性读写驱动符号库使得代码段被更新的代码段盖写。如图所示,代码段n和补丁管理器代码段被更新的代码段盖写。补丁管理器代码段包括读写数据、代码段地址表、符号偏移地址表以及符号存取器代码和符号存取器代码地址(下面讨论)。当引入更新的代码段,并且更新的补丁管理器代码段包括读写数据、代码段地址表、以及对更新的代码段有效的符号偏移地址表时,该数据的一些部分是无效的。一旦更新的代码段被装入代码存储段112中,无线设备被复位。在复位操作之后,无线设备能执行更新的系统软件。应该理解,补丁管理器代码段可包括上面没有讨论的其它符号库。这些其它的符号库不需要被装入易失性读写存储器114中。
图2是软件维护系统100的示意性方块图,其中突出表明了通过无线链路接口的指令集安装。除了更新系统软件代码段外,维护系统100可下载并安装指令集或程序,在本文中也被称为补丁制作指令集(PMIS)。PMIS代码段200按照与上述系统软件代码段相同的方式被传输给无线设备104。PMIS代码段起初储存在FSS 110中。PMIS代码段通常是二进制文件,并可被直观化(visualized)成针对手机的编译指令。对于提供基本数学操作性能和条件执行操作性能而言,PMIS代码段是足够全面的。例如,RF校准PMIS能执行下面的操作:
IF RF CAL ITEM IS LESS THAN X
EXECUTE INSTRUCTION
ELSE
EXECUTE INSTRUCTION
PMIS可支持基本数学操作,如加、减、乘、除。与系统软件代码段相同,可装入PMIS代码段以响应UI提示,并且在PMIS装入到代码存储段112后无线设备必须复位。然后PMIS段可再执行。如果PMIS代码段与任何虚拟表或读写数据关联,则为了在代码存储段112中安装,更新的补丁管理器代码段将和PMIS一起被传输。可选择地,PMIS也可被保持并在FSS 110中处理。当手机104执行完PMIS段中的所有指令后,可从FSS 110删除PMIS段。
在本发明的某些方面中,将系统软件编制进符号库中可能会影响执行所需要的易失性存储器114和非易失性存储器108的大小。这是由于通常代码段比排列在代码段中的符号库更大的原因。这些较大代码段用以容纳更新的代码段。将系统软件编制成库的集合对非易失性存储器的大小需求有影响。对于同样的代码长度而言,使用非易失性存储器的容量较大,这是由于代码段可比排列于其中的符号库更大的原因。
PMIS是一种非常有效的运行时期(runtime)指令引擎。通过PMIS环境,手机可执行任何传给它的指令。这种机制可被用来支持RF校准和PRI更新程序设计。更一般而言,当制造商或服务供应商认识到通常作为用户报怨的结果的软件问题时,PMIS可被用于远程调试无线设备软件。PMIS也可记录诊断软件问题所需要的数据。PMIS可提供用于数据分析、调试及修复的最新下载的系统应用程序。PMIS可提供用于分析的基于RW数据的更新程序,并可能代替更新的系统软件代码段而对问题进行短期修复。PMIS可提供由无线设备使用的存储器压缩算法。
一旦软件更新程序被传输到无线设备,则软件维护系统100支持存储器压缩。存储器压缩与台式计算机中的磁盘碎片整理(de-fragmentation)应用相似。这种压缩方法可确保存储器的最佳使用,并对将来的代码段更新程序有很好的节余,因为更新的代码段大小是不可预测的。当系统100被修补(更新)时,其可分析代码存储段。系统100试图将更新的代码段装入由被代替的代码段所占据的存储空间。如果更新的代码段比被代替的代码段更大,那么系统100在存储器112中压缩代码段。可选择地,制造商或服务提供商可计算这种压缩,并且压缩指令可被传输到无线设备104。
由于算法的复杂性和大量的数据活动,所以压缩是耗费时间的过程。在开始任何过程之前,压缩算法可预测可能性。在试图压缩之前,可利用来自用户的UI提示以提出请求。
在本发明的某些方面中,所有的系统软件代码段可被同时更新。然而,完整的系统软件升级将需要较大的FSS 110。
图3的示意性方块图示出了用于对无线通信设备中的系统软件进行更新的本发明系统。系统300包括在存储器108中的代码存储段112,其包括被区分成多个当前代码段的可执行无线设备系统软件。图中示出的是代码段1(302)、代码段2(304)、代码段n(306)以及补丁管理器代码段308。但是,本发明不限于任何特定数量的代码段。另外,系统300还包括排列进第二组代码段的第一组符号库。图中示出的是排列在代码段1(302)中的符号库1(310)、排列在代码段2(304)中的符号库2(312)和符号库3(314)以及排列在代码段n(306)中的符号库m(316)。每个库都包括具有相关功能的符号。例如,符号库1(310)可能与无线设备液晶显示器(LCD)的操作有关。则此符号与显示功能关联。如下面详细说明的,其它符号库被排列在补丁管理器代码段308中。
图4是无线设备存储器的示意性方块图。如图所示,存储器是图1中的代码存储段112。该存储器是可写的非易失性存储器,如闪存。应该理解,代码段不必一定要存储在与FSS 110相同的存储器中。还应该理解,本发明的系统软件结构能使代码段存储在多个合作的存储器中。代码存储段112包括第二组连续编址的存储块,其中每个存储块存储来自于第二组代码段的相应代码段。因而,代码段1(302)存储在第一存储块400中,代码段2(304)存储在第二存储块402中,代码段n(306)存储在第n存储块404中,并且补丁管理器代码段(308)存储在第p存储块406中。
比较图3与图4,每个代码段的起始位置都存储在存储器中相应的起始地址处,符号库被排列成从代码段的起始位置处开始。也就是说,每个符号库开始于第一地址处并从第一地址顺序通过一定地址范围。例如,代码段1(302)从代码存储段存储器112中的第一起始地址408(用“S”标示)开始。在图3中,符号库1(310)从第一代码段的起始位置318处开始。类似地,代码段2(304)从第二起始地址410(如图4)开始,符号库2从代码段2的起始位置320(图3)处开始。代码段n(306)从代码存储段存储器112中的第三起始地址412(图4)开始,符号库m(316)从代码段n的起始位置322(图3)处开始。补丁管理器代码段从代码存储段存储器112的第p起始地址(414)处开始,补丁管理器代码段308中的第一符号库从补丁管理器代码段的起始位置324处开始。因而,符号库1(310)最终存储在第一存储块400中。如果代码段包括多个符号库,如代码段2(304),则此多个符号库被存储在相应的存储块中,在这种情况下是第二存储块402。
在图3中,系统软件结构300还包括作为一种符号的代码段地址表326,该类符号包括在排列于补丁管理器代码段308中的符号库内。代码段地址表可交叉引用代码段标识符与存储器中的相应代码段起始地址。
图5的表示出了图3中的代码段地址表326。代码段地址表326被查询以用于为符号库搜索代码段起始地址。例如,当需要执行符号库1中的符号时,系统300将搜索代码段1。为了找到代码段1的起始地址并且由此定位符号库1中的符号,则需查询代码段地址表326。代码段内的符号库排列及用表跟踪代码段使得代码段可被移动或扩展。扩展或移动操作对于安装升级代码段(带有升级符号库)是需要的。
返回图3,应该注意,并非每个符号库都必须在代码段的起始位置处开始。如图所示,符号库3(314)排列在符号段2(304)中,但是其不从符号段起始地址320处开始。因而,如果需要执行符号库3(314)中的符号,系统300需查询代码段地址表326以寻找到代码段2(304)的起始地址。如下所述,符号偏移地址表使得符号库3(314)中的符号可被定位。穿过多个符号库传送符号也没有关系,只要它们和相同的代码段保留在一起。
如上所述,每个符号库包括功能上相关的符号。符号是由程序员定义的名称,其用于定位和使用程序主体(routine body)、变量或数据结构。因而,符号可以是地址或值。符号可以在内部或外部。内部符号在超出当前代码段的范围时是不可见的。更具体而言,它们不能被其它代码段内的其它符号库找到。外部符号在多个代码段之间使用及调用,并且可被不同代码段内的库找到。符号偏移地址表通常包括所有外部符号的列表。
例如,符号库1(310)可以在无线设备显示器上生成字符。在这个库中,符号将依次生成电话号码、姓名、时间或其它显示特征。各个特征都是利用程序产生的,其在本文中被称为符号。例如,符号库1(310)中的一个符号可在显示器上生成电话号码。这个符号以“X”表示,且为外部符号。当无线设备接收电话呼叫并且呼叫方ID服务被激活时,系统必须执行符号“X”以在显示器上产生数字。因此,系统必须找到符号“X”的位置。
图6是对图3中带有符号的符号库1的详细说明。符号从各自代码段起始地址处开始偏移排列。在许多情况下,符号库的起始位置就是代码段的起始位置,但是如果代码段包括超过一个的符号库,这就不准确了。符号库1(310)在代码段1的起始位置处开始(参见图3)。如图6所示,符号“X”被定位在距符号库起始位置的偏移量(03)处,符号“Y”被定位在偏移量(15)的位置处。符号偏移地址保存在补丁管理器代码段中的符号偏移地址表328中(参见图3)。
图7的表示出了图3中的符号偏移地址表328。符号偏移地址表328可交叉引用符号标识符和相应的偏移地址以及存储器中的相应代码段标识符。因而,当系统试图执行符号库1中的符号“X”时,需查询符号偏移地址表328以找到符号相对于其内排列有此符号的代码段的确切地址。
返回到图3,第一组符号库通常都包括必须在这些符号库的执行中被查询或设置的读写数据。例如,符号库可以包括由条件语句决定的操作。读写数据段被查询以确定完成条件语句所需要的状态。本发明将所有符号库中的读写数据分组成共享的读写段。在本发明的某些方面中,读写数据330排列在补丁管理器代码段308中。可选择地(未示出),读写数据可被排列在不同的代码段中,例如代码段n(306)中。第一组符号库也包括排列在代码段中的符号存取器代码用以计算所寻找符号的地址。符号存取器代码可被排列并存储在单独的代码段中的地址内,例如代码段2(304)内。然而,如图所示,符号存取器代码332被排列并存储在补丁管理器代码段308中的地址内。系统软件结构300还包括用于存储符号存取器代码地址的第一单元。所述第一单元可以是在代码存储段112中或是在无线设备的独立存储器段(图未示)内的代码段。该第一单元也可与读写数据排列在相同的代码段中。如图所示,第一单元334与读写数据330、符号偏移地址表328、代码段地址表326、符号存取器代码332及补丁库(补丁符号库)336一起存储在补丁管理器代码段308中。
符号存取器代码访问代码段地址表和符号偏移地址表以在存储器内计算或搜索所寻找的符号的地址。也就是说,符号存取器代码利用相应的符号标识符和相应的代码段标识符来计算所寻找的符号的地址。例如,如果寻找符号库1中的符号“X”,那么需调用符号存取器以寻找相应于符号“X”的符号标识符(符号ID)X_1(参见图7)。符号存取器代码查询符号偏移地址表以确定出X_1符号标识符距代码段1起始位置的位移量(03)(参见图6)。调用符号存取器代码以寻找相应于代码段1的代码段标识符CS_1。符号存取器代码查询代码段地址表以确定出与代码段标识符(代码段ID)CS_1相关的起始地址。按照这种方式,符号存取器代码就确定出符号标识符X_1距地址(00100)的偏移量(03),或其被定位在地址(00103)处。
因为是实际代码的一部分,所以符号“X”是保留名。换句话说,其包括与其相关的绝对数据。此数据可以是地址或值。符号标识符是为了跟踪符号而产生的别名。符号偏移地址表和代码段地址表二者与标识符一同起作用以避免与保留符号和代码段名称的混淆。相同的符号名称也有可能在许多符号库之间交叉使用。标识符的使用可防止这些符号间的混淆。返回到图1,系统软件结构300还包括易失性读写存储器114,其一般为随机访问存储器(RAM)。读写数据330、代码段地址表326、符号偏移地址表328、符号存取器代码332及符号存取器代码地址334被从补丁管理器段装入到易失性读写存储器114中,以用于系统软件执行期间的访问。众所周知,代码在RAM中的访问次数明显少于在非易失性存储器(如闪存)中的访问次数。
返回到图3,应该注意,符号库不一定必须填满排列于其中的代码段,尽管存储块的大小被设置成恰好可容纳存储在其内的相应代码段。可选择地,第二组代码段中的每个代码段都具有可容纳被排列的字符库的字节长度,每个连续编址的存储块都具有可容纳相应代码段的字节长度。例如,代码段1(302)可以是100字节的段以容纳具有100字节长度的符号库。第一存储块将是100字节以匹配代码段1的字节长度。然而,装入到代码段1的符号库可以小于100字节。如图3所示,当符号库1(310)小于100字节时,代码段1(302)具有未用段340。因而,第二组代码段的每个代码段可以比容纳被排列的符号库所需的长度更大的长度。通过“扩大”代码段,就可以容纳更大长度的更新符号库。
如图3所示,系统300包括在本文也被称为补丁库336的补丁符号库,用以将当前代码段和代码存储段中的新代码段排列在一起。在代码存储段中将新代码段和当前代码段排列在一起可形成更新的可执行系统软件。补丁管理器336不但可将新代码段和当前代码段排列在一起,而且可用更新的代码段来替换代码段。
返回到图4,存储器108的文件系统段110可接收新代码段,如新代码段450和更新的补丁管理器代码段452。文件系统段也可接收第一补丁管理器指令集(PMIS)454,包括用于将当前代码段和新代码段排列在一起的指令。如图1所示,无线链路接口150可接收新的或更新的代码段以及第一PMIS。尽管无线链路接口150是由天线表示的,但是应该理解,无线链路接口也包括RF收发机、基带电路及解调电路(未示出)。文件系统段110可保存通过无线链路接口150接收到的新代码段。作为对第一PMIS 454的响应,从易失性读写存储器114中执行的补丁库336可用新的或更新的代码段450替换代码存储段中的第一代码段,例如代码段n(306)。通常,用更新的补丁管理器代码段452替换补丁管理器代码段308。当代码段被替换时,补丁库336用文件系统段110中的更新的代码段(例如代码段450)盖写代码存储段112中的第一代码段,例如代码段n(306)。在极端情况下,存储段112中的所有代码段都被更新的代码段所替换。即,FSS 110接收第二组更新的代码段(未示出),并且补丁库336用第二组更新的代码段替换代码存储段112中的第二组代码段。当然,FSS 110必须足够大以容纳通过无线链路接口接收的第二组更新的代码段。
如上所述,接收到的更新的代码段可包括读写数据代码段、代码段地址表代码段、符号库、符号偏移地址表代码段、符号存取器代码段或带有新补丁库的代码段。所有这些代码段和与它们相关的符号库及符号可被存储成不同和独立的代码段。然后这些代码段中的每一个都可被唯一的更新的代码段所替换。也就是说,更新的读写代码段可被接收并替换代码存储段中的读写代码段。更新的代码段地址表代码段可被接收并替换代码存储段中的代码段地址表代码段。更新的符号偏移地址表代码段可被接收并替换代码存储段中的符号偏移地址表代码段。更新的符号存取器代码段可被接收并替换代码存储段中的符号存取器代码段。类似地,更新的补丁管理器代码段(带有补丁库)可被接收并替换代码存储段中的补丁管理器代码段。
但是,上述代码段通常被在补丁管理器代码段中捆绑在一起。这样,当补丁管理器代码段308被更新的补丁管理器代码段450所替换时,代码存储段中的读写代码段可被来自文件系统段110的更新的读写代码段替换。类似地,当安装更新的补丁管理器代码段450时,代码段地址表、符号偏移地址表、符号存取器代码段以及补丁库可被替换。新的读写数据、新的代码段地址表、新的符号偏移地址表、新的符号存取器代码以及作为更新的补丁管理器代码段450的新的补丁库与代码存储段中的当前代码段的排列可形成更新的可执行系统软件。当文件系统段110接收更新的符号存取器代码地址时,补丁管理器用更新的符号存取器代码地址替换存储器的第一单元中的符号存取器代码地址。如上所述,存储器的第一单元334通常是在补丁管理器代码段中(参见图3)。
图8a到图8c的流程图示出了用于对无线通信设备存储器中的系统软件进行更新的本发明方法。尽管为清楚起见以连续编号的步骤描述本方法,但是除非明确说明,否则不应从编号中得出先后顺序。本方法从步骤800开始。步骤802将系统软件形成为第一组符号库,每个符号库都包括至少一个符号。另外,将系统软件形成为第一组符号库包括各个符号库,每个符号库都具有相关的功能。步骤804将第一组符号库排列进第二组代码段。步骤806将无线设备的系统软件保存进多个当前代码段中。步骤808通过无线通信设备的无线接口接收新代码段。步骤810将新代码段和当前代码段排列在一起以形成用于无线设备的更新的系统软件。步骤812执行更新的系统软件。
在本发明的某些方面中,步骤809识别用于更新的第一代码段。在步骤810中将新代码段和当前代码段排列在一起包括用新代码段替换第一代码段。在步骤812中执行更新的系统软件包括在执行更新的系统软件时使用新代码段。当步骤806在第二组当前代码段中存储无线设备的系统软件,并且在步骤808中接收第二组更新的代码段时,则步骤810包括用第二组更新的代码段替换第二组当前代码段,并且步骤812在执行更新的系统软件时使用第二组更新的代码段。
在某些方面中,在步骤802中将系统软件形成为第一组符号库包括形成用于多个符号库的读写数据。然后,在步骤804中将第一组符号库排列进第二组代码段包括将读写数据排列在共享读写代码段中。在步骤808中接收新代码段包括接收更新的读写代码段,并且在步骤809中识别用于更新的第一代码段包括识别读写代码段。在步骤810中将新代码段和当前代码段排列在一起以形成更新的系统软件包括用更新的读写代码段替换读写代码段。在步骤812中执行更新的系统软件包括在执行更新的系统软件时使用更新的读写代码段。
在本发明的某些方面中,在步骤804中将第一组符号库排列进第二组代码段包括在代码段起始位置开始符号库。在步骤806中在多个当前代码段中存储无线设备系统软件包括在相应的起始地址处存储代码段起始位置。然后,作为进一步的步骤,步骤807a维护交叉引用了代码段标识符与相应的起始地址的代码段地址表。
在本发明的某些方面中,在步骤804中将第一组符号库排列进第二组代码段包括从各自的代码段起始地址处开始偏移排列每个符号。然后,作为进一步的步骤,步骤807b维护交叉引用了符号标识符与相应的偏移地址及相应的代码段标识符的符号偏移地址表。
在步骤804中将第一组符号库排列进第二组代码段包括一些子步骤。步骤804a将代码段地址表排列进第一表代码段中,步骤804b将符号偏移地址表排列进第二表代码段中。在步骤808中接收更新的代码段包括接收更新的第一表代码段和更新的第二表代码段。在步骤810中将新代码段和当前代码段排列在一起以形成更新的系统软件包括用更新的第一表代码段替换第一表代码段及用更新的第二表代码段替换第二表代码段。在步骤812中执行更新的系统软件包括在执行更新的系统软件时使用更新的第一表代码段和更新的第二表代码段。
在本发明的某些方面中,在步骤802中将系统软件形成为第一组符号库包括形成补丁库或补丁符号库。在步骤804中将第一组符号库排列进第二组代码段包括将补丁库排列进补丁管理器代码段。将新代码段和当前代码段排列在一起以形成更新的无线设备系统软件包括一些子步骤。步骤810a访问补丁管理器代码段。步骤810b调用补丁库以存储新代码段。在步骤810b中调用补丁库以存储新代码段通常包括调用补丁库以用新代码段盖写第一代码段。
在某些方面中,在步骤808中接收到新代码段后,步骤808a在存储器文件系统段中存储新代码段。在步骤810中将新代码段与当前代码段排列在一起以形成更新的系统软件包括调用补丁库以用存储在存储器文件系统段中的新代码段盖写第一代码段。
在本发明的其它方面中,在步骤808中接收新代码段包括接收更新的补丁管理器代码段。在步骤810中将新代码段与当前代码段排列在一起以形成更新的系统软件包括用更新的补丁管理器代码段替换补丁管理器代码段。然后,在步骤812中执行更新的系统软件包括在执行更新的系统软件时使用更新的补丁管理器代码。
通常步骤804包括排列补丁管理器代码段中的读写数据、代码段地址表以及符号偏移地址表。然后,在步骤808中接收更新的补丁管理器代码段包括接收更新的符号偏移地址表、更新的代码段地址表及更新的读写数据。
在本发明的某些方面中,在步骤802中将系统软件代码形成为第一组符号库包括形成符号存取器代码,并且在步骤804中将第一组符号库排列进第二组代码段包括在补丁管理器代码段中排列符号存取器代码。然后,作为进一步的步骤,步骤806a在存储器的第一单元内存储符号存取器代码地址。在步骤812中执行更新的系统软件包括一些子步骤。步骤812a将第三组符号库装入通常是RAM的易失性读写存储器中。应该理解,并不是补丁管理器代码段中的所有符号库都要装入易失性读写存储器中。此外,除了补丁管理器代码段之外,其它代码段内的符号库也可被装入易失性读写存储器中。步骤812b访问符号存取器代码以响应对存储器内第一单元的引用。步骤812c调用符号存取器代码以使用相应的符号标识符来计算所寻找的符号的地址。调用符号存取器代码以计算所寻找的符号的地址包括访问代码段地址表和符号偏移地址表来计算所寻找的符号的地址。步骤812d从RAM中访问第三组符号库。
通常,在步骤808中接收更新的补丁管理器代码段包括接收更新的符号存取器代码。在步骤810中用更新的补丁管理器代码段替换补丁管理器代码段包括用更新的符号存取器代码替换符号存取器代码。然后,在步骤812中执行更新的系统软件包括在执行更新的系统软件时使用更新的符号存取器代码。
本发明的某些方面还包括如下步骤。步骤808b接收更新的符号存取器代码地址。步骤808c在文件系统段中存储更新的符号存取器代码地址。步骤810c用来自文件系统段的更新的符号存取器代码地址替换存储器第一单元内的符号存取器代码地址。接下来,在步骤812中执行更新的系统软件包括在执行更新的系统软件时使用更新的符号存取器代码地址。
通常在步骤804中将第一组符号库排列进第二组代码段包括将符号存取器代码地址排列进补丁管理器代码段中。然后,在步骤810c中用来自文件系统段的更新的符号存取器代码地址替换存储器第一单元内的符号存取器代码地址包括用在更新的补丁管理器代码段内的更新的符号存取器代码地址替换补丁管理器代码段内的符号存取器代码地址。
在某些方面中,步骤812a将读写数据、代码段地址表、符号偏移地址表、补丁库、符号存取器代码以及符号存取器代码地址从补丁管理器代码段装入易失性读写存储器。步骤812d从读写易失性存储器中访问读写数据、代码段地址表、符号偏移地址表、补丁库、符号存取器代码以及符号存取器代码地址。
在步骤806中在相应起始地址存储代码段起始位置包括一些子步骤。步骤806b创建第二组连续编址的存储块。步骤806c用相应的代码段识别每个存储块。步骤806d在识别的存储块中存储代码段。
在某些方面中,在步骤804中将第一组符号库排列进第二组代码段包括在第一代码段中排列第三组符号库。在步骤806c中用相应的代码段识别每个存储块包括用第一代码段识别第一存储块。在步骤806d中在识别的存储块中存储代码段包括在第一存储块中存储第三组符号库。在步骤808中接收新代码段包括接收其内排列有第三组符号库的更新的第一代码段。然后,在步骤810中将新代码段与当前代码段排列在一起以形成更新的无线设备的系统软件包括用更新的第一代码段盖写第一存储块内的第一代码段。
在某些方面中,在步骤804中将第一组符号库排列进第二组代码段包括在第一代码段中排列第一符号库。在步骤806c中用相应的代码段识别每个存储块包括用第一代码段识别第一存储块。在步骤806d中在识别的存储块中存储代码段包括在第一存储块中存储第一符号库。在步骤808中接收新代码段包括接收其内排列有第一符号库的更新的第一代码段。然后,在步骤810中将新代码段与当前代码段排列在一起以形成更新的无线设备的系统软件包括用更新的第一代码段盖写第一存储块内的第一代码段。
在步骤804中将第一组符号库排列进第二组代码段包括使代码段的大小能够容纳排列的符号库。然后,在步骤806b中创建第二组连续编址的存储块包括使存储块的大小能够容纳相应的代码段。可选择地,在步骤804中将第一组符号库排列进第二组代码段包括使代码段的大小能够容纳更大的排列的符号库。
上面已经提供了用于无线通信设备的可更新系统软件结构的系统和方法。由于代码段中符号库的排列并带有可访问存储器中代码段的起始地址和符号库中符号偏移地址的表,所以此系统非常容易更新。尽管为了说明给出了这些库排列和交叉引用表的几个实施例,但是本发明不仅限于这些实施例。本领域所属技术人员可以想到本发明的其它变化和实施方案。