ES2299587T3 - Sistema y metodo para compactar secciones de codigos en el software de un dispositivo de comunicacion inalambrico actualizable sobre el terreno. - Google Patents

Sistema y metodo para compactar secciones de codigos en el software de un dispositivo de comunicacion inalambrico actualizable sobre el terreno. Download PDF

Info

Publication number
ES2299587T3
ES2299587T3 ES02749166T ES02749166T ES2299587T3 ES 2299587 T3 ES2299587 T3 ES 2299587T3 ES 02749166 T ES02749166 T ES 02749166T ES 02749166 T ES02749166 T ES 02749166T ES 2299587 T3 ES2299587 T3 ES 2299587T3
Authority
ES
Spain
Prior art keywords
section
code
new
sections
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES02749166T
Other languages
English (en)
Inventor
Gowri Rajaram
Paul Seckendorf
Diego Kaplan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyocera Wireless Corp
Original Assignee
Kyocera Wireless Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/917,026 external-priority patent/US7328007B2/en
Priority claimed from US09/916,460 external-priority patent/US7159214B2/en
Priority claimed from US09/916,900 external-priority patent/US7027806B2/en
Priority claimed from US09/927,131 external-priority patent/US7143407B2/en
Priority claimed from US09/969,305 external-priority patent/US7386846B2/en
Application filed by Kyocera Wireless Corp filed Critical Kyocera Wireless Corp
Application granted granted Critical
Publication of ES2299587T3 publication Critical patent/ES2299587T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/22Processing or transfer of terminal data, e.g. status or physical capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/22Processing or transfer of terminal data, e.g. status or physical capabilities
    • H04W8/24Transfer of terminal data
    • H04W8/245Transfer of terminal data from a network towards a terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/18Processing of user or subscriber data, e.g. subscribed services, user preferences or user profiles; Transfer of user or subscriber data
    • H04W8/20Transfer of user or subscriber data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Stored Programmes (AREA)
  • Transceivers (AREA)
  • Telephonic Communication Services (AREA)
  • Communication Control (AREA)
  • Sub-Exchange Stations And Push- Button Telephones (AREA)
  • Information Transfer Between Computers (AREA)
  • Circuits Of Receivers In General (AREA)
  • Selective Calling Equipment (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

Un método para reorganizar una nueva sección de códigos (450, 452, 474) en al menos una sección de códigos actual (302, 304, 306, 308, 344) almacenada en bloques diferenciados (400, 402, 404, 406, 460) de una memoria permanente (108) ejecutados en un dispositivo inalámbrico de comunicación (104), comprendiendo dicho método: la recepción de una actualización de software (102) mediante una red de comunicación inalámbrica; el análisis sintáctico de la actualización del software (102) para obtener una nueva sección de códigos (450, 452, 474); la determinación de un tamaño de la nueva sección de códigos (450, 452, 474); la identificación de un bloque (400, 402, 404, 406, 460) de memoria permanente (108) para almacenar la nueva sección de códigos (450, 452, 474), en el que el bloque (400, 402, 404, 406, 460) de memoria permanente (108) tiene una primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414), en el que el paso identificador también comprende la adjudicación de un nuevo bloque (400, 402, 404, 406, 460) de memoria permanente (108), en el que el paso adjudicador también comprende la identificación de una o más secciones de códigos actuales (302, 304, 306, 308, 344) que comprenden una biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) y una porción sin utilizar (340, 346), en el que la sección de códigos actual (302, 304, 306, 308, 344) comienza en una segunda dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) de un segundo bloque (400, 402, 404, 406, 460) de memoria permanente (108) y la porción sin utilizar (340, 346) finaliza en la dirección final del segundo bloque (400, 402, 404, 406, 460) de memoria permanente (108); la determinación de una tercera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) para la porción sin utilizar (340, 346), en el que la determinación de la tercera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) comprende la lectura de un símbolo procedente de la biblioteca de símbolos (310, 312, 314, 316, 326, 323, 330, 332, 334, 336, 342) y, utilizando dicho símbolo, la determinación de una segunda dirección final para la biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) de la sección de códigos actual (302, 304, 306, 308, 344); y la adjudicación de una porción designada de la memoria permanente (108) entre la tercera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) para la porción sin utilizar (340, 346) y la dirección final del segundo bloque de memoria al nuevo bloque de memoria (400, 402, 404, 406, 460); la escritura de la nueva sección de códigos (450, 452, 474) en el nuevo bloque de memoria (400, 402, 404, 406, 460), en el que la nueva sección de códigos (450, 452, 474) empieza en la primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) del nuevo bloque de memoria; y la actualización de una tabla de direcciones de secciones de códigos (326) para añadir una anotación que comprende un identificador de la nueva sección de códigos (450, 452, 474) y la primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414), en el que el identificador y la primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) están relacionados.

Description

