ES2248568T3 - Sistema y metodo para mejorar la seguridad en el reacondicionamiento y reprogramacion de aparatos telefonicos moviles. - Google Patents

Sistema y metodo para mejorar la seguridad en el reacondicionamiento y reprogramacion de aparatos telefonicos moviles.

Info

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

Links

Classifications

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

Landscapes

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

Abstract

Método para mejorar la seguridad en la reprogramación de dispositivos de comunicación sin cables (10, 12, 14) que comprende las siguientes etapas: recibir una solicitud de autorización de un dispositivo de comunicación sin cables reprogramable (10, 12, 14) en comunicación con el dispositivo de reprogramación (45), poseyendo la solicitud de autorización un identificador único (55) para el dispositivo de comunicación sin cables solicitante reprogramable (10, 12, 14); consultar un área de almacenamiento de datos para reprogramar información que pertenece al dispositivo de comunicación sin cables reprogramable (10, 12, 14); determinar la situación de programación actual del dispositivo de comunicación sin cables reprogramable (10, 12, 14); y enviar una respuesta de autorización al dispositivo de autorización sin cables reprogramable (10, 12, 14) basada en la situación de programación actual.

Description

Sistema y método para mejorar la seguridad en el reacondicionamiento y reprogramación de aparatos telefónicos móviles.
Antecedentes 1. Sector técnico de la invención
La presente invención se refiere, de manera general, al sector de comunicaciones sin cables, y más en particular se refiere a sistemas de seguridad para el reacondicionamiento y reprogramación de un dispositivo de comunicación sin cables.
2. Técnicas relacionadas
Los dispositivos de comunicación sin cables que comprenden cualquier tipo de dispositivo que se comunica a través de una red de comunicación sin cables, son programados y acondicionados en su fabricación. De manera alternativa, pueden ser programados y acondicionados cuando son activados por el vendedor o proveedor de acceso a la red tal como Sprint, Verizon, AT&T Mobile, y otros. La programación y acondicionamiento (a lo que se hará referencia a continuación colectivamente como "programación") de un dispositivo de comunicación sin cables (al cual también se hará referencia como "dispositivo sin cables", "aparato manual" o "dispositivo móvil") proporciona al aparato manual un número de identificación de móvil ("MIN"), llamado también número de teléfono, y otros parámetros operativos, parámetros de red y software de aplicación. Estos elementos son colocados en una memoria permanente del aparato, de la que no pueden ser borrados o modificados.
De manera típica, ver, por ejemplo, el documento US-A-5673317, los aparatos manuales son programados por el vendedor o proveedor del servicio cuando se activa el aparato manual. En aparatos manuales de tipo convencional, después de haber realizado esta programación, se coloca también un código de bloqueo (al cual se hace también referencia como "código de acceso") en la memoria permanente del aparato manual. Posteriormente, cualesquiera intentos de programación futuros deben proporcionar en primer lugar el código de acceso antes de que el aparato manual permita la modificación de su memoria permanente, procedimiento conocido como reacondicionamiento o reprogramación (a lo que se hará referencia colectivamente en esta descripción como "reprogramación").
Este tipo de seguridad convencional para el reacondicionamiento de los aparatos manuales se encuentra con muchas dificultades. Se han desarrollado en el mercado paralelo y en el mercado negro dispositivos de aplicación y herramientas que son capaces de revelar el código de acceso de un aparato manual, de manera que éste puede ser reprogramado. Frecuentemente, se venden posteriormente teléfonos reprogramados como artículos de mercado paralelo a consumidores que desconocen la manipulación. Además, estos teléfonos reprogramados de forma ilícita son también vendidos en el mercado negro, en el que su utilización crea confusión a los usuarios legales al sobrecargar la red con tráfico por el que no se paga.
Por lo tanto, se requiere un sistema y método que proporcione seguridad adicional a los aparatos manuales contra la reprogramación no autorizada sin dificultar la reprogramación autorizada.
Resumen de características
Los aparatos manuales convencionales pueden ser reprogramados corrientemente en el mercado con dispositivos de software de poco precio y conexión en serie. Esta reprogramación permite la venta de estos aparatos manuales en el mercado paralelo o mercado negro en los que su utilización ilícita ocupa las bandas de transmisión con tráfico adicional y confunde el acceso a la red para los clientes que pagan por el servicio.
La presente invención proporciona sistemas y métodos así como un dispositivo que puede ser leído por ordenador, de acuerdo con las reivindicaciones independientes 1, 7, 13 y 21, para conseguir una mejora en la seguridad en la reprogramación de aparatos manuales, impidiendo que un aparato manual pueda ser reprogramado en el mercado sin cierto tipo de autorización del proveedor de servicio (al cual también se hará referencia como "proveedor") ("carrier"). Una ventaja significativa de esta nueva solución es que el proveedor puede mantener registros relativos a cuándo, dónde y por quién han sido reprogramados sus teléfonos que se encuentran en el mercado. Además, al requerir la autorización del proveedor para la reprogramación de un aparato manual, se incrementa significativamente la dificultad y complejidad de la reprogramación de aparatos manuales para su distribución en el mercado paralelo o en el mercado negro.
Cuando un aparato manual recibe una solicitud de reprogramación, o detecta un intento de reprogramación, el aparato manual entra en contacto con el proveedor para conseguir su autorización para su reprogramación. La red puede proporcionar la autorización, denegarla, requerir información adicional del dispositivo de reprogramación o entrar en contacto con el dispositivo de reprogramación directamente para autorizar dicha reprogramación.
De manera ventajosa, el aparato manual puede ser fabricado sin que el código de acceso esté almacenado en una memoria permanente. Esta falta de código de acceso hace que el aparato manual no tenga posibilidad de ser reprogramado sin conocimiento y autorización del proveedor. Otras ventajas y aplicaciones de los sistemas y métodos de la presente invención quedarán evidentes después de estudio de la siguiente descripción.
Breve descripción de los dibujos
Los detalles de la presente invención, tanto en lo que respecta a su estructura como funcionamiento, se pueden conseguir parcialmente por el estudio de los dibujos adjuntos, en los que los numerales de referencia idénticos se refieren a iguales piezas, y en los que:
la figura 1 es un diagrama esquemático de bloques del sistema general de mantenimiento de software del dispositivo o aparato que funciona sin cables;
la figura 2 es un diagrama de bloques esquemático del sistema de mantenimiento del software, indicando la instalación de equipos de instrucción a través de enlace aéreo;
la figura 3 es un diagrama esquemático de bloques que muestra el sistema de la presente invención para la realización de instrucciones dinámicas en un dispositivo de comunicaciones sin cables;
la figura 4 es un diagrama esquemático de bloques de la memoria del dispositivo sin cables;
la figura 5 es una tabla representativa de la tabla de direcciones de la sección de código de la figura
3;
la figura 6 es una representación detallada de la biblioteca de símbolos de la figura 3, con símbolos;
la figura 7 es una tabla representativa de la tabla de direcciones de desplazamiento de símbolos de la figura 3;
la figura 8 es una representación del código operativo ("opcode") al cual se tiene acceso por el aparato de contaje de tiempo transcurrido;
la figura 9 es una representación más detallada del primer código operativo de la figura 8;
la figura 10 es un diagrama de flujo que muestra el método de la presente invención para llevar a cabo la realización de conjuntos de instrucciones dinámicas en un dispositivo de comunicaciones sin cables;
la figura 11 es un diagrama de flujo que muestra el funcionamiento de un conjunto de instrucciones dinámicas, a título de ejemplo;
la figura 12 es un diagrama de flujo que muestra el funcionamiento de otro conjunto de instrucciones dinámicas, a título de ejemplo;
la figura 13 es un diagrama de flujo que muestra el funcionamiento de un tercer conjunto de instrucciones dinámicas, a título de ejemplo;
la figura 14 es un diagrama de flujo que muestra el funcionamiento de un cuarto conjunto de instrucciones dinámicas, a título de ejemplo;
la figura 15 es un diagrama de flujo que muestra el funcionamiento de un quinto conjunto de instrucciones dinámicas, a título de ejemplo;
la figura 16 es un diagrama de red de alto nivel que muestra un ejemplo de red de comunicación sin cables;
la figura 17A es un diagrama de bloques que muestra un ejemplo del dispositivo de comunicación sin cables;
la figura 17B es un diagrama de bloques que muestra un ejemplo de sección de código de instrucciones de tiempo transcurrido, remoto;
la figura 18A es un diagrama de bloques que muestra un servidor PMRTI como ejemplo;
la figura 18B es un diagrama de bloques ilustrativo de un ejemplo de sección de código de instrucciones de tiempo transcurrido del servidor;
la figura 19 es un diagrama de flujo ilustrativo de un proceso de ejemplo para realizar conjuntos de instrucciones dinámicas en el dispositivo de comunicación sin cables;
la figura 20 es un diagrama de flujo ilustrativo de un proceso de ejemplo para la compilación de conjuntos e instrucciones dinámicas en un dispositivo de comunicación sin cables;
la figura 21 es un diagrama de flujo que muestra un ejemplo de proceso para la realización de los conjuntos de instrucciones dinámicas en un servidor PMRTI;
la figura 22 es un diagrama de flujo ilustrativo de un proceso de ejemplo para autorización del proveedor de reprogramación de un aparato manual;
la figura 23 es un diagrama de flujo que muestra un ejemplo de proceso de clave público y privado para autorización del proveedor de reprogramación del aparato manual;
la figura 24 es un diagrama de flujo ilustrativo de un proceso de ejemplo para la creación de una ventana de reprogramación libre de autorización en un aparato manual;
la figura 25 es un diagrama de flujo ilustrativo de un proceso de ejemplo PMRTI para autorización del proveedor de la reprogramación de un aparato manual; y
la figura 26 es un diagrama de bloques ilustrativo de un sistema de ordenador a título de ejemplo, que puede ser utilizado en relación con diferentes realizaciones que se describen.
Descripción detallada
Ciertas realizaciones que se describen dan a conocer los sistemas y métodos para comunicación bidireccional de dispositivos de instrucción dinámica entre un dispositivo de comunicación sin cables y una red de comunicación sin cables. Por ejemplo, un método que se da a conocer permite que un dispositivo de comunicación sin cables construya dinámicamente un conjunto de instrucciones y envíe dicho conjunto de instrucciones a la red para su ejecución y proceso.
Después de la lectura de la presente descripción, quedará evidente a los técnicos en la materia la forma en la que se puede llevar a cabo la invención en diferentes realizaciones alternativas y aplicaciones alternativas. No obstante, si bien varias realizaciones de la presente invención se describirán en la misma, se debe comprender que estas realizaciones tienen solamente carácter de ejemplo, y no son limitativas. Por lo tanto, la presente descripción detallada de diferentes realizaciones alternativas no se debe considerar que limite el ámbito o amplitud de la presente invención, tal como se define en las reivindicaciones adjuntas.
Algunas partes de las descripciones detalladas siguientes se presentan en términos de procedimientos, etapas de proceso, bloques lógicos, códigos, procesos y otras representaciones simbólicas de operaciones en bits de datos dentro de un dispositivo sin cables, microprocesador o memoria. Estas descripciones y representaciones son los medios utilizados por los técnicos en la materia en la técnica de procesos de datos para transferir, de manera efectiva, su trabajo a otros técnicos en la materia. Un proceso, etapa realizada en un microprocesador, aplicación, bloque lógico, proceso, etc. se concibe en esta descripción y, de manera general, que es una secuencia autocontenida de etapas o instrucciones que conducen al resultado deseado. Las etapas son las que requieren manipulaciones físicas de cantidades físicas. Usualmente, si bien no de forma necesaria, estas cantidades adoptan forma de señales eléctricas o magnéticas capaces de ser almacenadas, transferidas, combinadas, comparadas y manipuladas de otras formas en un dispositivo sin cables basado en un microprocesador. Se ha demostrado conveniente, en algunos casos, principalmente por razones de utilización habitual, hacer referencia a estas señales como bits, valores, elementos, símbolos, caracteres, términos, números o similares. En el caso en el que se mencionen dispositivos físicos, tal como una memoria, ésta estará conectada a otros dispositivos físicos a través de un bus u otra conexión eléctrica. Estos dispositivos físicos se pueden considerar que interaccionan con procesos e aplicaciones lógicas y, por lo tanto, están "conectados" a operaciones lógicas. Por ejemplo, una memoria puede almacenar o acceder a códigos para otra operación lógica, o una aplicación puede utilizar una sección de código de la memoria a efectos de ejecución.
No obstante, se debe tener en cuenta que la totalidad de estos términos y otros similares se deben asociar con las cantidades físicas apropiadas y son simplemente designaciones convenientes aplicadas a estas cantidades. Si no se indica de otro modo, tal como queda evidente de las explicaciones siguientes, se apreciará que, en la totalidad de la presente invención, las explicaciones que utilicen términos tales como "proceso" o "conexión" o "traducción" o "visualización" o "guiado" o "determinación" o "reconocimiento" o similares, se refieren a la acción y proceso en un sistema microprocesador de un dispositivo sin cables, que manipula y transforma datos representados en forma de cantidades físicas (electrónicas) dentro de los registros del sistema del ordenador y de sus memorias en otros datos representados, de manera similar, en forma de cantidades físicas dentro de las memorias o registros del dispositivo sin cables u otros dispositivos de información, almacenamiento, transmisión o visualización.
La figura 1 es un diagrama de bloques esquemático del sistema de mantenimiento (100) del software del dispositivo sin cables en su conjunto. La organización del software del sistema de la presente invención está mostrada en detalle a continuación, siguiendo la disposición general del sistema de mantenimiento de software (100). El sistema general (100) describe un proceso para facilitar actualizaciones del software del sistema y conjuntos de instrucciones (programas), e instalar el software facilitado en un dispositivo sin cables. Las actualizaciones del software del sistema y las instrucciones de tiempo de funcionamiento del gestor de corrección (PMRTI), que son conocidos, de manera más general, como conjuntos de instrucción o conjuntos de instrucción dinámicas, son creadas por el fabricante de los equipos manuales. El software del sistema está organizado en bibliotecas de símbolos. Las bibliotecas de símbolos están dispuestas en secciones de código. Cuando se tienen que actualizar las bibliotecas de símbolos, la actualización de software (102) es transportada en forma de una o varias secciones de código. La actualización del software es enviada a dispositivos sin cables existentes, de los que es representativo el dispositivo (104) de comunicaciones sin cables, o se transmite en comunicaciones separadas desde la sección de base (106) utilizando protocolos de transporte convencionales aéreos, de datos o mensajes. La invención no está limitada a ningún formato de transporte específico, dado que el dispositivo de comunicaciones sin cables se puede modificar fácilmente para procesar cualquier protocolo de transporte aéreo disponible con el objetivo de recibir software del sistema y actualizaciones PMRTI.
El software del sistema puede ser considerado como un conjunto de subsistemas distintos. Los objetos del código pueden ser acoplados íntimamente en uno de estos subsistemas abstractos y la recolección resultante se puede marcar en forma de biblioteca de símbolos. Esto proporciona una descomposición lógica de la base del código y las correcciones y reparaciones del software pueden ser asociadas con una de estas bibliotecas de símbolos. En la mayor parte de casos, una actualización única es asociada con una o, como máximo, dos bibliotecas de símbolos. El resto de la base de código, es decir, las otras bibliotecas de símbolos, permanece sin cambios.
La noción de bibliotecas de símbolos proporciona un mecanismo para tratar con códigos y constantes. Los datos de lectura-escritura (RW), por otra parte, se adaptan en una única biblioteca individual RW que contiene datos basados en RAM para todas las bibliotecas.
Una vez recibida por el dispositivo sin cables (104), la sección de código transportada debe ser procesada. Este dispositivo sin cables sobrescribe una sección de código específica de memoria no volátil (108). La memoria no volátil (108) comprende una sección de sistema de archivo (FSS) (110) y una sección de almacenamiento de código (112). La sección de código es típicamente comprimida antes del transporte a efectos de hacer mínima la ocupación en la FSS (110). Frecuentemente, la sección de código actualizada será acompañada por sus datos RW, que es otro tipo de biblioteca de símbolos que contiene la totalidad de datos RW para cada biblioteca de símbolos. Si bien se han cargado en la memoria (114) de lectura-escritura volátil de acceso al azar, cuando el software del sistema está funcionando, los datos RW necesitan siempre ser almacenados en la memoria no volátil (108), de manera que pueden ser cargados en la memoria de lectura-escritura volátil de acceso al azar (114) cada vez que se hace la reposición o reseteado del dispositivo sin cables. Esto incluye la primera vez que los datos RW son cargados en la memoria de lectura-escritura de acceso al azar. Tal como se ha explicado en más detalle más adelante, los datos RW están dispuestos de manera típica con una sección de código de gestor de corrección.
El sistema (100) comprende el concepto de tablas virtuales. Utilizando estas tablas, se pueden corregir (sustituir) bibliotecas de símbolos en una sección de código, sin romper (sustituir) otras partes del software del sistema (otras secciones de código). Las tablas virtuales se ejecutan a partir de memoria de lectura-escritura (114) volátil de acceso al azar, a efectos de mayor eficacia. Una tabla de direcciones de sección de código y una tabla de direcciones de desplazamiento de símbolos son tablas virtuales.
Las secciones de código actualizadas son recibidas por el dispositivo sin cables (104) y almacenadas en la FSS (110). Un interfaz de usuario (UI) del dispositivo sin cables notificará, de manera típica, al usuario que se dispone de un nuevo software. En respuesta a las indicaciones de UI, el usuario reconoce la notificación y señala la operación de corrección o actualización. De manera alternativa, la operación de actualización es realizada de manera automática. El dispositivo sin cables puede ser incapaz de llevar a cabo tareas de comunicación estándar al llevar a cabo el proceso de actualización. La sección de código de gestor de corrección incluye una biblioteca de símbolos del controlador de lectura-escritura no volátil que es cargada también en la memoria de lectura-escritura volátil de acceso al azar (114). La biblioteca de símbolos del controlador de lectura-escritura no volátil provoca la sobrescritura de las secciones de código con secciones de código actualizadas. La sección de código de gestión de corrección comprende los datos de lectura-escritura, tabla de direcciones de la sección de código y tabla de direcciones de desplazamiento de símbolos, así como un código de acceso de símbolos y la dirección de código de acceso de símbolos (que se explica más adelante). Partes de estos datos son invalidadas cuando se introducen secciones de código actualizadas, y las secciones de código de gestión de correcciones actualizadas incluyen datos de lectura-escritura, una tabla de direcciones de sección de código y una tabla de direcciones de desplazamiento de símbolos válida para las secciones de código actualizadas. Una vez que las secciones de código actualizadas son cargadas en la sección de almacenamiento de código (112), el dispositivo sin cables es reseteado. Después de la operación de reposición o reseteado, el dispositivo sin cables puede ejecutar el software del sistema actualizado. Se debe comprender también que la sección de código de gestor de corrección puede incluir otras bibliotecas de símbolos que no han sido explicadas anteriormente. Estas otras bibliotecas de símbolos no requieren ser cargadas en la memoria volátil de lectura-escritura
(114).
La figura 2 es un diagrama esquemático de bloques del sistema (100) de mantenimiento del software, destacando la instalación de conjuntos de instrucciones a través del interfaz del enlace aéreo. Además de actualizar las secciones de código de software del sistema, el sistema de mantenimiento (100) puede descargar e instalar conjuntos de instrucciones dinámicas, programas o conjuntos de instrucciones del gestor de corrección (PMIS), a las que se hará referencia en esta descripción como instrucciones de tiempo de funcionamiento del gestor de corrección (PMRTI). La sección (200) de código PMRTI es transportada a un dispositivo sin cables (104) de la misma manera que las secciones de código de software del sistema antes descritas. Las secciones de código PMRTI son almacenadas inicialmente en el FSS (110). Una sección de código PMRTI es, de manera típica, un archivo binario que puede ser visualizado en forma de instrucciones compiladas en el equipo manual. Una sección de código PMRTI es suficientemente completa para soportar la realización de operaciones de matemáticas básicas y la realización de operaciones ejecutadas de forma condicional. Por ejemplo, una calibración RF de PMRTI podría llevar a cabo las siguientes operaciones:
SI ELEMENTO CÁLCULO RF ES MENOR DE X
EJECUTAR INSTRUCCIÓN
DE LO CONTRARIO
EJECUTAR INSTRUCCIÓN
Una PMRTI puede soportar operaciones matemáticas básicas, tales como: suma, resta, multiplicación y división. Igual que en las secciones de código de software del sistema, la sección de código PMRTI puede ser cargada como respuesta a requerimientos de UI, y el dispositivo sin cables debe ser repuesto después de que la PMRTI ha sido cargada en la sección (112) de almacenamiento de código. A continuación, se puede ejecutar la sección PMRTI. Si la sección de código PMRTI está asociada con cualesquiera tablas virtuales o lectura-escritura de datos, una sección de código de gestión de corrección actualizada será transportada con la PMRTI para instalación en la sección de almacenamiento de código (112). De manera alternativa, la sección PMRTI puede ser mantenida y procesada a partir del FSS (110). Después de que el aparato manual (104) ha ejecutado todas las instrucciones de la sección PMRTI, dicha sección PMRTI puede ser borrada de la FSS (110). De manera alternativa, la sección PMRTI es mantenida para futuras operaciones. Por ejemplo, la sección PMRTI puede ser ejecutada cada vez que se activa el dispositivo sin cables.
La sección PMRTI es un dispositivo de instrucciones de tiempo de funcionamiento muy potente. El aparato manual puede ejecutar cualquier instrucción facilitada al mismo a través del entorno PMRTI. Este mecanismo puede ser utilizado para soportar calibraciones RF. De modo más general, la sección PMRTI puede ser utilizada para restablecer o limpiar software del dispositivo sin cables a distancia cuando se observan problemas de software por el fabricante o proveedor de servicio, de manera típica, como resultado de quejas del usuario. La sección PMRTI puede registrar asimismo datos necesarios para diagnosticar problemas de software. La PMRTI puede lanzar aplicaciones de sistema recientemente descargadas para análisis de datos, eliminación de irregularidades o averías ("debugging") y correcciones. La sección PMRTI puede proporcionar actualizaciones basadas en datos RW para análisis y posible corrección a corto plazo de un problema en lugar de una sección de código de software del sistema actualizado. La sección PMRTI puede proporcionar algoritmos de compactado de memoria para su utilización por el dispositivo sin cables.
En algunos aspectos de la invención, la organización del software del sistema en bibliotecas de símbolos puede influir en las dimensiones de la memoria volátil (114) y de la memoria no volátil (108) requeridas para la ejecución. Esto es debido al hecho de que las secciones de código son, de manera típica, mayores que las bibliotecas de símbolos dispuestas en las secciones de código. Estas secciones de código más grandes existen para recibir secciones de código actualizadas. La organización del software del sistema como colección de bibliotecas influye en las exigencias de dimensiones de la memoria no volátil. Para las mismas dimensiones de código, la magnitud de la memoria no volátil utilizada será mayor debido al hecho de que las secciones de código pueden ser dimensionadas de manera que sean mayores que las bibliotecas de símbolos dispuestas en las mismas.
Una vez que las actualizaciones del software se han suministrado al dispositivo sin cables, el sistema (100) de mantenimiento de software soporta el compactado de la memoria. El compactado de la memoria es similar a las aplicaciones de desfragmentación de disco en ordenadores de sobremesa. El mecanismo de compactado asegura que la memoria es utilizada de manera óptima y está bien equilibrada para futuras actualizaciones de la sección de código, en las que las dimensiones de las secciones de código actualizadas son impredictibles. El sistema (100) analiza la sección de almacenamiento de código al ser ésta corregida (actualizada). El sistema (100) intenta adaptar secciones de código actualizadas en el espacio de memoria ocupado por la sección de código que está siendo sustituida. Si la sección de código actualizada es mayor que la sección de código sustituida, el sistema (100) compacta las secciones de código en la memoria (112). De manera alternativa, el compactado puede ser calculado por el fabricante o el proveedor del servicio, y las instrucciones de compactado pueden ser compactadas al dispositivo sin cables (104).
El compactado puede ser un proceso engorroso en cuanto al tiempo que requiere, debido a la complejidad del algoritmo y debido al vasto volumen de movimiento de datos. El algoritmo de compactado predice la capacidad de realización o factibilidad antes de empezar cualquier proceso. Se pueden utilizar mensajes guía UI para pedir permiso del usuario antes de intentar el compactado.
En algunos aspectos de la invención, todas las secciones de código de software del sistema pueden ser actualizadas de manera simultánea. No obstante, la actualización completa del software del sistema requeriría un FSS (110) de mayor capacidad.
La figura 3 es un diagrama de bloques esquemático que muestra el conjunto de instrucciones dinámicas de la presente invención en su ejecución en un dispositivo de comunicaciones sin cables. El sistema (300) comprende una sección (112) de almacenamiento de código en la memoria (108) incluyendo software de sistema del dispositivo sin cables, ejecutable, diferenciado en una serie de secciones de código corrientes. La sección de código uno (302), la sección de código dos (304), la sección de código n (306) y la sección de código de gestión de corrección (308) se han mostrado en el dibujo. No obstante, la invención no está limitada a ningún número específico de secciones de código. Además, el sistema (300) comprende adicionalmente una primera serie de bibliotecas de símbolo dispuestas en la segunda serie de secciones de código. Se han mostrado la biblioteca de símbolos uno (310) dispuesta en la sección de código uno (302), las bibliotecas de símbolos dos (312) y tres (314) dispuestas en la sección de código dos (304), y la biblioteca de código m (316) dispuesta en la sección de código n (306). Cada una de las bibliotecas comprende símbolos con funcionalidad relacionada. Por ejemplo, la biblioteca de símbolos uno (310) puede estar involucrada en el funcionamiento del dispositivo de visualización de cristal líquido sin cables (LCD). A continuación, los símbolos serían asociados con funciones de visualización. Tal como se muestra en detalle más adelante, las bibliotecas de símbolos adicionales están dispuestas en la sección (308) de código de gestión de corrección.
La figura 4 es un diagrama de bloques esquemático de la memoria del dispositivo sin cables. Tal como se ha mostrado, la memoria es la sección de almacenamiento de código (112) de la figura 1. La memoria es una memoria no volátil, con capacidad de escritura, tal como una memoria Flash. Se ha de comprender que las secciones de código no deben ser necesariamente almacenadas en la misma memoria que el FSS (110). También se debe comprender que la estructura de software del sistema de la presente invención podría ser activada con secciones de código almacenadas en una serie de memorias cooperativas. La sección (112) de almacenamiento de código comprende una segunda serie de bloques de memoria direccionados de forma contigua, en los que cada bloque de memoria almacena una correspondiente sección de código de la segunda serie de secciones de código. De este modo, la sección de código uno (302) es almacenada en el primer bloque de memoria (400), la sección de código dos (304) en el segundo bloque de memoria (402), la sección de código n (306) en el bloque de memoria de orden n (404), y la sección de gestión de corrección (308) en el bloque de memoria de orden p (406).
Contrastando las figuras 3 y 4, el inicio de cada sección de código está almacenado en direcciones de inicio correspondientes en la memoria, y bibliotecas de símbolos están dispuestas para inicio en el inicio de las secciones de código. Es decir, cada biblioteca de símbolos empieza en una primera dirección y discurre en una serie de direcciones de manera secuencial desde la primera. Por ejemplo, la sección de código uno (302) empieza en la primera dirección de inicio (408) (marcada con "S") en la memoria (112) de la sección de almacenamiento de código. En la figura 3, la biblioteca de símbolos uno (310) empieza en el inicio (318) de la primera sección de código. De manera similar, la sección de código dos (304) empieza en la segunda dirección de inicio (410) (figura 4), y la biblioteca de símbolos dos empieza en el inicio (320) de la sección de código dos (figura 3). La sección de código n (306) empieza en una tercera dirección de inicio (412) en la memoria (112) (figura 4) de la sección de almacenamiento de código, y la biblioteca de símbolos m (316) empieza en el inicio de la sección de código n (322) (figura 3). La sección de código de gestión de corrección empieza en la dirección de orden p (414) en la memoria de sección de almacenamiento de código (112), y la primera biblioteca de símbolos en la sección (308) de código de gestión de corrección empieza en el inicio (324) de la sección de código de gestión de corrección. De este modo, la biblioteca de símbolos uno (310) es almacenada finalmente en el primer bloque de memoria (400). Si una sección de código incluye una serie de bibliotecas de símbolos, tales como la sección de código dos (304), la serie de bibliotecas de símbolos son almacenadas en el correspondiente bloque de memoria, en este caso, el segundo bloque de memoria (402).
En la figura 3, el sistema (300) comprende una tabla de dirección de secciones de códigos (326) como tipo de símbolo incluido en una biblioteca de símbolos dispuesta en la sección (308) de código de gestión de corrección. La tabla de dirección de sección de código cruza las referencias de los identificadores de sección de código con correspondientes direcciones de inicio de sección de código de la memoria.
La figura 5 es una tabla representativa de la tabla de direcciones de sección de código (326) de la figura 3. La tabla (326) de direcciones de sección de código es consultada para encontrar la dirección de inicio de la sección de código para una biblioteca de símbolos. Por ejemplo, el sistema (300) busca la sección de código uno cuando se requiere para ejecución un símbolo en la biblioteca de símbolos uno. Para encontrar la dirección de inicio de la sección de código uno, y por lo tanto para localizar el símbolo en la biblioteca de símbolos uno, se consulta la tabla (326) de direcciones de sección de código. La disposición de bibliotecas de símbolos en secciones de código y el seguimiento de las secciones de código con una tabla permite desplazar o expansionar las secciones de código. Las operaciones de expansión o movimiento pueden ser necesarias para instalar secciones de código mejoradas (con bibliotecas de símbolos mejoradas).
Haciendo referencia nuevamente a la figura 3, se debe observar que no cada biblioteca de símbolos necesariamente empieza en el inicio de una sección de código. Tal como se ha mostrado, la biblioteca de símbolos tres (314) está dispuesta en la sección de código dos (304), pero no empieza de la dirección de inicio de secciones de código (320). Por lo tanto, si se requiere para su ejecución un símbolo de la biblioteca de símbolos tres (314), el sistema (300) consulta la tabla (326) de direcciones de secciones de código para la dirección de inicio de la sección de código dos (304). Tal como se explica más adelante, una tabla de direcciones de desplazamiento de símbolos permite localizar los símbolos en la biblioteca de símbolos tres (314). No importa que los símbolos se extiendan sobre múltiples bibliotecas, siempre que estén retenidos con la misma sección de código.
Tal como se ha indicado anteriormente, cada una de las bibliotecas de símbolos incluye símbolos relativos a la funcionalidad. Un símbolo es un nombre definido por el programador para localizar y utilizar un cuerpo de rutina, variable o estructura de datos. De este modo, 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 alcance de la sección de código corriente. De manera más específica, no son buscados por otras bibliotecas de símbolos, en otras secciones de código. Los símbolos externos son utilizados e invocados sobre las secciones de códigos y son buscados por bibliotecas en diferentes secciones de código. La tabla de direcciones desplazadas de símbolos incluye de manera típica una lista de todos los símbolos externos.
Por ejemplo, la biblioteca de símbolos uno (310) puede generar caracteres en un dispositivo de visualización sin cables. Los símbolos de esta biblioteca generarían, a su vez, números de teléfono, nombres, tiempo u otras características de visualización. Cada una de las características es generada con rutinas, a las que se hará referencia en esta descripción como símbolo. Por ejemplo, un símbolo en la biblioteca de símbolos uno (310) genera números de teléfono en la pantalla. El símbolo es representado por una "X", y es externo. Cuando el dispositivo sin cables recibe una llamada telefónica y se activa el servicio ID del que efectúa la llamada, el sistema debe ejecutar el símbolo "X" para generar el número de la pantalla. Por lo tanto, el sistema debe localizar el símbolo "X".
La figura 6 es una representación detallada de la biblioteca de símbolos uno (310) de la figura 3, con símbolos. Los símbolos están dispuestos para su desplazamiento desde respectivas direcciones de inicio de sección de código. En muchas circunstancias, el inicio de la biblioteca de símbolos es el inicio de una sección de código, pero esto no es cierto si una sección de código incluye más de una biblioteca de símbolos. La biblioteca de símbolos uno (310) empieza en el inicio de la sección de código uno (ver figura 3). Tal como se ha mostrado en la figura 6, el símbolo "X" está situado en un desplazamiento de (03) desde el inicio de la biblioteca de símbolos y el símbolo "Y" está situado en un desplazamiento de (15). Las direcciones de desplazamiento de símbolos son almacenadas en una tabla (328) de direcciones de desplazamiento de símbolos en la sección de código de gestión de corrección (ver figura 3).
La figura 7 es una tabla que representa la tabla de dirección de desplazamiento de símbolos (328) de la figura 3. La tabla (328) de direcciones de desplazamiento de símbolos efectúa el cruzamiento de referencias de identificadores de símbolos con correspondientes direcciones de desplazamiento y con correspondientes identificadores de sección de código en la memoria. Por lo tanto, cuando el sistema intenta ejecutar el símbolo "X" en la biblioteca de símbolos uno, se consulta la tabla (328) de direcciones de desplazamiento de símbolos para localizar la dirección exacta del símbolo, con respecto a la sección de código en la que está dispuesto.
Haciendo referencia nuevamente a la figura 3, la primera serie de bibliotecas de símbolos incluye típicamente, en su totalidad, datos de lectura-escritura que se deben consultar o disponer en la ejecución de estas bibliotecas de símbolos. Por ejemplo, una biblioteca de símbolos puede incluir una operación que depende de una afirmación condicional. La sección de datos de escritura-lectura es consultada para determinar la situación requerida para completar la afirmación condicional. La presente invención agrupa los datos de lectura-escritura de todas las bibliotecas de símbolos en una sección compartida de escritura-lectura. En algunos aspectos de la invención, los datos de escritura-escritura (330) son dispuestos en la sección (308) de código de gestión de correcciones. De manera alternativa (no mostrado), los datos de escritura-lectura pueden ser dispuestos en una sección de códigos distinta, por ejemplo, la sección de código n (306).
La primera serie de bibliotecas de símbolos comprende también un código de acceso de símbolos dispuesto en una sección de código para calcular la dirección de un símbolo buscado. El código de acceso de símbolos se puede disponer y almacenar con una dirección de código separada, por ejemplo, la sección de código dos (304). No obstante, tal como se ha mostrado, el código de acceso de símbolos (332) está dispuesto y almacenado en una dirección en la sección (308) de código de gestión de corrección. El sistema (300) comprende además una primera localización para almacenamiento de la dirección de código de acceso de símbolos. La primera localización puede ser una sección de código en la sección de almacenamiento de código (112), o en una sección de memoria separada del dispositivo sin cables (no mostrado). La primera localización puede estar dispuesta también en la misma sección de código igual que los datos de lectura-escritura. Tal como se ha mostrado, la primera localización (334) está almacenada en la sección (308) de código de gestión de corrección con los datos de escritura-lectura (330), la tabla (328) de dirección de desplazamiento de símbolos, la tabla (326) de dirección de sección de código y el código de acceso de símbolos, así como la biblioteca (336) de correcciones (biblioteca de símbolos de corrección).
El código de acceso de símbolos accede a la tabla de direcciones de sección de código y a las tablas de direcciones de desplazamiento de símbolos para calcular o hallar la dirección de un símbolo buscado en la memoria. Es decir, el código de acceso de símbolos calcula la dirección del símbolo buscado utilizando un identificador de símbolo correspondiente y un identificador de sección de código correspondiente. Por ejemplo, si se busca el símbolo "X" en la biblioteca de símbolos uno, el código de acceso de símbolos es invocado para buscar el identificador de símbolo (ID de símbolo) "X_1", que corresponde al símbolo "X" (ver figura 7). El código de acceso de símbolo consulta con la tabla de dirección de desplazamiento de símbolos para determinar el identificador de símbolos "X_1" tiene un desplazamiento de (03) desde el inicio de la sección de código uno (ver figura 6). El código de acceso de símbolos es invocado para buscar el identificador de sección de código "CS_1", correspondiente a la sección de código uno. El código de acceso de símbolos consulta la tabla de direcciones de sección de código para determinar la dirección de inicio asociada con el identificador de sección de código (ID de sección de código) "CS_1". De esta manera, el código de acceso de símbolos determina que el identificador de símbolos "X_1" está desplazado (03) con respecto a la dirección de (00100), o está situado en la dirección (00103).
El símbolo "X" es un nombre reservado puesto que es parte del código actual. En otras palabras, tiene un dato absoluto asociado con el mismo. El dato puede ser una dirección o un valor. El identificador de símbolo es un seudónimo creado para encontrar el símbolo. La tabla de direcciones de desplazamiento de símbolos y la tabla de direcciones de sección de código funcionan ambas con identificadores para evitar confusiones con símbolos reservados y nombres de sección de código. También es posible que el mismo nombre de símbolo sea utilizado en muchas bibliotecas de símbolos. La utilización de identificadores impide la confusión entre estos símbolos.
Volviendo a hacer referencia a la figura 1, el sistema (300) comprende además una memoria volátil de escritura-lectura (114), de manera típica una memoria de acceso al azar (RAM). Los datos de escritura-lectura (330), tabla (326) de dirección de secciones de código, tabla (328) de dirección de desplazamiento de símbolo, código de acceso de símbolos (332) y dirección (334) de código de acceso de símbolos son cargados en la memoria volátil (114) de escritura-lectura desde la sección de código gestión de correcciones para acceso durante la ejecución del software del sistema. Como es bien sabido, los tiempos de acceso para los códigos almacenados en la RAM son significativamente menores que el acceso a una memoria no volátil tal como Flash.
Haciendo referencia nuevamente a la figura 3, se puede observar que las bibliotecas de símbolos no requieren necesariamente llenar las secciones de códigos en las que están dispuestas, si bien los bloques de memoria están dimensionados para recibir de manera exacta las correspondientes secciones de código almacenadas en los mismos. Dicho de otro modo, cada una de la segunda serie de secciones de código tiene unas dimensiones en bites que se adaptan a las bibliotecas de símbolos dispuestas, y cada uno de los bloques de memoria direccionados de forma contigua tiene una dimensión en bites que se adapta a las secciones de código correspondientes. Por ejemplo, la sección de código uno (302) puede ser una sección de 100 bites para adaptarse a una biblioteca de símbolos que tiene una longitud de 100 bites. El primer bloque de memoria sería de 100 bites para adaptarse a la dimensión en bites de la sección de código uno. No obstante, la biblioteca de símbolos cargada en la sección de código uno puede ser menor de 100 bites. Tal como se ha mostrado en la figura 3, la sección de código uno (302) tiene una sección no utilizada (304), dado que la biblioteca de símbolos uno (310) es menor de 100 bites. De este modo, cada una de la segunda serie de secciones de código puede tener unas dimensiones mayores que las necesarias para recibir las bibliotecas de símbolos dispuestas. Al "sobredimensionar" las secciones de código, se pueden adaptar bibliotecas de símbolos actualizadas de mayores dimensiones.
Los bloques de memoria direccionados de forma contigua se refieren a división del espacio físico de memoria en bloques lógicos de dimensiones variables. Las secciones de código y bloques de memoria son términos esencialmente intercambiables cuando la sección de código está almacenada en la memoria. El concepto de una sección de código se utiliza para identificar una sección de código que quizás es mayor que la biblioteca de símbolos, o bien la corrección de bibliotecas de símbolos en la sección de código al ser desplazada y manipulada.
Tal como se aprecia en la figura 3, el sistema (300) comprende una biblioteca de símbolos de corrección, a la que se hará referencia a continuación como biblioteca (336) de corrección, para disponer nuevas secciones de código en la sección de almacenamiento de código con las secciones de código corrientes. La disposición de nuevas secciones de código con secciones de código corrientes en la sección de almacenamiento de códigos forma el software del sistema ejecutable actualizado. El gestor de corrección (336) no solamente dispone nuevas secciones de código con las secciones de código corrientes, sino que también sustituye secciones de código con secciones de código actualizadas.
Haciendo referencia a la figura 4, la sección (110) del sistema de archivo de la memoria (108) recibe nuevas secciones de código, tal como una nueva sección de código (450) y sección de código de gestión de corrección actualizada (452). La sección de sistema de archivo recibe también una primera instrucción de tiempo (PMRTI) de funcionamiento del gestor de corrección (454) que incluye instrucciones para disponer las nuevas secciones de código con las secciones de código corrientes. Tal como se observa en la figura 1, un interfaz aéreo (150) recibe nuevas secciones de código actualizadas, así como el primer PMRTI. Si bien el interfaz aéreo (150) está representado por una antena, se debe comprender que el interfaz aéreo incluiría también un transceptor RF, circuitos de banda base y circuitos de demodulación (no mostrados). La sección (110) del sistema de archivo almacena las nuevas secciones de código recibidas a través del interfaz aéreo (150). La biblioteca de correcciones (336), que ejecuta a partir de la memoria volátil de escritura-lectura (114), sustituye una primera sección de código en la sección de almacenamiento de código, por ejemplo, la sección de código n (306), con una nueva sección de código actualizada (450), en respuesta al primer PMRTI (454). De manera típica, la sección de código de gestión de errores (308) es sustituida por la sección (452) de código de gestión de errores actualizada. Cuando son sustituidas las secciones de código, la biblioteca de correcciones (336) sobreescribe la primera sección de código, por ejemplo, la sección de código n (306), en la sección de almacenamiento (112) de códigos con las secciones de código actualizadas, por ejemplo, las secciones de código (450), en la sección de sistema de archivo (110). En caso extremo, todas las secciones de código de la sección de almacenamiento de códigos (112) son sustituidas con secciones de códigos actualizadas. Es decir, el FSS (110) recibe una segunda serie de secciones de código actualizadas (no mostrado), y la biblioteca de correcciones (336) sustituye la segunda serie de secciones de código en la sección de almacenamiento de código (112) con la segunda serie de secciones de código actualizadas. Desde luego, el FSS (110) debe ser suficientemente grande para recibir la segunda serie de secciones de código actualizadas recibidas a través del interfaz aéreo.
Tal como se ha indicado anteriormente, las secciones de código actualizadas recibidas pueden incluir secciones de código de datos de escritura-lectura, tablas de direcciones de secciones de códigos, bibliotecas de símbolos, secciones de códigos de tablas de direcciones de desplazamiento de símbolos, secciones de códigos de acceso de símbolos, o una sección de códigos con una nueva biblioteca de correcciones. Todas estas secciones de códigos, con sus bibliotecas de símbolos asociadas y símbolos, se pueden almacenar en forma de secciones de códigos distintas e independientes. A continuación, cada una de estas secciones de códigos sería sustituida con una única sección de código actualizada. Es decir, una sección de código de lectura-escritura actualizada sería recibida y sustituiría la sección de código de lectura-escritura en la sección de almacenamiento de código. Una sección de código de tablas de dirección de la sección de código actualizada sería recibida y sustituiría la sección de código de la tabla de direcciones de la sección de código en la sección de almacenamiento de códigos. Una sección de códigos de la tabla de direcciones de desplazamiento de símbolos actualizada sería recibida y sustituiría la sección de códigos de la tabla de direcciones de desplazamiento de símbolos en la sección de almacenamiento de códigos. Una sección de código de acceso de símbolos actualizada sería recibida y sustituiría la sección de códigos de acceso de símbolos en la sección de almacenamiento de códigos. De manera similar, una sección de código de gestión de errores actualizada (con una biblioteca de errores) sería recibida y sustituiría la sección de códigos de gestión de errores en la sección de almacenamiento de códigos.
Sin embargo, las secciones de código mencionadas anteriormente están empaquetadas de forma típica en la sección de código de gestión de corrección. Por lo tanto, la sección de código de lectura-escritura en la sección de almacenamiento de código es reemplazada por la sección de código de lectura-escritura actualizada de la sección del sistema de archivos (110) cuando la sección de código de gestión de corrección (308) es reemplazada con la sección de código de gestión de corrección actualizado (450). Del mismo modo, la tabla de direcciones de secciones de código, la tabla de direcciones de desplazamiento de símbolo, las secciones de código de acceso a símbolos, así como la biblioteca de corrección son reemplazadas cuando la sección de código de gestión de corrección actualizado (450) es instalada. La disposición de los nuevos datos de lectura-escritura, la nueva tabla de direcciones de secciones de código, la nueva tabla de direcciones de desplazamiento de símbolo, el nuevo código de acceso a símbolos, y la nueva biblioteca de corrección como la sección de código de gestión de corrección actualizado (450), junto con las secciones de código existentes en la sección de almacenamiento de código, conforman el software de 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 administrador de corrección reemplaza la dirección de código de acceso a símbolos en la primera posición en la memoria con la dirección de código de acceso a símbolos actualizada. Tal como se ha mencionado anteriormente, la primera posición en la memoria (334) está, de manera típica, en la sección de código de gestión de corrección (ver figura 3).
Tal como puede observarse en la figura 3, la biblioteca de corrección (308) incluye además un compactador, o una biblioteca de símbolos de compactador (342). El compactador (342) también puede ser habilitado como una sección de código independiente y separado, no obstante, tal como se ha mencionado anteriormente, resulta útil y eficiente el empaquetado de las funciones asociadas con las actualizaciones de software de sistema en una sola sección de código de gestión de corrección. De forma general, el compactador (342) puede ser utilizado para modificar las dimensiones de las secciones de código, de modo que puedan disponerse nuevas secciones con secciones de código existentes en la sección de almacenamiento de código (112).
Con los aspectos de organización, descarga y compactación de la presente invención ya establecidos, la descripción siguiente se centrará en el sistema de ejecución de conjunto de instrucciones dinámicas del dispositivo de comunicaciones sin cables (300). Dicho sistema (300) comprende un software de sistema ejecutable y datos de sistema diferenciados en secciones de código, tal como ha sido descrito en mayor detalle anteriormente. Además, el sistema (300) comprende conjuntos de instrucciones dinámicas para el funcionamiento sobre los datos de sistema y el software de sistema, y controlar la ejecución del software de sistema. Tal como puede observarse en la figura 4, un conjunto de instrucciones dinámicas (470) está organizado en la primera PMRTI (454). Tal como puede observarse en la figura 3, el sistema comprende además un dispositivo de tiempo de ejecución para llevar a cabo el procesamiento de los conjuntos de instrucciones dinámicas, habilitado como una biblioteca de tiempo de ejecución (370). Del mismo modo que la biblioteca del compactador (342) y la biblioteca de corrección (336) mencionadas anteriormente, la biblioteca de tiempo de ejecución (370) está situada, de manera típica, en la sección de código de gestión de corrección (308). Sin embargo, la biblioteca de tiempo de ejecución (370) podría estar situada de manera alternativa en otra sección de código, por ejemplo, la primera sección de código (304).
Los conjuntos de instrucciones dinámicas son un único, o múltiples conjuntos de instrucciones que incluyen código de operación condicional, y de forma general incluyen elementos de datos. El dispositivo de tiempo de ejecución lee el código de operación y determina las operaciones que deberán ser llevadas a cabo. El código de operación puede ser condicional, matemático, de procedimiento, o lógico. El dispositivo de tiempo de ejecución, o la biblioteca de tiempo de ejecución (370) procesa los conjuntos de instrucciones dinámicas para llevar a cabo operaciones tales como una operación matemática o lógica. Es decir, el dispositivo de tiempo de ejecución lee el conjunto de instrucciones dinámicas (470) y lleva a cabo una secuencia de operaciones como respuesta a dicho código de operación. A pesar de que los conjuntos de instrucciones dinámicas no están limitados a ningún lenguaje particular, el código de operación tiene, de manera típica, forma de código de máquina, debido a que la memoria del dispositivo sin cables está limitada y la velocidad de ejecución es un factor importante. El código de operación es considerado como condicional porque analiza un elemento de datos y toma una decisión como resultado de dicho análisis. El dispositivo de tiempo de ejecución puede también determinar que una operación sea llevada a cabo en los datos antes de que sea anali-
zada.
Por ejemplo, el código de operación puede especificar que un elemento de datos de una memoria de dispositivo sin cables sea comparado con un valor predeterminado. Si el elemento de datos es menor que dicho valor predeterminado, el elemento de datos se deja solo, y si el elemento de datos es mayor que el valor predeterminado, es reemplazado con el valor predeterminado. De forma alternativa, el código de operación puede añadir un segundo valor predeterminado a un elemento de datos de la memoria del dispositivo sin cables, antes de que se lleve a cabo la operación de comparación anteriormente mencionada.
Tal como ha sido mencionado anteriormente, la memoria no volátil de sección del sistema de archivos (110) recibe los conjuntos de instrucciones dinámicas a través de una interfaz, tal como un enlace aéreo (150). Tal como se muestra en la figura 1, la interfaz también puede ser una línea sólida de radio frecuencia (RF) (160). Entonces, la PMRTI puede ser recibida por el FSS (110) sin que el software sistema sea operacional, tal como en un ambiente de calibración de fábrica. La PMRTI también puede ser recibida mediante una interfaz de puerto lógico (162) o un módulo de memoria instalable (164). El módulo de memoria (164) puede ser instalado en el dispositivo sin cables (104) en el momento de la calibración inicial, instalado en el campo, o instalado durante la recalibración en la fábrica. A pesar de que no se muestra de forma específica, la PMRTI puede ser recibida mediante interfaces infrarrojas o Bluetooth.
La figura 8 es un gráfico de las instrucciones que son accedidas por el dispositivo de tiempo de ejecución (370). Se muestra una primera instrucción (800), una segunda instrucción (802), y una instrucción de orden j (804), sin embargo, el conjunto de instrucciones dinámicas no está limitado a ninguna cantidad específica de instrucciones. La longitud del código de operación en cada instrucción es fija. El dispositivo de tiempo de ejecución (370) captura la longitud de la instrucción, tal como una medida de bits o bytes, determina si la instrucción incluye elementos de datos. El resto de la longitud de la instrucción, una vez que ha sido eliminado el código de operación, incluye elementos de datos. El dispositivo de tiempo de ejecución extrae los elementos de datos de la instrucción. Tal como se muestra, la longitud (806) de la primera instrucción (800) es medida y los elementos de datos (808) son extraídos. Nótese que no todas las instrucciones incluyen necesariamente elementos de datos que serán extraídos. El dispositivo de tiempo de ejecución (370) utiliza los datos extraídos (808) para llevar a cabo una secuencia de operaciones en respuesta al código de operación (810) en la instrucción (800).
La figura 9 es un gráfico detallado de la primera instrucción (800) de la figura 8. Utilizando la primera instrucción (800) como ejemplo, la instrucción incluye código de operación (810) y datos (808). La instrucción, y de forma más específica, la sección de elementos de datos (808) incluye identificadores de símbolos, que actúan como enlace con los símbolos en las secciones de código del dispositivo sin cables. Tal como ha sido descrito en detalle anteriormente, los identificadores de símbolos son utilizados con la tabla de direcciones de secciones de código (326) (ver figura 5) y la tabla de direcciones de desplazamiento de símbolos (328) (ver figura 7) para localizar el símbolo correspondiente al identificador de símbolo. Tal como se muestra, un identificador de símbolo "X_1" es mostrado en la primera instrucción (800). La tabla de direcciones de desplazamiento de símbolos (328) localiza el símbolo correspondiente en una sección de código con el identificador "CS_1" y un desplazamiento de "3". La tabla de direcciones de secciones de código (326) da la dirección de inicio de la sección de código uno (302). De esta manera, el símbolo "X" es encontrado (ver figura 6).
Después de que el dispositivo de tiempo de ejecución encuentra los símbolos correspondientes con los identificadores de símbolos recibidos utilizado la tabla de direcciones de secciones de código y la tabla de direcciones de desplazamiento de símbolos, extrae datos cuando los símbolos localizados son elementos de datos. Por ejemplo, si el símbolo "X" es un elemento de datos en la biblioteca de símbolos uno (301), el dispositivo de tiempo de ejecución lo extrae. De manera alternativa, el símbolo "X" puede ser código de operación, y el dispositivo de tiempo de ejecución ejecuta el símbolo "X" cuando es encontrado.
La PMRTI puede ser utilizada para llevar a cabo la actualización de los datos de sistema, o elementos de datos de sistema. En algunos aspectos de la invención, los datos de sistema son almacenados en una sección de código en la sección de sistema de archivos (110), por ejemplo, la sección de código (472), ver figura 4. El dispositivo de tiempo de ejecución accede a los datos de sistema de la sección de código (472) y analiza los datos de sistema. El dispositivo de tiempo de ejecución procesa el código de operación de los conjuntos de instrucciones dinámicas para llevar a cabo operaciones matemáticas o lógicas en los elementos de datos, tal como se ha descrito anteriormente. Después de la operación, el dispositivo de tiempo de ejecución procesa las instrucciones para crear datos de sistema actualizados. Nótese que los datos de sistema actualizados pueden incluir elementos de datos no alterados en algunas circunstancias. Los datos de sistema en la segunda sección de código (472) son reemplazados por los datos de sistema actualizados como respuesta al código de operación. De este modo, mediante el procesamiento de la instrucción llevado a cabo por el dispositivo de tiempo de ejecución, el software de sistema es controlado para ejecutar utilizando los datos de sistema actualizados en la sección de código (472). De este modo, pueden ser actualizados los símbolos designados de forma específica en el software de sistema, sin reemplazar secciones de código completas. Mediante el mismo proceso, los datos de sistema pueden ser reemplazados en una sección de código en la sección de almacenamiento de código (112). Por ejemplo, los datos de sistema pueden ser almacenados en la tercera sección de código (344), y el dispositivo de tiempo de ejecución puede reemplazar los datos de sistema en la tercera sección de código por datos de sistema actualizados como respuesta al código de operación.
La PMRTI puede ser utilizada también para actualizar elementos de datos en la memoria volátil (114). Como ejemplo, la memoria volátil (114) acepta datos de lectura-escritura (330), ver figura 1. Los datos de lectura-escritura pueden ser de una, o de una serie de secciones de código en la sección de almacenamiento de código (112) y/o el FSS (110). El dispositivo de tiempo de ejecución accede a los datos de lectura-escritura, analiza dichos datos de lectura-escritura (330), crea los datos de lectura-escritura actualizados, y reemplaza los datos de lectura-escritura (330) de la memoria volátil (114) por los datos de lectura-escritura actualizados como respuesta al código de operación. Entonces, el software de sistema está controlado para ejecutar utilizando los datos de lectura-escritura actualizados en la memoria volátil (114).
En algunos aspectos de la presente invención, el dispositivo de tiempo de ejecución monitorea la ejecución del software de sistema. El monitoreo del rendimiento está definido de forma amplia para incluir una gran cantidad de actividades del dispositivo sin cables. Por ejemplo, los datos correspondientes a los parámetros de canal, características de canal, un apilamiento del sistema, condiciones de error, o un registro de elementos de datos de la RAM a través de una secuencia de operaciones que conducen a un estado de fallo específico o un estado de rendimiento reducido, pueden ser controlados. También resulta posible utilizar conjuntos de instrucciones dinámicas para analizar datos recogidos del rendimiento, proporcionar variantes de datos actualizadas, y recapturar datos para estudiar posibles soluciones al problema. También se pueden disponer arreglos temporales utilizando procesos PMRTI.
De manera más especifica, el dispositivo de tiempo de ejecución recoge datos de rendimiento, y almacena dichos datos de rendimiento en la sección de sistema de archivos como respuesta al código de operación. Entonces, el software de sistema es controlado para ser ejecutado recogiendo los datos de rendimiento para la evaluación del software de sistema. La evaluación puede ocurrir como una forma de análisis llevada a cabo por el código de operación del conjunto de instrucciones dinámicas, o puede ser llevada a cabo fuera del dispositivo sin cables. En algunos aspectos de la presente invención, el dispositivo de tiempo de ejecución accede a los datos de rendimiento que han sido recogidos de la sección de sistema de archivos y transmite dichos datos de rendimiento a través de una interfaz de enlace aéreo como respuesta al código de operación. La recogida de datos de rendimiento de los dispositivos sin cables en el campo permite al fabricante analizar totalmente los problemas, de forma local o global, sin recuperar los dispositivos.
En algunos aspectos de la presente invención, la sección de sistema de archivos (110) recibe una instrucción de tiempo de ejecución de gestión de corrección que incluye una nueva sección de código. Por ejemplo, una nueva sección de código (474) se muestra en la figura 4. De manera alternativa, la nueva sección de código puede ser independiente de la PMRTI, como una nueva sección de código n (450). Por ejemplo, la nueva sección de código n (450) puede haber sido recibido mediante comunicaciones de enlace aéreo previas, o haber sido instalado durante la calibración en la fábrica. El dispositivo de tiempo de ejecución añade la nueva sección de código (474) (450) a la sección de almacenamiento de código como respuesta al código de operación. En algunos aspectos de la presente invención, la nueva sección de código es añadida al bloque no utilizado en la sección de almacenamiento de código (112). De forma alternativa, se requiere una operación de compactación. Entonces, el software de sistema está controlado para la ejecución utilizando la nueva sección de código (474) (450). En otros aspectos de la invención, la PMRTI (454) incluye una sección de código actualizado (474). De manera alternativa, la nueva sección de código (450) es una sección de código actualizada independiente de la PMRTI. El dispositivo de tiempo de ejecución reemplaza una sección de código en la sección de almacenamiento de código, por ejemplo, la sección de código dos (304), por la sección de código actualizado (474) (450) como respuesta al código de operación. El software de sistema es controlado para ejecución utilizando la sección de código actualizada (474) (450). En algunos aspectos de la presente invención, es necesaria una operación de compactación para alojar la sección de código actualizada. De manera alternativa, la sección de código actualizada es añadida a una sección no utilizada o vacante de la sección de almacenamiento de código.
Tal como ha sido descrito anteriormente, la adición de una nueva sección de código o la actualización de una sección de código requiere de manera típica la generación de una nueva tabla de direcciones de secciones de código, dado que dicha operación implica direcciones de inicio de secciones de código nuevas y/o modificadas. Además, una operación de compactación requiere una nueva tabla de direcciones de secciones de código. Las operaciones de compactación pueden ser el resultado de la operación del compactador (342), explicada anteriormente, o el resultado de instrucciones PMRTI que suministran detalles del modo en que debe llevarse a cabo dicha compactación. Cuando la PMRTI incluye instrucciones de descarga y compactación, la PMRTI incluye también de manera típica una nueva tabla de direcciones de secciones de código que se hace válida después de que las operaciones de descarga y compactación han sido completadas.
Las figuras 10a y 10b son diagramas de flujo que muestran el método de la presente invención para la ejecución de conjuntos de instrucciones dinámicas en un dispositivo de comunicaciones sin cables. A pesar de que la secuencia es mostrada como una secuencia de etapas numeradas por razones de claridad, no debe inferirse un orden a partir de dicha numeración (y la numeración en los métodos presentados a continuación) a menos que se especifique de forma explícita. El método comienza en la Etapa (1000). La Etapa (1001a) transforma el software de sistema en bibliotecas de símbolos, cada biblioteca de símbolos comprendiendo símbolos que tienen una funcionalidad relacionada. La Etapa (1001b) dispone las bibliotecas de símbolos en secciones de código. La Etapa (1002) ejecuta el software de sistema. La Etapa (1003) recibe los conjuntos de instrucciones dinámicas. La recepción de los conjuntos de instrucciones dinámicas en la Etapa (1003) incluye la recepción de dichos conjuntos de instrucciones dinámicas a través de una interfaz seleccionada a partir del grupo que incluye interfaces de tipo de enlace aéreo, de línea sólida de radiofrecuencia (RF), de módulo de memoria instalable, infrarrojo, e interfaces de puerto lógico. En algunos aspectos de la presente invención, la recepción del conjunto de instrucciones dinámicas en la Etapa (1003) incluye la recepción de una instrucción de tiempo de ejecución de gestión de corrección (PMRTI) en una memoria no volátil de la sección de sistema de archivos.
La Etapa (1004) activa un dispositivo de tiempo de ejecución. De forma típica, la activación de un dispositivo de tiempo de ejecución implica la invocación a una biblioteca de tiempo de ejecución de una primera sección de código. Dicho dispositivo de tiempo de ejecución puede ser activado desde una memoria volátil o no volátil. La Etapa (1006) procesa los conjuntos de instrucciones dinámicas. El procesamiento de los conjuntos de instrucciones dinámicas incluye el procesamiento de instrucciones como respuestas a operaciones matemáticas y lógicas. En algunos aspectos de la presente invención, la Etapa (1007) (no mostrada), a continuación del procesamiento de los conjuntos de instrucciones dinámicas, elimina los conjuntos de instrucciones dinámicas. La Etapa (1008) opera sobre los datos del sistema y el software de sistema. La Etapa (1010) controla la ejecución del software de sistema como respuesta a la operación sobre los datos de sistema y el software de sistema.
De manera típica, la recepción de las instrucciones de tiempo de ejecución del administrador de corrección en la Etapa (1003) incluye la recepción de códigos de operación condicional y elementos de datos. Entonces, el procesamiento de los conjuntos de instrucciones dinámicas en la Etapa (1006) incluye subetapas. La Etapa (1006a1) utiliza el dispositivo de tiempo de ejecución para leer el código de operación de la instrucción de tiempo de ejecución del administrador de corrección. La Etapa (1006b) lleva a cabo una secuencia de operaciones como respuesta al código de operación.
En algunos aspectos, la disposición de las bibliotecas de símbolos en secciones de código en la Etapa (1001b) incluye el inicio de bibliotecas de símbolos en el comienzo de las secciones de código y la disposición de símbolos que serán desplazados de sus respectivas direcciones de inicio de sección de código. A continuación, el método comprende etapas adicionales. La Etapa (1001c) almacena el inicio de las secciones de código en direcciones de inicio correspondientes. La Etapa (1001d) mantiene una tabla de direcciones de secciones de código (CSAT) con referencias cruzadas entre los indicadores de secciones de código y las direcciones de inicio correspondientes. La Etapa (1001e) mantiene una tabla de direcciones de desplazamiento de símbolos (SOAT) con referencias cruzadas entre identificadores de símbolos y direcciones de desplazamiento correspondientes, y los identificadores de secciones de código correspondientes.
En algunos aspectos de la presente invención, la recepción de la instrucción de tiempo de ejecución del administrador de corrección en la Etapa (1003) incluye la recepción de identificadores de símbolos. Entonces, el método comprende una etapa adicional. La Etapa (1006a2) localiza los símbolos correspondientes con los identificadores de símbolos recibidos mediante la utilización de la tabla de direcciones de secciones de código y la tabla de direcciones de desplazamiento de símbolos. Al llevar a cabo una secuencia de operaciones como respuesta al código de operación en la Etapa (1006b) incluye subetapas. La Etapa (1006b1) extrae los datos cuando los símbolos localizados son elementos de datos. La Etapa (1006b2) ejecuta los símbolos cuando los símbolos localizados son instrucciones.
En algunos aspectos de la presente invención, el procesamiento de conjuntos de instrucciones dinámicas en la Etapa (1006b1) incluye subetapas adicionales. La Etapa (1006b1a) utiliza el dispositivo de tiempo de ejecución para capturar la longitud de la instrucción de tiempo de ejecución del administrador de corrección. La Etapa (1006b1b) extrae los elementos de datos de la instrucción de tiempo de ejecución del administrador de corrección, como respuesta al código de operación. La Etapa (1006b1c) utiliza los datos extraídos para llevar a cabo la secuencia de operaciones como respuesta al código de operación.
La figura 11 es un diagrama de flujo que muestra el funcionamiento de un conjunto de instrucciones dinámicas a modo de ejemplo. Varias de las etapas de la figura 11 son las mismas que las de la figura 10, y no son repetidas por razones de brevedad. El procesamiento de conjuntos de instrucciones dinámicas en la Etapa (1106) incluye subetapas. La Etapa (1106a) accede a los datos de sistema almacenados en una segunda sección de código en la sección de sistema de archivos. La Etapa (1106b) analiza los datos de sistema. La Etapa (1106c) crea datos de sistema actualizados. Entonces, la operación sobre los datos de sistema y el software de sistema en la Etapa (1108) incluye el reemplazo de los datos de sistema en la segunda sección por los datos de sistema actualizados, y el control de la ejecución del software de sistema en Etapa (1010) incluye la utilización de datos de sistema actualizados en la ejecución del software de sistema.
La figura 12 es un diagrama de flujo que muestra otro funcionamiento del conjunto de instrucciones dinámicas a modo de ejemplo. Varias de las etapas de la figura 12 son las mismas que las de la figura 10, y no son repetidas por razones de brevedad. La Etapa (1201c) almacena una serie de secciones de código en una memoria no volátil de la sección de almacenamiento de código. El procesamiento de los conjuntos de instrucciones dinámicas en la Etapa (1206) incluye subetapas. La Etapa (1206a) accede a los datos de sistema almacenados en una tercera sección de código en la sección de almacenamiento de código (CSS). La etapa (1206b) analiza los datos de sistema. La etapa (1206c) crea datos de sistema actualizados. La operación sobre los datos de sistema y el software de sistema en la Etapa (1208) incluye el reemplazo de los datos de sistema en la tercera sección de código por los datos de sistema actualizados. El control de la ejecución del software de sistema en la Etapa (1210) incluye la utilización de los datos de sistema actualizados en la ejecución del software de sistema.
La figura 13 es un diagrama de flujo que muestra un tercer funcionamiento, a modo de ejemplo, de un conjunto de instrucciones dinámicas. Varias de las etapas de la figura 13 son las mismas que las de la figura 10, y no son repetidas en la descripción por razones de brevedad. La Etapa (1301c) almacena una serie de secciones de código en una memoria no volátil de secciones de almacenamiento de código. La Etapa (1301d) carga datos de lectura-escritura en la memoria volátil. El procesamiento de los conjuntos de instrucciones dinámicas en la Etapa (1306) incluye subetapas. La Etapa (1306a) accede a los datos de lectura-escritura de la memoria volátil. La Etapa (1306b) analiza los datos de lectura-escritura. La Etapa (1306c) crea datos de lectura-escritura actualizados. La operación sobre los datos del sistema y el software del sistema en la Etapa (1308) incluye el reemplazo de los datos de lectura-escritura en la memoria volátil por los datos de lectura-escritura actualizados. El control de la ejecución del software de sistema incluye la utilización de los datos de lectura-escritura actualizados en la ejecución del software del sistema.
La figura 14 es un diagrama de flujo que muestra un cuarto funcionamiento, a modo de ejemplo, del conjunto de instrucciones dinámicas. Varias de las etapas de la figura 14 son las mismas que las de la figura 10, y no son repetidas en la descripción por razones de brevedad. El procesamiento de los conjuntos de instrucciones dinámicas incluye subetapas. La Etapa (1406a), como respuesta al código de operación, monitorea la ejecución del software del sistema. La Etapa (1406b) recoge datos de rendimiento. La Etapa (1406c) almacena los datos de rendimiento. La Etapa (1406d) transmite los datos almacenados mediante una interfaz de enlace aéreo. La operación sobre los datos del sistema y el software del sistema en la etapa (1408) incluye la utilización de los datos de rendimiento en la evaluación del software del sistema.
La figura 15 es un diagrama de flujo que muestra un quinto funcionamiento, a modo de ejemplo, del conjunto de instrucciones dinámicas. Varias de las etapas de la figura 15 son las mismas que las de la figura 10, y no son repetidas en la descripción por razones de brevedad. La Etapa (1501c) almacena una serie de secciones de código en una memoria no volátil de la sección de almacenamiento de código. La recepción de las instrucciones de tiempo de ejecución del administrador de corrección en la Etapa (1503) incluye la recepción de una nueva sección de código. La operación sobre los datos de sistema y el software de sistema en la Etapa (1508) incluye la adición de la nueva sección de código a la sección de almacenamiento de código, y el control de la ejecución del software de sistema en la Etapa (1510) incluye la utilización de la nueva sección de código en la ejecución del software de sistema.
De manera alternativa, la recepción de una nueva sección de código en la Etapa (1503) incluye la recepción de una sección de código actualizado. Entonces, la operación sobre los datos del sistema y el software del sistema en la Etapa (1508) incluye el reemplazo de una cuarta sección de código en la sección de almacenamiento de código por la sección de código actualizado.
Han sido dados a conocer un sistema y un método para la ejecución de conjuntos de instrucciones dinámicas en un dispositivo de comunicaciones sin cables, para favorecer el proceso de actualización del software y monitoreo del rendimiento de dicho software. El sistema puede ser actualizado de forma sencilla debido a la disposición de las bibliotecas de símbolos en secciones de código, con tablas para acceder a las direcciones de inicio de dichas secciones de código en la memoria y las direcciones de desplazamiento de los símbolos en las bibliotecas de símbolos. La utilización de conjuntos de instrucciones dinámicas permite llevar a cabo modificaciones especiales en cada dispositivo sin cables, basadas en las características especiales de cada dispositivo. Unos pocos ejemplos generales han sido dados a conocer mostrando los posibles usos para los conjuntos de instrucciones dinámicas. Sin embargo, la presente invención no está limitada a dichos ejemplos. Otras variantes y realizaciones de la presente invención resultarán evidentes para las personas especializadas en la técnica.
La figura 16 es un diagrama de red de alto nivel que muestra un ejemplo de red de comunicaciones sin cables de acuerdo con una realización de la presente invención. La red de comunicaciones sin cables mostrada comprende una serie de dispositivos de comunicación sin cables (10), (12) y (14); una serie de estaciones base (20) y (22); un servidor PMRTI (30), y un servidor de seguridad (35); cada uno de los cuales está conectado con los dispositivos de comunicación sin cables (10), (12) y (14) mediante una red (40).
También se muestra en la realización, dada a modo de ejemplo, un dispositivo de reprogramación (45) que está conectado con un aparato telefónico (14) mediante una conexión directa (47). La conexión directa (47) es una conexión física de cable duro entre el aparato telefónico (14) y el dispositivo de reprogramación (45), por ejemplo, un cable serie o una conexión de red cableada. El dispositivo de reprogramación (45) puede estar conectado además a una red tal como Internet (42), que puede suministrar acceso a la red (40) al dispositivo de reprogramación (45). De manera adicional, el dispositivo de reprogramación (45) puede tener una capacidad de comunicación sin cables que le permita conectarse con la red (40) mediante una estación base, tal como, por ejemplo, la estación base (22).
El dispositivo de comunicaciones sin cables (10) puede ser cualquier tipo de dispositivo con la capacidad de comunicarse dentro de la red de comunicaciones sin cables. Por ejemplo, el dispositivo de comunicaciones sin cables (10) puede ser un teléfono móvil, un asistente personal digital ("PDA"), un ordenador portátil, un reloj de pulsera, o cualquier otro dispositivo configurado para comunicaciones sin cables. Los dispositivos de comunicaciones sin cables pueden ser referenciados en la presente descripción como "aparatos manuales" o "teléfonos móviles" o "dispositivos móviles".
La estación base (20) está configurada de forma preferente para comunicar a través del aire con una serie de dispositivos de comunicación sin cables e incluye un transceptor (no mostrado) que convierte las comunicaciones a través del aire a comunicaciones por cable que viajan por la red (40). De manera preferente, la red (40) es una red privada que funciona por el proveedor sin cables. La red (40) proporciona de manera preferente la infraestructura para transferencias entre las estaciones base tales como la estación base (20) y (22). De manera adicional, la red (40) proporciona de forma preferente el enlace de comunicación entre varias aplicaciones, servicios, y otros servidores basados en ordenadores tales como el servidor PMRTI (30) y el servidor de seguridad (35).
La red (40) también puede servir como el conducto para las conexiones con otras redes (no mostradas) como una Red Digital de Servicios Integrados ("ISDN"), Red de Telefonía Conmutada Pública ("PSTN"), Red Móvil Terrestre Pública ("PLMN"), Red de Datos Pública de Paquetes Conmutados ("PSPDN"), e Internet, para nombrar unos pocos ejemplos.
El servidor PMRTI (30) puede ser implementado como un único ordenador o como una serie de servidores dispuestos de forma lógica para proporcionar conjuntos de instrucciones dinámicas a dispositivos móviles y para ejecutar conjuntos de instrucciones dinámicas recibidas desde dispositivos móviles. De manera similar, el servidor de seguridad (35) puede ser implementado utilizando un ordenador convencional con uno o más microprocesadores, como es bien sabido dentro de la técnica. De forma notable, el servidor de seguridad y el servidor PMRTI (30) pueden ser incorporados de forma conjunta en una única máquina física de servidor en la que comparten recursos de hardware y software. El servidor de seguridad (35) y el servidor PMRTI (30) pueden compartir además archivos de datos y estar acoplados de forma comunicativa mediante técnicas de comunicación entre procesos o conexiones físicas o sin cables a través de una red (40).
La figura 17A es un diagrama de bloques que muestra un ejemplo de dispositivo de comunicaciones sin cables (10) de acuerdo con una realización de la presente invención. Las características generales del dispositivo de comunicaciones sin cables (10) que le permiten funcionar como tal son bien conocidas en la técnica y por lo tanto no serán descritas ni mostradas en el presente documento.
En una realización, el aparato telefónico (10) incluye un código de acceso (55). Dicho código de acceso (55) está almacenado en la memoria permanente del aparato telefónico (10) en el que no puede ser modificado o eliminado. El código de acceso (55) puede ser una cadena alfanumérica, un número hexadecimal, un número binario, o similar. De manera preferente, el código de acceso (55) es un número o cadena largos que es aleatorio y muy difícil de obtener mediante utilidades y herramientas de reprogramación ilícitas. En una realización alternativa, el aparato telefónico (10) no incluye un código de acceso (55). Cuando no existe disponible un código de acceso en el aparato telefónico (10), las utilidades de reprogramación son totalmente incapaces de obtener acceso a dicho aparato telefónico de modo tal que permitiría la reprogramación. De manera ventajosa, cuando no existe un código de acceso presente en el aparato telefónico (10), únicamente el proveedor puede autorizar la reprogramación. Una realización de este tipo aumenta de forma significativa la seguridad contra reprogramación en el aparato telefónico.
En una realización, el código de acceso (55) puede contener un indicador que dirige al aparato telefónico para que realice una consulta a la red del proveedor para obtener una autorización para ser reprogramado. De este modo, el proveedor puede actualizar el indicador contenido en el código de acceso (55) de modo que la seguridad de reprogramación pueda ser desactivada, ser fijada para determinación local (por ejemplo, cuando es suministrado el código de acceso correcto), o ser fijada para autorización del proveedor. De manera ventajosa, este hecho permite que el proveedor controle de forma flexible la seguridad de reprogramación con un nivel de granularidad individual para cada aparato manual.
El aparato manual (10) incluye además un dispositivo de tiempo de ejecución (50), una biblioteca de códigos de operación ("opcode") remota (60), una biblioteca de código de operación de servidor (70), y una sección de código de instrucciones de tiempo de ejecución remota (80). El dispositivo de tiempo de ejecución (50) está configurado de forma preferente para procesar conjuntos de instrucciones dinámicas. Un ejemplo de conjunto de instrucciones dinámicas es un conjunto de instrucciones PMRTI. Otro ejemplo de un conjunto de instrucciones dinámicas es un conjunto de instrucciones RPMRTI. La diferencia entre los dos conjuntos de instrucciones es que el conjunto PMRTI incluye aquellas funciones que pueden ser ejecutadas por el dispositivo sin cables mientras que el conjunto de instrucciones RPMRTI incluye aquellas funciones que pueden ser ejecutadas por el servidor PMRTI (30) que reside en la red (40).
El procesamiento de los conjuntos de instrucciones dinámicas incluye la ejecución de conjuntos PMRTI que son recibidos desde el servidor PMRTI (30) y la compilación de los conjuntos RPMRTI y los datos correspondientes para el envío al servidor PMRTI (30). De manera preferente, el dispositivo de tiempo de ejecución (50) puede ser activado mediante un dispositivo de comunicación sin cables (10) cuando resulte necesario de modo que funcione únicamente cuando sea necesario y consuma una cantidad mínima de recursos del sistema (por ejemplo, memoria, ciclos de la CPU, etc.) en el dispositivo (10).
La biblioteca de código de operación remota (60) incluye de forma preferente el universo de códigos de operación que representa cada función PMRTI o sección de código ejecutable. De manera ventajosa, la biblioteca de código de operación remota (60) incluye los códigos de operación que sirven como soportes de lugar para las funciones de código de máquina ejecutables existentes o secciones de código. De este modo, la biblioteca de código de operación remota (60) contiene una lista de todos los códigos de operación disponibles que corresponden con cada función PMRTI que puede ser ejecutada por el dispositivo de comunicaciones sin cables (10).
De manera similar, la biblioteca de código de operación del servidor (70) incluye de forma preferente el universo de códigos de operación que representan cada función RPMRTI o sección de código ejecutable. De manera ventajosa, la biblioteca de código de operación del servidor (70) incluye solo los códigos de operación para las funciones de código de máquina ejecutables existentes o secciones de código, que no residen en el dispositivo de comunicaciones sin cables (10). De este modo, la biblioteca de código de operación del servidor (70) contiene una lista de todos los códigos de operación para cada función RPMRTI disponible que puede ser ejecutada por el servidor PMRTI (30) en nombre del dispositivo de comunicaciones sin cables (10).
En la realización preferente, la cantidad de funciones RPMRTI disponibles puede exceder la cantidad de funciones PMRTI debido a que el servidor PMRTI (30) no sufre los problemas de recursos mínimos encontrados de manera típica en dispositivos móviles tales como teléfonos móviles o dispositivos PDA.
De forma adicional, el dispositivo de comunicación sin cables (10) incluye una parte de código de instrucciones de tiempo de ejecución remota (80). La parte de código (80) es donde el código de máquina real o las instrucciones ejecutables residen en la memoria permanente en el dispositivo (10). Dichas instrucciones ejecutables o secciones de código corresponden, de forma preferente, en una relación de uno a uno, con los códigos de operación contenidos en la biblioteca de código de operación remota (60). La figura 17B es un diagrama de bloques que muestra una parte de código a modo de ejemplo (80) de acuerdo con una realización de la presente invención. Tal como se muestra, cualquier número de las funciones PMRTI pueden ser incluidas en la sección de código (80), desde la instrucción 01 hasta la instrucción n. De manera óptima, un gran número de funciones está disponible en la sección de código (80) y aún así consume muy pocos recursos (por ejemplo, memoria permanente) del dispositivo (10).
De manera ventajosa, la biblioteca de código de operación de servidor (70), la biblioteca de código de operación remota (60), y la sección de código correspondiente (80) pueden ser instaladas en la memoria permanente en el dispositivo de comunicación sin cables (10) durante el proceso de fabricación de dicho dispositivo (10) y antes de su implementación en el campo (es decir, antes de ser vendido al consumidor). Las actualizaciones futuras del conjunto de códigos de operación contenidos en cualquiera de las bibliotecas o del conjunto de instrucciones ejecutables en la sección de código (80) pueden ser suministradas mediante el servidor PMRTI (30) implementando el proceso descrito más adelante haciendo referencia a la figura 22.
Finalmente, en la realización mostrada, el dispositivo de comunicaciones sin cables incluye un enlace de comunicaciones aéreo (90). La implementación del enlace de comunicaciones (90) es bien conocida en la técnica y proporciona al dispositivo de comunicaciones sin cables (10) la capacidad para comunicarse dentro de la red de comunicaciones sin cables (100) por radio u otra conexión aérea. De manera ventajosa, el enlace de comunicaciones aéreo (90) puede proporcionar los medios para que el servidor PMRTI (30) actualice la biblioteca de código de operación remota (60), la biblioteca de código de operación del servidor (70), y la parte de códigos de instrucciones de tiempo de ejecución remota (80).
La figura 18A es un diagrama de bloques que muestra un ejemplo de un servidor PMRTI (30) de acuerdo con una realización de la presente invención. Las características de un ordenador convencional que pueden implementar el servidor PMRTI son descritas posteriormente haciendo referencia a la figura 23.
En la realización mostrada, el servidor PMRTI (30) incluye un módulo de control (95), una biblioteca de código de operación remota (60), una biblioteca de código de operación del servidor (70), y una sección de código de instrucciones de tiempo de ejecución del servidor (82). La biblioteca de código de operación remota (60) y la biblioteca de código de operación del servidor (70) contienen de forma preferente la misma lista de códigos de operación que las bibliotecas que están presentes en el dispositivo de comunicaciones sin cables (10). El módulo de control (95) está configurado de forma preferente para procesar conjuntos de instrucciones dinámicas y administrar una red de comunicaciones PMRTI entre el servidor PMRTI (30) y una serie de dispositivos de comunicación sin cables disponible a través de dicha red de comunicaciones sin cables.
Por ejemplo, el módulo de control (95) puede compilar varios conjuntos PMRTI dinámicos y enviar los conjuntos de instrucciones a una serie de dispositivos de comunicaciones sin cables separados. De manera similar, el módulo de control (95) también puede recibir una serie de conjuntos de RPMRTI dinámicas y ejecutar las instrucciones en nombre del dispositivo de comunicaciones sin cables de transmisión.
La biblioteca de código de operación remota (60) incluye de forma preferente el universo de códigos de operación correspondientes a cada función PMRTI disponible o sección de código ejecutable. De manera ventajosa, la biblioteca de código de operación remota (60) comprende una lista de los códigos de operación que sirven como tomadores de lugar para las funciones de código de máquina ejecutables reales o secciones de código en la parte de código de instrucciones de tiempo de ejecución remota (80) (en el dispositivo de comunicaciones sin cables). De este modo, la biblioteca de código de operación remota (60) contiene una lista de todos los códigos de operación disponibles para todas las funciones PMRTI que pueden ser ejecutadas por un dispositivo de comunicaciones sin cables.
De manera similar, la biblioteca de código de operación del servidor (70) incluye de forma preferente el universo de los códigos de operación correspondientes a cada función RPMRTI o sección de código ejecutable. De forma ventajosa, la biblioteca de código de operación del servidor (70) incluye únicamente los códigos de operación para las funciones de código de máquina ejecutables reales o secciones de código que pueden ser llevadas a cabo en el servidor PMRTI (30). En la realización preferente, la cantidad de funciones RPMRTI disponibles puede exceder la cantidad de funciones PMRTI disponibles debido a que el servidor PMRTI (30) no sufre el problema de recursos mínimos encontrado de forma típica en dispositivos móviles tal como, por ejemplo, teléfonos móviles o dispositivos PDA.
De forma adicional, el servidor PMRTI (30) incluye la parte de código de instrucciones de tiempo de ejecución del servidor (82). Dicha parte de código (82) es el lugar en el que el código de máquina real o instrucciones ejecutables residen en la memoria permanente del servidor (30). Dichas instrucciones ejecutables o secciones de código se corresponden de manera preferente con una relación de uno a uno con los códigos de operación contenidos en la biblioteca de código de operación del servidor (70), que reside en el servidor (30) y en el dispositivo de comunicaciones sin cables (10). La figura 18B es un diagrama de bloques que muestra un ejemplo de parte de código de instrucciones de tiempo de ejecución del servidor de acuerdo con una realización de la presente invención.
La figura 19 es un diagrama de flujo que muestra un proceso a modo de ejemplo para la ejecución de conjuntos de instrucciones dinámicas en un dispositivo de comunicaciones sin cables de acuerdo con una realización de la presente invención. Inicialmente, en la etapa (500), el dispositivo sin cables recibe un conjunto de códigos de operación remotos. El conjunto de remotos puede ser recibido a través de un enlace de comunicaciones aéreo, por ejemplo un enlace con una red de comunicaciones sin cables. De forma preferente, los códigos de operación están optimizados para minimizar la cantidad de datos enviados por el aire. De forma adicional, una carga útil de datos puede ser incluida con el conjunto de códigos de operación recibidos por el dispositivo sin cables.
En la etapa (502), el dispositivo sin cables inicia su dispositivo de tiempo de ejecución para procesar el conjunto de código de operación remoto. Tal como se muestra en la etapa (504), el dispositivo de tiempo de ejecución analiza sintácticamente el conjunto de código de operación remoto y extrae la carga útil de datos en la etapa (506). Si no existe carga útil de datos, entonces esta etapa puede ser omitida. Si existe una carga útil de datos, entonces los datos resultantes pueden ser almacenados en una parte disponible de la memoria volátil para su utilización posterior. A continuación, el dispositivo de tiempo de ejecución obtiene las instrucciones ejecutables que corresponden con los códigos de operación en el conjunto de código de operación remoto, tal como se muestra en la etapa (508). Dichas instrucciones
pueden ser obtenidas de la parte de código de instrucciones de tiempo de ejecución remota del dispositivo sin cables.
Una vez que las instrucciones ejecutables correspondientes a los códigos de operación en el conjunto de código de operación remoto han sido obtenidas, el dispositivo de tiempo de ejecución ejecuta las instrucciones, tal como se muestra en la etapa (510). Cuando las instrucciones están siendo ejecutadas, cualesquiera datos necesarios para ser operados pueden ser obtenidos de la memoria volátil en la que la carga útil de datos es almacenada. De forma alternativa o adicional, cualesquiera datos necesarios para ser operados pueden estar contenidos como resultado de una instrucción ejecutada.
Por ejemplo, la carga útil de datos puede incluir un módulo de software actualizado para el dispositivo sin cables. De forma adicional, uno de los códigos de operación en el conjunto de códigos de operación remoto puede corresponder a una instrucción ejecutable para el reemplazo de una parte de memoria permanente por una parte de la carga útil de datos. En dicho ejemplo, la parte de memoria permanente que está siendo reemplazada es el módulo de software fuera de fecha y como resultado el módulo de software actualizado es cargado en la memoria permanente mediante la instrucción. De este modo, el conjunto de códigos de operación remoto y la carga útil de datos operan en el dispositivo sin cables para actualizar un módulo de software.
Una vez que el conjunto de instrucciones ha sido ejecutado en su totalidad por el dispositivo de tiempo de ejecución, dicho dispositivo de tiempo de ejecución puede ser finalizado, tal como se muestra en la etapa (512). De forma ventajosa, el dispositivo de tiempo de ejecución puede ser iniciado y finalizado de forma que sólo opera cuando es necesario. Este hecho ahorra recursos de sistema en el dispositivo sin cables, por ejemplo, puede ahorrar espacio de memoria volátil y ciclos de CPU.
La figura 20 es un diagrama de flujo que muestra un proceso de ejemplo para la compilación de conjuntos de instrucciones dinámicas en un dispositivo de comunicaciones sin cables de acuerdo con una realización de la presente invención. De manera inicial, el dispositivo de tiempo de ejecución es iniciado, tal como se muestra en la etapa (520). Una vez que el dispositivo de tiempo de ejecución está en funcionamiento, dicho dispositivo puede compilar un conjunto de códigos de operación de servidor, tal como se muestra en la etapa (522). El conjunto del servidor puede ser obtenido de un proceso en segundo plano ejecutado en el dispositivo sin cables. De manera alternativa, el conjunto de código de operación del servidor puede ser obtenido a partir de un proceso funcionando en el dispositivo sin cables bajo la dirección de un usuario.
Por ejemplo, el dispositivo sin cables puede incluir un conjunto de rutinas que son ejecutadas de forma periódica y automática por el sistema operativo para llevar a cabo el mantenimiento del sistema u otra función deseable. Dichos procedimientos pueden, como resultado de su ejecución, hacer que el dispositivo de tiempo de ejecución genere un conjunto de código de operación de servidor. De forma alternativa, un usuario puede iniciar un conjunto particular de rutinas que son ejecutadas únicamente cuando es requerido por el usuario. Dicho conjunto de rutinas también puede hacer que un conjunto de código de operación de servidor sea generado por el dispositivo de tiempo de ejecución. En los dos casos, el resultado es un conjunto de códigos de operación de servidor generado por el dispositivo de tiempo de ejecución, tal como se muestra en la etapa (522).
Una vez que el conjunto de códigos de operación de servidor ha sido generado, el dispositivo de tiempo de ejecución determina en la etapa (524) si dicho conjunto de códigos de operación de servidor debe ser acompañado por una carga útil de datos. Si existen datos que deben ir junto con el conjunto de códigos de operación de servidor, en la etapa (526) el dispositivo de tiempo de ejecución extrae los datos de la memoria volátil o permanente, o ejecuta una instrucción que devuelve los datos necesarios. Una vez que los datos han sido obtenidos, el dispositivo de tiempo de ejecución inserta a continuación los datos en el conjunto de códigos de operación de servidor, tal como se muestra en la etapa (528). Un modo simple para lograrlo es añadir la carga útil de datos al conjunto de códigos de operación de servidor en un único paquete de datos.
Una vez que la carga útil de datos ha sido combinada con el conjunto de códigos de operación de servidor, o si no se requiere una carga útil de datos, entonces el dispositivo de tiempo de ejecución envía el conjunto de códigos de operación de servidor (con o sin una carga útil de datos) al servidor, tal como se muestra en la etapa (530). Después de que el conjunto de códigos de operación de servidor ha sido enviado, el dispositivo de tiempo de ejecución puede ser finalizado para liberar recursos en el dispositivo sin cables, tal como se muestra en la figura (532).
La figura 21 es un diagrama de flujo que muestra un proceso a modo de ejemplo para la ejecución de conjuntos de instrucciones dinámicas en un servidor PMRTI de acuerdo con una realización de la presente invención. Inicialmente, en la etapa (540) el servidor recibe el conjunto de códigos de operación de servidor. El conjunto de códigos de operación es, de forma preferente, una lista de nombres que representa una serie de instrucciones ejecutables, con cada uno de los códigos de operación representando una instrucción ejecutable discreta o un conjunto discreto de instrucciones ejecutables. Una vez que el conjunto de códigos de operación de servidor ha sido recibido, el servidor analiza sintácticamente el conjunto de códigos de operación de servidor en la etapa (542) y extrae cualquier carga útil de datos incluida con el conjunto de códigos de operación de servidor, tal como se muestra en la etapa (544). Cuando la carga útil de datos es extraída, puede ser almacenada de manera temporaria en memoria volátil o en el servidor para su utilización posterior.
A continuación, el servidor obtiene el conjunto de instrucciones correspondientes, tal como se muestra en la etapa (546). De forma preferente, el conjunto de instrucciones correspondiente está almacenado en una parte de código de instrucciones de tiempo de ejecución del servidor que reside en la memoria permanente en la máquina servidor PMRTI. Una vez que el conjunto de instrucciones ha sido obtenido, entonces el servidor ejecuta el conjunto de instrucciones, tal como se muestra en la etapa (548). Cuando el conjunto de instrucciones está siendo ejecutado, las rutinas en ejecución pueden utilizar la carga útil de datos que vino junto con el conjunto de códigos de operación de servidor. De forma preferente, la carga útil de datos es almacenada en la memoria del servidor con dicho propósito. De manera alternativa, las rutinas en ejecución pueden incluir instrucciones que generan los datos necesarios para que el conjunto de instrucciones lleve a cabo su función.
La figura 22 es un diagrama de flujo que muestra un proceso a modo de ejemplo para la autorización del proveedor para la reprogramación del aparato telefónico. Inicialmente, en la etapa (580), el aparato telefónico recibe un pedido de reprogramación de un dispositivo de reprogramación. El dispositivo puede estar conectado al aparato manual mediante un cable serie directo o una conexión de red física local. El dispositivo puede además estar conectado a una serie de aparatos manuales mediante una conexión de red local o una conexión con cable en serie ramificado ("one-to-many") que permita trabajar al dispositivo de reprogramación con múltiples aparatos manuales.
Una vez que el aparato manual recibe el pedido de reprogramación, el intento de reprogramación, o un intento para determinar el código de acceso del aparato telefónico, envía una consulta al proveedor mediante comunicaciones sin cables, tal como se muestra en la etapa (582). Dicha consulta es enviada para determinar si la reprogramación del aparato manual es autorizada por el proveedor. Cuando el aparato manual recibe una respuesta del proveedor mediante a través de dichos medios de comunicación sin cables, dicho aparato telefónico determina si la operación de reprogramación es autorizada, tal como se muestra en la etapa (584). Si la reprogramación es autorizada, en la etapa (586) el aparato telefónico permite la reprogramación, por ejemplo, suministrando el código de acceso al dispositivo de reprogramación, en caso de que exista.
Si la reprogramación no es autorizada, el aparato manual niega el pedido de reprogramación, tal como se muestra en la etapa (588). De manera ventajosa, el proveedor puede registrar el pedido. De manera adicional, el proveedor puede solicitar al aparato telefónico información de localización como GPS para determinar la localización en la que el intento de reprogramación ha tenido lugar. Dicha información puede ser útil si el intento de reprogramación no fue autorizado.
La figura 23 es un diagrama de flujo que muestra un ejemplo de proceso de clave pública y privada para la autorización de proveedor para reprogramación del aparato telefónico. Inicialmente, en la etapa (590) el aparato telefónico recibe un pedido de reprogramación. A continuación, el aparato manual obtiene tanta información del dispositivo de reprogramación como sea posible. Por ejemplo, el aparato manual puede obtener la dirección IP del dispositivo de reprogramación o MIN, si el dispositivo está habilitado como sin cables. También puede obtenerse información adicional.
En la etapa (594), el aparato manual obtiene su propia información, tal como, por ejemplo, si MIN y ESN y otra información requerida por el proveedor para la identificación del aparato manual. Una vez que la información ha sido reunida, el aparato manual envía la información al proveedor, tal como se muestra en la etapa (596). Dicha información puede ser enviada al servidor de seguridad en la red sin cables para el procesamiento. Después de enviar la información, el aparato telefónico recibe una clave privada del proveedor, tal como se muestra en la etapa (598). Entonces el aparato manual convierte la clave privada utilizando su propia clave pública en la etapa (600) y recibe una clave del dispositivo de reprogramación en la etapa (602). Entonces el aparato manual lleva a cabo la comparación de la clave convertida con la clave del dispositivo de reprogramación para determinar si concuerdan, tal como se muestra en la etapa (604). Si las claves concuerdan, entonces se da autorización para la reprogramación, tal como se muestra en la etapa (608). Si las claves no concuerdan, sin embargo, entonces en la etapa (606) el aparato manual niega el pedido de reprogramación.
En el proceso descrito anteriormente (desde el punto de vista del aparato manual), es importante señalar que el proveedor utiliza la información del dispositivo de reprogramación para hacer contacto con el dispositivo de reprogramación y enviar la clave privada del proveedor al dispositivo de reprogramación de forma similar al modo en que el proveedor envía su clave privada al aparato manual en la etapa (598). La clave privada es la génesis de cualquier conversión de claves por el dispositivo de reprogramación y por lo tanto el dispositivo de reprogramación debe obtener la clave privada para poder convertirla y enviarla al aparato manual para la comparación. Si el dispositivo de reprogramación es incapaz de recibir la clave privada y convertirla y enviar la clave convertida al aparato manual, dicho aparato manual puede estar configurado para marcar el fin del tiempo asignado y rechazar la solicitud de reprogramación.
La figura 24 es un diagrama de flujo que muestra un proceso, a título de ejemplo, para la creación de una ventana de reprogramación libre de autorización en el aparato manual. En una realización en la que el proveedor tiene una gran existencia de teléfonos que necesitan ser reprogramados, el proveedor puede optar por desactivar los procedimientos de seguridad de reprogramación durante un determinado intervalo de tiempo. Por ejemplo, una ventana de 6 horas puede ser concebida para permitir que un suministro de servicio reprograme un bloque de aparatos manuales.
Inicialmente, el proveedor envía una instrucción a un grupo de aparatos manuales, o de forma alternativa a un solo aparato manual. Dicha instrucción puede ser entregada por el servidor PMRTI utilizando el conjunto de códigos de operación remotos descritos anteriormente. En la etapa (620), el aparato manual recibe dicha instrucción del proveedor. La instrucción hace que el aparato manual desactive los procedimientos de seguridad de reprogramación durante una ventana de tiempo determinada. La instrucción también puede ordenar al aparato manual que desactive los procedimientos de seguridad de reprogramación de forma indefinida. De forma alternativa, la instrucción puede decir al aparato manual active los procedimientos de seguridad. En este caso, la instrucción dice al aparato manual que desactive los procedimientos de seguridad por un intervalo de 6 horas, comenzado inmediatamente.
En la etapa (622), el aparato manual desactiva las características de seguridad de reprogramación. Entonces el aparato manual comprueba de forma periódica para determinar si se ha alcanzado el final del período predeterminado, tal como se muestra en la etapa (624). Si el período todavía sigue en efecto, el aparato manual continúa en espera, tal como se ha mostrado en la etapa (626). El período de espera entre cada comprobación puede ser ajustado con un intervalo pequeño, un intervalo grande, o un intervalo variable determinado por la cercanía con el momento de reactivar las características de reprogramación.
La figura 25 es un diagrama de flujo que muestra un ejemplo de un proceso PMRTI para la autorización del proveedor para la reprogramación del aparato manual. Inicialmente, el aparato manual recibe un pedido de reprogramación, tal como se muestra en la etapa (640). Cuando recibe dicho pedido, el aparato manual obtiene información del dispositivo de reprogramación, tal como se muestra en la etapa (642). Dicha información puede incluir un número de identificación de software (para validar la aplicación de reprogramación), un MIN, u otros identificadores únicos para el dispositivo de reprogramación o la aplicación o herramienta de software utilizada por el dispositivo de reprogramación.
En la etapa (644), el aparato telefónico obtiene su propia información de identificación como puede ser su MIN, ESN y otra información útil como su localización. Una vez que la información del aparato telefónico y del dispositivo de reprogramación ha sido obtenida, en la etapa (646) el aparato telefónico crea una carga útil de datos que incluye dicha información. También puede suministrarse información adicional. A continuación, en la etapa (648), el aparato telefónico compila un conjunto de códigos de operación de servidor incluyendo la carga útil de datos y un código de operación de servidor que representa una instrucción para que el servidor autorice la reprogramación. Este conjunto de códigos de operación de servidor es enviado al proveedor en la etapa (650) en la que es entregado primeramente al servidor PMRTI y luego al servidor de seguridad. Estos dos servidores pueden estar alojados en la misma máquina y hasta ser ejecutados como una sola aplicación de software combinado.
Después de que el conjunto de códigos de operación de servidor es procesado por el proveedor, el aparato manual recibe un conjunto de códigos de operación remoto del proveedor, tal como se muestra en la etapa (652). Cuando se recibe el conjunto de códigos de operación remoto, el aparato manual extrae la carga útil de datos en la etapa (654) y luego traduce los códigos de operación remotos del conjunto en instrucciones ejecutables, tal como se muestra en la etapa (656). El aparato manual ejecuta dichas instrucciones en la etapa (658) para determinar si la autorización ha sido suministrada por el proveedor. La autorización o negación desde el proveedor puede ser incluida en la carga útil de datos, con una instrucción que desempaqueta la respuesta de la carga útil de datos y envía la respuesta al sistema operativo o aplicación del aparato telefónico que está en comunicación con el dispositivo de reprogramación. Una vez que el aparato manual tiene su autorización o negación del proveedor, dicho aparato manual responde al dispositivo de reprogramación de una forma afirmativa o negativa de manera consecuente.
Del lado del servidor, el proveedor de forma preferente registra cada pedido de reprogramación de un aparato telefónico. Además, el proveedor puede mantener estadísticas sobre intentos de reprogramación satisfactorios y no satisfactorios. Además, el proveedor puede autorizar la reprogramación basándose en la información suministrada que pertenece al dispositivo de reprogramación. Además, el proveedor puede autorizar una reprogramación parcial del aparato manual. Por ejemplo, esto puede ser cuando aparatos manuales más antiguos son donados a refugios u otras organizaciones. Dichos aparatos manuales pueden ser reprogramados para ciertos tipos de acceso de red mientras que mantienen el MIN original del aparato manual.
La figura 26 es un diagrama de bloques que muestra un sistema informático a modo de ejemplo (550) que puede ser utilizado en conjunto con los numerosos ejemplos descritos en la presente descripción. Por ejemplo, el sistema informático (550) puede ser empleado como servidor PMRTI o servidor de seguridad que reside dentro de la red de comunicaciones sin cables. El sistema informático (550) también puede ser empleado como cualquiera de los varios sistemas informáticos de uso general o específico que comprenden la red de comunicaciones sin cables y sus componentes. Sin embargo, otros sistemas informáticos y arquitecturas pueden ser utilizados, tal como resultará evidente para las personas especializadas en la técnica.
El sistema informático (550) incluye de forma preferente como mínimo un procesador, tal como el procesador (552). Pueden proporcionarse procesadores adicionales, tal como un procesador auxiliar para administrar la entrada y salida, un procesador auxiliar para llevar a cabo operaciones matemáticas de coma flotante, un microprocesador especial que tenga una arquitectura apropiada para la ejecución rápida de algoritmos de procesamiento de señal (por ejemplo, procesador de señal digital), un procesador esclavo subordinado al sistema de procesamiento principal (por ejemplo, procesador posterior), un microprocesador adicional o controlador para sistemas de procesadores duales o múltiples, o un coprocesador. Dichos procesadores auxiliares pueden ser procesadores discretos o pueden estar integrados con el procesador (552).
El procesador (552) está conectado de forma preferente a un bus de comunicaciones (554). El bus de comunicaciones (554) puede incluir un canal de datos para facilitar la transferencia de información entre componentes de almacenamiento y otro tipo de componentes del sistema informático (550). El bus de comunicaciones (554) puede comprender un conjunto de señales utilizadas para la comunicación con el procesador (552), incluyendo un bus de datos, un bus de direcciones, y un bus de control (no mostrado). El bus de comunicaciones (554) puede comprender cualquier arquitectura de bus estándar o no estándar como, por ejemplo, arquitecturas de bus que estén en conformidad con la arquitectura estándar industrial ("ISA"), la arquitectura estándar industrial extendida ("EISA"), Arquitectura de Microcanales ("MCA"), bus local de interconexión de componentes periféricos ("PCI"), o estándares promulgados por el Instituto de Ingenieros Eléctricos y Electrónicos ("IEEE") incluyendo el bus de interfaz de propósito general IEEE 488 ("GPIB"), IEEE 696/S-100, y similares.
El sistema informático (550) incluye de forma preferente una memoria principal (556) y puede incluir también una memoria secundaria (558). La memoria principal (556) proporciona almacenamiento de instrucciones y datos para programas que se ejecutan en el procesador (552). La memoria principal (556) es de manera típica una memoria basada en semiconductores como una memoria de acceso aleatorio dinámica ("DRAM") y/o 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"), memoria de acceso aleatorio dinámica Rambus ("RDRAM"), memoria de acceso aleatorio ferroeléctrico ("FRAM"), y similares, incluyendo la memoria de solo lectura ("ROM").
La memoria secundaria (558) puede incluir de forma opcional una unidad de disco duro (560) y/o una unidad de almacenamiento extraíble (562), por ejemplo, una unidad de discos flexibles o "floppy", una unidad de cintas magnéticas, una unidad de discos compactos ("CD"), una unidad de disco versátil digital ("DVD"), etc. La unidad de almacenamiento extraíble (562) lee y/o escribe en un medio de almacenamiento extraíble (564) de un modo bien conocido. El medio de almacenamiento extraíble (564) puede ser, por ejemplo, un disco flexible o "floppy", una cinta magnética, CD, DVD, etc.
El medio de almacenamiento extraíble (564) es preferentemente un medio legible por un ordenador que tiene almacenado un código ejecutable por un ordenador (es decir, software) y/o datos. El software o datos almacenados en el medio de almacenamiento extraíble (564) es leído en el sistema informático (550) como señales de comunicación eléctricas (578).
En realizaciones alternativas, la memoria secundaria (558) puede incluir otros medios similares para permitir que los programas informáticos u otro tipo de datos o instrucciones sean cargados en el sistema informático (550). Dichos medios pueden incluir, por ejemplo, un medio de almacenamiento externo (572) y una interfaz (570). Ejemplos de medios de almacenamiento externo (572) pueden incluir una unidad de disco duro externa o una unidad óptica externa, o una unidad magneto-óptica externa.
Otros ejemplos de memoria secundaria (558) pueden incluir memorias basadas en semiconductores como una memoria de solo lectura programable ("PROM"), memoria de solo lectura programable y borrable ("EPROM"), memoria de solo lectura borrable de forma eléctrica ("EEPROM"), o memoria flash (memoria orientada a bloques similar a la EEPROM). También se incluye cualquier otro tipo de unidades de almacenamiento extraíble (572) e interfaces (570), que permitan que el software y los datos sean trasferidos desde la unidad de almacenamiento extraíble (572) hasta el sistema informático (550).
El sistema informático (550) puede incluir además una interfaz de comunicación (574). La interfaz de comunicación (574) permite que el software y los datos sean transferidos entre el sistema informático (550) y los dispositivos externos (por ejemplo, impresoras), redes, o fuentes de información. Por ejemplo, un programa o código ejecutable puede ser transferido al sistema informático (550) desde un servidor de red a través de una interfaz de comunicaciones (574). Ejemplos de interfaz de comunicaciones (574) incluyen un módem, una tarjeta de interfaz de red ("NIC"), un puerto de comunicaciones, un puerto o tarjeta PCMCIA, una interfaz de infrarrojos, y un fire-wire IEEE 1394, para nombrar unos pocos.
La interfaz de comunicaciones (574) implementa de forma preferente estándares de protocolo promulgados por la industria, tal como los estándares Ethernet IEEE 802, canal de fibra óptica, línea de subscriptor digital ("DSL"), línea de subscriptor digital asincrónica ("ADSL"), transmisión de rama, modo de transferencia asincrónica ("ATM"), red de servicios digitales integrados ("ISDN"), servicios de comunicaciones personales ("PCS"), protocolo de control de transmisión / protocolo de Internet ("TCP/IP"), protocolo de Internet de línea serie / protocolo punto a punto ("SLIP/PPP"), etc., pero también puede implementar protocolos de interfaz no estándar o personalizados.
El software y los datos transferidos a través de la interfaz de comunicaciones (574) tienen forma de manera general de señales de comunicación eléctricas (578). Dichas señales (578) son suministradas a una interfaz de comunicaciones (574) mediante un canal de comunicación (576). Dicho canal de comunicación (576) transporta las señales (578) y puede ser implementado utilizando una gran variedad de medios de comunicación incluyendo cables, fibras ópticas, líneas telefónicas convencionales, enlaces de telefonía móvil, enlaces de radiofrecuencia (RF), o enlaces infrarrojos, para nombrar unos pocos ejemplos.
El código ejecutable por el ordenador (es decir, programas informáticos o software) es almacenado en la memoria principal (556) y/o la memoria secundaria (558). Los programas informáticos también pueden ser recibidos mediante una interfaz de comunicaciones (574) y almacenados en la memoria principal (556) y/o la memoria secundaria (558). Dichos programas informáticos, cuando son ejecutados, permiten al sistema informático (550) llevar a cabo las numerosas funciones tal como han sido descritas anteriormente.
En esta descripción, el término "medio legible por ordenador" es utilizado para referirse a cualquier medio utilizado para proporcionar un código ejecutable por ordenador (por ejemplo, software o programas informáticos) al sistema informático (550). Ejemplos de dichos medios incluyen la memoria principal (556), la memoria secundaria (558) (incluyendo la unidad de disco duro (560), el medio de almacenamiento extraíble (564), y el medio de almacenamiento externo (572)), y cualquier dispositivo periférico acoplado de forma comunicativa con la interfaz de comunicación (574) (incluyendo un servidor de información de red u otro dispositivo de red). Dichos medios legibles por ordenador son medios para proporcionar código ejecutable, instrucciones de programación, y software al sistema informático (550).
En una realización que es implementada utilizando software, el mismo puede ser almacenado en un medio legible por ordenador y cargado en el sistema informático (550) mediante una unidad de almacenamiento extraíble (562), la interfaz (570), o la interfaz de comunicaciones (574). En este tipo de realización, el software es cargado en el sistema informático (550) en forma de señales de comunicación eléctricas (578). El software, cuando es ejecutado por el procesador (552), provoca de forma preferente que dicho procesador (552) lleve a cabo las características y funciones inventivas anteriormente descritas.
Varios ejemplos también pueden ser implementados principalmente en hardware que utiliza, por ejemplo, componentes tales como circuitos integrados específicos de aplicación ("ASICs"), o disposiciones de puertas programables de campo ("FPGAs"). La implementación de una máquina en estado hardware capaz de llevar a cabo las funciones descritas en la presente descripción resultará evidente para las personas especializadas en la técnica. Varios ejemplos pueden ser implementados utilizando una combinación de hardware y software.
Mientras que los sistemas y métodos particulares dados a conocer y descritos en detalle en la presente descripción son totalmente capaces de lograr los objetivos de la presente invención anteriormente mencionados, debe comprenderse que la descripción y los dibujos mostrados son representativos de la materia en cuestión que es ampliamente contemplada por la presente invención. Debe comprenderse además que el alcance de la presente invención engloba otras realizaciones que resultarán evidentes para las personas especializadas en la técnica, y que el alcance de la presente invención no está limitado más que por las reivindicaciones adjuntas.

