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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/08—Access security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/30—Security of mobile devices; Security of mobile applications
- H04W12/35—Protecting application or service provisioning, e.g. securing SIM application provisioning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W8/00—Network data management
- H04W8/22—Processing or transfer of terminal data, e.g. status or physical capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W8/00—Network data management
- H04W8/22—Processing or transfer of terminal data, e.g. status or physical capabilities
- H04W8/24—Transfer of terminal data
- H04W8/245—Transfer of terminal data from a network towards a terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W8/00—Network data management
- H04W8/18—Processing of user or subscriber data, e.g. subscribed services, user preferences or user profiles; Transfer of user or subscriber data
- H04W8/20—Transfer of user or subscriber data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W88/00—Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
- H04W88/02—Terminal 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)
- Information Transfer Between Computers (AREA)
- Sub-Exchange Stations And Push- Button Telephones (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Selective Calling Equipment (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Circuits Of Receivers In General (AREA)
- Debugging And Monitoring (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.
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.
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.
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).
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.
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.
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.
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.
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).
Applications Claiming Priority (11)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US916900 | 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/917,026 US7328007B2 (en) | 2001-07-26 | 2001-07-26 | System and method for organizing wireless communication device system software |
| US09/916,460 US7159214B2 (en) | 2001-07-26 | 2001-07-26 | System and method for compacting field upgradeable wireless communication device software code sections |
| US917026 | 2001-07-26 | ||
| US916460 | 2001-07-26 | ||
| 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 | ||
| US969305 | 2001-10-02 | ||
| 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 |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| ES02751472T Expired - Lifetime ES2263799T3 (es) | 2001-07-26 | 2002-07-25 | Sistema y metodo para comunicacion telefonica punto por punto. |
| 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. |
| ES02762622T Expired - Lifetime ES2253553T3 (es) | 2001-07-26 | 2002-07-25 | Sistema y metodo para comunicacion bidireccional y ejecucion de conjuntos de instrucciones dinamicas. |
| 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. |
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. |
| 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. |
| 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. |
| 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. |
| ES02749167T Expired - Lifetime ES2249602T3 (es) | 2001-07-26 | 2002-07-23 | Sistema y metodo para actualizar datos persistentes en un dispositivo de comunicaciones sin cables. |
Family Applications After (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| 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. |
| ES02762622T Expired - Lifetime ES2253553T3 (es) | 2001-07-26 | 2002-07-25 | Sistema y metodo para comunicacion bidireccional y ejecucion de conjuntos de instrucciones dinamicas. |
| 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. |
Country Status (9)
| Country | Link |
|---|---|
| EP (12) | EP1410188A2 (es) |
| JP (11) | JP4104546B2 (es) |
| KR (10) | KR100940178B1 (es) |
| CN (10) | CN1275149C (es) |
| AT (9) | ATE387658T1 (es) |
| AU (9) | AU2002319572A1 (es) |
| DE (7) | DE60211704T2 (es) |
| ES (9) | ES2300454T3 (es) |
| WO (10) | WO2003010656A2 (es) |
Families Citing this family (40)
| 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 | パナソニック株式会社 | ソフトウェア更新方法及び無線通信装置 |
| US7644404B2 (en) | 2003-06-04 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Network having customizable generators and electronic device 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 | 주식회사 팬택앤큐리텔 | 소프트웨어 이미지 생성 방법 |
| WO2005115036A1 (en) * | 2004-05-18 | 2005-12-01 | Kyocera Wireless Corp. | 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 |
| US12149618B2 (en) | 2005-01-27 | 2024-11-19 | The Chamberlain Group Llc | Method and apparatus to facilitate transmission of an encrypted rolling code |
| 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 |
| 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 |
| CA2577244A1 (en) * | 2005-04-18 | 2006-10-26 | Research In Motion Limited | Method and system for controlling software version updates |
| 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 | 中兴通讯股份有限公司 | 一种通信系统软件版本的平滑升级方法 |
| WO2007105274A1 (ja) * | 2006-03-10 | 2007-09-20 | Fujitsu Limited | 適用パッチ選別装置及び適用パッチ選別方法 |
| 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 | 주식회사 케이티 | 모바일 플랫폼 런타임 다이나믹 링킹 라이브러리 관리 방법및 시스템 |
| EP2417202A2 (en) | 2009-04-07 | 2012-02-15 | Sensient Colors LLC | Self-dispersing particles and methods for making and using the same |
| 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 |
| CA3139264A1 (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 |
| WO2020028502A1 (en) | 2018-08-01 | 2020-02-06 | The Chamberlain Group, Inc. | 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株式会社 | 情報処理装置、プログラム更新システム、及びプログラム更新方法 |
| US11588924B2 (en) * | 2020-10-29 | 2023-02-21 | Hewlett Packard Enterprise Development Lp | Storage interface command packets over fibre channel with transport and network headers as payloads |
Family Cites Families (33)
| 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 |
| EP0979449A4 (en) * | 1996-08-28 | 2005-08-24 | Wind River Systems Inc | A TOOL FOR SOFTWARE DIAGNOSIS DISTRIBUTES FROM MULTIPLE PROCESSORS |
| 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 |
-
2002
- 2002-07-22 JP JP2003515966A patent/JP4104546B2/ja not_active Expired - Fee Related
- 2002-07-22 WO PCT/IB2002/002866 patent/WO2003010656A2/en not_active Ceased
- 2002-07-22 AU AU2002319572A patent/AU2002319572A1/en not_active Abandoned
- 2002-07-22 AU AU2002319568A patent/AU2002319568A1/en not_active Abandoned
- 2002-07-22 AU AU2002319569A patent/AU2002319569A1/en not_active Abandoned
- 2002-07-22 WO PCT/IB2002/002867 patent/WO2003010658A2/en not_active Ceased
- 2002-07-22 WO PCT/IB2002/002875 patent/WO2003010663A2/en not_active Ceased
- 2002-07-22 EP EP02749157A patent/EP1410188A2/en not_active Withdrawn
- 2002-07-22 CN CNB028148312A patent/CN1275149C/zh not_active Expired - Fee Related
- 2002-07-22 KR KR1020047000719A patent/KR100940178B1/ko not_active Expired - Fee Related
- 2002-07-22 AT AT02749158T patent/ATE387658T1/de not_active IP Right Cessation
- 2002-07-22 EP EP02749158A patent/EP1410189B1/en not_active Expired - Lifetime
- 2002-07-22 CN CNB028148339A patent/CN1275150C/zh not_active Expired - Fee Related
- 2002-07-22 JP JP2003515964A patent/JP2004537120A/ja not_active Withdrawn
- 2002-07-22 KR KR1020047000723A patent/KR100911604B1/ko not_active Expired - Fee Related
- 2002-07-22 EP EP02749161A patent/EP1410191A2/en not_active Withdrawn
- 2002-07-22 CN CNB028148320A patent/CN1288553C/zh not_active Expired - Fee Related
- 2002-07-22 JP JP2003515971A patent/JP2005505813A/ja not_active Withdrawn
- 2002-07-22 KR KR1020047000721A patent/KR100940180B1/ko not_active Expired - Fee Related
- 2002-07-22 ES ES02749158T patent/ES2300454T3/es not_active Expired - Lifetime
- 2002-07-23 KR KR1020047000726A patent/KR100913659B1/ko not_active Expired - Fee Related
- 2002-07-23 AU AU2002319570A patent/AU2002319570A1/en not_active Abandoned
- 2002-07-23 JP JP2003515972A patent/JP4278513B2/ja not_active Expired - Fee Related
- 2002-07-23 AU AU2002319573A patent/AU2002319573A1/en not_active Abandoned
- 2002-07-23 EP EP02749167A patent/EP1410193B1/en not_active Expired - Lifetime
- 2002-07-23 ES ES02749159T patent/ES2247355T3/es not_active Expired - Lifetime
- 2002-07-23 CN CNB028148355A patent/CN1235138C/zh not_active Expired - Fee Related
- 2002-07-23 DE DE60211704T patent/DE60211704T2/de not_active Expired - Lifetime
- 2002-07-23 WO PCT/IB2002/002869 patent/WO2003010662A2/en not_active Ceased
- 2002-07-23 DE DE60206389T patent/DE60206389T2/de not_active Expired - Lifetime
- 2002-07-23 KR KR1020047000718A patent/KR100913658B1/ko not_active Expired - Fee Related
- 2002-07-23 CN CNB02814838XA patent/CN1288554C/zh not_active Expired - Fee Related
- 2002-07-23 DE DE60205755T patent/DE60205755T2/de not_active Expired - Lifetime
- 2002-07-23 ES ES02749163T patent/ES2263796T3/es not_active Expired - Lifetime
- 2002-07-23 WO PCT/IB2002/002890 patent/WO2003010664A2/en not_active Ceased
- 2002-07-23 AU AU2002319577A patent/AU2002319577A1/en not_active Abandoned
- 2002-07-23 AT AT02749163T patent/ATE327536T1/de not_active IP Right Cessation
- 2002-07-23 WO PCT/IB2002/002889 patent/WO2003012639A2/en not_active Ceased
- 2002-07-23 JP JP2003515970A patent/JP4073399B2/ja not_active Expired - Fee Related
- 2002-07-23 KR KR1020047000725A patent/KR100918162B1/ko not_active Expired - Fee Related
- 2002-07-23 ES ES02749166T patent/ES2299587T3/es not_active Expired - Lifetime
- 2002-07-23 EP EP02749163A patent/EP1410209B1/en not_active Expired - Lifetime
- 2002-07-23 AT AT02749167T patent/ATE305632T1/de not_active IP Right Cessation
- 2002-07-23 AU AU2002319576A patent/AU2002319576A1/en not_active Abandoned
- 2002-07-23 EP EP02749166A patent/EP1410192B1/en not_active Expired - Lifetime
- 2002-07-23 KR KR1020047000716A patent/KR100940179B1/ko not_active Expired - Fee Related
- 2002-07-23 JP JP2003515976A patent/JP4176634B2/ja not_active Expired - Fee Related
- 2002-07-23 AT AT02749159T patent/ATE302972T1/de not_active IP Right Cessation
- 2002-07-23 EP EP02749159A patent/EP1410190B1/en not_active Expired - Lifetime
- 2002-07-23 CN CNB028148347A patent/CN1235137C/zh not_active Expired - Fee Related
- 2002-07-23 AT AT02749166T patent/ATE382159T1/de not_active IP Right Cessation
- 2002-07-23 ES ES02749167T patent/ES2249602T3/es not_active Expired - Lifetime
- 2002-07-23 EP EP05021081A patent/EP1610222B1/en not_active Expired - Lifetime
- 2002-07-23 CN CNB028148371A patent/CN1279447C/zh not_active Expired - Fee Related
- 2002-07-23 JP JP2003517749A patent/JP4310186B2/ja not_active Expired - Fee Related
- 2002-07-23 WO PCT/IB2002/002877 patent/WO2003010668A2/en not_active Ceased
- 2002-07-25 JP JP2003516189A patent/JP4077408B2/ja not_active Expired - Fee Related
- 2002-07-25 CN CNB028148398A patent/CN100378661C/zh not_active Expired - Fee Related
- 2002-07-25 AT AT02751472T patent/ATE327628T1/de not_active IP Right Cessation
- 2002-07-25 AU AU2002328167A patent/AU2002328167A1/en not_active Abandoned
- 2002-07-25 ES ES02751472T patent/ES2263799T3/es not_active Expired - Lifetime
- 2002-07-25 ES ES02741113T patent/ES2248568T3/es not_active Expired - Lifetime
- 2002-07-25 WO PCT/IB2002/002912 patent/WO2003013103A2/en not_active Ceased
- 2002-07-25 EP EP02741113A patent/EP1410665B1/en not_active Expired - Lifetime
- 2002-07-25 CN CNB02814841XA patent/CN1250035C/zh not_active Expired - Fee Related
- 2002-07-25 AU AU2002355308A patent/AU2002355308A1/en not_active Abandoned
- 2002-07-25 AT AT05018919T patent/ATE359681T1/de not_active IP Right Cessation
- 2002-07-25 DE DE60207429T patent/DE60207429T2/de not_active Expired - Lifetime
- 2002-07-25 DE DE60211719T patent/DE60211719T2/de not_active Expired - Lifetime
- 2002-07-25 DE DE60219536T patent/DE60219536T2/de not_active Expired - Lifetime
- 2002-07-25 ES ES02762622T patent/ES2253553T3/es not_active Expired - Lifetime
- 2002-07-25 AT AT02762622T patent/ATE310354T1/de not_active IP Right Cessation
- 2002-07-25 EP EP05018919A patent/EP1601217B1/en not_active Expired - Lifetime
- 2002-07-25 EP EP02762622A patent/EP1425894B1/en not_active Expired - Lifetime
- 2002-07-25 KR KR1020047001087A patent/KR100932058B1/ko not_active Expired - Fee Related
- 2002-07-25 EP EP02751472A patent/EP1423959B1/en not_active Expired - Lifetime
- 2002-07-25 ES ES05018919T patent/ES2284112T3/es not_active Expired - Lifetime
- 2002-07-25 WO PCT/IB2002/002906 patent/WO2003010942A2/en not_active Ceased
- 2002-07-25 JP JP2003516197A patent/JP4106020B2/ja not_active Expired - Fee Related
- 2002-07-25 AT AT02741113T patent/ATE304272T1/de not_active IP Right Cessation
- 2002-07-25 JP JP2003518153A patent/JP4101752B2/ja not_active Expired - Fee Related
- 2002-07-25 KR KR1020047001086A patent/KR100817387B1/ko not_active Expired - Fee Related
- 2002-07-25 KR KR1020047001088A patent/KR100984895B1/ko not_active Expired - Fee Related
- 2002-07-25 WO PCT/IB2002/002905 patent/WO2003010932A2/en not_active Ceased
- 2002-07-25 CN CNB028148401A patent/CN1310488C/zh not_active Expired - Fee Related
- 2002-07-25 DE DE60206055T patent/DE60206055T2/de not_active Expired - Lifetime
-
2007
- 2007-11-22 JP JP2007303740A patent/JP2008108268A/ja active Pending
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2263799T3 (es) | Sistema y metodo para comunicacion telefonica punto por punto. | |
| US6961537B2 (en) | System and method for peer-to-peer handset communication | |
| US10855810B2 (en) | Barcode reader that obtains firmware from a remote server | |
| US7117494B2 (en) | System and method for bi-directional communication and execution of dynamic instruction sets | |
| CN108958730B (zh) | 应用程序组件共享方法及装置、终端设备及可读存储介质 | |
| US7184793B2 (en) | System and method for over the air area code update | |
| CN109040169A (zh) | 管理配置文件的通信装置和方法 | |
| CN107318099A (zh) | 调制解调器配置文件处理方法、装置和移动终端 | |
| JP2010044574A (ja) | 携帯端末、携帯端末制御方法、及び携帯端末制御プログラム | |
| US20110314076A1 (en) | Information processing apparatus, information processing system, information processing method and program storage medium | |
| ES2325442T3 (es) | Encaminamiento de vistas en aplicaciones de interfaz de usuario. | |
| EP3550427B1 (en) | Method for managing multiple operating systems in integrated circuit cards, corresponding system and computer program product | |
| Pham et al. | WAZIUP, an Open and Versatile Long-range IoT Framework to Fully Take Advantage of the Cloudification of the IoT | |
| KR100652714B1 (ko) | 텔레메틱스를 위한 무선통신 모듈의 바이너리 파일 다운로드 방법 |