Sistema y método para compactar secciones de códigos en el software de un dispositivo de comunicación inalámbrico actualizable sobre el terreno.
Antecedentes del invento Ámbito del invento
Este invento se relaciona con los dispositivos inalámbricos de comunicaciones en general, y más particularmente con un sistema y un método para compactar secciones de códigos en el software del sistema de un dispositivo inalámbrico de comunicación sobre el terreno, actualizado mediante una interfaz de enlace aéreo.
Descripción de la tecnología relacionada con el presente invento
No es inusual la distribución de actualizaciones de software para teléfonos que ya están en funcionamiento. Estas actualizaciones pueden estar relacionadas con problemas de software detectados cuando los teléfonos ya se han fabricado y distribuido al público. Algunas actualizaciones pueden incluir la incorporación de nuevas características al teléfono, o bien funciones facilitadas por el proveedor de servicios. Otras, en cambio, pueden afectar a problemas de índole regional o a dificultades asociadas a ciertos portadores de la señal telefónica. Así, por ejemplo, en determinadas regiones, la estructuración de los portadores de la señal puede imponer condiciones de interfaz en los enlaces aéreos que ocasionan comportamientos imprevistos del microteléfono, como fallos en la búsqueda de canales, fallos en la conclusión de las llamadas, fallos del sonido, etc.
Tradicionalmente, estas actualizaciones se han abordado recogiendo el dispositivo inalámbrico de comunicación, que en este documento también se denomina dispositivo inalámbrico, teléfono o microteléfono, y entregándolo en el establecimiento de venta/servicio más próximo del portador de la señal, o del fabricante, para incorporarle los cambios. Los costes inherentes a estas actualizaciones son altos y perjudiciales para la rentabilidad de las empresas. Además, es probable que las molestias ocasionadas desagraden a los clientes. Muy a menudo, la solución más práctica consiste en entregar teléfonos nuevos a los usuarios.
Sería ventajoso que el software del dispositivo inalámbrico de comunicación pudiera actualizarse con poco dispendio y sin causar molestias al cliente.
Sería ventajoso que el software del dispositivo inalámbrico de comunicación pudiera actualizarse sin que el cliente tuviera que renunciar al uso de su teléfono durante un tiempo considerable.
Sería ventajoso que el software del dispositivo inalámbrico de comunicación pudiera actualizarse con mínima intervención del personal técnico, o sin necesidad de enviar el dispositivo a un centro de servicio. Sería ventajoso que el software del dispositivo inalámbrico de comunicación pudiera diferenciarse en diversas secciones de códigos, a fin de actualizar el software del sistema reemplazando únicamente determinadas secciones de códigos del mismo. Sería ventajoso que estas secciones de códigos pudieran comunicarse al dispositivo inalámbrico a través del enlace
aéreo.
La descarga de actualizaciones de software a través de una interfaz aérea se describe en el documento WO-00/74.412 (Telefonaktiebolaget LM Ericsson) del 19 de mayo de 2000 (19-05-2000). En el documento WO-93/00633 (PURE SOFTWARE, INC.) del 5 de junio de 1992 (05-06-92) se describe un programa de ampliación de un código objeto que inserta nuevos datos e instrucciones entre datos e instrucciones preexistentes de un código objeto.
Sería ventajoso que el software del sistema pudiera actualizarse con secciones de códigos de mayor tamaño que las secciones de códigos ya instaladas. También sería ventajoso que el software del sistema pudiera reorganizarse para adaptarlo al mayor tamaño de estas secciones de códigos actualizadas.
Resumen del invento
Las actualizaciones del software del dispositivo inalámbrico de comunicación ofrecen al cliente mejoras en cuanto al producto y a la experiencia de uso. Un componente costoso de la explotación comercial es la recogida de los microteléfonos para actualizar el software. Estas actualizaciones pueden ser necesarias para ofrecer nuevos servicios al usuario o a fin de abordar problemas descubiertos en el uso del teléfono ya fabricado. El presente invento permite actualizar de manera práctica el software del microteléfono en poder del usuario, a través de una interfaz de enlace aéreo, cuando el tamaño de las secciones de códigos actualizadas es superior al de las secciones de códigos que se sustituyen.
Para tal fin, el presente invento aporta un método para reorganizar una nueva sección de códigos, transformándola en al menos una sección de códigos actuales y un sistema correspondiente con las características descritas en las reivindicaciones 1 y 11, respectivamente. Otras formas de realización se describen en las reivindicaciones depen-
dientes.
Seguidamente se describen otros detalles del método antes mencionado para reorganizar instrucciones de software en el software del sistema de dispositivos inalámbricos, y de un sistema de dispositivo inalámbrico para reorganizar las instrucciones de software.
\vskip1.000000\baselineskip
Breve descripción de los dibujos
La figura 1 es un diagrama esquemático de bloques que abarca la totalidad del sistema de mantenimiento del software incorporado a un dispositivo inalámbrico;
La figura 2 es un diagrama esquemático de bloques, que abarca el sistema de mantenimiento del software y destaca la instalación de juegos de instrucciones a través de la interfaz de enlace aéreo;
La figura 3 es un diagrama esquemático de bloques, que describe el sistema del presente invento para reorganizar las instrucciones de software en un dispositivo inalámbrico de comunicación;
La figura 4 es un diagrama esquemático de bloques correspondiente a la memoria del dispositivo inalámbrico;
La figura 5 es una tabla representativa de la tabla de direcciones de secciones de códigos de la figura 3;
La figura 6 es una descripción detallada de la biblioteca de símbolos Nº 1 que aparece en la figura 3, con símbolos;
La figura 7 es una tabla representativa de la tabla de direcciones de compensación de símbolos de la figura 3;
La figura 8 es un diagrama esquemático de bloques que presenta los resultados del ejemplo de compactación;
Las figuras 9a a 9e presentan el funcionamiento de un ejemplo de programa de compactación;
Las figuras 10a y 10b son un diagrama de flujo que describe el método del presente invento para reorganizar instrucciones de software almacenadas en una memoria de dispositivo inalámbrico de comunicación;
La figura 11 es un diagrama de flujo que describe otro aspecto del método presentado en las figuras 10a y 10b.
\vskip1.000000\baselineskip
Descripción detallada de las formas de realización preferentes
Algunas partes de las siguientes descripciones detalladas se presentan como procedimientos, pasos, bloques lógicos, códigos, tratamiento y demás representaciones simbólicas de operaciones en bits de datos, dentro de un microprocesador o memoria de dispositivo inalámbrico. Estas descripciones y representaciones son el medio utilizado por los expertos en tecnologías de tratamiento de datos para transmitir con la máxima eficacia la esencia de su trabajo a otros expertos. En este documento, y en general, se considera que un procedimiento, un paso ejecutado por un microprocesador, una aplicación, un bloque lógico, un proceso, etc., es una secuencia autocoherente de pasos o instrucciones conducentes a un resultado deseado. Son "pasos" los que requieren la manipulación física de cantidades físicas. Habitualmente, aunque no sea necesario, estas cantidades adoptan la forma de señales eléctricas o magnéticas almacenables, transferibles, combinables, comparables y en general manipulables en un dispositivo inalámbrico basado en un microprocesador. En ocasiones, principalmente debido a su uso común, se ha demostrado la conveniencia de referirse a estas señales como bits, valores, elementos, símbolos, caracteres, números y otras denominaciones similares. Los dispositivos físicos mencionados, por ejemplo una memoria, se acoplan a otros dispositivos físicos a través de un bus u otras conexiones eléctricas. Puede considerarse que estos dispositivos físicos interactúan con aplicaciones o procesos lógicos y que, por tanto, están "conectados" a operaciones lógicas. Así, por ejemplo, una memoria puede almacenar un código o acceder a él para promover una operación lógica, o una aplicación puede recuperar de la memoria una sección de códigos con el fin de ejecutarla.
No obstante, deberá tenerse presente que todos estos términos y otros similares han de asociarse a las cantidades físicas apropiadas y que sólo son denominaciones convenientes aplicadas a dichas cantidades. Salvo indicación distinta en las discusiones siguientes, se entiende que, en toda la descripción del presente invento, las discusiones que utilicen los términos "tratamiento", "conexión", "traducción/traslado", "visualización/presentación", "inducción", "determinación", "reconocimiento" o similares se refieren a la acción y a los procesos de un sistema de microprocesador de dispositivo inalámbrico que manipula datos representados como cantidades físicas (electrónicas) dentro de los registros y memorias del sistema informático, transformándolos en otros datos similarmente representados como cantidades físicas en el interior de las memorias, los registros u otros dispositivos semejantes que almacenan, transmiten o visualizan información.
La figura 1 es un diagrama esquemático de bloques que abarca la totalidad del sistema de mantenimiento del software de dispositivo inalámbrico 100. La organización del software del sistema del presente invento se explica detalladamente a continuación, tras una consideración general del sistema de mantenimiento de software 100. El sistema general 100 describe un procedimiento para transmitir actualizaciones del software del sistema y juegos de instrucciones (programas), e instalar el software transmitido en un dispositivo inalámbrico. Las actualizaciones del software del sistema o las instrucciones en tiempo de ejecución del gestor de parches (instrucciones PMRTI), más generalmente conocidas como juegos de instrucciones, están producidos por el fabricante de los microteléfonos. El software del sistema se organiza en bibliotecas de símbolos. A su vez, las bibliotecas de símbolos se disponen en secciones de códigos. Cuando hay que actualizar bibliotecas de símbolos, la actualización de software 102 se transporta en forma de una o más secciones de códigos. La actualización del software se transmite a los dispositivos inalámbricos que tienen los usuarios, de los cuales el dispositivo inalámbrico de comunicaciones 104 es un ejemplo representativo, o mediante comunicaciones separadas procedentes de una estación base 106 que utiliza versiones muy conocidas de protocolos para transporte de mensajes o datos por medios aéreos convencionales. El presente invento no se limita a ningún formato de transporte en particular, ya que el dispositivo inalámbrico de comunicación puede modificarse fácilmente para trabajar con cualquier protocolo de transmisión aérea disponible a efectos de recepción de las actualizaciones del software del sistema y de las instrucciones PMRTI.
El software del sistema puede considerarse que es una agrupación de diferentes subsistemas. Los códigos objeto pueden acoplarse perfectamente a uno de estos subsistemas abstractos, dando origen a una agrupación definible como biblioteca de símbolos. Así se obtiene un desglose lógico del código base, pudiendo asociarse los parches y arreglos del software a una de estas bibliotecas de símbolos. En la mayoría de los casos, cada actualización se asocia a una sola biblioteca de símbolos, o como mucho a dos. En el resto del código base y en las demás bibliotecas de símbolos, no hay cambios. El concepto de las bibliotecas de símbolos aporta un mecanismo para tratar con los códigos y las constantes. Los datos de lectura-escritura (RW), por otra parte, encajan en una biblioteca exclusiva de lectura-escritura individual que contiene datos para todas las bibliotecas, basados en una memoria de acceso aleatorio (RAM).
Una vez recibida por el dispositivo inalámbrico 104, la sección de código transportada debe procesarse. Este dispositivo inalámbrico sobrescribe una sección de código determinada de la memoria permanente 108. La memoria permanente 108 comprende una sección de sistema de archivos 110 y una sección de almacenamiento de códigos 112. La sección de códigos suele comprimirse antes del transporte, para minimizar la ocupación de la sección de sistema de archivos 110. Es frecuente que la sección de códigos actualizados vaya acompañada de sus datos de lectura-escritura, otro tipo de biblioteca de símbolos que contiene todos los datos de lectura-escritura para cada biblioteca de símbolos. Aunque los datos de lectura-escritura se cargan en la memoria de lectura-escritura volátil de acceso aleatorio 114 al ejecutarse el software del sistema, siempre necesitan almacenarse en la memoria permanente 108, para poder cargarlos en la memoria de lectura-escritura volátil de acceso aleatorio 114 cada vez que se restablezca el dispositivo inalámbrico. Esto incluye la primera vez que los datos de lectura-escritura se cargan en la memoria de lectura-escritura volátil de acceso aleatorio. Como se explicará con amplitud más adelante, normalmente los datos de lectura-escritura se disponen con ayuda de una sección de códigos de gestor de parches.
El sistema 100 comprende el concepto de las tablas virtuales. Utilizando estas tablas, las bibliotecas de símbolos de una sección de códigos pueden parchearse (reemplazarse) sin romper (reemplazar) otras partes del software del sistema (aparte de las secciones de códigos). Para una mayor eficacia, las tablas virtuales se ejecutan a partir de la memoria de lectura-escritura volátil de acceso aleatorio 114. Una tabla de direcciones de secciones de códigos y una tabla de direcciones de compensación de símbolos son tablas virtuales.
Las secciones de códigos actualizados llegan al dispositivo inalámbrico 104 y se almacenan en la sección de sistema de archivos 110. Normalmente, una interfaz de usuario del dispositivo inalámbrico comunica al usuario la llegada del nuevo software. En respuesta a las indicaciones de la interfaz, el usuario acusa recibo de la notificación y señaliza la operación de parcheo o actualización. Otra posibilidad es que la actualización se realice automáticamente. El dispositivo inalámbrico puede no ser apto para realizar tareas de comunicación normales mientras tiene lugar la actualización. La sección de códigos de gestor de parches comprende una biblioteca de símbolos de controlador de lectura-escritura permanente que también se carga en la memoria de lectura-escritura volátil de acceso aleatorio 114. La biblioteca de símbolos de controlador de lectura-escritura permanente sobrescribe las secciones de códigos con secciones de códigos actualizadas. La sección de códigos de gestor de parches comprende los datos de lectura-escritura, la tabla de direcciones de secciones de códigos y la tabla de direcciones de compensación de símbolos, así como un código descriptor de acceso de símbolos y la dirección del código descriptor de acceso de símbolos (que se describen más adelante). Ciertas porciones de estos datos quedan invalidadas al introducirse secciones de códigos actualizadas, comprendiendo una sección de códigos de gestor de parches actualizada datos de lectura-escritura, una tabla de direcciones de secciones de códigos y una tabla de direcciones de compensación de símbolos con validez para las secciones de códigos actualizadas. Una vez completada la carga de las secciones de códigos actualizadas en la sección de almacenamiento de códigos 112, el dispositivo inalámbrico queda restablecido. Tras el restablecimiento, el dispositivo inalámbrico puede ejecutar el software del sistema actualizado. También conviene tener presente que la sección de códigos de gestor de parches puede comprender otras bibliotecas de símbolos que hasta ahora no se han comentado. Estas otras bibliotecas de símbolos no necesitan cargarse en la memoria volátil de lectura-escritura 114.
La figura 2 es un diagrama esquemático de bloques del sistema de mantenimiento del software 100, que destaca la instalación de juegos de instrucciones a través de la interfaz de enlace aéreo. Además de las secciones de códigos del software del sistema, el sistema de mantenimiento 100 puede descargar e instalar juegos de instrucciones, programas, o juegos de instrucciones del gestor de parches (PMIS), que aquí se denominan instrucciones en tiempo de ejecución del gestor de parches (PMRTI). La sección de códigos de instrucciones PMRTI 200 se transporta al dispositivo inalámbrico 104 del modo ya descrito para las secciones de códigos del software del sistema. Las secciones de códigos de instrucciones PMRTI se almacenan inicialmente en la sección de sistema de archivos 110. Normalmente, una sección de códigos de instrucciones PMRTI es un archivo binario visualizable como instrucciones compiladas al microteléfono. Una sección de códigos de instrucciones PMRTI tiene amplitud suficiente para permitir la realización de operaciones matemáticas básicas y de operaciones de ejecución condicional. Así, por ejemplo, unas instrucciones PMRTI para calibraciones de radiofrecuencia (RF) podrían realizar las operaciones siguientes:
SI EL ELEMENTO CALIBRADOR DE RF ES INFERIOR A X
EJECUTAR LA INSTRUCCIÓN
SI NO LO ES
EJECUTAR LA INSTRUCCIÓN
\vskip1.000000\baselineskip
Las instrucciones PMRTI admiten operaciones matemáticas básicas como sumar, restar, multiplicar y dividir. Al igual que las secciones de códigos del software del sistema, la sección de códigos de instrucciones PMRTI puede cargarse en respuesta a peticiones de la interfaz de usuario, debiendo restablecerse el dispositivo inalámbrico una vez cargadas las instrucciones PMRTI en la sección de almacenamiento de códigos 112. Hecho esto, ya puede ejecutarse la sección de las instrucciones PMRTI. Si la sección de códigos de instrucciones PMRTI está asociada a tablas virtuales o datos de lectura-escritura, se transportará una sección actualizada de códigos del gestor de parches con las instrucciones PMRTI para instalarse en la sección de almacenamiento de códigos 112. Otra posibilidad es mantener y procesar las instrucciones PMRTI desde la sección de sistema de archivos 110. Cuando el microteléfono 104 ha ejecutado todas las instrucciones de la sección PMRTI, ésta puede suprimirse de la sección de sistema de archivos 110.
Las instrucciones PMRTI constituyen un motor de instrucciones en tiempo de ejecución muy potente. El microteléfono es capaz de ejecutar cualquier instrucción recibida a través del entorno PMRTI. Este mecanismo puede utilizarse para calibraciones de RF y actualizaciones de accesos primarios. De manera más general, las instrucciones PMRTI pueden utilizarse para depurar a distancia el software del dispositivo inalámbrico cuando el fabricante o el proveedor de servicios identifican problemas de software, normalmente debido a las quejas de los usuarios. Con las instrucciones PMRTI también es posible registrar datos necesarios para diagnosticar problemas de software. Las instrucciones PMRTI pueden lanzar aplicaciones de sistemas recién descargadas para realizar análisis de datos, depuraciones y arreglos. Las instrucciones PMRTI pueden aportar actualizaciones en bases de datos de lectura-escritura para análisis y posible arreglo inmediato de un problema, en lugar de una sección de códigos del software del sistema actualizados. Las instrucciones PMRTI pueden aportar algoritmos de compactación de memoria utilizables por el dispositivo inalámbrico.
En algunos aspectos del presente invento, la organización del software del sistema en bibliotecas de símbolos puede repercutir en el tamaño de la memoria volátil 114 y de la memoria permanente 108 requeridas para la ejecución. Esto se debe a que, normalmente, las secciones de códigos son mayores que las bibliotecas de símbolos dispuestas en las secciones de códigos. Estas secciones de códigos mayores existen para recibir secciones de códigos actualizadas. La organización del software del sistema como agrupación de bibliotecas repercute en el tamaño requerido de la memoria permanente. Para códigos del mismo tamaño, la cantidad de memoria permanente utilizada será más alta porque las secciones de códigos pueden hacerse mayores que las bibliotecas de símbolos dispuestas en su interior.
Cuando el dispositivo inalámbrico ha recibido las actualizaciones del software, el sistema de mantenimiento del software 100 admite la compactación de la memoria. La compactación de la memoria es una operación similar a la desfragmentación del disco duro en los ordenadores de sobremesa. El mecanismo de compactación asegura que la memoria se utilice de modo óptimo y que quede equilibrada para futuras actualizaciones de secciones de códigos, dada la imprevisibilidad del tamaño de las actualizaciones. El sistema 100 analiza la sección de almacenamiento de códigos en el momento de su parcheo (actualización). El sistema 100 trata de encajar secciones de códigos actualizadas en el espacio de memoria ocupado por la sección de códigos que se está reemplazando. Si el tamaño de la sección de códigos actualizada es superior al de la que se está reemplazando, el sistema 100 compacta las secciones de códigos presentes en la memoria 112.
Otra posibilidad es que el fabricante o el proveedor del servicio calcule la compactación y transmita las instrucciones de compactación al dispositivo inalámbrico 104.
La compactación puede consumir mucho tiempo, debido a la complejidad del algoritmo y al enorme volumen del movimiento de datos. El algoritmo de compactación predice la viabilidad antes de iniciarse cualquier proceso. Pueden utilizarse indicaciones en la interfaz de usuario para obtener el permiso del usuario antes de intentar la compactación.
En ciertos aspectos del presente invento es posible actualizar simultáneamente todas las secciones de códigos del software del sistema. No obstante, una actualización completa del software del sistema requeriría una sección de sistema de archivos 110 más grande. La figura 3 es un diagrama esquemático de bloques, que describe el sistema del presente invento para reorganizar las instrucciones de software en un dispositivo inalámbrico de comunicación. El sistema 300 comprende una sección de almacenamiento de códigos 112 en la memoria 108, que incluye software del sistema ejecutable del dispositivo inalámbrico diferenciado en varias secciones de códigos actuales. La figura presenta las secciones de códigos uno 302, dos 304 y n 306, más una sección de códigos de gestor de parches 308. Sin embargo, el presente invento no se limita a ningún número determinado de secciones de códigos. Además, el sistema 300 también comprende un primer grupo de bibliotecas de símbolos dispuestas en un segundo grupo de secciones de códigos. Se muestran la biblioteca de símbolos uno 310 dispuesta en la sección de códigos uno 302, las bibliotecas de símbolos dos 312 y tres 314 dispuestas en la sección de códigos dos 304, y la biblioteca de símbolos m 316 dispuesta en la sección de códigos n 306. Cada biblioteca comprende símbolos que tienen funcionalidad relacionada. Así, por ejemplo, puede suceder que la biblioteca de símbolos uno 310 participe en el funcionamiento de la pantalla de cristal líquido (LCD) del dispositivo inalámbrico. En este caso, los símbolos estarían asociados a las funciones de visualización. Como se explica con mayor detalle más adelante, en la sección de códigos de gestor de parches 308 se disponen otras bibliotecas de símbolos.
La figura 4 es un diagrama esquemático de bloques correspondiente a la memoria del dispositivo inalámbrico. Como puede apreciarse, la memoria es la sección de almacenamiento de códigos 112 de la figura 1. Se trata de una memoria tipo Flash, de escritura y permanente. Debe quedar claro que no es imprescindible almacenar las secciones de códigos en la misma memoria que la sección de sistema de archivos 110. Igualmente debe entenderse que la estructura del software del sistema del presente invento también podría activarse con secciones de códigos almacenadas en diversas memorias cooperantes. La sección de almacenamiento de códigos 112 comprende un segundo grupo de bloques de memoria direccionados contiguamente, almacenando cada bloque de memoria su correspondiente sección de códigos procedentes del segundo grupo de secciones de códigos. En consecuencia, la sección de códigos uno 302 está almacenada en un primer bloque de memoria 400, la sección de códigos dos 304 en el segundo bloque de memoria 402, la sección de códigos n 306 en el bloque de memoria n 404, y la sección de códigos de gestor de parches 308 en el bloque de memoria p 406.
Comparando las figuras 3 y 4 se comprueba que el inicio de cada sección de códigos se almacena en sus correspondientes direcciones de inicio en la memoria, y las bibliotecas de símbolos se disponen para que comiencen en el inicio de las secciones de códigos. Es decir, cada biblioteca de símbolos comienza en una primera dirección y recorre una serie de direcciones en secuencia desde la primera dirección. Así, por ejemplo, la sección de códigos uno 302 comienza en la primera dirección de inicio 408 (señalada con una "S") de la memoria de secciones de almacenamiento de códigos 112. En la figura 3, la biblioteca de símbolos uno 310 comienza en el inicio 318 de la primera sección de códigos. Igualmente, la sección de códigos dos 304 comienza en una segunda dirección de inicio 410 (figura 4), mientras que la biblioteca de símbolos dos comienza en el inicio 320 de la sección de códigos dos (figura 3). La sección de códigos n 306 comienza en una tercera dirección de inicio 412 de la memoria de secciones de almacenamiento de códigos 112 (figura 4), mientras que la biblioteca de símbolos m 316 comienza en el inicio de la sección de códigos n 322 (figura 3). La sección de códigos de gestor de parches comienza en la dirección de inicio p 414 de la memoria de secciones de almacenamiento de códigos 112, en tanto que la primera biblioteca de símbolos de la sección de códigos de gestor de parches 308 comienza en el inicio 324 de la sección de códigos de gestor de parches. En consecuencia, la biblioteca de símbolos uno 310 queda finalmente almacenada en el primer bloque de memoria 400. Si una sección de códigos comprende varias bibliotecas de símbolos, como sucede con la sección de códigos dos 304, las diversas bibliotecas de símbolos se almacenan en el bloque de memoria correspondiente, en este caso el segundo bloque de memoria 402.
En la figura 3, la estructura del software del sistema 300 también comprende una tabla de direcciones de secciones de códigos 326 como tipo de símbolo incluido en una biblioteca de símbolos dispuesta en la sección de códigos de gestor de parches 308. La tabla de direcciones de secciones de códigos establece referencias cruzadas entre los identificadores de secciones de códigos y sus correspondientes direcciones de inicio de secciones de códigos en la memoria.
La figura 5 es una tabla representativa de la tabla de direcciones de secciones de códigos 326 de la figura 3. La tabla de direcciones de secciones de códigos 326 se consulta para localizar la dirección de inicio de secciones de códigos correspondiente a una biblioteca de símbolos. Así, por ejemplo, el sistema 300 busca la sección de códigos uno cuando se necesita ejecutar un símbolo de la biblioteca de símbolos uno. Para encontrar la dirección de inicio de la sección de códigos uno, y en consecuencia para localizar el símbolo en la biblioteca de símbolos uno, se consulta la tabla de direcciones de secciones de código 326. La disposición de las bibliotecas de símbolos en secciones de códigos, y el seguimiento de las secciones de códigos con una tabla, permite desplazar o expandir las secciones de códigos. Las operaciones de expansión o desplazamiento pueden necesitarse para instalar secciones de códigos actualizadas (con bibliotecas de símbolos actualizadas).
Volviendo a la figura 3, debe tenerse presente que no todas las bibliotecas de símbolos comienzan en el inicio de una sección de códigos. Como puede observarse en la figura, la biblioteca de símbolos tres 314 está dispuesta en la sección de códigos dos 304, pero no comienza en el inicio de la dirección de inicio de la sección de códigos 320. En consecuencia, si hace falta ejecutar un símbolo de la biblioteca de símbolos tres 314, el sistema 300 busca en la tabla de direcciones de secciones de códigos 326 la dirección de inicio de la sección de códigos dos 304. Como se explica más adelante, una tabla de direcciones de compensación de símbolos permite localizar los de la biblioteca de símbolos tres 314. No importa que los símbolos estén repartidos entre varias bibliotecas, siempre que se mantengan con la misma sección de códigos.
Como se ha indicado, cada biblioteca de símbolos comprende símbolos funcionalmente relacionados. Un símbolo es un nombre definido por el programador para localizar y utilizar un cuerpo de rutinas, una variable o una estructura de datos. En consecuencia, un símbolo puede ser una dirección o un valor. Los símbolos pueden ser internos o externos. Los símbolos internos no son visibles más allá del ámbito de la sección de códigos actual. Más concretamente, no son objeto de búsqueda por otras bibliotecas de símbolos, en otras secciones de códigos. Los símbolos externos se utilizan e invocan en diversas secciones de códigos y las bibliotecas los buscan en diferentes secciones de códigos. La tabla de direcciones de compensación de símbolos suele comprender una lista de todos los símbolos externos.
Así, por ejemplo, la biblioteca de símbolos 310 puede generar caracteres en una pantalla de dispositivo inalámbrico. A su vez, los símbolos de esta biblioteca generarían números telefónicos, nombres, la hora u otras funciones de visualización. Cada función se genera con rutinas, que aquí reciben el nombre de símbolos. Así, por ejemplo, un símbolo de la biblioteca de símbolos uno 310 genera números telefónicos en la pantalla. Este símbolo, representado con una "X", es externo. Cuando el dispositivo inalámbrico recibe una llamada telefónica y se activa el servicio de identificación del comunicante, el sistema debe ejecutar el símbolo "X" para generar el número en la pantalla. Por consiguiente, el sistema debe localizar el símbolo "X".
La figura 6 es una descripción detallada de la biblioteca de símbolos uno 310 de la figura 3, con símbolos. Los símbolos se disponen para su compensación desde sus respectivas direcciones de inicio de secciones de códigos. En muchas circunstancias, el inicio de la biblioteca de símbolos es el inicio de una sección de códigos, aunque esto no es válido si una sección de códigos comprende más de una biblioteca de símbolos. La biblioteca de símbolos uno 310 comienza en el inicio de la sección de códigos uno (véase la figura 3). Como se aprecia en la figura 6, el símbolo "X" se encuentra en una compensación de 03 desde el inicio de la biblioteca de símbolos y el "Y" se halla en una compensación de 15. Las direcciones de compensación de símbolos se almacenan en una tabla de direcciones de compensación de símbolos 328, de la sección de códigos de gestor de parches (véase la figura 3).
La figura 7 es una tabla representativa de la tabla de direcciones de compensación de símbolos 328 de la figura 3. La tabla de direcciones de compensación de símbolos 328 establece referencias cruzadas entre los identificadores de símbolos y sus correspondientes direcciones de compensación, y con sus correspondientes identificadores de secciones de códigos en la memoria. En consecuencia, cuando el sistema busca la ejecución del símbolo "X" en la biblioteca de símbolos uno, se consulta la tabla de direcciones de compensación de símbolos 328 para localizar la dirección exacta del símbolo, respecto a la sección de códigos en que se haya dispuesto.
Volviendo a la figura 3, es normal que todas las bibliotecas de símbolos del primer grupo comprendan datos de lectura-escritura que deben consultarse o configurarse en la ejecución de estas bibliotecas de símbolos. Así, por ejemplo, una biblioteca de símbolos puede comprender una operación dependiente de la finalización de una declaración condicional. Se consulta la sección de datos de lectura-escritura, a fin de determinar el estado requerido para completar la declaración condicional. El presente invento agrupa los datos de lectura-escritura procedentes de todas las bibliotecas de símbolos en una sección de lectura-escritura compartida. En algunos aspectos del presente invento, los datos de lectura-escritura 330 se disponen en la sección de códigos de gestor de parches 308. Otra posibilidad (que no se ilustra) es la disposición de los datos de lectura-escritura en una sección de códigos diferente, por ejemplo en la sección de códigos n 306.
El primer grupo de bibliotecas de símbolos también comprende un código de descriptor de acceso de símbolos, en una sección de códigos, para calcular la dirección de un símbolo buscado. El código de descriptor de acceso de símbolos puede disponerse y almacenarse en una dirección de una sección de códigos separada, por ejemplo en la sección de códigos 304. Sin embargo, como se aprecia en la figura, el código de descriptor de acceso de símbolos 332 se ha dispuesto y almacenado en una dirección de la sección de códigos de gestor de parches 308. La estructura del software del sistema 300 también comprende una primera ubicación para almacenar la dirección del código del descriptor de acceso de símbolos. La primera ubicación puede ser una sección de códigos en la sección de almacenamiento de códigos 112, o en una sección de memoria separada perteneciente al dispositivo inalámbrico (que no se ilustra). La primera ubicación también puede disponerse en la misma sección de códigos que los datos de lectura-escritura. Como se aprecia en la figura, la primera ubicación 334 se almacena en la sección de códigos de gestor de parches 308 con los datos de lectura-escritura 330, la tabla de direcciones de compensación de símbolos 328, la tabla de direcciones de secciones de códigos 326 y el código de descriptor de acceso de símbolos 332, más la biblioteca de parches (biblioteca de símbolos de parches) 336.
El código de descriptor de acceso de símbolos accede a la tabla de direcciones de secciones de códigos y a las tablas de direcciones de compensación de símbolos para calcular o hallar en la memoria la dirección de un símbolo buscado. Es decir, el código del descriptor de acceso de símbolos calcula la dirección del símbolo buscado, utilizando el correspondiente identificador de símbolos y el correspondiente identificador de secciones de códigos. Así, por ejemplo, si se busca el símbolo "X" de la biblioteca de símbolos uno, se invoca el descriptor de acceso de símbolos para localizar el identificador de símbolos (ID de símbolos) X_1, correspondiente al símbolo "X" (véase la figura 7). El código del descriptor de acceso de símbolos consulta la tabla de direcciones de compensación de símbolos para determinar que el identificador de símbolos X_1 tiene una compensación de 03 desde el inicio de la sección de códigos uno (véase la figura 6). El código del descriptor de acceso de símbolos se invoca para buscar el identificador de secciones de códigos CS_1, correspondiente a la sección de códigos uno. El código del descriptor de acceso de símbolos consulta la tabla de direcciones de secciones de códigos para determinar la dirección de inicio asociada al identificador de secciones de códigos (ID de secciones de códigos) CS_1. De esta manera, el código del descriptor de acceso de símbolos determina que el identificador de símbolos X_1 está compensado 03 desde la dirección de 00100, o está ubicado en la dirección 00103.
El símbolo "X" es un nombre reservado, por formar parte del código real. Es decir, está asociado a datos absolutos. Estos datos pueden ser una dirección o un valor. El identificador de símbolos es un alias creado para el seguimiento del símbolo. Tanto la tabla de direcciones de compensación de símbolos como la tabla de direcciones de secciones de códigos funcionan con identificadores, para evitar confusiones con nombres de secciones de códigos y símbolos reservados. También es posible utilizar el mismo nombre de símbolo en muchas bibliotecas de símbolos. El uso de identificadores impide las confusiones entre estos símbolos.
Volviendo a la figura 1, la estructura del software del sistema 300 también comprende una memoria volátil de lectura-escritura 114, que suele ser una memoria de acceso aleatorio (RAM). Los datos de lectura-escritura 330, la tabla de direcciones de secciones de códigos 326, la tabla de direcciones de compensación de símbolos 328, el código del descriptor de acceso de símbolos 332 y la dirección de códigos de descriptor de acceso de símbolos 334 se cargan en la memoria volátil de lectura-escritura 114 desde la sección de códigos de gestor de parches, para su acceso durante la ejecución del software del sistema. Como es bien sabido, el tiempo de acceso para códigos almacenados en memorias RAM es sustancialmente inferior al requerido para acceder a una memoria permanente, por ejemplo a una memoria Flash.
Volviendo a la figura 3, cabe señalar que las bibliotecas de símbolos no necesitan llenar las secciones de códigos en las que se han dispuesto, si bien los bloques de memoria están dimensionados para albergar exactamente las correspondientes secciones de códigos almacenadas en su interior. Dicho de otro modo, cada componente del segundo grupo de secciones de datos tiene un tamaño en bytes suficiente para las bibliotecas de símbolos dispuestas, y cada bloque de memoria contiguamente direccionado tiene un tamaño en bytes suficiente para las correspondientes secciones de códigos. Así, por ejemplo, la sección de códigos uno (302) puede ser una sección de 100 bytes para contener una biblioteca de símbolos cuya longitud es de 100 bytes. El primer bloque de memoria tendría 100 bytes, para igualar el tamaño en bytes de la sección de códigos uno. Sin embargo, la biblioteca de símbolos cargada en la sección de códigos uno puede ser inferior a 100 bytes. Como se aprecia en la figura 3, la sección de códigos uno 302 tiene una sección sin utilizar 340, porque la biblioteca de símbolos uno 310 no llega a 100 bytes. En consecuencia, cada sección de códigos del segundo grupo puede tener un tamaño mayor que el necesario para acoger las bibliotecas de símbolos dispuestas. El "sobredimensionado" de las secciones de códigos permite acoger bibliotecas de símbolos actualizadas más extensas.
El concepto de los bloques de memoria contiguamente direccionados hace referencia a la división del espacio físico de las memorias en bloques lógicos de diversos tamaños. "Secciones de códigos" y "bloques de memoria" son términos esencialmente intercambiables cuando la sección de códigos se almacena en una memoria. El concepto de la sección de códigos se utiliza para identificar una sección de códigos quizá mayor que la biblioteca de símbolos, o la agrupación de bibliotecas de símbolos presente en la sección de códigos cuando se desplaza y manipula.
Como se aprecia en la figura 3, el sistema 300 comprende una biblioteca de símbolos de parches, que aquí recibirá la denominación de biblioteca de parches 336, para disponer nuevas secciones de códigos en la sección de almacenamiento de códigos junto con las secciones de códigos ya existentes. La disposición de nuevas secciones de códigos junto con las ya existentes en la sección de almacenamiento de códigos forma el software del sistema ejecutable actualizado. El gestor de parches 336 no sólo dispone nuevas secciones de códigos junto con las ya existentes, sino que cambia secciones de códigos por otras actualizadas.
Volviendo a la figura 4, la sección de sistema de archivos 110 de la memoria 108 recibe nuevas secciones de códigos, por ejemplo la nueva sección de códigos 450 y la sección de códigos de gestor de parches actualizada 452. La sección de sistema de archivos también recibe una primera instrucción en tiempo de ejecución del gestor de parches (PMRTI) 454 que incluye instrucciones para disponer las nuevas secciones de códigos con las ya existentes. Como se aprecia en la figura 1, una interfaz de enlace aéreo 150 recibe secciones de códigos nuevas o actualizadas, además de la primera instrucción PMRTI. Aunque se represente la interfaz de enlace aéreo 150 mediante una antena, debe entenderse que la interfaz de enlace aéreo también incluiría un transceptor de RF, un juego de circuitos de banda base y un juego de circuitos de desmodulación (que no se ilustran). La sección de sistema de archivos 110 almacena las nuevas secciones de códigos recibidas a través de la interfaz de enlace aéreo 150. La biblioteca de parches 336, ejecutándose desde la memoria volátil de lectura-escritura 114, sustituye una primera sección de códigos de la sección de almacenamiento de códigos, por ejemplo la sección de códigos n 306, por la nueva (o actualizada) sección de códigos 450, en respuesta a la primera instrucción PMRTI 454. Normalmente, la sección de códigos de gestor de parches 308 se sustituye por la sección de códigos de gestor de parches actualizada 452. Cuando se están sustituyendo secciones de códigos, la biblioteca de parches 336 sobrescribe en la primera sección de códigos, por ejemplo la sección de códigos n 306 de la sección de almacenamiento de códigos 112, las secciones de códigos actualizadas, por ejemplo la sección de códigos 450 de la sección de sistema de archivos 110. En el caso extremo, todas las secciones de códigos de la sección de almacenamiento de códigos 112 se sustituyen por secciones de códigos actualizadas. Es decir, la sección de sistema de archivos 110 recibe un segundo grupo de secciones de códigos actualizadas (que no se ilustran) y la biblioteca de parches 336 sustituye el segundo grupo de secciones de códigos de la sección de almacenamiento de códigos 112 por el segundo grupo de secciones de códigos actualizadas. Naturalmente, el tamaño de la sección de sistema de archivos 110 debe ser suficiente para acoger el segundo grupo de secciones de códigos actualizadas que se reciba a través de la interfaz de enlace aéreo.
Como ya se ha indicado, las secciones de códigos actualizadas que se reciban pueden comprender secciones de códigos de datos de lectura-escritura, secciones de códigos para tablas de direcciones de secciones de códigos, bibliotecas de símbolos, secciones de códigos para tablas de direcciones de compensación de símbolos, secciones de códigos de descriptor de acceso de símbolos, o una sección de códigos con una nueva biblioteca de parches. Todas estas secciones de códigos, con sus bibliotecas de símbolos y sus símbolos asociados, pueden almacenarse como secciones de códigos distintas e independientes. Seguidamente, cada una de estas secciones de códigos se sustituiría por una sección de códigos actualizada singular. Es decir, se recibiría una sección de códigos de lectura-escritura que sustituiría a la sección de códigos de lectura-escritura presente en la sección de almacenamiento de códigos. Se recibiría una sección de códigos para tablas de direcciones de secciones de códigos que sustituiría a la sección de códigos para tablas de direcciones de secciones de códigos presente en la sección de almacenamiento de códigos. Se recibiría una sección actualizada de códigos para tablas de direcciones de compensación de símbolos que sustituiría a la sección de códigos para tablas de direcciones de compensación de símbolos presente en la sección de almacenamiento de códigos. Se recibiría una sección de códigos de descriptor de acceso de símbolos que sustituiría a la sección de códigos de descriptor de acceso de símbolos presente en la sección de almacenamiento de códigos. Igualmente, se recibiría una sección actualizada de códigos de gestor de parches (con una biblioteca de parches) que sustituiría a la sección de códigos de gestor de parches presente en la sección de almacenamiento de códigos.
Sin embargo, normalmente las secciones de códigos mencionadas se agrupan en la sección de códigos de gestor de parches. En consecuencia, la sección de códigos de lectura-escritura presente en la sección de almacenamiento de códigos se sustituye por la sección actualizada de códigos de lectura-escritura procedente de la sección de sistema de archivos 110, cuando la sección de códigos de gestor de parches 308 se sustituye por la sección actualizada de códigos de gestor de parches 450. Igualmente, la tabla de direcciones de secciones de códigos, la tabla de direcciones de compensación de símbolos, las secciones de códigos de descriptor de acceso de símbolos y la biblioteca de parches se sustituyen al instalarse la sección actualizada de códigos de gestor de parches 450. La disposición de los nuevos datos de lectura-escritura, la nueva tabla de direcciones de secciones de códigos, la nueva tabla de direcciones de compensación de símbolos, el nuevo código descriptor de acceso de símbolos, la nueva biblioteca de símbolos y la sección actualizada de códigos de gestor de parches 450, junto con las secciones de códigos ya presentes en la sección de almacenamiento de códigos, forma el software del sistema ejecutable actualizado.
Cuando la sección de sistema de archivos 110 recibe una dirección actualizada de código de descriptor de acceso de símbolos, el gestor de parches sustituye la dirección de código de descriptor de acceso de símbolos presente en la primera ubicación de la memoria por la dirección actualizada de código de descriptor de acceso de símbolos. Como ya se ha indicado, normalmente la primera ubicación de la memoria 334 está en la sección de códigos de gestor de parches (véase la figura 3).
Según se aprecia en la figura 3, la biblioteca de parches 308 también comprende un compactador, o una biblioteca de símbolos de compactador 342. El compactador 342 también puede activarse como sección de códigos distinta e independiente, aunque, según ya se ha indicado, es útil y eficaz agrupar las funciones asociadas a las actualizaciones del software del sistema en una sola sección de códigos de gestor de parches. En general, puede decirse que el compactador 342 redimensiona las secciones de códigos, para poder disponer las nuevas secciones junto a las secciones de códigos ya existentes en la sección de almacenamiento de códigos 112.
Comparando las figuras 3 y 4, la sección de sistema de archivos 110 recibe un juego de instrucciones de compactación que comprende instrucciones de identificación de una sección de códigos actualizable a través de la interfaz de enlace aéreo 150 (véase la figura 1). Así, por ejemplo, el juego de instrucciones de compactación puede ser la primera instrucción PMRTI 454, aunque no es imprescindible que las instrucciones de compactación se agrupen con las demás instrucciones de actualización. El compactador 342 sustituye la sección de códigos actual identificada, presente en la sección de almacenamiento de códigos, por la nueva sección de códigos. Deberá tenerse presente que el compactador 342 funciona en colaboración con la biblioteca de parches 336 explicada anteriormente. Dicho de otro modo, se solicita al compactador 342 que preste ayuda a la biblioteca de parches 336 cuando haga falta redimensionar la sección de códigos para actualizar el software del sistema.
El compactador redimensiona los bloques de memoria (figura 4), almacenándose las correspondientes secciones de códigos redimensionadas en la sección de almacenamiento de códigos. Así, por ejemplo, la sección de sistema de archivos 110 recibe una nueva sección de códigos 450 que tiene un primer tamaño. Al mismo tiempo, o en otros mensajes, el dispositivo inalámbrico recibe un juego de instrucciones de compactación, por ejemplo una primera instrucción PMRTI 454, y una sección actualizada de códigos de gestor de parches 452. El juego de instrucciones de compactación 454 identifica una sección de códigos actual que tiene un segundo tamaño, por ejemplo la sección de códigos dos 304, inferior al primer tamaño. Como la sección de códigos actualizada 450 es mayor que la sección de códigos a sustituir, debe realizarse una operación de compactación. El compactador 342 aumenta, por lo menos hasta el primer tamaño, el tamaño del segundo bloque de memoria 402 asociado a la sección de códigos actual identificada 304. El compactador (en colaboración con la biblioteca de parches 336) sustituye la sección de códigos actual identificada 304, almacenada en el correspondiente bloque de memoria 402, por la nueva sección de códigos 450.
Como ya se ha indicado, es normal que las secciones de códigos estén sobredimensionadas respecto a la biblioteca de símbolos, o a las bibliotecas de símbolos dispuestas en su interior. El compactador 342 determina el tamaño de las bibliotecas de símbolos dispuestas en las secciones de códigos correspondientes y redimensiona las secciones de códigos para aproximarlas a los tamaños de las bibliotecas de símbolos dispuestas en su interior. Normalmente, el compactador 342 redimensiona de manera óptima las secciones de códigos para promover posteriores operaciones de redimensionado y actualización de las mismas.
Siguiendo con el ejemplo ya iniciado, el compactador 342 podría conferir un tamaño óptimo a las secciones de códigos, aprovechando para ello las zonas sin utilizar de las secciones de códigos contiguas al segundo bloque de memoria 402. Como se ilustra en la figura, la sección de códigos uno 302 y la sección de códigos tres 344 tienen las zonas sin utilizar 340 y 346, respectivamente. El compactador puede optar por redimensionar el primer bloque de memoria 302 y el tercer bloque de memoria 460, creando con las zonas sin utilizar 340 y 346 un segundo bloque de memoria 402 de tamaño suficiente para la nueva sección de códigos 450.
La figura 8 es un diagrama esquemático de bloques que presenta los resultados del ejemplo de compactación. La sección de códigos 2 se ha sustituido por la nueva (actualizada) y ampliada sección de códigos 450. La sección sin utilizar 340 de la sección de códigos uno 302 se ha reducido, al igual que la zona 360 de la sección de códigos tres 344. Dejar algunas zonas sin utilizar en cada sección de códigos refuerza la eficacia de las futuras operaciones de expansión y compactación. Así, por ejemplo, si toda la zona sin utilizar 360 se aprovechara para acoger la sección de códigos actualizada 450 en la presente operación de actualización, cualquier futura expansión de la sección de códigos tres 344 necesitaría operaciones de compactación en secciones de códigos contiguas. Igualmente debe tenerse presente que, aunque el ejemplo sólo muestra el redimensionado de dos bloques de memoria adjuntos, algunas operaciones de compactación pueden requerir el redimensionado de varias secciones de códigos, o incluso de todas, para acoger nuevas (mayores) actualizaciones de secciones de códigos.
El compactador 342 accede a direcciones de inicio tomadas de la tabla de direcciones de secciones de códigos, para medir los tamaños de las secciones de códigos, y a direcciones de compensación de símbolos tomadas de la tabla de direcciones de compensación de símbolos, para medir el tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos. Una vez más, deberá tenerse en cuenta que, en ciertos aspectos del presente invento y para realizar sus tareas, el compactador depende de (y colabora con) otras bibliotecas de símbolos, que no siempre residen en la sección de códigos de gestor de parches 308. No obstante, es preferible que el compactador colabore con el código de descriptor de acceso de símbolos ya descrito, para acceder a la tabla de direcciones de secciones de códigos y a la tabla de direcciones de compensación de símbolos.
Como la tabla de direcciones de secciones de códigos comprende la dirección de inicio de cada sección de códigos, una sencilla operación aritmética que utilice las direcciones de inicio de secciones de códigos contiguas puede determinar el tamaño de la sección de códigos. Igualmente, puede utilizarse la dirección del último símbolo de una biblioteca de símbolos, con las direcciones de inicio de secciones de códigos, para determinar el tamaño aproximado de las bibliotecas de símbolos dispuestas en el interior de sus secciones de códigos correspondientes y, por tanto, la cantidad de espacio sin utilizar. Así, por ejemplo, si la dirección de inicio de la sección de códigos uno 302 es 0100, y si la dirección de inicio de la sección de códigos dos 304 es 0200, y si la dirección del último símbolo de la biblioteca de símbolos uno 310 es 0170, el tamaño de la zona sin utilizar 340 será aproximadamente 0200-0170.
Ahora bien, muchos símbolos están distribuidos por varias direcciones contiguas, y la dirección de compensación del último símbolo no es necesariamente la misma que la dirección donde termina la biblioteca de símbolos. Continuando con el ejemplo anterior, si el último símbolo comienza en la dirección 0170 y termina en 0173, el tamaño del espacio sin utilizar es 0200-0173. En algunos aspectos del presente invento, la sección de almacenamiento de códigos 112 comprende bibliotecas de símbolos con símbolos finales que representan el final de las bibliotecas de símbolos. Así, por ejemplo, volviendo momentáneamente a la figura 6, el símbolo "Z" es un símbolo final cuyo tamaño es un byte. Es decir, la dirección del símbolo "Z" representa el final de la biblioteca de símbolos uno. El compactador 342 utiliza las direcciones de compensación de símbolos finales, mediante el código de descriptor de acceso de símbolos, para medir el tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos.
Otra posibilidad es que la sección de almacenamiento de códigos 112 comprenda bibliotecas de símbolos con símbolos de tamaño que representen el tamaño de las bibliotecas de símbolos. Así, por ejemplo, el símbolo "Y" (figura 6) puede ser un número 0073 que represente el tamaño de la biblioteca de símbolos uno. El compactador 342 accede a los símbolos de tamaño para medir el tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos. En otros aspectos del presente invento, los símbolos de tamaño correspondientes a todas las bibliotecas de símbolos se almacenan en una tabla situada en una sección de códigos distinta (que no se ilustra) de la sección de códigos de gestor de parches.
El compactador 342 mide el tamaño de la nueva sección de códigos 450 presente en la sección de sistema de archivos 110 y determina primeramente si la nueva sección de códigos puede disponerse con las actuales secciones de códigos presentes en la sección de almacenamiento de códigos 112. El compactador 342 efectúa esta determinación en respuesta a la medición del tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos, y a la medición del tamaño de la nueva sección de códigos. Si la compactación no permite instalar de manera satisfactoria la nueva sección de códigos, el compactador 342 aborta automáticamente la operación. Otra posibilidad es que el compactador calcule una probabilidad de éxito, la presente al usuario en la pantalla del dispositivo inalámbrico, y deje que sea el usuario quien determine si procede continuar con la compactación. Con independencia de la probabilidad de éxito, el teléfono inalámbrico brinda al usuario la opción de iniciar la compactación, por cuanto el compactador 342 debe suspender la ejecución del software del sistema durante la compactación y la actualización.
Para determinar el tamaño de la sección de códigos actualizada, el compactador 342 suele basarse en los datos del juego de instrucciones de compactación. La sección de sistema de archivos 110 recibe un juego de instrucciones de compactación 454 que comprende el tamaño de la nueva sección de códigos 450. El compactador 342 accede al juego de instrucciones de compactación 454 para determinar el tamaño de la nueva sección de códigos 450 presente en la sección de sistema de archivos 110 y determina si la nueva sección de códigos puede disponerse con las actuales secciones de códigos presentes en la sección de almacenamiento de códigos 112, en respuesta a la medición del tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos y a la determinación del tamaño de la nueva sección de códigos.
La operación de compactación puede evitarse, si la sección de almacenamiento de códigos comprende grandes secciones de bloques de memoria sin utilizar. El compactador 342 determina el tamaño de los bloques de memoria sin utilizar presentes en la sección de almacenamiento de códigos y almacena la nueva sección de códigos en el bloque de memoria sin utilizar, si el tamaño del bloque de memoria sin utilizar es superior o igual al de la nueva sección de códigos.
Una vez redimensionadas las secciones de códigos y sustituidas las secciones de códigos identificadas por las secciones de códigos actualizadas, el compactador 342 cambia las direcciones de inicio de las secciones de códigos almacenadas en la sección de almacenamiento de códigos. Continuando con el ejemplo anterior, si el redimensionado se realiza iniciando la nueva sección de códigos 450 (que ahora es la sección de códigos dos) en la dirección de inicio de 0175, en lugar de 0200, la tabla de direcciones de secciones de códigos debe cambiarse para que refleje la nueva dirección de inicio.
Las figuras 9a hasta 9e presentan el funcionamiento de un ejemplo de programa de compactación. Cuando el compactador 342, trabajando a partir de la memoria volátil 114, ha calculado la probabilidad de éxito de la compactación y los tamaños de las secciones de códigos, genera un programa de compactación. El programa de compactación comprende el orden en que se realiza el desplazamiento de las secciones de códigos y sus emplazamientos temporales en la sección de sistema de archivos 110. En respuesta al programa de compactación, la sección de sistema de archivos 110 almacena temporalmente secciones de códigos procedentes de la sección de almacenamiento de códigos 112, y el compactador 342 almacena las secciones de códigos procedentes de la sección de sistema de archivos 110 en los bloques de memoria de la sección de almacenamiento de códigos 112 para mantener el direccionamiento contiguo.
Continuando con el ejemplo ya iniciado, en la figura 9a el compactador 342 consulta el juego de instrucciones de compactación (primera instrucción PMRTI) 454, para determinar qué sección de códigos se va a actualizar y el tamaño de la nueva sección de códigos 450. En la figura 9b, después de calcular la probabilidad de éxito y el tamaño de las secciones de códigos, el compactador 342 comienza el proceso desplazando la sección de códigos tres 344 a la sección de sistema de archivos 110 desde el tercer bloque de memoria 460.
En la figura 9c, la nueva sección de códigos 450 se desplaza desde la sección de sistema de archivos 110 al segundo bloque de memoria 402. Si la sección de códigos uno 302 se ha redimensionado, el compactador 342 hace que la dirección de inicio de la nueva sección de códigos comience en la zona sin utilizar 340 (véase la figura 3). Como ya se ha indicado, el inicio del segundo bloque de memoria cambia de 0200 a 0175. Es decir, la sección de códigos uno 302 se ha compactado.
En la figura 9d, la sección de códigos tres 344 se devuelve desde la sección de sistema de archivos 110 al tercer bloque de memoria 460. Este desplazamiento se realiza para iniciar la sección de códigos tres 344 en una nueva dirección de inicio. Iniciar la sección de códigos en una nueva dirección de inicio puede suponer la compactación de la sección de códigos. Es decir, es posible que se aproveche parte de la zona sin utilizar 346.
En la figura 9e, la sección de códigos de gestor de parches (PM) 308 se sustituye por la nueva (actualizada) sección de códigos de gestor de parches 452. Normalmente, el gestor de parches comprende la biblioteca de símbolos de códigos para tablas de direcciones de secciones de código (véase la figura 3). Sin embargo, la tabla actualizada de direcciones de secciones de códigos no es necesariamente correcta, porque los resultados de la compactación no siempre se conocen de antemano. Entonces, el compactador 342 genera una tabla actualizada de direcciones de secciones de códigos, en respuesta al cambio de las direcciones de inicio de las secciones de códigos almacenadas en los bloques de memoria. El compactador 342 sobrescribe la tabla actualizada de direcciones de secciones de códigos que ha generado, en la tabla actualizada de direcciones de secciones de códigos presente en la sección de almacenamiento de códigos 112. Seguidamente, el software del sistema actualizado accede a la tabla actualizada de direcciones de secciones de códigos, después de disponerse la nueva sección de códigos con las secciones de códigos actuales.
Ahora bien, la tabla de direcciones de compensación de símbolos se trata de otra manera, porque las direcciones de compensación de símbolos para secciones de códigos actualizadas y actuales pueden calcularse de antemano. La sección de sistema de archivos (FSS) 110 recibe una nueva sección de códigos, normalmente la sección de códigos de gestor de parches 452, con una tabla actualizada de direcciones de compensación de símbolos, y el software del sistema actualizado accede a la tabla actualizada de direcciones de compensación de símbolos, una vez la nueva sección de códigos 452 se ha dispuesto con las secciones de códigos actuales.
Gran parte de la descripción precedente del invento se ha dedicado al funcionamiento del compactador en el cálculo de los tamaños de las secciones de códigos y de un programa de compactación. Sin embargo, en algunos aspectos del presente invento el compactador 342 queda liberado de la responsabilidad de estos cálculos. En este aspecto del presente invento, la sección de sistema de archivos 110 recibe un juego de instrucciones de compactación 454 que comprende instrucciones para redimensionar secciones de códigos y un programa de compactación. Seguidamente, el compactador 342 redimensiona las secciones de códigos en respuesta a las instrucciones de redimensionamiento de las secciones de códigos. Como antes, en respuesta al programa de compactación, la sección de sistema de archivos 110 almacena temporalmente secciones de códigos procedentes de la sección de almacenamiento de códigos 112, y el compactador 342 almacena las secciones de códigos procedentes de la sección de sistema de archivos 110 en los bloques de memoria de la sección de almacenamiento de códigos 112 para mantener el direccionamiento contiguo.
La sección de sistema de archivos 110 también recibe una nueva sección de códigos, por ejemplo la sección actualizada de códigos de gestor de parches 452, con una tabla actualizada de direcciones de secciones de códigos y una tabla actualizada de direcciones de compensación de símbolos. Como el redimensionamiento de las secciones de códigos y el programa de compactación se calcularon de antemano (no los calculó el dispositivo inalámbrico), estas tablas actualizadas reflejan exactamente las nuevas direcciones de inicio de secciones de códigos. El software del sistema actualizado accede a la tabla actualizada de direcciones de compensación de símbolos y a la tabla actualizada de direcciones de secciones de códigos, después de disponerse la nueva sección de códigos con las secciones de códigos actuales.
Como refleja con máxima fidelidad la figura 1, la memoria volátil 114 comprende las secciones de códigos de tablas primera y segunda (la tabla de direcciones de secciones de códigos y la tabla de direcciones de compensación de símbolos) cargadas desde la sección de almacenamiento de códigos 112 para ejecutar el software del sistema. Otras bibliotecas críticas procedentes de la sección de códigos de gestor de parches 308 también se cargan en la memoria volátil 114. Las nuevas secciones de códigos se disponen con las secciones de códigos actuales en la sección de almacenamiento de códigos 112 para formar el software del sistema actualizado, después de un restablecimiento del dispositivo inalámbrico de comunicaciones 104. Una vez efectuado el restablecimiento, la tabla actualizada de direcciones de secciones de códigos y la tabla actualizada de direcciones de compensación de símbolos se cargan en la memoria volátil 114, y seguidamente el software del sistema puede ejecutarse con las tablas actualizadas.
Las figuras 10a y 10b son un diagrama de flujo que describe el método del presente invento para reorganizar instrucciones de software almacenadas en una memoria de dispositivo inalámbrico de comunicación. Aunque la descripción presente una secuencia de pasos numerados para mayor claridad, salvo indicación expresa, no debe deducirse de esta numeración la existencia de un orden determinado. El método comienza en el paso 1000. El paso 1001a forma el software del sistema en un primer grupo de bibliotecas de símbolos, comprendiendo cada biblioteca de símbolos al menos un símbolo. El paso 1001b dispone el primer grupo de bibliotecas de símbolos en un segundo grupo de secciones de códigos. El paso 1002 almacena el software del sistema del dispositivo inalámbrico en un grupo de secciones de códigos actuales. El paso 1004 recibe una nueva sección de códigos. La recepción de una nueva sección de códigos en el paso 1004 comprende la recepción de la nueva sección de códigos mediante una interfaz aérea del dispositivo inalámbrico de comunicaciones.
El paso 1006 redimensiona las secciones de códigos actuales. Normalmente, el redimensionamiento de las secciones de códigos actuales comprende la suspensión del funcionamiento del software del sistema. El paso 1008 dispone la nueva sección de código con las secciones de códigos actuales y forma el software del sistema actualizados para el dispositivo inalámbrico. El paso 1010 ejecuta el software del sistema actualizado. Normalmente, el paso 1005a identifica una sección de códigos actual para actualizarla, y la disposición de la nueva sección de códigos con las secciones de códigos actuales para formar el software del sistema actualizado durante el paso 1008 comprende sustituir la sección de códigos actuales identificada por la nueva sección de códigos.
La disposición del primer grupo de bibliotecas de símbolos en un segundo grupo de secciones de códigos durante el paso 1001b comprende el comienzo de las bibliotecas de símbolos en el inicio de las secciones de códigos. El almacenamiento del software del sistema del dispositivo inalámbrico en un grupo de secciones de códigos actuales durante el paso 1002 comprende el almacenamiento del comienzo de las secciones de códigos en sus direcciones de inicio correspondientes. A continuación, el método comprende un paso más. El paso 1003a mantiene una tabla de direcciones de secciones de códigos, estableciendo referencias cruzadas entre los identificadores de secciones de códigos y las direcciones de inicio correspondientes. La disposición del primer grupo de bibliotecas de símbolos en un segundo grupo de secciones de códigos durante el paso 1001b comprende la disposición de los símbolos a compensar partiendo de sus respectivas direcciones de inicio de secciones de códigos. Seguidamente, el paso 1003b mantiene una tabla de direcciones de compensación de símbolos estableciendo referencias cruzadas entre los identificadores de símbolos y las correspondientes direcciones de compensación, y a los correspondientes identificadores de secciones de códigos.
El almacenamiento del inicio de las secciones de códigos en sus correspondientes direcciones de inicio comprende subpasos. El paso 1002a crea un segundo grupo de bloques de memoria contiguamente direccionados. El paso 1002b identifica cada bloque de memoria con su correspondiente sección de códigos. El paso 1002c almacena secciones de códigos en los bloques de memoria identificados.
La disposición del primer grupo de bibliotecas de símbolos en un segundo grupo de secciones de códigos durante el paso 1002 comprende el dimensionamiento de las secciones de códigos para acoger las bibliotecas de símbolos dispuestas. La creación de un segundo grupo de bloques de memoria contiguamente direccionados durante el paso 1002a comprende el dimensionamiento de bloques de memoria para acoger a las correspondientes secciones de códigos. Normalmente, el dimensionamiento de bloques de memoria para acoger a las correspondientes secciones de códigos comprende el dimensionamiento de las secciones de códigos para acoger tamaños superiores a las bibliotecas de símbolos dispuestas. El redimensionamiento de las secciones de códigos actuales durante el paso 1006 comprende el redimensionamiento de los bloques de memoria en los que se hayan almacenado las correspondientes secciones de códigos redimensionadas.
Así, por ejemplo, la recepción de una nueva sección de códigos durante el paso 1004 comprende la recepción de una nueva sección de códigos que tenga un primer tamaño. La identificación de una sección de códigos actual para su actualización durante el paso 1005a comprende la identificación de una sección de código actual que tenga un segundo tamaño, inferior al primero. Seguidamente, el redimensionamiento de los bloques de memoria en los que se hayan almacenado las correspondientes secciones de códigos redimensionadas durante el paso 1006 comprende subpasos. El paso 1006a (que no se ilustra) aumenta por lo menos hasta el primer tamaño el de un bloque de memoria asociado a la sección de códigos actual identificada, sustituyendo el paso 1006b (que no se ilustra) la sección de códigos actual identificada, almacenada en el correspondiente bloque de memoria, por la nueva sección de códigos.
El redimensionamiento de los bloques de memoria en los que se hayan almacenado las correspondientes secciones de códigos redimensionadas durante el paso 1006 comprende, en respuesta a la medición del tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos (véase más adelante el paso 1005c), el redimensionamiento de las secciones de códigos para aproximarlas a los tamaños de las bibliotecas de símbolos dispuestas en su interior. El redimensionamiento de las secciones de códigos para aproximarlas a los tamaños de las bibliotecas de símbolos dispuestas en su interior durante el paso 1006 comprende el redimensionamiento óptimo de las secciones de códigos para promover nuevas operaciones de redimensionamiento y actualización de secciones de códigos.
El paso 1005b, que utiliza las direcciones de inicio procedentes de la tabla de direcciones de secciones de códigos, mide los tamaños actuales de las secciones de códigos. El paso 1005c, que utiliza las direcciones de compensación de símbolos procedentes de la tabla de direcciones de compensación de símbolos, mide el tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos. Es decir, se miden los tamaños de las secciones de códigos y los de las bibliotecas de símbolos. Esta información permite calcular la cantidad de espacio sin utilizar que hay en cada sección de códigos.
En algunos aspectos, la formación del software del sistema en un primer grupo de bibliotecas de símbolos durante el paso 1001a comprende la formación de símbolos finales que representan el final de las bibliotecas de símbolos. Seguidamente, la medición del tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos durante el paso 1005c comprende el uso de direcciones de compensación de los símbolos finales para medir el tamaño de las bibliotecas de símbolos. Otra posibilidad es que la formación del software del sistema en un primer grupo de bibliotecas de símbolos durante el paso 1001a comprenda la formación de símbolos de tamaño que representen el tamaño de las bibliotecas de símbolos. Seguidamente, la medición del tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos durante el paso 1005c comprende el acceso a los símbolos de tamaño para medir el tamaño de las bibliotecas de símbolos.
El paso 1005d mide el tamaño de la nueva sección de códigos. El paso 1005e, en respuesta a la medición del tamaño de las bibliotecas de símbolos dispuestas en el interior de las correspondientes secciones de códigos durante el paso 1005c, y la medición del tamaño de la nueva sección de códigos durante el paso 1005d, determina si la nueva sección de códigos puede disponerse con las secciones de códigos actuales.
En algunos aspectos, la determinación de si la nueva sección de códigos puede disponerse con la sección de códigos actual durante el paso 1005e comprende la determinación del tamaño de los bloques de memoria sin utilizar. Seguidamente, la disposición de la nueva sección de códigos con las secciones de códigos actuales para formar el software del sistema actualizado del dispositivo inalámbrico durante el paso 1008 comprende el almacenamiento de la nueva sección de códigos en el bloque de memoria sin utilizar, si el tamaño del bloque de memoria sin utilizar es superior o igual al de la nueva sección de códigos.
El paso 1005f calcula los tamaños de la sección de códigos. Es decir, se determinan los tamaños de las nuevas secciones de códigos que permitan disponer la nueva sección de códigos con las secciones de códigos actuales. El paso 1007a, en respuesta al cálculo de los tamaños de las secciones de códigos, genera un programa de compactación. El paso 1007b desplaza temporalmente secciones de códigos a una sección de sistema de archivos. Seguidamente, la disposición de la nueva sección de códigos con las secciones de códigos actuales para formar el software del sistema actualizado del dispositivo inalámbrico durante el paso 1008 comprende el almacenamiento de las secciones de códigos procedentes de la sección de sistema de archivos en los bloques de memoria para mantener el direccionamiento contiguo, en respuesta al programa de compactación.
Tras el redimensionamiento de las secciones de códigos durante el paso 1006, el paso 1009a cambia las direcciones de inicio de las secciones de códigos. El paso 1009b genera una tabla actualizada de direcciones de secciones de códigos, en respuesta al cambio de las direcciones de inicio de las secciones de códigos almacenadas en los bloques de memoria. Seguidamente, la ejecución del software del sistema actualizado durante el paso 1010 comprende el uso de la tabla actualizada de direcciones de secciones de códigos, después de disponerse la nueva sección de códigos con las secciones de códigos actuales.
En algunos aspectos del presente invento, la recepción de una nueva sección de códigos en el paso 1004 comprende la recepción de una nueva sección de códigos con una tabla actualizada de direcciones de compensación de símbolos. Seguidamente, la ejecución del software del sistema actualizado durante el paso 1010 comprende el uso de la tabla actualizada de direcciones de compensación de símbolos, después de disponerse la nueva sección de códigos con las secciones de códigos actuales.
El paso 1003c carga en una memoria volátil la tabla de direcciones de secciones de códigos y la tabla de direcciones de compensación de símbolos. El paso 1003d (que no se ilustra) ejecuta el software del sistema, en respuesta a la carga de la tabla de direcciones de secciones de códigos y de la tabla de direcciones de compensación de símbolos en la memoria volátil. El paso 1009c restablece el dispositivo inalámbrico de comunicaciones. El paso 1009d, en respuesta al restablecimiento, carga la tabla actualizada de direcciones de secciones de códigos y la tabla actualizada de direcciones de compensación de símbolos en una memoria volátil. El paso 1010 ejecuta el software del sistema actualizado, en respuesta a la carga de la tabla actualizada de direcciones de secciones de códigos y de la tabla actualizada de direcciones de compensación de símbolos en la memoria.
La figura 11 es un diagrama de flujo que describe otro aspecto del método presentado en las figuras 10a y 10b. La figura 11 comparte varios pasos con las figuras 10a y 10b, que en aras de la brevedad no se repiten aquí. La recepción de una nueva sección de códigos durante el paso 1104 comprende la recepción de un juego de instrucciones de compactación, con instrucciones para redimensionar las secciones de códigos, y un programa de compactación. El redimensionamiento de las secciones de códigos actuales durante el paso 1106 comprende el redimensionamiento en respuesta a las instrucciones para redimensionar las secciones de códigos.
El paso 1107 desplaza temporalmente secciones de códigos a una sección de sistema de archivos. Seguidamente, la disposición de la nueva sección de códigos con las secciones de códigos actuales para formar el software del sistema actualizado del dispositivo inalámbrico durante el paso 1008 comprende el almacenamiento de las secciones de códigos procedentes de la sección de sistema de archivos en los bloques de memoria para mantener el direccionamiento contiguo, en respuesta al programa de compactación.
La recepción de una nueva sección de códigos durante el paso 1104 comprende la recepción de una nueva sección de códigos con una tabla actualizada de direcciones de secciones de códigos y una tabla actualizada de direcciones de compensación de símbolos. Seguidamente, la ejecución del software del sistema actualizado durante el paso 1110 comprende el uso de la tabla actualizada de direcciones de secciones de códigos y de la tabla actualizada de direcciones de compensación de símbolos, después de disponerse la nueva sección de códigos con las secciones de códigos actuales. Se aportan un sistema y un método de reorganización de la estructura del software del sistema en un dispositivo inalámbrico de comunicaciones para facilitar la actualización del software. El sistema es fácilmente actualizable debido a la disposición de las bibliotecas de símbolos en secciones de códigos, con tablas para acceder a las direcciones de inicio de las secciones de códigos en la memoria y a las direcciones de compensación de símbolos en las bibliotecas de símbolos. Aunque se han facilitado unos cuantos ejemplos de estas disposiciones de bibliotecas y tablas de remisión para una función visualizadora en pantalla, el presente invento no se limita únicamente a dichos ejemplos. Los expertos sabrán encontrar otras variaciones y formas de realización del presente invento.

