ES2263799T3 - Sistema y metodo para comunicacion telefonica punto por punto. - Google Patents

Sistema y metodo para comunicacion telefonica punto por punto.

Info

Publication number
ES2263799T3
ES2263799T3 ES02751472T ES02751472T ES2263799T3 ES 2263799 T3 ES2263799 T3 ES 2263799T3 ES 02751472 T ES02751472 T ES 02751472T ES 02751472 T ES02751472 T ES 02751472T ES 2263799 T3 ES2263799 T3 ES 2263799T3
Authority
ES
Spain
Prior art keywords
opcodes
server
data
remote
data payload
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
ES02751472T
Other languages
English (en)
Inventor
Gowri Rajaram
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 ES2263799T3 publication Critical patent/ES2263799T3/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 la comunicación punto por punto entre un primer microteléfono (10) y un segundo microteléfono (12), en el que el primer microteléfono (10) y el segundo microteléfono (12) están emparejados para comunicarse mediante un servidor de comunicaciones (30) en una red de comunicación sin hilos, comprendiendo dicho método: la recepción, en el servidor de comunicaciones, de un juego de opcodes del servidor del primer microteléfono (540), el juego de opcodes del servidor compilado en el primer microteléfono (540) e incluyendo al menos un opcode del servidor y una primera carga útil de datos; caracterizándose dicho método además por comprender: el procesamiento del juego de opcodes del servidor y la compilación de al menos una parte de la primera carga útil de datos en un juego de opcodes remoto que incluye al menos un opcode remoto y una segunda carga útil de datos; y el envío del juego de opcodes remoto al segundo microteléfono (12) para su proceso en el mismo.

Description