Claims (21)

1. Método para mejorar la seguridad en la reprogramación de dispositivos de comunicación sin cables (10, 12, 14) que comprende las siguientes etapas:
recibir una solicitud de autorización de un dispositivo de comunicación sin cables reprogramable (10, 12, 14) en comunicación con el dispositivo de reprogramación (45), poseyendo la solicitud de autorización un identificador único (55) para el dispositivo de comunicación sin cables solicitante reprogramable (10, 12, 14);
consultar un área de almacenamiento de datos para reprogramar información que pertenece al dispositivo de comunicación sin cables reprogramable (10, 12, 14);
determinar la situación de programación actual del dispositivo de comunicación sin cables reprogramable (10, 12, 14); y
enviar una respuesta de autorización al dispositivo de autorización sin cables reprogramable (10, 12, 14) basada en la situación de programación actual.
2. Método, según la reivindicación 1, en el que la respuesta de autorización niega la reprogramación.
3. Método, según la reivindicación 1, en el que la respuesta de autorización permite la reprogramación.
4. Método, según la reivindicación 1, en el que la respuesta de autorización permite la reprogramación parcial.
5. Método, según la reivindicación 1, que comprende las siguientes etapas:
almacenar la solicitud de autorización y la respuesta de autorización en el área de almacenamiento de datos; y
asociar la solicitud de autorización y la respuesta de autorización con el dispositivo de comunicación solicitante sin cables reprogramable (10, 12, 14).
6. Método, según la reivindicación 1, en el que la solicitud de autorización comprende información de contacto para el dispositivo en reprogramación, comprendiendo además las siguientes etapas:
enviar una clave privada al dispositivo de comunicación sin cables reprogramable (10, 12, 14); y
enviar la clave privada al dispositivo de reprogramación (45), de manera que las claves privadas son convertidas por los respectivos dispositivos (10, 12, 14 y 45) y comparadas para determinar la respuesta de autorización de reprogramación.
7. Dispositivo susceptible de ser leído por ordenador que tiene almacenadas una o varias secuencias de instrucciones para provocar que uno o varios microprocesadores realicen las etapas para conseguir seguridad mejorada en la reprogramación de dispositivos de comunicación sin cables (10, 12, 14), comprendiendo dichas etapas:
recibir una solicitud de autorización de un dispositivo de comunicación sin cables reprogramable (10, 12, 14), poseyendo la solicitud de autorización un identificador único (55) para el dispositivo de comunicación sin cables reprogramable solicitante (10, 12, 14);
consultar un área de almacenamiento de datos para reprogramar información que pertenece al dispositivo de comunicación sin cables reprogramables (10, 12, 14);
determinar la situación de programación actual del dispositivo de comunicación sin cables reprogramable (10, 12, 14); y
enviar una respuesta de autorización al dispositivo de comunicación sin cables reprogramable (10, 12, 14) basada en la situación de programación actual.
8. Dispositivo susceptible de ser leído por ordenador, según la reivindicación 7, en el que la respuesta de autorización niega la reprogramación.
9. Dispositivo susceptible de ser leído por ordenador, según la reivindicación 7, en el que la respuesta de autorización permite la reprogramación.
10. Dispositivo susceptible de ser leído por ordenador, según la reivindicación 7, en el que la respuesta de autorización permite la reprogramación parcial.
\newpage
11. Dispositivo susceptible de ser leído por ordenador, según la reivindicación 7, que comprende además instrucciones para llevar a cabo las siguientes etapas:
almacenar la solicitud de autorización y la respuesta de autorización en el área de almacenamiento de datos; y
asociar la solicitud de autorización y la respuesta de autorización con el dispositivo de comunicación sin cables reprogramable solicitante (10, 12, 14).
12. Dispositivo susceptible de ser leído por ordenador, según la reivindicación 7, en el que la solicitud de autorización comprende información de contacto para el dispositivo de reprogramación, comprendiendo además instrucciones para llevar a cabo las siguientes etapas:
enviar una clave privada al dispositivo de comunicación sin cables reprogramable (10, 12, 14); y
enviar la clave privada al dispositivo de reprogramación (45), de manera que las claves privadas se convierten por respectivos dispositivos (10, 12, 14 y 45) y se comparan para determinar la respuesta de autorización de reprogramación.
13. Sistema para conseguir seguridad mejorada en la reprogramación de dispositivos de comunicación sin cables (10, 12, 14), cuyo sistema comprende:
un dispositivo de comunicación sin cables reprogramable (10, 12, 14) que tiene un interfaz en serie adaptable para comunicación con un dispositivo de reprogramación (45); y
un servidor de seguridad (35) acoplado en comunicación con el dispositivo de comunicación sin cables reprogramable (45) sobre una red de comunicación sin cables, de manera que el dispositivo de comunicación sin cables reprogramable (10, 12, 14) en respuesta a una comunicación del dispositivo de reprogramación (45), establece contacto con el servidor de seguridad (35) para autorización para ser reprogramado.
14. Sistema, según la reivindicación 13, que comprende además un área de almacenamiento de datos acoplada con el servidor de seguridad (35), estando el área de almacenamiento de datos configurada para almacenar información relacionada con la reprogramación de dispositivos de comunicación sin cables reprogramables (10, 12, 14).
15. Sistema, según la reivindicación 13, en el que el dispositivo de comunicación sin cables reprogramable (10, 12, 14) comprende un código de acceso (45), proporcionando el código de acceso (45) autorización para reprogramar el dispositivo de comunicación sin cables reprogramable (10, 12, 14).
16. Sistema, según la reivindicación 15, en el que el dispositivo de comunicación sin cables reprogramable (10, 12, 14) está configurado para negar la reprogramación cuando se proporciona el código de autorización.
17. Sistema, según la reivindicación 13, en el que el dispositivo de comunicación sin cables reprogramable (10, 12, 14) comprende además un indicador de acceso, de manera que el indicador de acceso es modificable por el servidor de seguridad (35).
18. Sistema, según la reivindicación 17, en el que el indicador de acceso es ajustado para permitir que el dispositivo de comunicación sin cables reprogramable (10, 12, 14) autorice la reprogramación.
19. Sistema, según la reivindicación 17, en el que el indicador de acceso es dispuesto para requerir que el servidor de seguridad (35) autorice la reprogramación del dispositivo de comunicación sin cables reprogramable (10, 12, 14).
20. Sistema, según la reivindicación 17, en el que el indicador de acceso es dispuesto para permitir reprogramación sin autorización.
21. Método para conseguir seguridad mejorada en la reprogramación de dispositivos de comunicación sin cables (10, 12, 14), cuyo método comprende las siguientes etapas:
recibir una solicitud de reprogramación en un dispositivo de comunicación sin cables reprogramable (10, 12, 14) desde un dispositivo de reprogramación (45) conectado a aquél;
enviar una solicitud desde el dispositivo de comunicación sin cables reprogramable (10, 12, 14) a un servidor de seguridad portador (35) con intermedio de medios de comunicación sin cables (20, 22);
recibir respuesta del servidor de seguridad (35) con intermedio de los medios (20, 22) de comunicación sin cables, autorizando o negando la respuesta dicha solicitud de reprogramación; y
responder a la solicitud de reprogramación de acuerdo con la respuesta.
ES02741113T 2001-07-26 2002-07-25 Sistema y metodo para mejorar la seguridad en el reacondicionamiento y reprogramacion de aparatos telefonicos moviles. Expired - Lifetime ES2248568T3 (es)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US09/917,026 US7328007B2 (en) 2001-07-26 2001-07-26 System and method for organizing wireless communication device system software
US916900 2001-07-26
US916460 2001-07-26
US917026 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/916,460 US7159214B2 (en) 2001-07-26 2001-07-26 System and method for compacting field upgradeable wireless communication device software code sections
US09/927,131 US7143407B2 (en) 2001-07-26 2001-08-10 System and method for executing wireless communications device dynamic instruction sets
US927131 2001-08-10
US09/969,305 US7386846B2 (en) 2001-07-26 2001-10-02 System and method for the management of wireless communications device system software downloads in the field
US969305 2001-10-02
PCT/IB2002/002906 WO2003010942A2 (en) 2001-07-26 2002-07-25 System and method for improved security in a handset reprovisioning and reprogramming