Claims (19)

1. Un método para reorganizar una nueva sección de códigos (450, 452, 474) en al menos una sección de códigos actual (302, 304, 306, 308, 344) almacenada en bloques diferenciados (400, 402, 404, 406, 460) de una memoria permanente (108) ejecutados en un dispositivo inalámbrico de comunicación (104), comprendiendo dicho método: la recepción de una actualización de software (102) mediante una red de comunicación inalámbrica; el análisis sintáctico de la actualización del software (102) para obtener una nueva sección de códigos (450, 452, 474); la determinación de un tamaño de la nueva sección de códigos (450, 452, 474); la identificación de un bloque (400, 402, 404, 406, 460) de memoria permanente (108) para almacenar la nueva sección de códigos (450, 452, 474), en el que el bloque (400, 402, 404, 406, 460) de memoria permanente (108) tiene una primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414), en el que el paso identificador también comprende la adjudicación de un nuevo bloque (400, 402, 404, 406, 460) de memoria permanente (108), en el que el paso adjudicador también comprende la identificación de una o más secciones de códigos actuales (302, 304, 306, 308, 344) que comprenden una biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) y una porción sin utilizar (340, 346), en el que la sección de códigos actual (302, 304, 306, 308, 344) comienza en una segunda dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) de un segundo bloque (400, 402, 404, 406, 460) de memoria permanente (108) y la porción sin utilizar (340, 346) finaliza en la dirección final del segundo bloque (400, 402, 404, 406, 460) de memoria permanente (108); la determinación de una tercera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) para la porción sin utilizar (340, 346), en el que la determinación de la tercera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) comprende la lectura de un símbolo procedente de la biblioteca de símbolos (310, 312, 314, 316, 326, 323, 330, 332, 334, 336, 342) y, utilizando dicho símbolo, la determinación de una segunda dirección final para la biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) de la sección de códigos actual (302, 304, 306, 308, 344); y la adjudicación de una porción designada de la memoria permanente (108) entre la tercera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) para la porción sin utilizar (340, 346) y la dirección final del segundo bloque de memoria al nuevo bloque de memoria (400, 402, 404, 406, 460); la escritura de la nueva sección de códigos (450, 452, 474) en el nuevo bloque de memoria (400, 402, 404, 406, 460), en el que la nueva sección de códigos (450, 452, 474) empieza en la primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) del nuevo bloque de memoria; y la actualización de una tabla de direcciones de secciones de códigos (326) para añadir una anotación que comprende un identificador de la nueva sección de códigos (450, 452, 474) y la primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414), en el que el identificador y la primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) están
relacionados.
2. El método de la reivindicación 1, en el que la nueva sección de códigos (450, 452, 474) comprende una biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342).
3. El método de la reivindicación 1, en el que la determinación del tamaño de la nueva sección de códigos (450, 452, 474) también comprende la descompresión de la nueva sección de códigos (450, 452, 474).
4. El método de la reivindicación 1, en el que el símbolo comprende la dirección final correspondiente a la biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) de la sección de códigos actual (302, 304, 306, 308, 344).
5. El método de la reivindicación 1, en el que el símbolo comprende un tamaño de la biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) de la sección de códigos actual (302, 304, 306, 308, 344).
6. El método de la reivindicación 1, en el que el paso de la escritura también comprende la sustitución de una sección de códigos actual (302, 304, 306, 308, 344) por la nueva sección de códigos (450, 452, 474).
7. El método de la reivindicación 1, que también comprende los pasos de obtener los tamaños respectivos de una o más bibliotecas de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) y de una o más secciones de códigos actuales (302, 304, 306, 308, 344); la creación de un programa de compactación que comprende un orden de reubicación del grupo de secciones utilizadas en los bloques contiguos (340, 346, 400, 402, 404, 406, 460) de memoria permanente (108); y la ejecución del programa de compactación para reubicar una o más porciones sin utilizar en bloques contiguos (340, 346, 400, 402, 404, 406, 460) de memoria permanente (108) y combinar una o más porciones sin utilizar (340, 346) en una porción sin utilizar contigua.
8. El método de la reivindicación 7, en el que el paso de la ejecución también comprende la copia de un grupo de porciones sin utilizar procedentes de un grupo de secciones de códigos actuales (302, 304, 306, 308, 344) en una sección de sistema de archivos (110) de memoria permanente (108); la adjudicación de un grupo de bloques de memoria contiguos (340, 346, 400, 402, 404, 406, 460) en una memoria permanente (108) correspondientes al grupo de porciones utilizadas, en el que el tamaño de cada bloque de memoria adjudicado (340, 346, 400, 402, 404, 406, 460) en el grupo de bloques de memoria contiguos (340, 346, 400, 402, 404, 406, 460) es sustancialmente igual al tamaño de la correspondiente sección utilizada; y la escritura del grupo de secciones de códigos actuales (302, 304, 306, 308, 344) en el grupo de bloques de memoria contiguos (340, 346, 400, 402, 404, 406, 460) de una memoria permanente (108).
\newpage
9. El método de la reivindicación 1, que también comprende la actualización de la tabla de direcciones de secciones de códigos (326) a fin de reflejar una nueva dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) para un grupo semejante de secciones de códigos actuales reubicados (302, 304, 306, 308, 344).
10. El método de la reivindicación 9, que también comprende la suspensión del funcionamiento del dispositivo inalámbrico de comunicación (104) antes de ejecutarse el programa de compactación; y el restablecimiento del dispositivo inalámbrico de comunicación (104) después de actualizarse la tabla de direcciones de secciones de códigos (326).
11. Un sistema para reorganizar una nueva sección de códigos (450, 452, 474) en al menos una sección de códigos actual (302, 304, 306, 308, 344) de un dispositivo inalámbrico de comunicación (104), que comprende una memoria permanente (108) constituida por un grupo de bloques de memoria contiguamente direccionados (400, 402, 404, 406, 460), teniendo cada bloque de memoria (400, 402, 404, 406, 460) una dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) y una dirección final; un grupo de secciones de códigos actuales (302, 304, 306, 308, 344) dispuestas en los bloques de memoria (400, 402, 404, 406, 460), en el que cada sección de código comienza en la dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) y termina en la dirección final del bloque de memoria (400, 402, 404, 406, 460) al que la sección de códigos esté asociada; un grupo de bibliotecas de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) dispuestas en las secciones de códigos actuales (302, 304, 306, 308, 344), en el que una o más bibliotecas de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) se almacenan en cada sección de códigos (302, 304, 306, 308, 344); una interfaz de enlace aéreo (150) configurada para recibir una actualización de software (102) mediante una red de comunicación inalámbrica; y un compactador de secciones de códigos (342) configurado para identificar un primer bloque (340, 346, 400, 402, 404, 406, 460) de memoria permanente (108) y almacenar la nueva sección de códigos (450, 452, 474) en el primer bloque (340, 346, 400, 402, 404, 406, 460), en el que la identificación comprende la adjudicación de un nuevo bloque (400, 402, 404, 406, 460) basada en el bloque de memoria permanente utilizado (108), en el que la adjudicación también comprende la identificación de una o más secciones de códigos actuales (302, 304, 306, 308, 344) que comprenden una biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) y una porción sin utilizar (340, 346), en el que la sección de códigos actual (302, 304, 306, 308, 344) comienza en una primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) de un segundo bloque (340, 346, 400, 402, 404, 406, 460) de memoria permanente (108) y la porción sin utilizar (340, 346) finaliza en la dirección final del segundo bloque (340, 346, 400, 402, 404, 406, 460) de memoria permanente (108); la determinación de una segunda dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) para la porción sin utilizar (340, 346), en el que la determinación de la segunda dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) comprende la lectura de un símbolo procedente de la biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) y, utilizando dicho símbolo, la determinación de la segunda dirección final para la biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342) de la sección de códigos actual (302, 304, 306, 308, 344); la adjudicación de al menos una porción designada de la memoria permanente (108) entre la segunda dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) para la porción sin utilizar (340, 346) y la dirección final del segundo bloque de memoria al nuevo bloque de memoria (400, 402, 404, 406, 460), y la actualización de una tabla de direcciones de secciones de códigos (326) para añadir una anotación consistente en un identificador correspondiente a la nueva sección de códigos (450, 452, 474) y la primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) del nuevo bloque de memoria, en el que el identificador y la primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) están relacionados; y la escritura de la nueva sección de códigos (450, 452, 474) en el nuevo bloque de memoria (400, 402, 404, 406, 460), en el que la nueva sección de códigos (450, 452, 474) empieza en la primera dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414).
12. El sistema de la reivindicación 11, en el que la actualización del software comprende una nueva sección de códigos (450, 452, 474) y un juego de instrucciones.
13. El sistema de la reivindicación 12, en el que la nueva sección de códigos comprende una biblioteca de símbolos (310, 312, 314, 316, 326, 328, 330, 332, 334, 336, 342).
14. El sistema de la reivindicación 11, que también comprende una tabla de direcciones de secciones de códigos (326) constituida por un grupo de identificadores de secciones de códigos y sus correspondientes direcciones de inicio (318, 320, 322, 324, 408, 410, 412, 414) en la memoria permanente (108), en el que el compactador de secciones de códigos (342) se configura para actualizar la tabla de direcciones de secciones de códigos (326).
15. El sistema de la reivindicación 14, que también comprende una tabla de direcciones de compensación de símbolos (328) constituida por un grupo de identificadores de símbolos de códigos y sus correspondientes identificadores de secciones de códigos y direcciones de compensación de memoria, en el que el compactador de secciones de códigos (342) se configura para actualizar la tabla de direcciones de compensación de símbolos (328).
16. El sistema de la reivindicación 11, que también comprende una sección de sistema de archivos (110) configurada para almacenar temporalmente secciones de códigos actuales (302, 304, 306, 308, 344) y en el que el compactador (342) también se configura para reubicar una sección de códigos actual (302, 304, 306, 308, 344) en memoria permanente (108) y crear una sección contigua de memoria permanente sin utilizar (108), adjudicar un nuevo bloque de memoria (340, 346, 400, 402, 404, 406, 460) en la sección contigua sin utilizar, y escribir la nueva sección de códigos (450, 452, 474) en el nuevo bloque de memoria (340, 346, 400, 402, 404, 406, 460).
17. El sistema de la reivindicación 16, en el que el compactador (342) también se configura para actualizar la tabla de direcciones de secciones de códigos (326) con una nueva dirección de inicio (318, 320, 322, 324, 408, 410, 412, 414) para la sección de códigos actual reubicada (302, 304, 306, 308, 344).
18. El sistema de la reivindicación 17, en el que el compactador (342) también se configura para suspender el funcionamiento del dispositivo inalámbrico de comunicación (104) antes de reubicarse una sección de códigos actual (302, 304, 306, 308, 344) y para restablecer el dispositivo inalámbrico de comunicación (104) después de actualizarse la tabla de direcciones de secciones de códigos (326).
19. El sistema de la reivindicación 11, en el que el primer bloque (340, 346, 400, 402, 404, 406, 460) de memoria permanente (108) comprende una primera sección de códigos actual (302, 304, 306, 308, 344) y el compactador (342) también está configurado para sustituir la primera sección de códigos actual (302, 304, 306, 308, 344) por la nueva sección de códigos (450, 452, 474).
ES02749166T 2001-07-26 2002-07-23 Sistema y metodo para compactar secciones de codigos en el software de un dispositivo de comunicacion inalambrico actualizable sobre el terreno. Expired - Lifetime ES2299587T3 (es)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US917026 2001-07-26
US09/917,026 US7328007B2 (en) 2001-07-26 2001-07-26 System and method for organizing wireless communication device system software
US916900 2001-07-26
US09/916,460 US7159214B2 (en) 2001-07-26 2001-07-26 System and method for compacting field upgradeable wireless communication device software code sections
US916460 2001-07-26
US09/916,900 US7027806B2 (en) 2001-07-26 2001-07-26 System and method for field downloading a wireless communications device software code section
US09/927,131 US7143407B2 (en) 2001-07-26 2001-08-10 System and method for executing wireless communications device dynamic instruction sets
US927131 2001-08-10
US09/969,305 US7386846B2 (en) 2001-07-26 2001-10-02 System and method for the management of wireless communications device system software downloads in the field
US969305 2001-10-02
PCT/IB2002/002889 WO2003012639A2 (en) 2001-07-26 2002-07-23 System and method for compacting field upgradeable wireless communication device software code sections