Sistema y método para comunicación telefónica punto por punto.
Antecedentes Ámbito del invento
El presente invento es aplicable al sector de la comunicación inalámbrica, en general, y al de la comunicación punto por punto entre dispositivos inalámbricos a través de una red de comunicación sin hilos, en especial.
Técnica relacionada
Los dispositivos convencionales para comunicación inalámbrica (denominados también en este documento "dispositivos inalámbricos", "microteléfonos" y "dispositivos móviles") existentes en el mercado suelen conectarse con otros dispositivos de comunicación inalámbricos a través de una conexión de voz convencional en una red de comunicación sin hilos. Esta conexión de voz convencional permite la transmisión de datos sonoros en tiempo real entre dos o más dispositivos de comunicación inalámbricos separados geográficamente que participen en la conexión de voz.
Otro de los aspectos útiles de los dispositivos de comunicación inalámbricos es su capacidad para establecer conexiones de datos con una red de comunicación inalámbrica. Este tipo de conexión inalámbrica convencional permite que el dispositivo móvil establezca comunicación con la red, por ejemplo para solicitar y recibir actualizaciones de software.
Algo que no pueden hacer, sin embargo, los dispositivos móviles convencionales es iniciar comunicaciones de datos, y participar en ellas, entre dispositivos móviles en una red de comunicación sin hilos. En consecuencia, se requiere un sistema y un método que permita superar estos importantes problemas que presentan los sistemas convencionales descritos anteriormente. El estado actual de la técnica incluye la patente US-6.247.065, titulada "Procesos de plataforma de transmisión de mensajes", que describe procesos para comunicar paquetes de información a una plataforma de mensajería, paquetes de información que contienen datos destinados a un receptor e instrucciones ejecutables. Estas instrucciones se ejecutan en la plataforma de mensajería, por lo que el receptor destinatario puede recuperar el mensaje de la plataforma.
Resumen
Los microteléfonos disponibles en el sector presentan una capacidad de comunicación de datos limitada. En especial, los microteléfonos no admiten la comunicación de datos punto por punto entre sí. Esta incapacidad limita la utilidad de los dispositivos de comunicación inalámbricos y, en consecuencia, limita también el uso de tiempo de permanencia en el aire.
El invento proporciona un método para la comunicación de datos punto por punto, un soporte y un sistema legibles informáticamente según las reivindicaciones 1, 10 y 15 respectivamente. El invento permite que los microteléfonos participen en comunicaciones de datos a través de redes de comunicación sin hilos. Inicialmente, un microteléfono de origen crea un juego de códigos de operación (opcode) y empareja el juego de opcode del servidor con la correspondiente carga útil de datos. El juego de opcode del servidor y la correspondiente carga útil de datos se envían entonces a un servidor de red donde se extraen los datos y se llevan a cabo las instrucciones ejecutables correspondientes a los opcodes. Las instrucciones ejecutables provocan que el servidor de red compile un juego de opcodes remoto y la correspondiente carga útil de datos. Este juego de opcodes remoto y la carga útil de datos se envían al microteléfono receptor identificado por el microteléfono emisor en la carga útil de datos. Cuando el microteléfono receptor recibe el juego de opcodes remoto y la carga útil de datos, dicho microteléfono receptor extrae la carga útil de datos y ejecuta la instrucción correspondiente a los opcodes del juego de opcodes remoto. La ejecución de estas instrucciones provoca que se ejecute una acción en el microteléfono receptor que hace efectiva la comunicación de datos entre el microteléfono emisor y el receptor.
Es posible implementar una serie de aplicaciones utilizando este sistema y método para la comunicación de datos punto por punto entre dispositivos de comunicación inalámbricos. Así, por ejemplo, es posible añadir o actualizar entradas en la agenda de los dispositivos móviles, enviar archivos de datos (como imágenes o mensajes de correo eléctrico) y otros documentos, recibir llamadas de clientes o desviarlas al microteléfono emisor, solicitar y prestar servicios de localización GPS e incluso diseñar la plantilla de un equipo deportivo (con fines de ocio).
Breve descripción de los dibujos
Los detalles del presente invento, en cuanto a estructura y funcionamiento, se entenderán algo mejor viendo los dibujos adjuntos, en los que se han utilizado los mismos números de referencia para indicar las piezas que son idénticas, y en los que:
La figura 1 muestra un diagrama de bloques esquemático del conjunto del sistema de mantenimiento del software del dispositivo inalámbrico;
La figura 2 muestra un diagrama de bloques esquemático del sistema de mantenimiento del software, destacando la instalación de los juegos de instrucciones a través de la interfaz aérea;
La figura 3 muestra un diagrama de bloques esquemático que ilustra el sistema que utiliza el presente invento para ejecutar juegos de instrucciones dinámicos en un dispositivo de comunicación inalámbrico;
La figura 4 muestra un diagrama de bloques esquemático de la memoria del dispositivo inalámbrico;
La figura 5 muestra una tabla que representa la tabla de direcciones de secciones de códigos de la figura 3;
La figura 6 muestra una descripción detallada de una biblioteca de símbolos de la figura 3, con los símbolos;
La figura 7 muestra una tabla que representa la tabla de direcciones de desviaciones de códigos de la figura 3;
La figura 8 muestra una descripción del código de operación (opcode) al que está accediendo el motor en tiempo de ejecución;
La figura 9 muestra una descripción más detallada del primer código de operación de la figura 8;
La figura 10 muestra un diagrama de flujo que ilustra el método que sigue el presente invento para ejecutar juegos de instrucciones dinámicas en un dispositivo de comunicación inalámbrico;
La figura 11 muestra un diagrama de flujo que ilustra un ejemplo de funcionamiento de un juego de instrucciones dinámicas;
La figura 12 muestra un diagrama de flujo que ilustra otro ejemplo de funcionamiento de un juego de instrucciones dinámicas;
La figura 13 muestra un diagrama de flujo que ilustra un tercer ejemplo de funcionamiento de un juego de instrucciones dinámicas;
La figura 14 muestra un diagrama de flujo que ilustra un cuarto ejemplo de funcionamiento de un juego de instrucciones dinámicas;
La figura 15 muestra un diagrama de flujo que ilustra un quinto ejemplo de funcionamiento de un juego de instrucciones dinámicas;
La figura 16 muestra un diagrama de una red de alto nivel para ilustrar un ejemplo de red de comunicación sin hilos;
La figura 17A muestra un diagrama de bloques que ilustra un ejemplo de dispositivo de comunicación inalámbrico;
La figura 17B muestra un diagrama de bloques que ilustra un ejemplo de una sección de códigos de instrucciones remota en tiempo de ejecución;
La figura 18A muestra un diagrama de bloques que ilustra un ejemplo del servidor de PMRTI;
La figura 18B muestra un diagrama de bloques que ilustra un ejemplo de una sección de códigos de instrucciones en tiempo de ejecución del servidor;
La figura 19 muestra un diagrama de flujo que ilustra un ejemplo de comunicación punto por punto entre microteléfonos;
La figura 20 muestra un diagrama de flujo que ilustra un ejemplo del proceso de ejecución de juegos de instrucciones dinámicas en un dispositivo de comunicación inalámbrico;
La figura 21 muestra un diagrama de flujo que ilustra un ejemplo del proceso de compilación de juegos de instrucciones dinámicas en un dispositivo de comunicación inalámbrico;
La figura 22 muestra un diagrama de flujo que ilustra un ejemplo de proceso de ejecución de juegos de instrucciones dinámicas en un servidor de PMRTI;
La figura 23 muestra un diagrama de flujo que ilustra un ejemplo del proceso de transmisión de comunicaciones de datos a un microteléfono punto por punto; y
La figura 24 es un diagrama de bloques que ilustra un ejemplo de sistema informático que podría utilizarse en muchas de las formas de realización que se describen en este documento.
Descripción detallada
Algunas de las formas de realización que se describen aquí se refieren a sistemas y métodos para la comunicación bidireccional de juegos de instrucciones dinámicas entre un dispositivo de comunicación inalámbrico y una red de comunicación sin hilos. Así, por ejemplo, uno de los métodos descrito permite que un dispositivo de comunicación inalámbrico cree un juego de instrucciones y envíe este juego de instrucciones a la red para su ejecución y proceso.
Después de leer esta descripción, cualquier experto en esta técnica sabrá cómo poner en práctica el invento en sus varias formas de realización y aplicaciones alternativas. Sin embargo, si bien aquí se describirán varias formas de realización del presente invento, se entiende que dichas formas de realización se ofrecen meramente a título de ejemplo, no limitando en absoluto sus posibilidades. En este sentido, esta descripción detallada de varias formas de realización debería considerarse únicamente un caso más dentro del ámbito del presente invento, según se establece en las reivindicaciones adjuntas.
Algunas partes de las descripciones detalladas que se incluyen a continuación se muestran en términos de procedimientos, pasos, bloques lógicos, códigos, proceso y otras representaciones simbólicas de las operaciones con bits de datos en el microprocesador o la memoria de un dispositivo inalámbrico. Estas descripciones y representaciones son las que suelen utilizar los expertos en la técnica del tratamiento de datos para comunicar con mayor efectividad las bases de su trabajo a otros expertos. Por lo general, los procedimientos, pasos de ejecución del microprocesador, aplicaciones, bloques lógicos, procesos, etc. son secuencias autónomas de determinadas etapas o instrucciones que llevan al resultado esperado. Los pasos suelen requerir alguna manipulación física o energía física. Normalmente, aunque no es imprescindible, esta energía física procede de señales eléctricas o magnéticas susceptibles de ser almacenadas, transferidas, combinadas, comparadas o manipuladas de cualquier otra forma en un dispositivo inalámbrico que funcione con un microprocesador. En ocasiones, ha resultado útil, especialmente por motivos de generalización de su uso, referirse a estas señales como bits, valores, elementos, símbolos, caracteres, términos o números, entre otros. Cuando se mencionan dispositivos físicos, por ejemplo la memoria, suelen estar conectados a otros dispositivos físicos a través de un bus u otra conexión eléctrica. Se considera que estos dispositivos físicos interactúan con procesos o aplicaciones lógicos y, en consecuencia, están "conectados" a operaciones lógicas. Así, por ejemplo, una memoria puede almacenar o acceder a códigos para dar continuidad a una operación lógica, o una aplicación puede llamar a una sección de códigos de la memoria para su ejecución.
Debería tenerse en cuenta, sin embargo, que todos estos términos similares deben asociarse a la energía física adecuada y que no son más que etiquetas útiles aplicadas a dicha energía. Salvo que se indique específicamente lo contrario en las descripciones siguientes, se considera que en el texto del presente invento los términos "proceso", "conexión", "conversión", "visualización", "solicitud", "determinación", "reconocimiento", etc. hacen referencia a la acción y a los procesos del sistema microprocesador del dispositivo inalámbrico que manipula los datos representados como energía (electrónica) física en los registros y las memorias del sistema informático y los transforma en otros datos representados, paralelamente, como energía física en las memorias o registros del dispositivo inalámbrico o en otros dispositivos similares de almacenamiento, transmisión o visualización de información.
La figura 1 muestra un diagrama de bloques del conjunto del sistema de mantenimiento del software 100 del dispositivo inalámbrico. A continuación se describe la organización del software del sistema del presente invento, siguiendo una visión general del sistema de mantenimiento del software 100. El sistema 100 general describe un proceso de envío de actualizaciones y juegos de instrucciones (programas) del software del sistema, así como de instalación del software enviado en un dispositivo inalámbrico. El fabricante de los microteléfonos es el responsable de crear las actualizaciones del software y las instrucciones en tiempo de ejecución del gestor de parches (PMRTI), más conocidas generalmente como juegos de instrucciones o juegos de instrucciones dinámicas. El software del sistema está organizado en bibliotecas de símbolos. Las bibliotecas de símbolos se encuentran dispuestas en secciones de códigos. Cuando es necesario actualizar las bibliotecas de símbolos, la actualización del software 102 se transporta en forma de una o varias secciones de códigos. La actualización del software se transmite a los dispositivos inalámbricos en el entorno en el que el dispositivo de comunicaciones inalámbrico 104 actúa como representante, o se transmite en comunicaciones independientes distribuidas por una estación base 106 utilizando los protocolos conocidos para transmisión aérea, de datos o de mensajes. El invento no se limita a un tipo de formato de transmisión específico, ya que el dispositivo de comunicación inalámbrico puede modificarse fácilmente para que procese cualquier protocolo de transmisión aérea disponible con el fin de recibir software del sistema y actualizaciones de
PMRTI.
El software del sistema puede verse como una agrupación de diferentes subsistemas. Los objetos-códigos pueden reunirse en uno de estos subsistemas abstractos, y la agrupación resultante puede etiquetarse como biblioteca de símbolos. Esto proporciona un desglose lógico de la base de códigos y permite asociar actualizaciones y reparaciones de software a una de estas bibliotecas de símbolos. En la mayoría de los casos, se asocia una única actualización a una o, como máximo, dos bibliotecas de símbolos. El resto de la base de códigos, las demás bibliotecas de símbolos, permanece inalterado.
El concepto de biblioteca de símbolos proporciona un mecanismo para trabajar con códigos y constantes. Los datos de lectura-escritura (RW), por otro lado, se almacenan en una biblioteca RW única que contiene datos RAM para todas las bibliotecas.
Una vez recibida por el dispositivo inalámbrico 104, la sección de códigos transportada debe procesarse. Este dispositivo inalámbrico sobrescribe una sección de códigos específica de la memoria no volátil 108. La memoria no volátil 108 contiene una sección de sistema de archivos (FSS) 110 y una sección de almacenamiento de códigos 112. La sección de códigos se encuentra por lo general comprimida antes del transporte para reducir el espacio que ocupa en la FSS 110. A menudo la sección de códigos actualizada irá acompañada de sus datos RW, que son otro tipo de biblioteca de símbolos que contiene todos los datos RW para cada biblioteca de símbolos. Aunque se graban en la memoria de lectura-escritura volátil de acceso aleatorio 114 cuando el software del sistema se está ejecutando, los datos RW siempre deben almacenarse en la memoria no volátil 108 para que puedan ser cargados a la memoria de lectura-escritura volátil de acceso aleatorio 114 cada vez que se reinicia el dispositivo inalámbrico. Esto es aplicable también a la primera vez que los datos RW se cargan en la memoria de lectura-escritura volátil de acceso aleatorio. Según se explica más adelante con mayor detalle, los datos RW suelen estar dispuestos en una sección de códigos de gestor de parches.
El sistema 100 incluye el concepto de tablas virtuales. Al utilizar dichas tablas, las bibliotecas de símbolos de una sección de códigos pueden parchearse (sustituirse), sin romper (sustituir) otras partes del software del sistema (otras secciones de códigos). Las tablas virtuales se ejecutan desde la memoria de lectura-escritura volátil de acceso aleatorio 114, por motivos de mayor eficacia. Las tablas de direcciones de secciones de códigos y las tablas de direcciones de desviaciones de símbolos son tablas virtuales.
El dispositivo inalámbrico 104 recibe las secciones de códigos actualizadas y las almacena en la FSS 110. Generalmente, una interfaz de usuario (UI) del dispositivo inalámbrico notificará al usuario que se dispone de nuevo software. Como respuesta, la UI solicita al usuario que acuse recibo de la notificación y le indica la operación de parcheado o de actualización. Opcionalmente, la operación de actualización puede realizarse automáticamente. El dispositivo inalámbrico podría no estar habilitado para llevar a cabo tareas estándar de comunicación mientras se está desarrollando el proceso de actualización. La sección de códigos de gestor de parches incluye una biblioteca de símbolos del controlador de lectura-escritura no volátil que también se carga en la memoria de lectura-escritura volátil de acceso aleatorio 114. La biblioteca de símbolos del controlador de lectura-escritura no volátil provoca que las secciones de códigos se sobrescriban con las secciones de códigos actualizadas. La sección de códigos de gestor de parches incluye los datos de lectura-escritura, la tabla de direcciones de secciones de códigos, y la tabla de direcciones de desviaciones de símbolos, así como un código de acceso a símbolos y la dirección del código de acceso a símbolos (cuya descripción figura más adelante). Algunas partes de estos datos no son válidas cuando se introducen secciones de códigos actualizadas, por lo que las secciones de códigos de gestor de parches actualizadas contienen datos de lectura-escritura, una tabla de direcciones de secciones de códigos y una tabla de direcciones de desviaciones de símbolos válidas para las secciones de códigos actualizadas. Cuando las secciones de códigos actualizadas se han cargado en la sección de almacenamiento de códigos 112, el dispositivo inalámbrico se reinicia. Después de la operación de reinicio, el dispositivo inalámbrico puede ejecutar el software del sistema actualizado. Debería entenderse también que la sección de códigos de gestor de parches podría contener otras bibliotecas de símbolos que no se han descrito aquí. No es necesario cargar estas bibliotecas de símbolos adicionales en la memoria volátil de lectura-escritura 114.
La figura 2 muestra un diagrama de bloques esquemático del sistema de mantenimiento del software 100 donde se resalta la instalación de juegos de instrucciones a través de una interfaz aérea. Además de actualizar las secciones de códigos del software del sistema, el sistema de mantenimiento 100 puede descargar e instalar juegos de instrucciones dinámicas, programas o juegos de instrucciones de gestor de parches (PMIS) a las que se hace referencia en este documento como instrucciones en tiempo de ejecución de gestor de parches (PMRTI). La sección de códigos PMRTI 200 se transporta al dispositivo inalámbrico 104 de la misma forma que las secciones de códigos de software del sistema que se han descrito anteriormente. Las secciones de códigos PMRTI se almacenan inicialmente en la FSS 110. Por lo general, una sección de códigos PMRTI es un archivo binario que puede visualizarse como instrucciones compiladas para el microteléfono. Las secciones de códigos PMRTI suelen ser lo bastante extensas para asegurar el rendimiento de ciertas funciones matemáticas básicas y el de las funciones ejecutadas condicionalmente. Así, por ejemplo, una PMRTI de calibración de RF podría llevar a cabo las operaciones siguientes: "SI ELEMENTO DE LLAMADA ES INFERIOR A X, EJECUTAR INSTRUCCIÓN____; DE LO CONTRARIO, EJECUTAR INSTRUCCIÓN____".
Una PMRTI tiene soporte para operaciones matemáticas básicas como la suma, la resta, la multiplicación y la división. Al igual que ocurre con las secciones de códigos del software del sistema, la sección de códigos PMRTI podría cargarse respondiendo a solicitudes de la UI, y el dispositivo inalámbrico debería reiniciarse después de cargar la PMRTI en la sección de almacenamiento de códigos 112. A continuación, podría ejecutarse la sección PMRTI. Si la sección de códigos PMRTI está asociada a cualquier tabla virtual o a datos de lectura-escritura, se transportará una sección de códigos de gestor de parches actualizada con la PMRTI, para que se instale en la sección de almacenamiento de códigos 112. Opcionalmente, la PMRTI podría guardarse y procesarse desde la FSS 110. Después de que el microteléfono 104 haya ejecutado todas las instrucciones de la sección PMRTI, esta sección PMRTI puede borrarse de la FSS 110. Opcionalmente, la PMRTI puede conservarse para operaciones futuras. Así, por ejemplo, la PMRTI podría ejecutarse cada vez que se active el dispositivo inalámbrico.
La PMRTI es un motor de instrucciones en tiempo de ejecución muy potente. El microteléfono puede ejecutar cualquier instrucción que le llegue a través del entorno PMRTI. Este mecanismo podría utilizarse para dar soporte a las calibraciones de RF. En términos más generales, la PMRTI puede utilizarse para depurar remotamente el software de un dispositivo inalámbrico en caso de que el fabricante o el proveedor del servicio detecten problemas de software, normalmente después de recibir reclamaciones por parte de los usuarios. La PMRTI puede lanzar aplicaciones del sistema recién descargadas para realizar un análisis de datos, la depuración y la reparación. La PMRTI puede también registrar los datos necesarios para diagnosticar problemas de software. La PMRTI puede lanzar aplicaciones del sistema recién descargadas para llevar a cabo análisis de datos, depuración y reparaciones. La PMRTI puede proporcionar actualizaciones basadas en datos de lectura-escritura (RW) para el análisis y posible solución a corto plazo de un problema, en lugar de actualizar una sección de códigos de software del sistema completa. La PMRTI puede proporcionar algoritmos de compactación para que los utilice el dispositivo inalámbrico.
En algunos aspectos del invento, la organización del software del sistema en bibliotecas de símbolos podría afectar al tamaño de la memoria volátil 114 y de la memoria no volátil 108 necesarias para su ejecución. Esto es debido a que las secciones de códigos suelen ser de mayor tamaño que las bibliotecas de símbolos dispuestas en las secciones de códigos. Estas secciones de códigos de mayor tamaño existen para que puedan alojar las secciones de códigos actualizadas. La organización del software del sistema como agrupación de bibliotecas afecta a los requisitos de tamaño de la memoria no volátil. Para el mismo tamaño de código, el volumen de memoria no volátil utilizada será mayor debido a que el tamaño de las secciones de códigos puede incrementarse hasta superar el de las bibliotecas de símbolos dispuestas en su interior.
Después de que el dispositivo inalámbrico haya recibido las actualizaciones del software, el sistema de mantenimiento del software 100 tendrá soporte para la compactación de memoria. La compactación de la memoria es similar a las aplicaciones de desfragmentación del disco que poseen los ordenadores personales. El mecanismo de compactación garantiza que la memoria se utilizará de forma óptima y bien equilibrada para futuras actualizaciones del software, en las que el tamaño de las secciones de códigos actualizadas resulta impredecible. El sistema 100 analiza la sección de almacenamiento de códigos como si hubiera sido parcheada (actualizada). El sistema 100 intenta alojar las secciones de códigos actualizadas en el espacio de memoria ocupado por la sección de códigos que se está sustituyendo. Si la sección de códigos actualizada es mayor que la sección de códigos que se está sustituyendo, el sistema 100 compacta las secciones de códigos en la memoria 112. Opcionalmente, el fabricante o el proveedor del servicio pueden calcular la compactación de la memoria, y las instrucciones de compactación pueden transportarse al dispositivo inalámbrico 104.
La compactación puede ser un proceso largo debido a la complejidad del algoritmo y al gran volumen de movimiento de datos. El algoritmo de compactación predice la viabilidad de cualquier proceso, antes de iniciarlo. Las peticiones de la UI pueden utilizarse para solicitar permiso al usuario antes de intentar cualquier compactación.
En algunos aspectos del invento, todas las secciones de códigos del software del sistema pueden actualizarse simultáneamente. Para llevar a cabo una actualización del software de todo el sistema, sin embargo, se requeriría una FSS 110 de mayores dimensiones.
La figura 3 muestra un diagrama de bloques esquemático que ilustra la ejecución de un juego de instrucciones dinámicas del presente invento en un dispositivo de comunicación inalámbrico. El sistema 300 contiene una sección de almacenamiento de códigos 112 en la memoria 108 e incluye un software del sistema del dispositivo inalámbrico distinto en varias de las secciones de códigos actuales. Se ilustran la sección de códigos uno (302), la sección de códigos dos (304), la sección de códigos n (306) y una sección de códigos de gestor de parches (308). Sin embargo, el invento no se limita a ningún número concreto de secciones de códigos. Además, el sistema 300 incluye una primera serie de bibliotecas de símbolos dispuestas en una segunda serie 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 una de las bibliotecas comprende símbolos relacionados con la funcionalidad. Así, por ejemplo, la biblioteca de símbolos uno (310) podría participar en el funcionamiento de la pantalla de cristal líquido (LCD) del dispositivo inalámbrico. En tal caso, los símbolos se asociarían a las funciones de la pantalla. Según se explica más adelante con mayor detalle, las bibliotecas de símbolos adicionales se han dispuesto en la sección de códigos de gestor de parches 308.
La figura 4 muestra un diagrama de bloques esquemático de la memoria del dispositivo inalámbrico. Tal y como se ilustra, la memoria es la sección de almacenamiento de códigos 112 de la figura 1. Se trata de una memoria grabable, no volátil, una especie de memoria flash. Debería tenerse en cuenta que las secciones de códigos no deben almacenarse necesariamente en la misma memoria que la FSS 110. También debe tenerse en cuenta que la estructura del software del presente invento podría habilitarse con secciones de códigos almacenadas en una serie de memorias colaboradoras. La sección de almacenamiento de códigos 112 incluye una segunda serie de bloques de memoria en direcciones contiguas, donde cada bloque de memoria almacena la correspondiente sección de códigos de otra segunda serie de secciones de códigos. Así, la sección de códigos uno (302) se almacena 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úmero n 404, y la sección de códigos de gestor de parches (308) en el bloque de memoria número
p 406.
Comparando las figuras 3 y 4, el inicio de cada sección de códigos se almacena en las correspondientes direcciones de inicio en la memoria, y las bibliotecas de símbolos se disponen de tal modo que empiezan en el inicio de las secciones de códigos. Es decir, cada biblioteca de símbolos empieza en la primera dirección y se ejecuta a lo largo de una serie de direcciones secuencialmente desde la primera. Así, por ejemplo, la sección de códigos uno (302) se inicia en la primera dirección de inicio 408 (marcada con una "S") en la memoria de la sección de códigos de almacenamiento 112. En la figura 3, la biblioteca de símbolos uno (310) se inicia en el inicio 318 de la primera sección de códigos. De igual modo, la sección de códigos dos (304) se inicia en una segunda dirección de inicio 410 (figura 4), y la biblioteca de símbolos dos se inicia en el inicio 320 de la segunda sección de códigos (figura 3). La sección de códigos n (306) se inicia en una tercera dirección de inicio 412 en la memoria de la sección de almacenamiento de códigos 112 (figura 4), y la biblioteca de símbolos m (316) se inicia en el inicio de la sección de códigos n 322 (figura 3). La sección de códigos de gestor de parches se inicia en la dirección de inicio p 414 en la memoria de la sección de almacenamiento de códigos 112, y la primera biblioteca de símbolos de la sección de códigos de gestor de parches 308 se inicia en el inicio 324 de la sección de códigos de gestor de parches. Así, la biblioteca de símbolos uno (310) se almacena finalmente en el primer bloque de memoria 400. Si una sección de códigos contiene una serie de bibliotecas de símbolos, como la sección de códigos dos (304), la serie de bibliotecas de símbolos se almacena en el bloque de memoria correspondiente, en este caso el segundo bloque de memoria 402.
En la figura 3, el sistema 300 comprende además 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 sección de códigos en la memoria.
La figura 5 muestra una tabla que representa 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 conocer la dirección de inicio de la sección de códigos para una biblioteca de símbolos. Así, por ejemplo, el sistema 300 busca una sección de códigos cuando la ejecución requiere un símbolo de la biblioteca de símbolos uno. Para conocer la dirección de inicio de la sección de códigos uno, y localizar así el símbolo en la biblioteca de símbolos uno, se consulta la tabla de direcciones de secciones de códigos 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 mover o extender las secciones de códigos. Las operaciones de extensión o de movimiento pueden ser necesarias para instalar secciones de códigos actualizadas (con las bibliotecas de símbolos actualizadas).
Volviendo de nuevo a la figura 3, debería observarse que no todas las bibliotecas de símbolos empiezan necesariamente en el inicio de una sección de códigos. Tal y como se ilustra, la biblioteca de símbolos tres (314) está dispuesta en la sección de códigos dos (304), pero no empieza en la dirección de inicio de sección de códigos 320. Así, en caso de que se requiera un símbolo de la biblioteca de símbolos tres (314) para la ejecución, el sistema 300 consultará la tabla de direcciones de secciones de códigos 326 para conocer la dirección de inicio de la sección de códigos dos (304). Según se explica más adelante, la tabla de direcciones de desviaciones de símbolos permite localizar los símbolos de la biblioteca de símbolos tres (314). No importa si los símbolos se encuentran esparcidos en varias bibliotecas, siempre que pertenezcan a la misma sección de códigos.
Tal y como se ha observado, cada biblioteca de símbolos contiene 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. Así, 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 los buscan otras bibliotecas de símbolos de otras secciones de códigos. Los símbolos externos se utilizan y se invocan entre varias secciones de códigos, y los buscan las bibliotecas de diferentes secciones de códigos. Normalmente, la tabla de direcciones de desviaciones de símbolos incluye una lista de todos los símbolos externos.
Así, por ejemplo, la biblioteca de símbolos uno (310) podría generar caracteres en la pantalla de un dispositivo inalámbrico. Los símbolos de esta biblioteca generarían, a su vez, números telefónicos, nombres, la hora u otras funciones de pantalla. Cada una de estas funciones se genera con ciertas rutinas, que aquí han sido denominadas símbolos. Así, un símbolo de la biblioteca de símbolos uno (310) genera números de teléfono en la pantalla. Este símbolo, representado por una "X", es externo. Cuando el dispositivo inalámbrico recibe una llamada telefónica y el servicio de identificación de llamadas está activado, el sistema debe ejecutar el símbolo "X" para generar el número en la pantalla. En consecuencia, el sistema debe localizar el símbolo "X".
La figura 6 muestra una descripción detallada de la biblioteca de símbolos uno (310) de la figura 3, con símbolos. Los símbolos se han dispuesto desviados de sus respectivas direcciones de inicio de sección de códigos. En muchos casos, el inicio de la biblioteca de símbolos es el inicio de la sección de códigos, aunque esto no es aplicable si la sección de códigos contiene más de una biblioteca de símbolos. La biblioteca de símbolos uno (310) se inicia en el inicio de la sección de códigos uno (véase la figura 3). Tal como se muestra en la figura 6, el símbolo "X" se encuentra situado en una desviación de (03) del inicio de la biblioteca de símbolos y el símbolo "Y" se encuentra en una desviación de (15). Las direcciones de desviaciones de símbolos se almacenan en una tabla de direcciones de desviaciones de símbolos 328 de la sección de códigos del gestor de parches (véase la figura 3).
La figura 7 muestra una tabla que representa la tabla de direcciones de desviaciones de símbolos 328 de la figura 3. La tabla de direcciones de desviaciones de símbolos 328 establece referencias cruzadas entre los identificadores de símbolos y las correspondientes direcciones de desviaciones, y también con los correspondientes identificadores de sección de códigos en la memoria. Así, cuando el sistema intenta ejecutar el símbolo "X" de la biblioteca de símbolos uno, se consulta la tabla de direcciones de desviaciones de símbolos 328 para localizar la dirección exacta del símbolo, en relación con la sección de códigos en la que se encuentra.
Volviendo de nuevo a la figura 3, la primera serie de bibliotecas de símbolos incluye por lo general datos de lectura-escritura que deben consultarse o establecerse durante la ejecución de estas bibliotecas de símbolos. Así, por ejemplo, una biblioteca de símbolos podría incluir una operación dependiente de una instrucción condicional. La sección de datos de lectura-escritura se consulta para determinar el estatus necesario para completar la instrucción condicional. El presente invento agrupa los datos de lectura-escritura de todas las bibliotecas de símbolos en una sección de lectura-escritura compartida. En algunos aspectos del invento, los datos de lectura-escritura 330 están dispuestos en la sección de códigos de gestor de parches 308. Opcionalmente (algo que no se ilustra), los datos de lectura-escritura pueden disponerse en una sección de códigos diferente, por ejemplo la sección de códigos n (306).
La primera serie de bibliotecas de símbolos incluye también un código de acceso a símbolos dispuesto en una sección de códigos para calcular la dirección de un símbolo buscado. El código de acceso a símbolos puede disponerse y almacenarse en una dirección de otra sección de códigos, por ejemplo en la sección de códigos dos (304). Sin embargo, tal y como se muestra, el código de acceso a símbolos 332 se halla dispuesto y almacenado en una dirección de la sección de códigos de gestor de parches 308. El sistema 300 comprende además una primera ubicación para almacenar la dirección del código de acceso a símbolos. La primera ubicación puede ser una sección de códigos de la sección de almacenamiento de códigos 112, o de una sección de memoria distinta del dispositivo inalámbrico (que no se muestra). La primera ubicación puede también disponerse en la misma sección de códigos que los datos de lectura-escritura. Tal y como se ilustra, 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 desviaciones de símbolos 328, la tabla de direcciones de secciones de códigos 326, el código de acceso a símbolos 332 y la biblioteca de parches (biblioteca de símbolos de parches) 336.
El código de acceso a símbolos accede a la tabla de direcciones de secciones de códigos y a la tabla de direcciones de desviaciones de símbolos para calcular o conocer la dirección del símbolo que busca en la memoria. Es decir, el código de acceso a símbolos calcula la dirección del símbolo que busca utilizando un identificador de símbolos correspondiente y un identificador de sección de códigos correspondiente. Así, por ejemplo, si se busca el símbolo "X" de la biblioteca de símbolos uno, se invoca el acceso a símbolos para buscar el identificador del símbolo (ID del símbolo) "X_1" que corresponde al símbolo "X" (véase la figura 7). El código de acceso a símbolos consulta la tabla de direcciones de desviaciones de símbolos para determinar si el identificador de símbolos "X_1" tiene una desviación de (03) respecto al inicio de la sección de códigos uno (véase la figura 6). El código de acceso a símbolos se invoca para buscar el identificador de sección de códigos "CS_1" correspondiente a la sección de códigos uno. El código de acceso a símbolos consulta la tabla de direcciones de secciones de códigos para determinar la dirección de inicio asociada al identificador de sección de códigos (ID de sección de códigos) "CS_1". De esta forma, el código de acceso a símbolos determina si el identificador de símbolos "X_1" se ha desviado (03) respecto de la dirección de (00100), o si se encuentra en la dirección (00103).
El símbolo "X" es un nombre reservado, dado que forma parte del código real. En otras palabras, tiene asociados datos absolutos. Los datos pueden ser una dirección o un valor. El identificador del símbolo es un nombre alias creado para hacer el seguimiento del símbolo. La tabla de direcciones de desviaciones de símbolos y la tabla de direcciones de secciones de códigos trabajan ambas con identificadores para evitar que se confundan con símbolos reservados y nombres de sección de códigos. También es posible utilizar el mismo nombre de símbolo en varias bibliotecas de símbolos. El uso de identificadores evita la confusión entre estos símbolos.
Volviendo de nuevo a la figura 1, el sistema 300 comprende también una memoria volátil de lectura-escritura 114, habitualmente 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 desviaciones de símbolos 328, el código de acceso a símbolos 332 y la dirección del código de acceso a símbolos 334 están cargados en la memoria volátil de lectura-escritura 114 de la sección de códigos de gestor de parches para que pueda accederse a ellos durante la ejecución del software del sistema. Como es bien sabido, los tiempos de acceso de los códigos almacenados en la RAM son considerablemente inferiores a los de acceso a una memoria no volátil de tipo flash.
Volviendo de nuevo a la figura 3, puede observarse que las bibliotecas de símbolos no deben llenar necesariamente las secciones de códigos en las que se encuentran dispuestas, aunque los bloques de memoria tienen el tamaño exacto para alojar las correspondientes secciones de códigos almacenadas en ellos. Opcionalmente, las secciones de códigos de la segunda serie tienen cada una un tamaño en bytes que permite alojar las bibliotecas de símbolos dispuestas, y cada uno de los bloques de memoria direccionados contiguamente tiene un tamaño en bytes que permite alojar las correspondientes secciones de códigos. Así, por ejemplo, la sección de códigos uno (302) podría tener una sección de 100 bytes para alojar una biblioteca de símbolos de una longitud de 100 bytes. El primer bloque de memoria sería de 100 bytes para que coincidiera con 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 podría ser inferior a los 100 bytes. Según se muestra en la figura 3, la sección de códigos uno (302) dispone de una sección no utilizada 340, ya que la biblioteca de símbolos uno (310) es menor a 100 bytes. Así, las secciones de códigos de la segunda serie podrían tener un tamaño mayor del que necesitarían para alojar las bibliotecas de símbolos dispuestas en ellas. Al "sobredimensionar" las secciones de códigos, éstas pueden alojar bibliotecas de símbolos actualizadas de mayor tamaño.
El concepto de bloques de memoria de direccionamiento contiguo hace referencia a la partición física del espacio de la memoria en bloques lógicos de tamaño variable. Las secciones de códigos y los bloques de memoria son términos esencialmente intercambiables cuando la sección de códigos se almacena en la memoria. El concepto de sección de códigos se utiliza para identificar una sección de códigos que podría ser mayor que la biblioteca de símbolos, o una agrupación de bibliotecas de símbolos en la sección de códigos que se está moviendo o manipulando.
Como se muestra en la figura 3, el sistema 300 incluye una biblioteca de símbolos de parche, a la que se hará referencia en este documento como biblioteca de parches 336, para disponer las nuevas secciones de códigos en la sección de almacenamiento de códigos con las secciones de códigos actuales. La disposición de nuevas secciones de códigos con las secciones de códigos actuales en la sección de almacenamiento de códigos da lugar a un software del sistema ejecutable actualizado. El gestor de parches 336 no sólo dispone las nuevas secciones de códigos con las secciones de códigos actuales, sino que también sustituye las secciones de códigos por secciones de códigos actualizadas.
Volviendo de nuevo a la figura 4, la sección de sistema de archivos 110 de la memoria 108 recibe las nuevas secciones de códigos, por ejemplo una nueva sección de códigos 450 y una sección de códigos de gestor de parches actualizada 452. La sección de sistema de archivos recibe también una primera instrucción en tiempo de ejecución de gestor de parches (PMRTI) 454 que contiene instrucciones para disponer las nuevas secciones de códigos con las secciones de códigos actuales. Como se observa en la figura 1, una interfaz aérea 150 recibe las nuevas secciones de códigos, o las actualizadas, así como la primera PMRTI. Aunque la interfaz aérea 150 está representada por una antena, debería entenderse que la interfaz aérea también incluirá un transceptor, un circuito de banda base y un circuito de desmodulación (que no se muestran). La sección de sistema de archivos 110 almacena las nuevas secciones de código recibidas a través de la interfaz aérea 150. La biblioteca de parches 336, que se ejecuta desde la memoria volátil de lectura-escritura 114, sustituye la primera sección de códigos en la sección de almacenamiento de códigos, por ejemplo la sección de códigos n (306), por una sección de códigos nueva o actualizada 450 respondiendo a la primera PMRTI 454. Habitualmente, 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 sustituyen secciones de códigos, la biblioteca de parches 336 sobrescribe la primera sección de códigos, por ejemplo la sección de códigos n (306), en la sección de almacenamiento de códigos 112 con las secciones de códigos actualizadas, por ejemplo la sección de códigos 450, en la sección de sistema de archivos 110. En casos extremos, 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 FSS 110 recibe una segunda serie de secciones de códigos actualizadas (que no se muestran) y la biblioteca de parches 336 sustituye la segunda serie de secciones de códigos de la sección de almacenamiento de códigos 112 por la segunda serie de secciones de códigos actualizadas. Evidentemente, la FSS 110 debe ser del tamaño suficiente para alojar la segunda serie de secciones de códigos actualizadas recibida a través de la interfaz aérea.
Tal y como se ha observado anteriormente, las secciones de códigos actualizadas que se están recibiendo podrían incluir secciones de códigos de datos de lectura-escritura, secciones de códigos de tablas de direcciones de secciones de códigos, bibliotecas de símbolos, secciones de códigos de tabla de direcciones de desviaciones de símbolos, secciones de códigos de acceso a 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, podrían almacenarse como secciones de códigos distintas e independientes. Entonces, cada una de estas secciones de códigos sería sustituida por una única sección de códigos actualizada. Es decir, se recibiría una sección de códigos de lectura-escritura actualizada que sustituiría a la sección de códigos de lectura-escritura en la sección de almacenamiento de códigos. Se recibiría una sección de códigos de tabla de direcciones de secciones de códigos actualizada que sustituiría a la sección de códigos de la tabla de direcciones de secciones de códigos de la sección de almacenamiento. Se recibiría una sección de códigos de tabla de direcciones de desviaciones de símbolos actualizada que sustituiría a la sección de códigos de tabla de direcciones de desviaciones de símbolos en la sección de almacenamiento de códigos. Se recibiría una sección de códigos de acceso a símbolos actualizada que sustituiría a la sección de códigos de acceso a símbolos de la sección de almacenamiento de códigos. De igual modo, se recibiría una sección de códigos de gestor de parches actualizada (con una biblioteca
de parches) que sustituiría a la sección de códigos de gestor de parches en la sección de almacenamiento de códigos.
Sin embargo, las secciones de códigos mencionadas suelen estar agrupadas en la sección de códigos de gestor de parches. Así, la sección de códigos de lectura-escritura de la sección de almacenamiento de códigos se sustituye por la sección de códigos de lectura-escritura actualizada 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 de códigos de gestor de parches actualizada 450. Asimismo, la tabla de direcciones de secciones de códigos, la tabla de direcciones de desviaciones de símbolos, las secciones de códigos de acceso a símbolos, así como la biblioteca de parches se sustituyen cuando se instala la sección 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 desviaciones de símbolos, el nuevo código de acceso a símbolos y la nueva biblioteca de parches como la sección de códigos de gestor de parches actualizada 450, junto con las secciones de códigos actuales de la sección de almacenamiento de códigos, forman el software del sistema ejecutable actualizado.
Cuando la sección de sistema de archivos 110 recibe una dirección de código de acceso a símbolos actualizada, el gestor de parches sustituye la dirección de código de acceso a símbolos de la primera ubicación en la memoria por la dirección de código de acceso a símbolos actualizada. Tal como se ha observado, la primera ubicación en la memoria 334 se encuentra por lo general en la sección de códigos de gestor de parches (véase la figura 3).
Como se ha visto en la figura 3, la biblioteca de parches 308 incluye también un compactador o una biblioteca de símbolos de compactador 342. El compactador 342 puede también habilitarse como sección de códigos distinta e independiente, aunque, como se ha observado anteriormente, resulta útil y eficaz agrupar las funciones asociadas con actualizaciones de software del sistema en una única sección de códigos de gestor de parches. En términos generales, puede decirse que el compactador 342 puede redimensionar secciones de códigos, de modo que puedan disponerse nuevas secciones con las secciones de códigos actuales en la sección de almacenamiento de códigos 112.
Tras la descripción de los aspectos de organización, descarga y compactación del invento descritos hasta ahora, la discusión siguiente se centrará en el sistema 300 de ejecución de juegos de instrucciones dinámicas del dispositivo de comunicaciones inalámbrico. El sistema 300 incluye software del sistema ejecutable y datos del sistema diferenciados en secciones de códigos, según se ha descrito con mayor detalle anteriormente. Además, el sistema 300 incluye juegos de instrucciones dinámicas para operaciones en los datos del sistema y en el software del sistema y para controlar la ejecución del software del sistema. Tal y como se observa en la figura 4, el juego de instrucciones dinámicas 470 está organizado en la primera PMRTI 454. Como muestra la figura 3, el sistema comprende también un motor en tiempo de ejecución para procesar juegos de instrucciones dinámicas, habilitado como biblioteca en tiempo de ejecución 370. Como ocurre con la biblioteca de compactadores 342 y la biblioteca de parches 336 mencionadas anteriormente, la biblioteca en tiempo de ejecución 370 se encuentra habitualmente en la sección de códigos de gestor de parches 308. Sin embargo, la biblioteca en tiempo de ejecución 370 podría encontrarse opcionalmente en otra sección de códigos, por ejemplo en la primera sección de códigos 304.
Los juegos de instrucciones dinámicas son juegos de instrucciones únicos o múltiples que incluyen códigos de operación condicionales y, por lo general, ítems de datos. El motor en tiempo de ejecución lee el código de operación y determina las operaciones que debe llevar a cabo. El código de operación puede ser condicional, matemático, de procedimiento o lógico. El motor en tiempo de ejecución, o biblioteca en tiempo de ejecución 370 procesa los juegos de instrucciones dinámicas para que efectúen operaciones matemáticas o lógicas. Es decir, el motor en tiempo de ejecución lee el juego de instrucciones dinámicas 470 y lleva a cabo una secuencia de operaciones respondiendo a dicho código de operación. Aunque los juegos de instrucciones dinámicas no están limitados a un lenguaje en particular, el código de operación suele ser un tipo de código de máquina, ya que la memoria del dispositivo inalámbrico es limitada y la velocidad de ejecución es considerable. El código de operación se considera condicional en el sentido de que analiza un ítem de datos y toma una decisión como consecuencia del análisis. El motor en tiempo de ejecución podría determinar también que se realizara una operación en los datos antes de analizarlos.
Así, por ejemplo, el código de operación podría especificar que un ítem de datos de la memoria de un dispositivo inalámbrico se comparara con un valor predeterminado. Si el ítem de datos es inferior al valor predeterminado, el ítem de datos se deja aislado, y si el ítem de datos es mayor que el valor predeterminado, se sustituye por el valor predeterminado. Opcionalmente, el código de operación podría añadir un segundo valor predeterminado a un ítem de datos obteniéndolo de la memoria del dispositivo inalámbrico, antes de que se realice la operación de comparación mencionada.
Según se ha mencionado anteriormente, la memoria no volátil de la sección de archivos del sistema 110 recibe los juegos de instrucciones dinámicas a través de una interfaz aérea como la 150. Según se muestra en la figura 1, la interfaz puede ser también una línea 160 de radio frecuencia (RF). En este caso, la PMRTI puede recibirse en la FSS 110 sin que el software del sistema esté operativo, por ejemplo en un entorno de calibración de fábrica. La PMRTI puede también recibirse a través de una interfaz de puerto lógico 162 o un módulo de memoria instalable 164. El módulo de memoria 164 puede instalarse en el dispositivo inalámbrico 104 en la calibración inicial, instalarse sobre el terreno, o instalarse durante la recalibración de fábrica. Aunque no se muestra específicamente, la PMRTI puede recibirse a través de interfaces de infrarrojos o Bluetooth.
La figura 8 muestra una descripción de las instrucciones a las que está accediendo el motor en tiempo de ejecución 370. Aunque se ilustra en una primera instrucción 800, una segunda instrucción 802 y una instrucción j 804, sin embargo, el juego de instrucciones dinámicas no se limita a ningún número de instrucciones en particular. La longitud del código de operación en cada una de las instrucciones es fija. El motor en tiempo de ejecución 370 capta la longitud de la instrucción, como medida de bytes o de bits y determina si la instrucción incluye ítems de datos. La longitud restante de la instrucción, después de sustraerle el código de operación, incluye los ítems de datos. El motor en tiempo de ejecución extrae el ítem de datos de la instrucción. Tal y como se muestra, se mide la longitud 806 de la primera instrucción 800 y se extraen los ítems de datos 808. Obsérvese que no todas las instrucciones necesarias incluyen la necesidad de extraer ítems de datos. El motor en tiempo de ejecución 370 utiliza los datos extraídos 808 al realizar la secuencia de operaciones de respuesta al código de operación 810 en la instrucción 800.
La figura 9 muestra una descripción más detallada de la primera instrucción 800 de la figura 8. Utilizando la primera instrucción 800 como ejemplo, la instrucción incluye el código de operación 810 y los datos 808. La instrucción, y más específicamente la sección de ítems de datos 808, incluye identificadores de símbolos, que actúan como enlace con los símbolos de las secciones de códigos del dispositivo inalámbrico. Según se ha explicado con mayor detalle anteriormente, los identificadores de símbolos se utilizan con la tabla de direcciones de secciones de códigos 326 (véase la figura 5) y la tabla de direcciones de desviaciones de símbolos 328 (véase la figura 7) para localizar el símbolo que corresponde al identificador de símbolos. Según se ilustra, se muestra un identificador de símbolo "X_1" en la primera instrucción 800. La tabla de direcciones de desviaciones de símbolos 328 localiza el símbolo correspondiente en una sección de códigos con el identificador "CS_1" y una desviación de "3". La tabla de direcciones de secciones de códigos 326 indica la dirección de inicio de la sección de códigos uno (302). De esta forma, se encuentra el símbolo "X" (véase la figura 6).
Después de que el motor en tiempo de ejecución localice el símbolo correspondiente a los identificadores de símbolo recibidos utilizando la tabla de direcciones de secciones de códigos y la tabla de direcciones de desviaciones de símbolos, extrae los datos cuando los símbolos localizados son ítems de datos. Así, por ejemplo, si el símbolo "X" es un ítem de datos de la biblioteca de símbolos uno (310), el motor en tiempo de ejecución lo extrae. Opcionalmente, el símbolo "X" puede ser un código de operación, y el motor en tiempo de ejecución ejecutará el símbolo "X" cuando lo localice.
La PMRTI puede utilizarse para actualizar datos del sistema o ítems de datos del sistema. En algunos aspectos del invento los datos del sistema se almacenan en una sección de códigos de la sección de sistema de archivos 110, por ejemplo la sección de códigos 472, véase la figura 4. El motor en tiempo de ejecución accede a los datos del sistema desde la sección de códigos 472 y analiza estos datos del sistema. El motor en tiempo de ejecución procesa el código de operación de los juegos de instrucciones dinámicas para llevar a cabo operaciones matemáticas o lógicas en los ítems de datos, según se ha descrito anteriormente. Después de la operación, el motor en tiempo de ejecución procesa las instrucciones para crear datos del sistema actualizados.Obsérvese que los datos del sistema actualizados pueden incluir ítems de datos no modificados en determinadas circunstancias. Los datos del sistema de la segunda sección de códigos 472 se sustituyen por los datos del sistema actualizados, respondiendo al código de operación. Así, como el motor en tiempo de ejecución procesa la instrucción, se controla que el software del sistema se ejecute utilizando los datos del sistema actualizados de la sección de códigos 472. De esta forma es posible actualizar algunos símbolos específicos del software del sistema, sin sustituir secciones de códigos enteras. Mediante el mismo proceso, pueden sustituirse datos del sistema en una sección de códigos de la sección de almacenamiento de códigos 112. Así, por ejemplo, los datos del sistema puede almacenarse en la tercera sección de códigos 344, y el motor en tiempo de ejecución puede sustituir los datos del sistema de la tercera sección de códigos por datos del sistema actualizados, respondiendo a un código de operación.
La PMRTI también puede utilizarse para actualizar ítems de datos de la memoria volátil 114. Como ejemplo, la memoria volátil 114 acepta datos de lectura-escritura 330, véase la figura 1. Los datos de lectura-escritura pueden ser de una o de varias secciones de códigos de la sección de almacenamiento de códigos 112 y/o de la FSS 110. El motor en tiempo de ejecución accede a los datos de lectura-escritura, analiza los datos de lectura-escritura 330, crea datos de lectura-escritura actualizados y sustituye los datos de lectura-escritura 330 de la memoria volátil 114 por los datos de lectura-escritura actualizados respondiendo al código de operación. A continuación, se controla el software del sistema para que se ejecute utilizando los datos de lectura-escritura actualizados de la memoria volátil 114.
En algunos aspectos del invento, el motor en tiempo de ejecución supervisa la ejecución del software del sistema. En términos generales, la supervisión del rendimiento incluye varias de las actividades del dispositivo inalámbrico. Así por ejemplo, pueden recogerse datos como los parámetros del canal, las características del canal, el apilado del sistema, las condiciones de error o un registro de los ítems de datos en la RAM a través de una secuencia de operaciones que conducen a una condición de anomalía específica o a la limitación del rendimiento. También es posible utilizar juegos de instrucciones dinámicas para analizar los datos de rendimiento recogidos, proporcionar variantes de datos actualizados y volver a recoger datos para estudiar posibles soluciones del problema. Asimismo, es posible efectuar reparaciones temporales utilizando los procesos PMRTI.
De forma más específica, el motor en tiempo de ejecución recoge datos de rendimiento y almacena estos datos de rendimiento en la sección de sistema de archivos respondiendo al código de operación. A continuación se controla el software del sistema para que se ejecute recogiendo los datos de rendimiento para efectuar una evaluación del software del sistema. La evaluación puede llevarse a cabo en forma de análisis realizado por el código de operación del juego de instrucciones dinámicas, o puede efectuarse fuera del dispositivo inalámbrico. En algunos aspectos del invento, el motor en tiempo de ejecución accede a los datos de rendimiento que se han recogido en la sección de sistema de archivos y transmite estos datos de rendimiento a través de una interfaz aérea respondiendo al código de operación. La recogida de los datos de rendimiento de los dispositivos inalámbricos sobre el terreno permite que el fabricante pueda analizar profundamente los problemas, ya sea local o globalmente, sin volver a llamar a los dispositivos.
En algunos aspectos del invento, la sección de sistema de archivos 110 recibe una instrucción en tiempo de ejecución del gestor de parches que incluye una nueva sección de códigos. Así por ejemplo, la figura 4 muestra una nueva sección de códigos 474. Opcionalmente, la nueva sección de códigos puede ser independiente de la PMRTI, por ejemplo como nueva sección de códigos n (450). La nueva sección de códigos n (450), por ejemplo, podría haber sido recibida en anteriores comunicaciones a través de la interfaz aérea, o podría haber sido instalada durante la calibración de fábrica. El motor en tiempo de ejecución añade la nueva sección de códigos 474 (450) a la sección de almacenamiento de códigos respondiendo al código de operación. En algunos aspectos del invento, la nueva sección de códigos se añade a un bloque no utilizado de la sección de almacenamiento de códigos 112. Opcionalmente podría requerirse una operación de compactación. A continuación se controla el software del sistema para que se ejecute utilizando la nueva sección de códigos 474 (450). En otros aspectos del invento, la PMRTI 454 incluye una sección de códigos actualizada 474. Opcionalmente, la nueva sección de códigos 450 es una sección de códigos actualizada independiente de la PMRTI. El motor en tiempo de ejecución sustituye una sección de códigos de la sección de almacenamiento de códigos, por ejemplo la sección de códigos dos (304), por la sección de códigos actualizada 474 (450) respondiendo al código de operación. El software del sistema se controla para que se ejecute utilizando la sección de códigos actualizada 474 (450). En algunos aspectos del invento se requiere una operación de compactación para permitir alojar la sección de códigos actualizada. Opcionalmente, la sección de códigos actualizada se añade a la sección no utilizada o vacía de la sección de almacenamiento de códigos.
Tal y como se ha explicado, la adición de una nueva sección de códigos o la actualización de una sección de códigos requiere habitualmente la generación de una nueva tabla de direcciones de secciones de códigos, ya que estas operaciones implican la existencia de direcciones de inicio de sección de códigos nuevas y/o cambiadas. Además, una operación de compactación también requiere una nueva tabla de direcciones de secciones de códigos. Las operaciones de compactación podrían ser consecuencia de la operación del compactador 342, explicado anteriormente, o de las instrucciones PMRTI que proporcionan detalles sobre cómo debe llevarse a cabo la compactación. Cuando la PMRTI incluye instrucciones de descarga y compactación, la PMRTI incluye también generalmente una nueva tabla de direcciones de secciones de códigos que adquiere validez después de completarse las operaciones de descarga y compactación.
Las figuras 10a y 10b muestran diagramas de flujos que ilustran el método del presente invento para ejecutar juegos de instrucciones dinámicas en un dispositivo de comunicaciones inalámbrico. Aunque, para mayor claridad, se representan como una secuencia de pasos numerados, no debería pensarse que la numeración responde a ningún tipo de orden (ni tampoco la numeración de los métodos que se presentan a continuación) salvo que se indique explícitamente. El método se inicia en el paso 1000. En el paso 1001a se organiza el software del sistema en bibliotecas de símbolos, cada una de las cuales comprende símbolos funcionalmente relacionados. En el paso 1001b se disponen las bibliotecas de símbolos en secciones de códigos. En el paso 1002 se ejecuta el software del sistema. En el paso 1003 se reciben los juegos de instrucciones dinámicas. La recepción de juegos de instrucciones dinámicas en el paso 1003 incluye la recepción de juegos de instrucciones dinámicas a través de una interfaz seleccionada del grupo que incluye interfaces aérea, de línea de radio frecuencia (RF), de módulo de memoria instalable, de infrarrojos y de puerto lógico. En algunos aspectos del presente invento, la recepción del juego de instrucciones dinámicas en el paso 1003 incluye la recepción de una instrucción de gestor de parches (PMRTI) en tiempo de ejecución en la memoria no volátil de la sección de sistema de archivos.
En el paso 1004 se pone en marcha un motor en tiempo de ejecución. Habitualmente, el poner en marcha un motor en tiempo de ejecución implica invocar una biblioteca en tiempo de ejecución de una primera sección de códigos. El motor en tiempo de ejecución puede ponerse en marcha desde la memoria volátil o desde la no volátil. En el paso 1006 se procesan los juegos de instrucciones dinámicas. El procesamiento de juegos de instrucciones dinámicas incluye el procesamiento de instrucciones respondiendo a operaciones matemáticas y lógicas. En algunos aspectos del presente invento, en el paso 1007 (que no se muestra) y después del procesamiento de los juegos de instrucciones dinámicas, se borran los juegos de instrucciones dinámicas. En el paso 1008 se opera en los datos del sistema y en el software del sistema. En el paso 1010, respondiendo a las operaciones sobre los datos del sistema y el software del sistema, se controla la ejecución del software del sistema.
Habitualmente, cuando se reciben las instrucciones de gestor de parches en tiempo de ejecución en el paso 1003 se reciben también un código de operación condicional e ítems de datos. Entonces, el procesamiento de los juegos de instrucciones dinámicas del paso 1006 incluye algunos subpasos. En el paso 1006a1 se utiliza el motor en tiempo de ejecución para leer el código de operación de la instrucción de gestor de parches en tiempo de ejecución. En el paso 1006b se lleva a cabo una secuencia de operaciones respondiendo al código de operación.
En algunos aspectos del invento, el disponer las bibliotecas de símbolos en secciones de códigos en el paso 1001b incluye que se inicien las bibliotecas de símbolos en el inicio de las secciones de códigos y se dispongan los símbolos de modo que se desvíen de sus respectivas direcciones de inicio de sección de códigos. Entonces, el método comprende otros pasos adicionales. En el paso 1001c se almacena el inicio de las secciones de códigos en las correspondientes direcciones de inicio. En el paso 1001d se conserva una tabla de direcciones de secciones de códigos (CSAT) que contiene referencias cruzadas entre los identificadores de sección de códigos y las correspondientes direcciones de inicio. En el paso 1001e se conserva una tabla de direcciones de desviaciones de símbolos (SOAT) que contiene referencias cruzadas entre los identificadores de símbolos y las correspondientes direcciones de desviaciones, y con los correspondientes identificadores de sección de códigos.
En algunos aspectos del presente invento, el recibir la instrucción de gestor de parches en tiempo de ejecución en el paso 1003 incluye recibir identificadores de símbolos. Entonces, el método comprende un paso más. En el paso 1006a2 se localizan símbolos correspondientes a los identificadores de símbolos recibidos utilizando la tabla de direcciones de secciones de códigos y la tabla de direcciones de desviaciones de símbolos. La ejecución de una secuencia de operaciones respondiendo al código de operación del paso 1006b incluye algunos subpasos. En el paso 1006b1 se extraen los datos cuando los símbolos localizados son ítems de datos. En el paso 1006b2 se ejecutan los símbolos cuando los símbolos localizados son instrucciones.
En algunos pasos del invento, el procesar juegos de instrucciones dinámicas en el paso 1006b1 incluye subpasos adicionales. En el paso 1006b1a se utiliza el motor en tiempo de ejecución para captar la longitud de la instrucción de gestor de parches en tiempo de ejecución. En el paso 1006b1b se extraen los ítems de datos de la instrucción de gestor de parches en tiempo de ejecución, respondiendo al código de operación. En el paso 1006b1c se utilizan los datos extraídos al efectuar la secuencia de operaciones respondiendo al código de operación.
La figura 11 muestra un diagrama de flujo que ilustra un ejemplo de operación de juego de instrucciones dinámicas. Varios de los pasos de la figura 11 coinciden con los de la figura 10 y no van a repetirse aquí en aras a una mayor brevedad. El procesamiento de los juegos de instrucciones dinámicas en el paso 1106 incluye algunos subpasos. En el paso 1106a se accede a los datos del sistema almacenados en una segunda sección de códigos de la sección de sistema de archivos. En el paso 1106b se analizan los datos del sistema. En el paso 1106c se crean datos del sistema actualizados. Entonces, el operar sobre los datos del sistema y el software del sistema en el paso 1108 incluye sustituir los datos del sistema de la segunda sección por los datos del sistema actualizados y el controlar la ejecución del software del sistema en el paso 1010 incluye utilizar los datos del sistema actualizados para ejecutar el software del sistema.
La figura 12 muestra un diagrama de flujo que ilustra otro ejemplo de operación de juego de instrucciones dinámicas. Varios de los pasos de la figura 12 coinciden con los de la figura 10 y no van a repetirse aquí en aras a una mayor brevedad. En el paso 1201c se almacenan varias secciones de códigos en una memoria no volátil de sección de almacenamiento de códigos. El procesar juegos de instrucciones dinámicas en el paso 1206 incluye algunos subpasos. En el paso 1206a se accede a los datos del sistema almacenados en una tercera sección de códigos de la sección de almacenamiento de códigos (CSS). En el paso 1206b se analizan los datos del sistema. En el paso 1206c se crean datos del sistema actualizados. El operar sobre los datos del sistema y el software del sistema en el paso 1208 incluye sustituir los datos del sistema de la tercera sección de códigos por datos del sistema actualizados. El hecho de controlar la ejecución del software del sistema en el paso 1210 incluye utilizar los datos del sistema actualizados al ejecutar el software del sistema.
La figura 13 muestra un diagrama de flujo que ilustra un tercer ejemplo de operación de juego de instrucciones dinámicas. Varios de los pasos de la figura 13 coinciden con los de la figura 10 y no van a repetirse aquí en aras a una mayor brevedad. En el paso 1301c se almacenan varias secciones de códigos en una memoria no volátil de la sección de almacenamiento de códigos. En el paso 1301d se cargan datos de lectura-escritura en la memoria volátil. El procesar juegos de instrucciones dinámicas en el paso 1306 incluye algunos subpasos. En el paso 1306a se accede a los datos de lectura-escritura de la memoria volátil. En el paso 1306b se analizan los datos de lectura-escritura. En el paso 1306c se crean datos de lectura-escritura actualizados. El operar sobre los datos del sistema y el software del sistema en el paso 1308 incluye sustituir los datos de lectura-escritura de la memoria no volátil por datos de lectura-escritura actualizados. El controlar la ejecución del software del sistema incluye utilizar los datos de lectura-escritura actualizados en la ejecución del software del sistema.
La figura 14 muestra un diagrama de flujo que ilustra un cuarto ejemplo de juegos de instrucciones dinámicas. Varios de los pasos de la figura 14 coinciden con los de la figura 10 y no van a repetirse aquí en aras a una mayor brevedad. El procesar juegos de instrucciones dinámicas incluye algunos subpasos. En el paso 1406a, respondiendo al código de operación, se supervisa la ejecución del software del sistema. En el paso 1406b se recogen datos de rendimiento. En el paso 1406c se almacenan los datos de rendimiento. En el paso 1406d se transmiten los datos almacenados a través de una interfaz aérea. El operar sobre los datos del sistema y el software del sistema en el paso 1408 incluye utilizar los datos de rendimiento en la evaluación del software del sistema.
La figura 15 muestra un diagrama de flujo que ilustra un quinto ejemplo de operación de juego de instrucciones dinámicas. Varios de los pasos de la figura 15 coinciden con los de la figura 10 y no van a repetirse aquí en aras a una mayor brevedad. En el paso 1501c se almacenan varias secciones de códigos en una memoria no volátil de sección de almacenamiento de códigos. El recibir instrucciones de gestor de parches en tiempo de ejecución en el paso 1503 incluye recibir una nueva sección de códigos. El operar sobre los datos del sistema y el software del sistema en el paso 1508 incluye añadir la nueva sección de códigos a la sección de almacenamiento de códigos, y el controlar la ejecución del software del sistema en el paso 1510 incluye utilizar la nueva sección de códigos en la ejecución del software del sistema.
Opcionalmente, el recibir una nueva sección de códigos en el paso 1503 incluye recibir una sección de códigos actualizada. Entonces, el operar sobre los datos del sistema y el software del sistema en el paso 1508 incluye sustituir una cuarta sección de códigos de la sección de almacenamiento de códigos por la sección de códigos actualizada.
Se han aportado un sistema y un método para ejecutar juegos de instrucciones dinámicas en un dispositivo de comunicaciones inalámbrico con el fin de contribuir al proceso de actualización del software y de supervisión del rendimiento del software. El sistema puede actualizarse fácilmente gracias 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 desviaciones de símbolos en las bibliotecas de símbolos. El uso de juegos de instrucciones dinámicas permite que puedan realizarse modificaciones personalizadas en cada uno de los dispositivos inalámbricos, basadas en características específicas del dispositivo. Se han proporcionado algunos ejemplos generales que ilustran posibles usos de los juegos de instrucciones dinámicas. Sin embargo, el presente invento no se limita sólo a estos ejemplos. Los expertos en la técnica podrán encontrar otras variaciones y formas de realización del invento.
La figura 16 muestra un diagrama de red de alto nivel que ilustra un ejemplo de red de comunicación sin hilos. La red de comunicación sin hilos ilustrada comprende una gran variedad de dispositivos de comunicación inalámbricos 10, 12 y 14 que pueden conectarse para establecer una comunicación con el servidor de PMRTI 30 a través de la red 40.
Los dispositivos de comunicación inalámbricos 10, 12 y 14 pueden ser cualquier tipo de dispositivo electrónico con capacidad para comunicarse dentro de una red de comunicación sin hilos. Así, por ejemplo, el dispositivo de comunicación inalámbrico 10 podría ser un teléfono móvil, una agenda personal digital (PDA), un ordenador de sobremesa, un reloj de pulsera o cualquier otro configurado para una comunicación sin hilos. En este documento también se hará referencia a los dispositivos de comunicación inalámbricos como "microteléfonos", "teléfonos móviles", "dispositivos móviles" o "dispositivos inalámbricos".
La red 40 es preferentemente una red privada explotada por un servicio de telefonía sin hilos. La red 40 proporciona ventajosamente la infraestructura necesaria para las comunicaciones inalámbricas entre microteléfonos, incluyendo las estaciones base (que no se ilustran) y los controladores de estación base (que tampoco se ilustran). La red 40 está configurada para gestionar comunicaciones sin hilos, incluyendo la negociación de handoffs entre estaciones base para un microteléfono, entre células de la red sin hilos. Adicionalmente, la red 40 proporciona preferentemente los enlaces de comunicación entre varios servidores de aplicaciones y otros servidores informáticos como el servidor de PMRTI 30.
La red 40 podría actuar también como vía de conexión con otras redes (que no se muestran), como la Red Digital de Servicios Integrados (ISDN), la Red Telefónica Conmutada (PSTN), la Red Pública Móvil Terrestre (PLMN), la Red Pública de Datos por Conmutación de Paquetes (PSPDN) e Internet, por nombrar sólo algunas.
El servidor de PMRTI 30 puede implementarse como un ordenador único o como una serie de servidores dispuestos lógicamente para proporcionar juegos de instrucciones dinámicas a dispositivos móviles y ejecutar juegos de instrucciones dinámicas recibidos de dispositivos móviles. El servidor de PMRTI 30 podría tener un único procesador o varios procesadores. Más adelante, en relación con la figura 9, se presenta la descripción de un ordenador de uso general que puede implementarse como servidor de PMRTI 30. El servidor de PMRTI 30 también se denominará servidor de comunicaciones.
La figura 17A muestra un diagrama de bloques que ilustra un ejemplo de un dispositivo de comunicación inalámbrico 10. Las características generales del dispositivo de comunicación inalámbrico 10 que le permiten funcionar como tal son sobradamente conocidas en el estado actual de la técnica, por lo que no se ilustrarán ni se describirán aquí.
El dispositivo de comunicación inalámbrico 10 incluye un motor en tiempo de ejecución 50, una biblioteca remota de códigos de operaciones (opcode) 60, una biblioteca de opcodes del servidor 70 y una sección remota de códigos de instrucciones en tiempo de ejecución 80. El motor en tiempo de ejecución 50 se ha configurado preferentemente para procesar juegos de instrucciones dinámicas. Un ejemplo de un juego de instrucciones dinámicas es el juego de instrucciones PMRTI. Otro ejemplo de juegos de instrucciones dinámicas es el juego de instrucciones RPMRTI. La diferencia entre estos dos juegos de instrucciones es que PMRTI incluye las funciones que pueden ser ejecutadas por el dispositivo inalámbrico, mientras que el juego de instrucciones RPMRTI incluye aquellas funciones que pueden ser ejecutadas por el servidor de PMRTI 30 que reside en la red 40.
El procesamiento de juegos de instrucciones dinámicas incluye la ejecución de los juegos PMRTI que se reciben del servidor de PMRTI 30 y la compilación de los juegos RPMRTI y los correspondientes datos para envío al servidor de PMRTI 30. Preferentemente, el motor en tiempo de ejecución 50 puede ponerse en marcha utilizando un dispositivo de comunicación inalámbrico 10 cuando sea necesario, de modo que sólo se ejecute en caso de necesidad y consuma el mínimo volumen de recursos del sistema (a saber, memoria, ciclos de CPU, etc.) del dispositivo 10.
La biblioteca de opcodes remota 60 incluye preferentemente la totalidad de los códigos de operación que representan cada una de las funciones PMRTI o segmento de código ejecutable. Es ventajoso que la biblioteca de opcodes remota 60 incluya los códigos de operación que sirven como "mantenimiento de plaza" de las funciones de código de máquina o segmentos de código ejecutables reales. En este sentido, la biblioteca de opcodes remota 60 contiene una lista de todos los códigos de operación disponibles que corresponden a cada una de las funciones PMRTI que pueden ejecutarse con el dispositivo de comunicación inalámbrico 10.
De modo parecido, la biblioteca opcode del servidor 70 incluye la totalidad de los códigos de operación que representan cada función RPMRTI o segmento de código ejecutable. Es ventajoso que la biblioteca opcode del servidor 70 incluya únicamente los códigos de operación de las funciones de código de máquina o segmento de código ejecutables reales, que no residen en el dispositivo de comunicación inalámbrico 10. En este sentido, la biblioteca opcode del servidor 70 contiene una lista de todos los códigos de operación para cada función RPMRTI disponible que puede ejecutar el servidor de PMRTI 30 para el dispositivo de comunicación inalámbrico 10.
En la forma de realización preferida, el número de funciones RPMRTI disponibles puede ser mucho mayor que el número de funciones PMRTI disponible, porque el servidor de PMRTI 30 no sufre de la escasez de recursos que suele afectar a dispositivos móviles como los teléfonos móviles o las PDA.
Adicionalmente, el dispositivo de comunicación inalámbrico 10 incluye la sección de códigos 80 de instrucciones remotas en tiempo de ejecución. La sección de códigos 80 es el lugar donde reside el código de máquina real o las instrucciones ejecutables en la memoria permanente del dispositivo 10. Estas instrucciones o segmentos de códigos ejecutables se corresponden preferentemente, en una relación unívoca, con los opcodes contenidos en la biblioteca de opcodes remota 60. La figura 17B muestra un diagrama de bloques que ilustra un ejemplo de sección de códigos 80. Según se ilustra, es posible incluir cualquier número de funciones PMRTI en la sección de códigos 80, desde la instrucción 01 hasta la instrucción n. Idealmente, hay disponible un gran número de funciones en la sección de códigos 80, aunque consumen muy pocos recursos (a saber, memoria permanente) del dispositivo 10.
Es ventajoso que la biblioteca opcode del servidor 70, la biblioteca de opcodes remota 60 y la correspondiente sección de códigos 80 puedan instalarse en la memoria permanente del dispositivo de comunicación inalámbrico 10 durante la fabricación del dispositivo 10 y antes de su despliegue en el terreno (es decir, antes de que se venda al consumidor). Las actualizaciones futuras de los opcodes contenidos en cualquiera de estas bibliotecas o del juego de instrucciones ejecutables de la sección de códigos 80 pueden proporcionarse a través del servidor de PMRTI 30 que implemente el proceso que más adelante se describe, en relación con la figura 22.
Finalmente, en la forma de realización que se ilustra, el dispositivo de comunicación inalámbrico incluye un enlace de comunicación aérea 90. La implementación del enlace de comunicación 90 es bien conocida en el estado actual de la técnica y aporta al dispositivo de comunicación inalámbrico 10 la capacidad de comunicarse dentro de la red de comunicación sin hilos a través de una conexión de radio o aérea. Es ventajoso que el enlace de comunicación aérea 90 pueda proporcionar al servidor de PMRTI 30 el soporte necesario para actualizar la biblioteca de opcodes remota 60, la biblioteca opcode del servidor 70 y la sección de códigos remota de instrucciones en tiempo de ejecución 80.
La figura 18A muestra un diagrama de bloques que ilustra un ejemplo de servidor de PMRTI 30. Las características de un ordenador de uso general que puede implementar el servidor de PMRTI se describen más adelante en relación con la figura 24.
En la forma de realización ilustrada, el servidor de PMRTI 30 incluye un módulo de control 95, una biblioteca de opcodes remota 60, una biblioteca opcode del servidor 70 y una sección de códigos 82 de instrucciones en tiempo de ejecución del servidor. La biblioteca de opcodes remota 60 y la biblioteca opcode del servidor 70 contienen preferentemente la misma lista de opcodes que las bibliotecas existentes en el dispositivo de comunicación inalámbrico 10. El módulo de control 95 está configurado preferentemente para que procese juegos de instrucciones dinámicos y gestione una red de comunicaciones PMRTI entre el servidor de PMRTI 30 y una variedad de dispositivos de comunicación inalámbricos disponibles a través de la red de comunicación sin hilos.
Así, por ejemplo, el módulo de control 95 podría compilar varios juegos de PMRTI dinámicas y enviar dichos juegos de instrucciones a una variedad de dispositivos de comunicación inalámbricos individuales. De forma parecida, el módulo de control 95 podría recibir también una variedad de juegos de RPMRTI dinámicas y ejecutar dichos juegos de instrucciones para el dispositivo de comunicación inalámbrico remitente.
La biblioteca de opcodes remota 60 incluye preferentemente la totalidad de los códigos de operación correspondientes a cada una de las funciones PMRTI o segmento de código ejecutable disponibles. Es ventajoso que la biblioteca de opcodes remota 60 comprenda una lista de los códigos de operación que actúan como "mantenimiento de plaza" de las funciones de código de máquina o segmentos de códigos ejecutables en la sección de códigos remota 80 de instrucciones en tiempo de ejecución (en el dispositivo de comunicación inalámbrico). En este sentido, la biblioteca de opcodes remota 60 contiene una lista de todos los opcodes disponibles para todas las funciones PMRTI disponibles que pueden ejecutarse utilizando un dispositivo de comunicación inalámbrico.
De modo parecido la biblioteca opcode del servidor 70 incluye preferentemente la totalidad de los códigos de operación que corresponden a cada función RPMRTI o segmento de código ejecutable. Es ventajoso que la biblioteca opcode del servidor 70 sólo incluya los códigos de operación de las funciones de código de máquina o segmentos de códigos ejecutables reales que puede ejecutar el servidor de PMRTI 30. En la forma de realización preferente, el número de funciones RPMRTI disponibles puede ser muy superior al número de funciones PMRTI disponibles porque el servidor de PMRTI 30 no sufre de la escasez de recursos habitual en dispositivos móviles como los teléfonos móviles o las PDA.
Adicionalmente, el servidor de PMRTI 30 incluye la sección de códigos de instrucciones en tiempo de ejecución del servidor 82. La sección de códigos 82 es el lugar donde residen el código de máquina o las instrucciones ejecutables reales en la memoria permanente del servidor 30. Estas instrucciones ejecutables o segmentos de código corresponden preferentemente, en una relación unívoca, a los códigos de operación contenidos en la biblioteca opcode del servidor 70, que reside tanto en el servidor 30 como en el dispositivo de comunicación inalámbrico 10. La figura 18B muestra un diagrama de bloques que ilustra un ejemplo de sección de códigos de instrucciones en tiempo de ejecución del servidor.
La figura 19 muestra un diagrama de flujo que ilustra un ejemplo de comunicación punto por punto entre microteléfonos. En la forma de realización ilustrada, las comunicaciones punto por punto se realizan entre un microteléfono 10 y un microteléfono 12. Opcionalmente, sin embargo, las comunicaciones punto por punto pueden efectuarse entre un microteléfono único y varios microteléfonos en una relación de uno a varios o en una relación de varios a uno. En todos los casos, el servidor de PMRTI 30 desempeña la función de intermediario en el proceso de comunicación, manejando y procesando los opcodes y las cargas de datos para los microteléfonos.
Un ejemplo de comunicación entre un microteléfono 10 y un microteléfono 12 puede ser la comunicación desde un microteléfono 10 para añadir una entrada de agenda en la libreta de direcciones del microteléfono 12. Este ejemplo de comunicación puede iniciarse con el microteléfono 10 compilando un juego de opcodes del servidor y la correspondiente carga útil de datos. En este ejemplo, el juego de opcodes del servidor incluye un opcode para enviar datos al microteléfono 12. La carga útil de datos correspondiente incluye un identificador único (por ejemplo, el número de teléfono) del microteléfono 12 y los datos de la entrada de la agenda que deben enviarse al microteléfono 12. En otros ejemplos, los datos que se envían podrían ser un archivo de datos, como una imagen, un mensaje de correo electrónico, un documento de texto, información GPS o de localización de otro tipo o cualesquiera datos necesarios.
Cuando el servidor de PMRTI 30 ha recibido el juego de opcodes del servidor y la correspondiente carga útil de datos, extrae la carga útil de datos y la guarda preferentemente en la memoria temporal. A continuación los opcodes se convierten a instrucciones ejecutables y las instrucciones se llevan a cabo. En este caso, los opcodes corresponden a una instrucción para enviar datos al microteléfono 12, datos que se alojan en la carga útil de datos e incluyen la nueva entrada de agenda. El servidor de PMRTI 30 compila entonces un juego de opcode remoto y la correspondiente carga útil de datos para que se envíen al microteléfono 12.
En este ejemplo, el juego de opcode remoto incluye un opcode para añadir una nueva entrada de agenda y la carga útil de datos incluye la entrada de agenda que debe añadirse. Cuando el microteléfono 12 recibe el juego de opcode remoto y la carga útil de datos, extrae la carga útil de datos y la guarda preferentemente en la memoria temporal. A continuación, el microteléfono 12 convierte los opcodes a instrucciones ejecutables y las instrucciones se llevan a cabo. En este ejemplo, los opcodes corresponden a una instrucción para añadir una nueva entrada a la agenda, entrada que se aloja en la carga útil de datos almacenada en la memoria temporal. El microteléfono 12 añade entonces la nueva entrada a la agenda ejecutando la instrucción y completando así la comunicación punto por punto entre el microteléfono 10 y el microteléfono 12.
La figura 20 muestra un diagrama de flujo que ilustra un ejemplo de proceso para ejecutar juegos de instrucciones dinámicas en un dispositivo de comunicación inalámbrico. Inicialmente, en el paso 500, el dispositivo inalámbrico recibe un juego de opcodes remoto. El juego de opcodes remoto puede recibirse a través de un enlace de comunicación aérea, por ejemplo un enlace con una red de comunicación sin hilos. Preferentemente, los opcodes se optimizan para minimizar el volumen de datos enviados por el aire. Adicionalmente, la carga útil de datos puede incluirse en el juego de opcodes recibido por el dispositivo inalámbrico.
En el paso 5-2, el dispositivo inalámbrico dispara el motor en tiempo de ejecución para que procese el juego de opcodes remoto. Según se ilustra en el paso 504, el motor en tiempo de ejecución analiza la sintaxis del juego de opcodes remoto y, a continuación, extrae la carga útil de datos en el paso 506. Si no hay carga útil de datos, entonces es posible ignorar este paso. En caso de que sí haya carga útil de datos, entonces los datos resultantes pueden almacenarse en una porción disponible de la memoria volátil para que se utilicen más tarde. A continuación, el motor en tiempo de ejecución obtiene las instrucciones ejecutables que corresponden a los opcodes del juego de opcodes remoto según se muestra en el paso 508. Estas instrucciones pueden obtenerse en la sección de códigos de instrucciones en tiempo de ejecución remota del dispositivo inalámbrico.
Una vez obtenidas las instrucciones ejecutables correspondientes a los opcodes del juego de opcodes remoto, el motor en tiempo de ejecución ejecuta las instrucciones según se ilustra en el paso 510. Cuando se están ejecutando las instrucciones, es posible obtener cualesquiera datos en los que deba operarse extrayéndolos de la memoria volátil en la que se ha almacenado la carga útil de datos. Opcionalmente, o adicionalmente, cualesquiera datos necesarios en los que deba operarse pueden obtenerse como resultado de una instrucción ejecutada.
Así, por ejemplo, la carga útil de datos podría incluir un módulo de juegos de software favorito para el dispositivo inalámbrico. Adicionalmente, uno de los opcodes del juego de opcodes remoto podría corresponderse con una instrucción ejecutable para instalar un nuevo módulo de juegos de software en el dispositivo inalámbrico. Así, el juego de opcodes remoto y la carga útil de datos operan en el dispositivo inalámbrico para instalar un nuevo módulo de juegos de software que fue enviado por un dispositivo inalámbrico emparejado.
Otros ejemplos de comunicaciones de datos entre microteléfonos podrían incluir la actualización o adición de una nueva entrada de agenda, el envío de un archivo de datos (por ejemplo, una fotografía, un mensaje de correo electrónico, un documento, etc.) la instalación de recepción de llamadas de clientes, la prestación o solicitud de información de localización por GPS e incluso el diseño de plantillas de equipos de fútbol (con fines de ocio).
Después de que el motor en tiempo de ejecución haya ejecutado totalmente el juego de instrucciones, puede apagarse el motor en tiempo de ejecución según se ilustra en el paso 512. Es ventajoso que el motor en tiempo de ejecución pueda ponerse en marcha y apagarse de modo que sólo funcione durante el tiempo necesario. Esto ahorra recursos del sistema en el dispositivo inalámbrico, por ejemplo podría ahorrar espacio de memoria volátil y ciclos de CPU.
La figura 21 muestra un diagrama de flujo que ilustra un ejemplo del proceso de compilación de juegos de instrucciones dinámicas en un dispositivo de comunicación inalámbrico. Inicialmente, el motor en tiempo de ejecución se pone en marca según se ilustra en el paso 520. Cuando el motor en tiempo de ejecución está en marcha, dicho motor puede compilar un juego de opcodes del servidor, según se ilustra en el paso 522. El juego de opcodes del servidor puede obtenerse a partir de un proceso que se esté ejecutando de forma subordinada en el dispositivo inalámbrico. Opcionalmente, el juego de opcodes del servidor puede obtenerse a partir de un proceso que se esté ejecutando en el dispositivo inalámbrico siguiendo por indicación del usuario.
Así, por ejemplo, el dispositivo inalámbrico podría incluir un juego de rutinas ejecutadas periódica y automáticamente por el sistema operativo para llevar a cabo funciones de mantenimiento del sistema u otras funciones necesarias. Estos procedimientos, como consecuencia de su ejecución, podrían causar que el motor en tiempo de ejecución generara un juego de opcodes del servidor. Opcionalmente, un usuario podría iniciar un juego de rutinas específicas que sólo se ejecutan a petición del usuario. Este juego de rutinas podría provocar también la generación de un juego de opcodes del servidor por parte del motor en tiempo de ejecución. En ambos casos, el resultado es que el motor en tiempo de ejecución genera un juego de opcodes del servidor, según se ilustra en el paso 522.
Después de generarse el juego de opcodes del servidor, el motor en tiempo de ejecución determina en el paso 524 si alguna carga útil de datos debería acompañar al juego de opcodes del servidor. En caso que el juego de opcodes del servidor deba ir acompañado de datos, en el paso 526 el motor en tiempo de ejecución recogerá los datos extrayéndolos de la memoria permanente o volátil o ejecutará una instrucción que devuelva los datos necesarios. Después de obtener los datos, el motor en tiempo de ejecución los introduce a continuación en el juego de opcodes del servidor, según se ilustra en el paso 528. Una forma sencilla de conseguirlo es añadir la carga útil de datos al juego de opcodes del servidor en un único paquete de datos.
Después de haber combinado la carga útil de datos con el juego de opcodes del servidor, o si no se requiere carga útil de datos, entonces el motor en tiempo de ejecución envía el juego de opcodes del servidor (con o sin carga útil de datos) al servidor, según se ilustra en el paso 530. Después de que haya sido enviado, puede apagarse el motor en tiempo de ejecución para liberar recursos en el dispositivo inalámbrico, según se ilustra en el paso 532.
La figura 22 muestra un diagrama de flujo que ilustra un ejemplo de proceso para ejecutar juegos de instrucciones dinámicas en un servidor de PMRTI. Inicialmente, en el paso 540 el servidor recibe el juego de opcodes del servidor. El juego de opcodes es preferentemente una lista de monikers que representan una serie de instrucciones ejecutables en las que cada opcode representa una instrucción ejecutable individual o un juego individual de instrucciones ejecutables. Una vez recibidos los opcodes del servidor, el servidor analiza la sintaxis del juego de opcodes del servidor en el paso 542 y extrae cualquier carga útil de datos incluida en el juego de opcodes del servidor, según se ilustra en el paso 544. Cuando la carga útil de datos se ha extraído, podría almacenarse temporalmente en la memoria volátil del servidor para ser utilizada posteriormente.
A continuación, el servidor obtiene el correspondiente juego de instrucciones, según se ilustra en el paso 546. Preferentemente, el juego de instrucciones correspondiente se almacena en una sección de códigos de instrucciones en tiempo de ejecución del servidor que reside en la memoria permanente de la máquina del servidor de PMRTI. Después de que se haya obtenido el juego de instrucciones, el servidor ejecuta dicho juego de instrucciones según se ilustra en el paso 548. Cuando se está ejecutando el juego de instrucciones, las rutinas que se ejecutan pueden utilizar la carga útil de datos que llegó acompañando al juego de opcodes del servidor. Preferentemente, la carga útil de datos se almacena en la memoria del servidor para este fin. Opcionalmente, las rutinas que se ejecutan podrían incluir instrucciones para generar los datos necesarios para que el juego de instrucciones desempeñe su función.
La figura 23 muestra un diagrama de flujo que ilustra un ejemplo del proceso para enviar una entrada de agenda (es decir, una comunicación de datos) a un microteléfono emparejado. Inicialmente, en el paso 580 el microteléfono obtiene la entrada de agenda extrayéndola de la memoria del microteléfono. Es ventajoso que el microteléfono pueda comprimir la entrada de agenda para reducir el tamaño de la carga útil de datos. A continuación, en el paso 582 el microteléfono obtiene un identificador exclusivo para el microteléfono emparejado. En la mayoría de los casos, el número de teléfono del microteléfono puede utilizarse como identificador exclusivo. Esta información puede obtenerse en la agenda o como entrada del usuario.
Después de haber obtenido la carga útil de datos que comprende la entrada de agenda y el identificador exclusivo, el microteléfono compila el juego de opcodes del servidor y la correspondiente carga útil de datos, según se ilustra en el paso 584. Preferentemente, existe un opcode del servidor que indica al servidor que envíe la comunicación de datos al microteléfono emparejado. En este ejemplo, la comunicación de datos es la entrada de agenda. Una vez combinados el juego de opcodes del servidor y la correspondiente carga útil de datos, el microteléfono los envía al servidor de PMRTI en el paso 586 para que se procesen y, finalmente, se distribuyan al microteléfono emparejado.
Volviendo de nuevo a la figura 22, cuando el servidor de PMRTI recibe el juego de opcodes del servidor y la correspondiente carga útil de datos en el paso 540, analiza la sintaxis del juego de opcodes del servidor en el paso 542 y extrae la carga útil de datos en el paso 544. Es ventajoso almacenar la carga útil de datos en una memoria local temporal del servidor de PMRTI. El servidor, a continuación, convierte los opcodes en el correspondiente juego de instrucciones ejecutables en el paso 546 y lleva a cabo las instrucciones, según se muestra en el paso 548. En este ejemplo, el juego de instrucciones provoca que el servidor compile un juego de opcodes remoto y lo combine con la carga útil de datos correspondiente, que en este caso es la entrada de agenda. A continuación, el servidor envía el juego de opcodes remoto y la carga útil de datos al microteléfono emparejado identificado por el identificador único.
Volviendo de nuevo a la figura 20, cuando el microteléfono emparejado recibe el juego de opcodes remoto y la correspondiente carga útil de datos en el paso 500, pone en marcha el motor en tiempo de ejecución en el paso 502. A continuación, el motor en tiempo de ejecución analiza el juego de opcodes remoto en el paso 504 y extrae la carga útil de datos en el paso 506, que incluye la entrada de agenda. Preferentemente, la carga útil de datos puede almacenarse en una ubicación de memoria temporal. El motor en tiempo de ejecución convierte entonces el juego de opcodes remoto en el correspondiente juego de instrucciones ejecutables en el paso 508 y, posteriormente, ejecuta el juego de instrucciones según se ilustra en el paso 510. En este ejemplo, el juego de instrucciones provoca que el microteléfono añada la entrada de agenda contenida en la carga útil de datos a la agenda propia del microteléfono. Después de haberse ejecutado el juego de instrucciones, el microteléfono puede apagar el motor en tiempo de ejecución, según se ilustra en el paso 512.
Otras aplicaciones adicionales de la capacidad de un microteléfono para crear un juego de opcodes del servidor y su correspondiente carga útil de datos y enviarlos al servidor de PMRTI 30 para que los procese y los envíe a un microteléfono emparejado incluyen proporcionar actualizaciones de localización a un microteléfono emparejado (por ejemplo, información GPS), enviar recordatorios de voz a un microteléfono emparejado, enviar archivos a otras personas, incluyendo imágenes de vídeo, imágenes, texto y audio. En términos generales, el envío de archivos a microteléfonos emparejados abarca una amplísima gama de aplicaciones útiles, como el envío de llamadas personalizadas a amigos o familiares, el envío de fotos o imágenes digitales captadas por el dispositivo inalámbrico, el envío de mensajes de correo electrónico, documentos, aplicaciones de software o cualesquiera datos que puedan compartirse con otras personas o microteléfonos emparejados.
La figura 24 muestra un diagrama de bloques que ilustra un ejemplo de sistema informático 550 que puede utilizarse en relación con los distintos ejemplos descritos aquí. Así, por ejemplo, el sistema informático 550 podría utilizarse como servidor de PMRTI residente en la red de comunicación inalámbrica. El sistema informático 550 podría utilizarse también como cualquiera de los demás sistemas informáticos de uso específico o general que incluyen la red de comunicación sin hilos y sus elementos constitutivos. Sin embargo, podrían utilizarse también otros sistemas informáticos y arquitecturas de sistemas, tal y como resultará evidente para los expertos en esta técnica.
El sistema informático 550 incluye preferentemente uno o varios procesadores, como el procesador 552. Podrían aportarse procesadores adicionales, como un procesador auxiliar para gestionar entradas y salidas, un procesador auxiliar para llevar a cabo operaciones matemáticas de punto flotante, un microprocesador específico con la arquitectura adecuada para la ejecución rápida de algoritmos de proceso de señales (por ejemplo, un procesador de señales digitales), un procesador subordinado dependiente del sistema principal (por ejemplo, un procesador posterior), un microprocesador adicional o controlador para sistemas de doble o múltiple procesador, o un co-procesador. Dichos procesadores auxiliares podrían ser independientes o integrarse en el procesador 552.
El procesador 552 está conectado preferentemente a un bus de comunicación 554. El bus de comunicación 554 podría incluir un canal de datos para facilitar la transferencia de información entre el almacenamiento y otros componentes periféricos del sistema informático 550. El bus de comunicación 554 podría también proporcionar un juego de señales para utilizarlas en la comunicación con el procesador 552, incluyendo un bus de datos, un bus de direccionamiento y un bus de control (que no se muestran). El bus de comunicación 554 podría comprender cualquier arquitectura de bus estándar o no estándar, por ejemplo arquitecturas de bus según las normas ISA (arquitectura de normas industriales), EISA (arquitectura de normas industriales ampliada), MCA (arquitectura de microcanal) o de bus local de interconexión de componentes periféricos (PCI) o normas promulgadas por el Institute of Electrical and Electronics Engineers (IEEE), incluyendo el bus de interfaz para fines generales IEEE 488 (GPIB), IEEE 696/S-100 y otros parecidos.
El sistema informático 550 incluye preferentemente una memoria principal 556 y podría incluir también una memoria secundaria 558. La memoria principal 556 se encarga del almacenamiento de instrucciones y datos para los programas que se ejecutan en el procesador 552. La memoria principal 556 es habitualmente una memoria basada en un semiconductor, como una memoria de acceso aleatorio dinámica (DRAM) y/o una memoria de acceso aleatorio estática (SRAM). Otros tipos de memoria basada en semiconductores incluyen, por ejemplo, la memoria de acceso aleatorio dinámica sincrónica (SDRAM), la memoria de acceso aleatorio dinámica Rambus (RDRAM), la memoria de acceso aleatorio ferroeléctrica (FRAM), y otras parecidas, incluyendo la memoria de sólo lectura (ROM).
La memoria secundaria 558 podría incluir opcionalmente una unidad de disco duro 560 y/o una unidad de almacenamiento extraíble 562, por ejemplo una unidad de disco flexible, una unidad de cinta magnética, una unidad de disco compacto (CD), una unidad de disco versátil digital (DVD), etc. La unidad de almacenamiento extraíble 562 lee y/o graba en un soporte de almacenamiento extraíble 564 de la forma bien conocida. El soporte de almacenamiento extraíble 564 podría ser, por ejemplo, un disco flexible, una cinta magnética, un CD, un DVD, etc.
El soporte de almacenamiento extraíble 564 es preferentemente un soporte de lectura informática que contiene el código ejecutable informático (es decir, el software) y/u otros datos. El software informático o los datos almacenados en el soporte de almacenamiento extraíble 564 se leen en el sistema informático 550 como señales de comunicación eléctrica 578.
En formas de realización alternativas, la memoria secundaria 558 podría incluir otros medios parecidos para permitir cargar programas informáticos y otros datos o instrucciones en el sistema informático 550. Algunos de estos medios podrían ser, por ejemplo, un soporte de almacenamiento externo 572 y una interfaz 570. Algunos ejemplos de soporte de almacenamiento externo 572 podrían ser una unidad de disco duro o una unidad óptica externa, o una unidad magneto-óptica externa.
Otros ejemplos de memoria secundaria 558 podrían ser una memoria basada en un semiconductor, como una memoria de sólo lectura programable (PROM), una memoria de sólo lectura programable borrable (EPROM), una memoria de sólo lectura borrable eléctricamente (EEPROM) o una memoria flash (una memoria orientada por bloques parecida a la EEPROM). También se incluyen otras unidades de almacenamiento extraíble 572 e interfaces 570 que permita la transferencia de software y datos entre una unidad de almacenamiento extraíble 572 y el sistema informático 550.
El sistema informático 550 podría incluir también una interfaz de comunicaciones 574. La interfaz de comunicaciones 574 permite la transferencia de software y datos entre un sistema informático 550 y dispositivos externos (por ejemplo, impresoras), redes o fuentes de información. Así, por ejemplo, puede transferirse software informático o código ejecutable al sistema informático 550 desde un servidor de red a través de una interfaz de comunicaciones 574. Algunos ejemplos de interfaz de comunicaciones 574 son un módem, una tarjeta de interfaz de red (NIC), un puerto de comunicaciones, una ranura y una tarjeta PCMCIA, una interfaz de infrarrojos o un cable de incendios IEEE 1394, por citar sólo algunas.
La interfaz de comunicaciones 574 implementa preferentemente normas de protocolos aprobadas para la industria, por ejemplo Ethernet IEEE 802, Fiber Channel, la línea de suscripción digital (DSL), la línea de suscripción digital asimétrica (ADSL), frame relay, modalidad de transferencia asíncrona (ATM), red digital de servicios integrados (ISDN), servicios de comunicaciones personales (PCS), protocolo de control de transmisiones/protocolo de Internet (TCP/IP), protocolo de Internet por línea serie/protocolo punto por punto (SLIP/PPP), etc., pero podrían implementar también protocolos de interfaz no estándar o personalizados.
El software y los datos transferidos a través de la interfaz de comunicación 574 se encuentran por lo general en forma de señales de comunicación eléctrica 578. Estas señales 578 llegan preferentemente a la interfaz de comunicaciones 574 a través de un canal de comunicaciones 576. El canal de comunicaciones 576 lleva señales 578 y puede implementarse utilizando una variedad de soportes de comunicación como el cable, la fibra óptica, la línea telefónica convencional, el enlace por teléfono móvil, en enlace por radiofrecuencia (RF) o por infrarrojos, por citar sólo algunos.
El código ejecutable informático (es decir, los programas o el software informático) se almacena en la memoria principal 556 y/o en la memoria secundaria 558. Los programas informáticos también pueden recibirse a través de la interfaz de comunicaciones 574 y almacenarse en la memoria principal 556 y/o en la memoria secundaria 558. Dichos programas informáticos, al ejecutarse, capacitan al sistema informático 550 para realizar las distintas funciones del presente invento, según se ha descrito anteriormente.
En esta descripción, el término "soporte legible informáticamente" se utiliza para hacer referencia a cualquier soporte utilizado para proporcionar un código ejecutable informáticamente (por ejemplo, software y programas informáticos) al sistema informático 550. Algunos ejemplos de estos soportes son la memoria principal 556, la memoria secundaria 558 (incluyendo la unidad de disco duro 560, el soporte de almacenamiento extraíble 564 y el soporte de almacenamiento externo 572), y el dispositivo periférico emparejado para comunicarse mediante la interfaz de comunicación 574 (incluyendo un servidor de información de red u otro dispositivo de red). Estos soportes legibles informáticamente son medios para proporcionar un código ejecutable, instrucciones de programación y software al sistema informático 550.
En una forma de realización que se implementa utilizando software, dicho software puede almacenarse en un soporte legible informáticamente y cargarse en el sistema informático 550 mediante una unidad de almacenamiento extraíble 562, interfaces 570 o interfaz de comunicación 574. En esta forma de realización, el software se carga en el sistema informático 550 en forma de señales de comunicación eléctrica 578. El software, al ser ejecutado por el procesador 552, causa preferentemente que el procesador 552 asuma las características y desempeñe las funciones del invento descritas anteriormente.
Podrían implementarse también varias formas de realización, principalmente en hardware, utilizando por ejemplo elementos como circuitos integrados para aplicaciones específicas (ASIC) o matrices de puertas programables por el usuario (FPGA). La implementación de una máquina de hardware capaz de desempeñar las funciones descritas en este documento resultará evidente para los expertos en las técnicas pertinentes. Podrían implementarse también varias formas de realización utilizando una combinación de hardware y software.
Si bien los sistemas y métodos particulares cuyos detalles se describen y muestran pueden asumir totalmente los objetos descritos del presente invento, debe entenderse que la descripción y los dibujos presentados no son más que una forma de realización preferente en la actualidad para el invento. El ámbito del presente invento se delimitará en consecuencia a partir de las reivindicaciones que figuran a continuación.