Publications (1)

Publication Number Publication Date
ES2248568T3 true ES2248568T3 (es) 2006-03-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.
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.
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.
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.
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.

Family Applications Before (8)

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.
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.
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.
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.
ES02751472T Expired - Lifetime ES2263799T3 (es) 2001-07-26 2002-07-25 Sistema y metodo para comunicacion telefonica punto por punto.

Country Status (9)

Country Link
EP (12) EP1410189B1 (es)
JP (11) JP2005505813A (es)
KR (10) KR100940178B1 (es)
CN (10) CN1275150C (es)
AT (9) ATE387658T1 (es)
AU (9) AU2002319569A1 (es)
DE (7) DE60205755T2 (es)
ES (9) ES2300454T3 (es)
WO (10) WO2003010663A2 (es)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143407B2 (en) * 2001-07-26 2006-11-28 Kyocera Wireless Corp. System and method for executing wireless communications device dynamic instruction sets
JP4417123B2 (ja) 2003-02-19 2010-02-17 パナソニック株式会社 ソフトウェア更新方法及び無線通信装置
EP1654640B1 (en) * 2003-06-04 2018-08-01 Qualcomm Incorporated Network having customizable generators of sofware updates and mobile electronic devices having customizable updating software
US7873956B2 (en) 2003-09-25 2011-01-18 Pantech & Curitel Communications, Inc. Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor
US7257583B2 (en) 2004-01-09 2007-08-14 Microsoft Corporation System and method for updating an on-device application catalog in a mobile device receiving a push message from a catalog server indicating availability of an application for download
KR100620729B1 (ko) * 2004-03-31 2006-09-13 주식회사 팬택앤큐리텔 소프트웨어 이미지 생성 방법
EP1757132B1 (en) * 2004-05-18 2013-07-17 Kyocera Corporation Modular data components for wireless communication devices
GB2416876B (en) * 2004-08-03 2007-01-10 Nec Technologies Export file processing within a mobile radio communications device
US7512939B2 (en) * 2004-10-05 2009-03-31 Neopost Technologies System and method of secure updating of remote device software
EP1659810B1 (en) * 2004-11-17 2013-04-10 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Updating configuration parameters in a mobile terminal
USRE48433E1 (en) 2005-01-27 2021-02-09 The Chamberlain Group, Inc. 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
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
US9477585B2 (en) * 2012-11-09 2016-10-25 Coherent Logix, Incorporated Real time analysis and control for a multiprocessor system
US10064251B2 (en) * 2013-03-15 2018-08-28 Cree, Inc. Updatable lighting fixtures and related components
CN103345412B (zh) * 2013-07-10 2016-08-24 华为技术有限公司 打补丁的方法及装置
US10652743B2 (en) 2017-12-21 2020-05-12 The Chamberlain Group, Inc. Security system for a moveable barrier operator
WO2019213672A1 (en) * 2018-05-04 2019-11-07 Herdx, Inc. Food supply tracking, verification, and feedback system
US11074773B1 (en) 2018-06-27 2021-07-27 The Chamberlain Group, Inc. Network-based control of movable barrier operators for autonomous vehicles
CA3107457A1 (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)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
ES2248568T3 (es) Sistema y metodo para mejorar la seguridad en el reacondicionamiento y reprogramacion de aparatos telefonicos moviles.
JP5072992B2 (ja) 無線によるエリアコード更新のためのシステムおよび方法
KR100718068B1 (ko) 어플리케이션에 의한 기억영역의 사용 관리 방법
JPWO2008050439A1 (ja) アプリケーション管理装置及びアプリケーション管理方法
KR100697174B1 (ko) 무선 파라메트릭 데이타 및 규제 데이타에 대한 근거리 및원거리 액세스 및 그 방법
WO2005121975A1 (ja) 移動機、及び、アクセス制御方法
KR20130132291A (ko) eUICC에 SIM 프로파일을 제공하는 방법 및 장치
US9390259B2 (en) Method for activating an operating system in a security module
US20040230801A1 (en) Data processing device and method and program of same
US7117494B2 (en) System and method for bi-directional communication and execution of dynamic instruction sets
JP2006514788A (ja) 移動体に提供されたアプリケーションの制御
ES2409807A2 (es) Método para gestionar comunicación sin contacto en un dispositivo de usuario
JP5185231B2 (ja) アクセス管理システムおよびアクセス管理方法
CN109040169A (zh) 管理配置文件的通信装置和方法
US20060080655A1 (en) System and method for post-issuance code update employing embedded native code
ES2243096T3 (es) Procedimiento, tarjeta chip y aparato para una interfaz logica entre dos aplicaciones.
IT201800004293A1 (it) Procedimento di gestione di sistemi operativi multipli in carte a circuito integrato, corrispondente sistema e prodotto informatico
KR20160134419A (ko) 복수의 가입자 식별 정보를 포함하는 스마트 카드를 이용한 가입자 식별 정보 변경 방법, 단말 및 컴퓨터 프로그램
KR101057671B1 (ko) 스마트카드를 이용한 카드 단말기의 업데이트 시스템 및 방법
EP3731548A1 (en) Distribution of instruction set modules
KR20040090566A (ko) 무선통신단말기에서 스마트카드를 이용한 소프트웨어업그레이드 방법
KR20060094807A (ko) 텔레메틱스를 위한 무선통신 모듈의 바이너리 파일 다운로드 방법
WO2011121143A1 (es) Sistema y método de configuración dinámica y remota de dispositivos móviles