Publications (1)

Publication Number Publication Date
ES2299587T3 true ES2299587T3 (es) 2008-06-01

Family

ID=27542295

Family Applications (9)

Application Number Title Priority Date Filing Date
ES02749158T Expired - Lifetime ES2300454T3 (es) 2001-07-26 2002-07-22 Sistema y metodo para organizar un software para un dispositivo de comunicacion inalambrica actualizable sobre el terreno.
ES02749167T Expired - Lifetime ES2249602T3 (es) 2001-07-26 2002-07-23 Sistema y metodo para actualizar datos persistentes en un dispositivo de comunicaciones sin cables.
ES02749166T Expired - Lifetime ES2299587T3 (es) 2001-07-26 2002-07-23 Sistema y metodo para compactar secciones de codigos en el software de un dispositivo de comunicacion inalambrico actualizable sobre el terreno.
ES02749163T Expired - Lifetime ES2263796T3 (es) 2001-07-26 2002-07-23 Sistema y metodo para el diagnostico en servicio del software de un sistema de dispositivo de comunicaciones sin cables.
ES02749159T Expired - Lifetime ES2247355T3 (es) 2001-07-26 2002-07-23 Sistema y procedimiento para la descarga sobre el terreno de una seccion de codigos de software de un dispositivo de comunicacion sin hilos.
ES02751472T Expired - Lifetime ES2263799T3 (es) 2001-07-26 2002-07-25 Sistema y metodo para comunicacion telefonica punto por punto.
ES05018919T Expired - Lifetime ES2284112T3 (es) 2001-07-26 2002-07-25 Sistema y metodo para mejorar la seguridad en el reacondicionamiento y reprogramacion de aparatos telefonicos moviles.
ES02762622T Expired - Lifetime ES2253553T3 (es) 2001-07-26 2002-07-25 Sistema y metodo para comunicacion bidireccional y ejecucion de conjuntos de instrucciones dinamicas.
ES02741113T Expired - Lifetime ES2248568T3 (es) 2001-07-26 2002-07-25 Sistema y metodo para mejorar la seguridad en el reacondicionamiento y reprogramacion de aparatos telefonicos moviles.