Claims (18)

1. Un método para la comunicación punto por punto entre un primer microteléfono (10) y un segundo microteléfono (12), en el que el primer microteléfono (10) y el segundo microteléfono (12) están emparejados para comunicarse mediante un servidor de comunicaciones (30) en una red de comunicación sin hilos, comprendiendo dicho método: la recepción, en el servidor de comunicaciones, de un juego de opcodes del servidor del primer microteléfono (540), el juego de opcodes del servidor compilado en el primer microteléfono (540) e incluyendo al menos un opcode del servidor y una primera carga útil de datos; caracterizándose dicho método además por comprender: el procesamiento del juego de opcodes del servidor y la compilación de al menos una parte de la primera carga útil de datos en un juego de opcodes remoto que incluye al menos un opcode remoto y una segunda carga útil de datos; y el envío del juego de opcodes remoto al segundo microteléfono (12) para su proceso en el mismo.
2. El método de la reivindicación 1, en el que la primera carga útil de datos incluye un identificador exclusivo del segundo microteléfono (12).
3. El método de la reivindicación 1, en el que la primera carga útil de datos incluye una comunicación de datos para el segundo microteléfono (12).
4. El método de la reivindicación 1, en el que el paso de proceso incluye también: el análisis sintáctico del juego de opcodes del servidor para obtener al menos un opcode del servidor y la primera carga útil de datos (542); la conversión de al menos un opcode del servidor en una o más instrucciones ejecutables (546), y la ejecución de una o más instrucciones ejecutables para crear un juego de opcodes remoto (548).
5. El método de la reivindicación 4, en el que el paso de ejecución comprende también: la obtención de un identificador exclusivo en la primera carga útil de datos; la obtención de uno o más opcodes remotos en la biblioteca de opcodes remota (60); la obtención de una segunda carga útil de datos, donde al menos una porción de la segunda carga útil de datos se deriva de la primera carga útil de datos; y la combinación de uno o más opcodes remotos con la segunda carga útil de datos para generar el juego de opcodes remoto.
6. El método de la reivindicación 1, comprendiendo además: la compilación del juego de opcodes del servidor en un primer microteléfono (584), donde el juego de opcodes del servidor comprende al menos un opcode del servidor y una primera carga útil de datos; y el procesamiento del juego de opcodes remoto para recibir una comunicación de datos en el segundo microteléfono.
7. El método de la reivindicación 6, donde el paso de compilación incluye además: la obtención de uno o más opcodes del servidor en la biblioteca de opcodes del servidor; la obtención de una primera carga útil de datos, incluyendo esta primera carga útil de datos una comunicación de datos y un identificador exclusivo del segundo microteléfono (582); y combinando el opcode o los opcodes del servidor con la primera carga útil de datos para crear un juego de opcodes del servidor.
8. El método de la reivindicación 4, donde el paso de ejecución comprende además: la obtención de un identificador exclusivo en la primera carga útil de datos; la obtención de uno o más opcodes remotos en una biblioteca de opcodes remota; la obtención de una segunda carga útil de datos, donde al menos una porción de la segunda carga útil de datos se deriva de la primera carga útil de datos; y la combinación de uno o más opcodes remotos con la segunda carga útil de datos para crear un juego de opcodes remoto.
9. El método de la reivindicación 6, donde el procesamiento del juego de opcodes remoto comprende además: el análisis sintáctico del juego de opcodes remoto para obtener al menos un opcode remoto y una segunda carga útil de datos (504); la conversión de al menos un opcode remoto en una o más instrucciones ejecutables (508); y la ejecución de una o más instrucciones ejecutables para obtener una comunicación de datos en la segunda carga útil de datos (510).
10. Un soporte legible informáticamente que tiene almacenada una o más secuencias de instrucciones para provocar que uno o más microprocesadores lleven a cabo los pasos para comunicación punto por punto entre dispositivos de comunicación inalámbricos, comprendiendo dichos pasos: la compilación de un juego de opcodes en el primer microteléfono (584), comprendiendo el juego de opcodes del servidor al menos un opcode del servidor y una primera carga útil de datos; el envío del juego de opcodes del servidor a un servidor de comunicaciones (586); caracterizado además porque dichos pasos comprenden además: el procesamiento del juego de opcodes del servidor y la compilación de al menos una porción de la primera carga útil de datos en un juego de opcodes remoto que comprende al menos un opcode remoto y una segunda carga útil de datos; el envío del juego de opcodes remoto a un segundo microteléfono; y el procesamiento del juego de opcodes remoto para que reciba una comunicación de datos en el segundo microteléfono.
11. El soporte legible informáticamente de la reivindicación 10, donde el paso de compilación comprende además los pasos de: la obtención de uno o más opcodes del servidor en una biblioteca de opcodes del servidor; la obtención de una primera carga útil de datos, comprendiendo esta primera carga útil de datos una comunicación de datos y un identificador exclusivo del segundo microteléfono (582); y la combinación de uno o más opcodes del servidor con la primera carga útil de datos para crear un juego de opcodes del servidor.
12. El soporte legible informáticamente de la reivindicación 10, donde el paso de proceso del juego de opcodes del servidor comprende además los pasos de: análisis sintáctico del juego de opcodes del servidor para obtener al menos un opcode del servidor y la primera carga útil de datos (542); la conversión de al menos un opcode del servidor en una o más instrucciones ejecutables (546); y la ejecución de una o más instrucciones ejecutables (548).
13. El soporte legible informáticamente de la reivindicación 12, donde el paso de ejecución comprende además los pasos de: la obtención de un identificador exclusivo en la primera carga útil de datos; la obtención de uno o más opcodes remotos en la biblioteca de opcodes remota; la obtención de una segunda carga útil de datos, donde al menos una porción de la segunda carga útil de datos se deriva de la primera carga útil de datos; y la combinación de uno o más opcodes remotos con la segunda carga útil de datos para crear un juego de opcodes remoto.
14. El soporte legible informáticamente de la reivindicación 10, donde el paso de proceso del juego de opcodes remoto comprende además los pasos de: análisis sintáctico del juego de opcodes remoto para obtener al menos un opcode remoto y una segunda carga útil de datos (504); la conversión de al menos un opcode remoto en una o más instrucciones ejecutables (508); y la ejecución de una o más instrucciones ejecutables para obtener una comunicación de datos de la segunda carga útil de datos (510).
15. Un sistema para la comunicación punto por punto entre dispositivos de comunicación inalámbricos, comprendiendo dicho sistema: un primer microteléfono (10) que incluye una biblioteca de opcodes del servidor (70) que contiene una variedad de opcodes del servidor y una zona de almacenamiento de datos; un segundo microteléfono (12) que tiene una biblioteca de opcodes remota (60) que contiene una variedad de opcodes remotos y un servidor de comunicaciones (30) que dispone de una biblioteca de opcodes del servidor (70) con una variedad de opcodes de servidor y de una biblioteca de opcodes remota (60) con una variedad de opcodes remotos, estando el servidor de comunicaciones (30) emparejado para comunicarse con el primer microteléfono (10) y el segundo microteléfono (12) a través de una red de comunicación sin hilos (40); donde el primer microteléfono (10) compila un juego de opcodes del servidor que comprende al menos un opcode del servidor y una primera carga útil de datos y envía el juego de opcodes del servidor al servidor de comunicaciones (30) donde el juego de opcodes del servidor se procesa y al menos una porción de la carga útil de datos se compila en un juego de opcodes remoto que comprende al menos un opcode remoto y una segunda carga útil de datos y se envía al segundo microteléfono (12) donde el juego de opcodes remoto se procesa para que reciba la segunda carga útil de datos.
16. El sistema de la reivindicación 15, donde la primera carga útil de datos comprende un identificador exclusivo del segundo microteléfono (12).
17. El sistema de la reivindicación 15, donde la primera carga útil de datos comprende una comunicación de datos para el segundo microteléfono (12).
18. El sistema de la reivindicación 17, donde la segunda carga útil de datos comprende la comunicación de datos para el segundo microteléfono (12).
ES02751472T 2001-07-26 2002-07-25 Sistema y metodo para comunicacion telefonica punto por punto. Expired - Lifetime ES2263799T3 (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/002905 WO2003010932A2 (en) 2001-07-26 2002-07-25 System and method for peer-to-peer handset communication

Publications (1)

Publication Number Publication Date
ES2263799T3 true ES2263799T3 (es) 2006-12-16

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 (5)

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.

Family Applications After (3)

Application Number Title Priority Date Filing Date
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
ES2299587T3 (es) 2008-06-01
EP1410190A2 (en) 2004-04-21
WO2003010662A3 (en) 2003-12-24
EP1425894A2 (en) 2004-06-09
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
ES2263799T3 (es) Sistema y metodo para comunicacion telefonica punto por punto.
US7359699B2 (en) System and method for peer-to-peer handset communication
US11076021B2 (en) Host device for obtaining operating instructions for a barcode reader from a remote server
CN108958730B (zh) 应用程序组件共享方法及装置、终端设备及可读存储介质
US7117494B2 (en) System and method for bi-directional communication and execution of dynamic instruction sets
US20050064847A1 (en) System and method for over the air area code update
CN105765533A (zh) 用于固件虚拟化的方法和装置
CN109040169A (zh) 管理配置文件的通信装置和方法
JP2010044574A (ja) 携帯端末、携帯端末制御方法、及び携帯端末制御プログラム
CN112148826A (zh) 在业务中集成地图服务的方法、装置、设备和存储介质
EP3550427A1 (en) Method for managing multiple operating systems in integrated circuit cards, corresponding system and computer program product
CN105740006A (zh) 基于透明计算的可穿戴智能设备跨平台服务提供方法
JP2006259849A (ja) 携帯端末装置
CN116088888B (zh) 应用程序更新方法及相关装置
Pham et al. WAZIUP, an Open and Versatile Long-range IoT Framework to Fully Take Advantage of the Cloudification of the IoT