Family Applications Before (2)

Application Number Title Priority Date Filing Date
ES02749158T Expired - Lifetime ES2300454T3 (es) 2001-07-26 2002-07-22 Sistema y metodo para organizar un software para un dispositivo de comunicacion inalambrica actualizable sobre el terreno.
ES02749167T Expired - Lifetime ES2249602T3 (es) 2001-07-26 2002-07-23 Sistema y metodo para actualizar datos persistentes en un dispositivo de comunicaciones sin cables.

Family Applications After (6)

Application Number Title Priority Date Filing Date
ES02749163T Expired - Lifetime ES2263796T3 (es) 2001-07-26 2002-07-23 Sistema y metodo para el diagnostico en servicio del software de un sistema de dispositivo de comunicaciones sin cables.
ES02749159T Expired - Lifetime ES2247355T3 (es) 2001-07-26 2002-07-23 Sistema y procedimiento para la descarga sobre el terreno de una seccion de codigos de software de un dispositivo de comunicacion sin hilos.
ES02751472T Expired - Lifetime ES2263799T3 (es) 2001-07-26 2002-07-25 Sistema y metodo para comunicacion telefonica punto por punto.
ES05018919T Expired - Lifetime ES2284112T3 (es) 2001-07-26 2002-07-25 Sistema y metodo para mejorar la seguridad en el reacondicionamiento y reprogramacion de aparatos telefonicos moviles.
ES02762622T Expired - Lifetime ES2253553T3 (es) 2001-07-26 2002-07-25 Sistema y metodo para comunicacion bidireccional y ejecucion de conjuntos de instrucciones dinamicas.
ES02741113T Expired - Lifetime ES2248568T3 (es) 2001-07-26 2002-07-25 Sistema y metodo para mejorar la seguridad en el reacondicionamiento y reprogramacion de aparatos telefonicos moviles.

Country Status (9)

Country Link
EP (12) EP1410188A2 (es)
JP (11) JP4104546B2 (es)
KR (10) KR100940178B1 (es)
CN (10) CN1288553C (es)
AT (9) ATE387658T1 (es)
AU (9) AU2002319568A1 (es)
DE (7) DE60205755T2 (es)
ES (9) ES2300454T3 (es)
WO (10) WO2003010656A2 (es)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143407B2 (en) * 2001-07-26 2006-11-28 Kyocera Wireless Corp. System and method for executing wireless communications device dynamic instruction sets
JP4417123B2 (ja) 2003-02-19 2010-02-17 パナソニック株式会社 ソフトウェア更新方法及び無線通信装置
EP1654640B1 (en) 2003-06-04 2018-08-01 Qualcomm Incorporated Network having customizable generators of sofware updates and mobile electronic devices having customizable updating software
US7873956B2 (en) 2003-09-25 2011-01-18 Pantech & Curitel Communications, Inc. Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor
US7257583B2 (en) 2004-01-09 2007-08-14 Microsoft Corporation System and method for updating an on-device application catalog in a mobile device receiving a push message from a catalog server indicating availability of an application for download
KR100620729B1 (ko) * 2004-03-31 2006-09-13 주식회사 팬택앤큐리텔 소프트웨어 이미지 생성 방법
EP1757132B1 (en) * 2004-05-18 2013-07-17 Kyocera Corporation Modular data components for wireless communication devices
GB2416876B (en) * 2004-08-03 2007-01-10 Nec Technologies Export file processing within a mobile radio communications device
US7512939B2 (en) * 2004-10-05 2009-03-31 Neopost Technologies System and method of secure updating of remote device software
EP1659810B1 (en) * 2004-11-17 2013-04-10 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Updating configuration parameters in a mobile terminal
US9148409B2 (en) 2005-06-30 2015-09-29 The Chamberlain Group, Inc. Method and apparatus to facilitate message transmission and reception using different transmission characteristics
US8422667B2 (en) 2005-01-27 2013-04-16 The Chamberlain Group, Inc. Method and apparatus to facilitate transmission of an encrypted rolling code
USRE48433E1 (en) 2005-01-27 2021-02-09 The Chamberlain Group, Inc. Method and apparatus to facilitate transmission of an encrypted rolling code
CN101040552B (zh) * 2005-04-18 2010-12-01 捷讯研究有限公司 控制软件版本更新的方法和***
CN100442708C (zh) * 2005-06-17 2008-12-10 上海华为技术有限公司 一种主备备份的方法及***
CN100476728C (zh) * 2005-08-19 2009-04-08 光宝科技股份有限公司 应用程序更新方法及使用上述方法的移动通讯装置
CN100410893C (zh) * 2005-09-28 2008-08-13 联想(北京)有限公司 自行修复嵌入式设备的主控应用程序的方法及设备
CN1980447B (zh) * 2005-12-06 2010-06-16 中兴通讯股份有限公司 一种通信***软件版本的平滑升级方法
CN101401072B (zh) * 2006-03-10 2010-12-15 富士通株式会社 应用补丁筛选装置以及应用补丁筛选方法
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
EP2047420A4 (en) 2006-07-27 2009-11-18 Hewlett Packard Development Co USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE
CN100403263C (zh) * 2006-08-16 2008-07-16 华为技术有限公司 按配置下载设备软件的方法
KR100924647B1 (ko) * 2008-08-07 2009-11-02 주식회사 케이티 모바일 플랫폼 런타임 다이나믹 링킹 라이브러리 관리 방법및 시스템
JP2012523479A (ja) 2009-04-07 2012-10-04 センシエント カラーズ エルエルシー 自己分散性粒子並びにその製造方法及び使用方法
CN101539885B (zh) * 2009-04-23 2011-06-08 大唐微电子技术有限公司 一种无线通信模块软件自主空中升级的方法、装置及***
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
CN102253847A (zh) * 2010-05-19 2011-11-23 宏碁股份有限公司 制作***软件的***及***软件的部署方法
US8756256B2 (en) * 2010-05-26 2014-06-17 Qualcomm Incorporated Method and systems for the management of non volatile items and provisioning files for a communication device with multiple service accounts
JP6290913B2 (ja) * 2012-11-09 2018-03-07 コーヒレント・ロジックス・インコーポレーテッド 多重プロセッサシステムのためのリアルタイム分析及び制御
US10064251B2 (en) * 2013-03-15 2018-08-28 Cree, Inc. Updatable lighting fixtures and related components
CN103345412B (zh) * 2013-07-10 2016-08-24 华为技术有限公司 打补丁的方法及装置
US10652743B2 (en) 2017-12-21 2020-05-12 The Chamberlain Group, Inc. Security system for a moveable barrier operator
WO2019213672A1 (en) * 2018-05-04 2019-11-07 Herdx, Inc. Food supply tracking, verification, and feedback system
US11074773B1 (en) 2018-06-27 2021-07-27 The Chamberlain Group, Inc. Network-based control of movable barrier operators for autonomous vehicles
US11423717B2 (en) 2018-08-01 2022-08-23 The Chamberlain Group Llc Movable barrier operator and transmitter pairing over a network
KR102176204B1 (ko) 2018-10-15 2020-11-09 김용대 유명인 사용물품 기부 중개 서비스 방법
US10997810B2 (en) 2019-05-16 2021-05-04 The Chamberlain Group, Inc. In-vehicle transmitter training
JP7461755B2 (ja) * 2020-02-21 2024-04-04 日立Astemo株式会社 情報処理装置、プログラム更新システム、及びプログラム更新方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8901932D0 (en) * 1989-01-28 1989-03-15 Int Computers Ltd Data processing system
FR2662891A1 (fr) * 1990-05-30 1991-12-06 Cit Alcatel Dispositif de telechargement de logiciel pour un terminal de telecommunication.
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
JPH07182178A (ja) * 1993-02-19 1995-07-21 Nec Corp プリロードモジュール修正システム
US5488648A (en) * 1993-08-17 1996-01-30 Telefonaktiebolaget L M Ericsson Behavior monitoring and analyzing system for stored program controlled switching system
US5845090A (en) * 1994-02-14 1998-12-01 Platinium Technology, Inc. System for software distribution in a digital computer network
JP3140906B2 (ja) 1994-04-12 2001-03-05 株式会社エヌ・ティ・ティ・データ システムファイルの更新及び復元方法
US5734904A (en) * 1994-11-14 1998-03-31 Microsoft Corporation Method and system for calling one of a set of routines designed for direct invocation by programs of a second type when invoked by a program of the first type
JPH08166877A (ja) * 1994-12-13 1996-06-25 Olympus Optical Co Ltd 修正プログラムの実行可能なワンチップマイクロコンピュータ及びrom修正可能なマイクロコンピュータ
DE19502728A1 (de) * 1995-01-28 1996-08-01 Philips Patentverwaltung Telekommunikationsvorrichtung
US5673317A (en) * 1995-03-22 1997-09-30 Ora Electronics, Inc. System and method for preventing unauthorized programming of wireless network access devices
US5699275A (en) * 1995-04-12 1997-12-16 Highwaymaster Communications, Inc. System and method for remote patching of operating code located in a mobile unit
DE19527808C2 (de) * 1995-07-28 1999-04-01 Siemens Ag Verfahren zum Modifizieren der Softwareprozeduren eines Kommunikationssystems
DE19543843C2 (de) * 1995-11-24 2001-02-08 Acer Peripherals Inc Verfahren zur Aktualisierung der Software in einem mikrocomputergestützten Telefon
JP2002515999A (ja) * 1996-08-28 2002-05-28 ウィンド リヴァー システムズ インコーポレイテッド 複数プロセッサーで分割されるソフトウエア診断のためのツール
US6247065B1 (en) * 1996-12-26 2001-06-12 At&T Corp. Messaging platform process
US6023620A (en) * 1997-02-26 2000-02-08 Telefonaktiebolaget Lm Ecrisson Method for downloading control software to a cellular telephone
US5938766A (en) * 1997-03-21 1999-08-17 Apple Computer, Inc. System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables
SE512110C2 (sv) * 1997-06-17 2000-01-24 Ericsson Telefon Ab L M System och förfarande för att kundanpassa trådlösa kommunikationsenheter
JPH1115689A (ja) * 1997-06-19 1999-01-22 Nec Corp ソフトウェアのデバッグ方法及びデバッグ・プログラムを記録した記録媒体
US5974312A (en) * 1997-07-10 1999-10-26 Ericsson Inc. System and method for updating a memory in an electronic device via wireless data transfer
US6496979B1 (en) * 1997-10-24 2002-12-17 Microsoft Corporation System and method for managing application installation for a mobile device
JPH11141394A (ja) * 1997-11-07 1999-05-25 Nissan Motor Co Ltd 車両制御用メモリ書き換え装置
JPH11146011A (ja) * 1997-11-11 1999-05-28 Nec Corp 電子メールシステム及び電子メールサーバ及び通信端末
JP3337062B2 (ja) * 1997-11-21 2002-10-21 日本電気株式会社 無線データ転送方法及びそのシステム
US6275694B1 (en) * 1997-12-19 2001-08-14 Vlsi Technology, Inc. Method for remotely updating software code for personal handy phone system equipment
US6438711B2 (en) * 1998-07-15 2002-08-20 Intel Corporation Method and apparatus for performing field diagnostics on a computer system
US20020073398A1 (en) * 1998-12-14 2002-06-13 Jeffrey L. Tinker Method and system for modifying executable code to add additional functionality
GB2349485B (en) * 1999-04-23 2003-12-10 Ibm Application management
SE516806C2 (sv) * 1999-05-26 2002-03-05 Ericsson Telefon Ab L M Sätt för inladdning av programvara i en radioterminal, såsom en mobiltelefon, och tillhörande radioterminal
US6282647B1 (en) * 1999-06-02 2001-08-28 Adaptec, Inc. Method for flashing a read only memory (ROM) chip of a host adapter with updated option ROM bios code
FR2800963B1 (fr) * 1999-11-09 2001-12-07 Wavecom Sa Procede de mise a jour d'un programme principal execute par un module de radiocommunication et/ou de donnees associees a ce programme principal, et module de radiocommunication correspondant
US7264532B2 (en) * 2004-12-27 2007-09-04 Tsan-Yao Chen Cup structure

Also Published As

Publication number Publication date
ATE359681T1 (de) 2007-05-15
KR100913659B1 (ko) 2009-08-24
CN1535529A (zh) 2004-10-06
JP4073399B2 (ja) 2008-04-09
WO2003010942A2 (en) 2003-02-06
KR100940178B1 (ko) 2010-02-03
WO2003010942A3 (en) 2003-05-15
JP2005502105A (ja) 2005-01-20
CN1537397A (zh) 2004-10-13
ES2249602T3 (es) 2006-04-01
WO2003010656A3 (en) 2003-11-13
KR20040017352A (ko) 2004-02-26
CN1235138C (zh) 2006-01-04
ATE387658T1 (de) 2008-03-15
EP1410193B1 (en) 2005-09-28
WO2003010663A3 (en) 2003-12-24
AU2002319572A1 (en) 2003-02-17
KR100940180B1 (ko) 2010-02-04
AU2002355308A1 (en) 2003-02-17
JP4106020B2 (ja) 2008-06-25
ATE310354T1 (de) 2005-12-15
JP2008108268A (ja) 2008-05-08
CN1235137C (zh) 2006-01-04
ES2248568T3 (es) 2006-03-16
EP1423959A2 (en) 2004-06-02
EP1610222B1 (en) 2011-03-02
EP1601217A2 (en) 2005-11-30
KR100918162B1 (ko) 2009-09-17
KR100913658B1 (ko) 2009-08-24
JP2004537123A (ja) 2004-12-09
CN1275149C (zh) 2006-09-13
DE60211719D1 (de) 2006-06-29
DE60219536D1 (de) 2007-05-24
EP1410190B1 (en) 2005-08-24
CN1535418A (zh) 2004-10-06
JP4176634B2 (ja) 2008-11-05
CN1537272A (zh) 2004-10-13
AU2002319568A1 (en) 2003-02-17
WO2003010662A2 (en) 2003-02-06
KR20040019334A (ko) 2004-03-05
ATE327628T1 (de) 2006-06-15
ATE302972T1 (de) 2005-09-15
EP1601217B1 (en) 2007-04-11
JP2004537120A (ja) 2004-12-09
KR100984895B1 (ko) 2010-10-01
KR100940179B1 (ko) 2010-02-03
ES2284112T3 (es) 2007-11-01
WO2003010658A2 (en) 2003-02-06
WO2003010932A3 (en) 2004-04-08
CN1310488C (zh) 2007-04-11
EP1410193A2 (en) 2004-04-21
EP1410665B1 (en) 2005-09-07
WO2003010668A2 (en) 2003-02-06
EP1410209A2 (en) 2004-04-21
EP1410188A2 (en) 2004-04-21
DE60206055T2 (de) 2006-06-29
EP1601217A3 (en) 2006-05-10
EP1410665A2 (en) 2004-04-21
CN1537276A (zh) 2004-10-13
DE60205755D1 (de) 2005-09-29
ES2253553T3 (es) 2006-06-01
KR20040017351A (ko) 2004-02-26
JP2004537121A (ja) 2004-12-09
EP1423959B1 (en) 2006-05-24
DE60207429T2 (de) 2006-07-27
WO2003012639A2 (en) 2003-02-13
EP1610222A2 (en) 2005-12-28
CN1288553C (zh) 2006-12-06
CN1535422A (zh) 2004-10-06
AU2002319573A1 (en) 2003-02-17
KR20040022464A (ko) 2004-03-12
WO2003013103A2 (en) 2003-02-13
KR100911604B1 (ko) 2009-08-07
WO2003012639A3 (en) 2003-12-24
CN1535423A (zh) 2004-10-06
JP4077408B2 (ja) 2008-04-16
CN100378661C (zh) 2008-04-02
ATE305632T1 (de) 2005-10-15
EP1410189B1 (en) 2008-02-27
JP4101752B2 (ja) 2008-06-18
DE60207429D1 (de) 2005-12-22
CN1279447C (zh) 2006-10-11
DE60205755T2 (de) 2006-06-29
EP1410189A2 (en) 2004-04-21
DE60211704D1 (de) 2006-06-29
EP1410190A2 (en) 2004-04-21
WO2003010662A3 (en) 2003-12-24
EP1425894A2 (en) 2004-06-09
ES2263799T3 (es) 2006-12-16
JP2004537925A (ja) 2004-12-16
DE60206389D1 (de) 2006-02-09
WO2003010664A3 (en) 2003-12-24
EP1610222A3 (en) 2007-01-31
JP2005505813A (ja) 2005-02-24
CN1275150C (zh) 2006-09-13
DE60219536T2 (de) 2008-01-03
KR20040022463A (ko) 2004-03-12
ES2247355T3 (es) 2006-03-01
KR20040015823A (ko) 2004-02-19
WO2003010663A2 (en) 2003-02-06
KR100817387B1 (ko) 2008-03-27
KR20040022462A (ko) 2004-03-12
ATE382159T1 (de) 2008-01-15
EP1410191A2 (en) 2004-04-21
CN1535421A (zh) 2004-10-06
WO2003013103A3 (en) 2004-04-08
JP4310186B2 (ja) 2009-08-05
ATE304272T1 (de) 2005-09-15
ATE327536T1 (de) 2006-06-15
ES2263796T3 (es) 2006-12-16
WO2003010932A2 (en) 2003-02-06
DE60206389T2 (de) 2006-07-13
JP4104546B2 (ja) 2008-06-18
CN1288554C (zh) 2006-12-06
DE60211704T2 (de) 2007-05-10
EP1410192B1 (en) 2007-12-26
DE60206055D1 (de) 2005-10-13
JP2004538693A (ja) 2004-12-24
WO2003010664A2 (en) 2003-02-06
KR100932058B1 (ko) 2009-12-15
JP2004537899A (ja) 2004-12-16
KR20040022460A (ko) 2004-03-12
KR20040022461A (ko) 2004-03-12
AU2002319569A1 (en) 2003-02-17
AU2002319576A1 (en) 2003-02-17
DE60211719T2 (de) 2007-01-11
EP1425894B1 (en) 2005-11-16
WO2003010656A2 (en) 2003-02-06
CN1535419A (zh) 2004-10-06
CN1250035C (zh) 2006-04-05
KR20040022459A (ko) 2004-03-12
EP1410192A2 (en) 2004-04-21
AU2002328167A1 (en) 2003-02-17
AU2002319577A1 (en) 2003-02-17
EP1410209B1 (en) 2006-05-24
JP4278513B2 (ja) 2009-06-17
WO2003010668A3 (en) 2003-09-25
WO2003010658A3 (en) 2003-12-24
AU2002319570A1 (en) 2003-02-17
CN1535420A (zh) 2004-10-06
JP2004537895A (ja) 2004-12-16
ES2300454T3 (es) 2008-06-16
JP2004537209A (ja) 2004-12-09

Similar Documents

Publication Publication Date Title
ES2299587T3 (es) Sistema y metodo para compactar secciones de codigos en el software de un dispositivo de comunicacion inalambrico actualizable sobre el terreno.
US7644406B2 (en) Update system capable of updating software across multiple FLASH chips
US7159214B2 (en) System and method for compacting field upgradeable wireless communication device software code sections
US7542758B2 (en) Field downloading of wireless device software
US7747997B1 (en) Firmware update in electronic devices employing SIM card for saving metadata information
US7657884B2 (en) Electronic device supporting multiple update agents
JP2009213144A (ja) 無線パラメータデータ及び無線規制データへの構内接続及び遠隔接続、並びにその方法。
US20040203625A1 (en) Apparatus and method for managing memory in mobile communication terminal
EA001598B1 (ru) Переносимая защищенная система осуществления транзакций для программируемых устройств с микропроцессорами
US20070156976A1 (en) Resource efficient content management and delivery without using a file system
US7328007B2 (en) System and method for organizing wireless communication device system software
US8112070B2 (en) Electronic device and method for searching a merchandise location
KR20060134397A (ko) 모바일 단말기용 어플리케이션 갱신 시스템
JP2004519025A (ja) 集積回路におけるファイル共有装置
KR20010011952A (ko) 모듈별 업데이트 장치 및 그 방법
JP3670162B2 (ja) 再配置可能なアドインソフト管理システム
WO2000023885A1 (en) Storage of static data for efficient access and field upgrade
KR20000040307A (ko) 대용량 전화번호부 저장방법
US20020065811A1 (en) Ensured access to static objects inside a dynamic token memory