JP2017518583A - System for installing software on a small memory device - Google Patents

System for installing software on a small memory device Download PDF

Info

Publication number
JP2017518583A
JP2017518583A JP2016571403A JP2016571403A JP2017518583A JP 2017518583 A JP2017518583 A JP 2017518583A JP 2016571403 A JP2016571403 A JP 2016571403A JP 2016571403 A JP2016571403 A JP 2016571403A JP 2017518583 A JP2017518583 A JP 2017518583A
Authority
JP
Japan
Prior art keywords
computer program
memory
program
data packet
boot loader
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.)
Granted
Application number
JP2016571403A
Other languages
Japanese (ja)
Other versions
JP6660311B2 (en
Inventor
トン,ペオウ オウ
トン,ペオウ オウ
チン グアン テイ
チン グアン テイ
Original Assignee
ホーム コントロール シンガポール プライベート リミテッド
ホーム コントロール シンガポール プライベート リミテッド
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
Application filed by ホーム コントロール シンガポール プライベート リミテッド, ホーム コントロール シンガポール プライベート リミテッド filed Critical ホーム コントロール シンガポール プライベート リミテッド
Publication of JP2017518583A publication Critical patent/JP2017518583A/en
Application granted granted Critical
Publication of JP6660311B2 publication Critical patent/JP6660311B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/4408Boot device selection
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Stored Programmes (AREA)
  • Small-Scale Networks (AREA)

Abstract

システム(100)が、(スモールメモリ)装置(110)へのコンピュータプログラムのインストールを可能にする。システムは、上記装置とホスト装置(180)とを含む。ホスト装置は、データパケットを送信するように配置される。データパケットの少なくともいくつかが、コンピュータプログラムのそれぞれの部分を含む。装置は、コンピュータプログラムを含有するためのプログラムメモリ(130)と、ブートローダを有するブートメモリ(120)と、プロセッサ(150)とを有する。ブートローダは、コンピュータプログラムをインストールするようにさらに配置される。ブートローダは、データパケットを検出することと、(a)コンピュータプログラムの部分、及び部分メタデータ、及び/又は(b)プログラムメタデータ、を抽出することと、上記部分メタデータに基づいてプログラムメモリ内のメモリ位置を決定することと、プログラムメモリ内に記憶された、抽出された部分を表す進捗情報を維持することと、進捗情報とプログラムメタデータとに基づいて部分の集合の記憶の完了を決定することと、を含む。The system (100) enables the installation of a computer program on the (small memory) device (110). The system includes the above device and a host device (180). The host device is arranged to transmit data packets. At least some of the data packets include respective portions of the computer program. The apparatus includes a program memory (130) for containing a computer program, a boot memory (120) having a boot loader, and a processor (150). The boot loader is further arranged to install a computer program. The boot loader detects a data packet, extracts (a) a portion of the computer program and partial metadata, and / or (b) program metadata, and in the program memory based on the partial metadata. Determining the memory location, maintaining the progress information representing the extracted part stored in the program memory, and determining the completion of the storage of the set of parts based on the progress information and the program metadata And including.

Description

本発明は、スモールメモリ装置にコンピュータプログラムをワイヤレスにダウンロードすること及びインストールすることに関する。例えば、スモールメモリ装置は、他のより複雑な電子装置、例えばスマートフォンなどと比較して、小さいメモリを典型的に有する電子装置、例えばリモート制御装置などであり得る。   The present invention relates to wirelessly downloading and installing a computer program into a small memory device. For example, the small memory device may be an electronic device that typically has a small memory, such as a remote control device, as compared to other more complex electronic devices such as a smartphone.

リモート制御装置は、種々のテクノロジーを使用して、消費者装置と相互作用することができる。よく知られるレガシー赤外線テクノロジーは、リモート制御装置が消費者装置を制御することを可能にする。リモート制御装置は赤外線送信器を有して、コマンドコードを含む赤外線信号を送信し、消費者装置は赤外線受信器を有して、赤外線信号を受信し、コマンドコードを抽出する。コマンドコードに応答して、消費者装置はアクションを実行することができる。例えば、消費者装置はTVであってもよく、リモート制御装置はユーザによってコマンドコードを送るのに使用され、TVが次のチャンネルに切り換わること又はボリュームを上げることが引き起こされる。   Remote control devices can interact with consumer devices using various technologies. Well-known legacy infrared technology allows remote control devices to control consumer devices. The remote control device has an infrared transmitter to transmit an infrared signal including a command code, and the consumer device has an infrared receiver to receive the infrared signal and extract the command code. In response to the command code, the consumer device can perform an action. For example, the consumer device may be a TV and the remote controller is used by the user to send a command code, causing the TV to switch to the next channel or increase the volume.

近代のリモート制御装置は、無線ベース能力を(さらに)有して家庭内の他の装置と相互作用し、ホスト装置から、リモート制御装置のソフトウェアアップデートをワイヤレスにダウンロードすることができる。例えば、無線ベース能力は、ZigBee(登録商標) RF4CEテクノロジーに基づき得る(さらに、2014年5月22日に閲覧された、ZigBeeアライアンスのウェブサイト:http://www.zigbee.org/Specifications/ZigBeeRF4CE/Overview.aspxを参照)。ソフトウェアアップデートには、様々な装置と相互作用するためのコマンドコードの最新データベースを含む、リモート制御装置のファームウェアが典型的に含まれる。新しいソフトウェアをワイヤレスにダウンロードすること及びインストールすることは、無線ダウンロード(Over-the-Air Download)(OAD)と一般にいわれる。OADは、リモート制御装置の生産プロセスの間、リモート制御装置上でソフトウェアを受信し及びインストールすることに使用されることができる。ホスト装置が、リモート制御装置とのワイヤレス接続を確立し、それから、ソフトウェアをリモート制御装置にワイヤレスに送信してもよい。   Modern remote control devices have (further) wireless-based capabilities to interact with other devices in the home and can wirelessly download remote control device software updates from the host device. For example, radio-based capabilities may be based on ZigBee® RF4CE technology (and the ZigBee Alliance website, accessed on May 22, 2014: http://www.zigbee.org/Specifications/ZigBeeRF4CE See /Overview.aspx). Software updates typically include remote control device firmware, including an up-to-date database of command codes for interacting with various devices. Downloading and installing new software wirelessly is commonly referred to as Over-the-Air Download (OAD). The OAD can be used to receive and install software on the remote controller during the remote controller production process. The host device may establish a wireless connection with the remote control device and then send the software wirelessly to the remote control device.

しかしながら、大量生産プロセス内でリモートコントロール上に新しいソフトウェアをインストールすることは、依然として、生産プロセス内で比較的非効率的な処理である。このことは、特に、生産の低コスト及び高スピードが重要である大量生産プロセス、例えば、リモート制御装置の生産プロセスなどにおいて当てはまる。OADを用いた新しいソフトウェアのインストールの間、ホスト装置及びリモート制御装置は、干渉を防止するために、例えば遮蔽ボックスを用いて、付近の他の(リモート制御)装置から遮蔽される必要がある。他のリモート制御装置の各々は、その独自の遮蔽ボックス内でその独自のインストールを、遮蔽ボックスの内側でその独自のホスト装置とペアにされて行う可能性がある。各装置がその独自のソフトウェアインストールを行うための遮蔽ボックスの使用は、面倒であり、生産プロセスのスピードを制限する。生産プロセスの非効率性は、装置自体へのダウンロードが比較的遅い処理であり得るという事実のため、さらに悪化される。   However, installing new software on a remote control within a mass production process is still a relatively inefficient process within the production process. This is particularly true in mass production processes where low cost and high speed of production are important, such as remote controller production processes. During the installation of new software using OAD, the host device and the remote control device need to be shielded from other nearby (remote control) devices, for example using a shielding box, to prevent interference. Each of the other remote control devices may perform its own installation within its own shielding box, paired with its own host device inside the shielding box. The use of a shielding box for each device to perform its own software installation is cumbersome and limits the speed of the production process. The inefficiency of the production process is further exacerbated by the fact that downloading to the device itself can be a relatively slow process.

さらに、上記インストールプロセスは、メモリ(及び、ゆえにコスト)の観点から非効率的であり、なぜならば、インストールプロセスの間、さらなるメモリを必要とするからである。新しいソフトウェアのインストールは、最初、リモート制御装置がさらなるメモリに新しいソフトウェアをダウンロードし及び記憶し、それから、ダウンロードされたソフトウェアを検証し、最後、リモート制御装置のメモリ内の既存のソフトウェアを上書きすることを必要とする。ゆえに、さらなるメモリは、新しいソフトウェアをダウンロードすることに主に使用され、他の時間には大部分使用されず、このことは、メモリの使用を非効率的にする。メモリの効率的な使用は、リモート制御装置などのスモールメモリ装置の大量生産プロセスにおいて特に重要であり、これにおいて、メモリサイズは最小限に保たれて、コスト及び材料費を低減させる。   Furthermore, the installation process is inefficient in terms of memory (and hence cost) because it requires additional memory during the installation process. Installation of new software means that the remote controller first downloads and stores the new software in additional memory, then verifies the downloaded software, and finally overwrites the existing software in the remote controller memory Need. Thus, the additional memory is mainly used for downloading new software and not much used at other times, which makes the memory usage inefficient. Efficient use of memory is particularly important in the mass production process of small memory devices, such as remote control devices, where the memory size is kept to a minimum, reducing cost and material costs.

目的の技術的課題は、従来技術と比較して向上した効率を有する、スモールメモリ装置にソフトウェアをインストールするシステム、方法、及び装置を提供することである。   The objective technical problem is to provide a system, method and apparatus for installing software in a small memory device which has an improved efficiency compared to the prior art.

本発明の一態様は、装置であって、コンピュータプログラムを含有する(containing)ためのメモリであるプログラムメモリと、当該装置をブートするように配置された(arranged)ブートローダを含むブートメモリと、上記コンピュータプログラム及び上記ブートローダを実行するプロセッサと、データパケットをワイヤレスに受信する受信ユニットであって、上記コンピュータプログラムの部分(portions)がそれぞれの上記データパケットのうち少なくともいくつかによって含まれる、受信ユニットと、を有し、上記ブートローダは、上記コンピュータプログラムをインストールするようにさらに配置され、上記データパケットのうちのデータパケットを検出することであって、該検出することは上記データパケットを受信することの一部である、ことと、上記データパケットから、(a)上記コンピュータプログラムの部分、及び該部分に関連した部分メタデータと、(b)上記コンピュータプログラムを集合的に形成する部分の集合に関連したプログラムメタデータと、のうち少なくとも1つを抽出することと、上記部分メタデータに基づいて上記プログラムメモリ内のメモリ位置を決定することと、上記プログラムメモリ内に記憶されている抽出された部分を表す進捗情報を維持することと、上記進捗情報と上記プログラムメタデータとに基づいて部分の上記集合の記憶の完了を決定することと、を含む。   One aspect of the present invention is an apparatus, a program memory that is a memory for containing a computer program, a boot memory that includes an arranged boot loader that is arranged to boot the apparatus, and A computer program and a processor for executing the boot loader; and a receiving unit for wirelessly receiving data packets, wherein a receiving unit includes portions of the computer program by at least some of the data packets. And the boot loader is further arranged to install the computer program, wherein the boot loader detects a data packet of the data packets, the detecting being for receiving the data packet Some And, from the data packet, (a) a portion of the computer program and partial metadata associated with the portion; and (b) program metadata associated with a set of portions collectively forming the computer program. And at least one of them, determining a memory location in the program memory based on the partial metadata, and progress information representing the extracted portion stored in the program memory And determining completion of storage of the set of portions based on the progress information and the program metadata.

装置は、スモールメモリ装置、例えば、リモートコントロール、電子玩具、ウェアラブル装置、又は音楽プレーヤなどであり得る。スモールコンピュータがそれ自体効率的であるよう、装置は、コンピュータプログラムとブートローダとを実行するプロセッサを含む。装置は、コンピュータプログラムを記憶するプログラムメモリをさらに含む。装置は、装置をブートするブートローダを含むブートメモリをさらに含む。装置は、データパケットを受信する受信ユニットをさらに有する。   The device can be a small memory device, such as a remote control, an electronic toy, a wearable device, or a music player. The device includes a processor that executes a computer program and a boot loader so that the small computer is itself efficient. The apparatus further includes a program memory that stores the computer program. The device further includes a boot memory that includes a boot loader that boots the device. The apparatus further comprises a receiving unit for receiving data packets.

プログラムメモリは、コンピュータプログラムを記憶するのに必要とされるメモリよりずっと大きい利用可能メモリを有してはいないことがある。例えば、プログラムメモリは、コンピュータプログラムを含有するのに十分なほど大きく、同時に、コンピュータプログラムのさらなるコピーをさらに含有するのには非常に小さい可能性がある(しかし、そうである必要はない)。後者の場合、ゆえに、プログラムメモリは、コンピュータプログラムとコンピュータプログラムのさらなるコピーとを含有することはできず、したがって、ブートローダは、最初、プログラムメモリに事前インストールされたコンピュータプログラムを上書きする前に、コンピュータプログラムをダウンロードすることができない。インストールされる必要があるコンピュータプログラムは、例えば、装置の新しいファームウェアを含むことがあり、設定の更新されたデータベースをさらに含むことがある。   Program memory may not have much more available memory than is required to store computer programs. For example, the program memory may be large enough to contain a computer program and at the same time very small (but need not be) to contain further copies of the computer program. In the latter case, therefore, the program memory cannot contain a computer program and a further copy of the computer program, and therefore the boot loader must first overwrite the computer program pre-installed in the program memory before the computer program is overwritten. The program cannot be downloaded. Computer programs that need to be installed may include, for example, new firmware for the device, and may further include an updated database of settings.

ブートローダは、その典型的タスクである装置のブートに対して追加で、装置にコンピュータプログラムをインストールするようにさらに配置される。ブートローダは、プロセッサにより実行されるときに、下記のとおり機能し得る。ブートローダは、受信ユニットを使用して、データパケットを含むワイヤレス信号について嗅ぎ付ける(スニフする)(sniff)。データパケットが検出されるとき、ブートローダは、受信ユニットを介してデータパケットをさらに受信することができる。それから、ブートローダは、データパケットから、コンピュータプログラムの部分と、該部分に関連した部分メタデータとを抽出することができる。次いで、ブートローダは、部分メタデータに基づいて、部分を記憶するためのプログラムメモリ内のメモリ位置を決定することができる。例えば、データパケットは、部分に関連した相対メモリ位置を含むヘッダを有してもよい。ブートローダは、ゆえに、プログラムメモリの所定の開始メモリ位置に相対メモリ位置を加算することによって、プログラムメモリ内の(絶対)メモリ位置を決定することができる。それから、部分は、決定されたメモリ位置に記憶されることができる。   The boot loader is further arranged to install a computer program on the device in addition to its typical task of booting the device. The boot loader may function as follows when executed by the processor. The boot loader uses the receiving unit to sniff the wireless signal including the data packet. When a data packet is detected, the boot loader can further receive the data packet via the receiving unit. The boot loader can then extract a portion of the computer program and partial metadata associated with the portion from the data packet. The boot loader can then determine a memory location in the program memory for storing the portion based on the portion metadata. For example, the data packet may have a header that includes a relative memory location associated with the portion. The boot loader can therefore determine the (absolute) memory location in the program memory by adding the relative memory location to the predetermined starting memory location in the program memory. The part can then be stored in the determined memory location.

ブートローダは、コンピュータプログラムのインストールが完了されたとブートローダが決定するまで、他のデータパケットを同様の方法で進めることができる。コンピュータプログラムのインストールは、コンピュータプログラムを集合的に形成する部分の集合がプログラムメモリ上に記憶されたとき、完了される。換言すると、インストールは、コンピュータプログラムを集合的に形成するすべての部分がプログラムメモリ内に記憶されたとき、完了される。ブートローダは、コンピュータプログラムのインストールを完了すると、それから、新たにインストールされたコンピュータプログラムを実行することによって装置をさらにブートすることができる。   The boot loader can proceed with other data packets in a similar manner until the boot loader determines that the installation of the computer program is complete. The installation of the computer program is completed when a set of parts that collectively form the computer program is stored on the program memory. In other words, the installation is completed when all parts that collectively form the computer program are stored in the program memory. When the boot loader completes the installation of the computer program, it can then boot the device further by executing the newly installed computer program.

ブートローダは、データパケットから、コンピュータプログラムを集合的に形成する部分の集合に関連したプログラムメタデータを抽出することができる。例えば、プログラムメタデータは、コンピュータプログラムを集合的に形成する部分の合計量を表す数を含んでもよい。さらに、ブートローダは、プログラムメモリ内に記憶されている抽出された部分を表す進捗情報を維持することができる。例えば、ブートローダが、該プログラムローダがプログラムメモリ内にインストールした部分の数の総数を保持してもよく、ゆえに、進捗情報は上記総数であり得る。ブートローダは、進捗情報とプログラム情報とに基づいて部分の集合の記憶の完了を決定することができる。例えば、記憶された部分の上記総数が部分の合計量に合致するとき、ブートローダは、コンピュータプログラムを集合的に形成するすべての部分がプログラムメモリ内に記憶されたと決定する。   The boot loader can extract program metadata associated with the set of portions that collectively form the computer program from the data packet. For example, the program metadata may include a number that represents the total amount of portions that collectively form the computer program. Further, the boot loader can maintain progress information representing the extracted portion stored in the program memory. For example, the boot loader may maintain a total number of parts that the program loader has installed in the program memory, so the progress information may be the total number. The boot loader can determine the completion of the storage of the set of parts based on the progress information and the program information. For example, when the total number of stored parts matches the total amount of parts, the boot loader determines that all parts that collectively form the computer program have been stored in program memory.

データパケットは、部分、及び該部分に関連した部分メタデータと、プログラムメタデータとを含むことができる。別法として、データパケットが、(a)部分、及び部分メタデータ、又は(b)プログラムメタデータ、のいずれかを含んでもよい。後者の場合、あらゆるデータパケットがコンピュータプログラムの部分を含みはしない。   The data packet may include a portion, partial metadata associated with the portion, and program metadata. Alternatively, the data packet may include either (a) part and partial metadata, or (b) program metadata. In the latter case, every data packet does not contain a part of the computer program.

本発明の効果は、ブートローダによるコンピュータプログラムのスモールメモリ装置へのインストールが、メモリの観点から、向上した効率を有することである。プログラムメモリは、コンピュータプログラムを記憶するのに十分なほど大きいことしか求められない。コンピュータプログラムのインストールに関して、コンピュータプログラムの追加コピーをさらに記憶するためのプログラムメモリ内の追加空間は必要とされない。したがって、インストールは、メモリの観点から、向上した効率を有する。   An advantage of the present invention is that the installation of a computer program into a small memory device by a boot loader has improved efficiency from a memory perspective. The program memory is only required to be large enough to store the computer program. For computer program installation, no additional space in the program memory is required to further store additional copies of the computer program. Thus, the installation has improved efficiency from a memory perspective.

場合により、ブートローダは、ラウンドロビン方式でデータパケットの集合を受信するように配置され、データパケットの集合は、部分の集合を集合的に含み、データパケットの集合は、単一のラウンドロビン期間内に送信される。コンピュータプログラムを集合的に形成するすべての部分が、単一のラウンドロビン期間内に受信されることができ、しかしながら、いくつかの部分の受信が何らかの理由で失敗する場合、こうした部分は任意の次のラウンドロビン期間の間に受信されることができる。結果として、部分の受信は、失敗した受信部分に関してロバストになり、インストールの間の失敗のために装置が「使えないもの(bricked)」になることを防止する。さらに、このことは、インストールの失敗の場合に、装置が再起動されることを可能にし、したがって、ブートローダはコンピュータプログラムのインストールを再開することができる。   In some cases, the bootloader is arranged to receive a set of data packets in a round-robin fashion, the set of data packets collectively including a set of portions, and the set of data packets is within a single round-robin period. Sent to. All parts that collectively form a computer program can be received within a single round robin period; however, if reception of some parts fails for any reason, these parts can be Can be received during the round robin period. As a result, the reception of the part is robust with respect to the failed received part, preventing the device from becoming “bricked” due to failure during installation. In addition, this allows the device to be restarted in the event of an installation failure, so the boot loader can resume the installation of the computer program.

場合により、部分の集合は、コンピュータプログラムを連続的に形成する連続部分であり、部分メタデータは、連続部分内の部分のランク(rank)に関連した情報を含む。例えば、集合が、部分#1、部分#2、・・・、部分#100までである100個の連続部分を含む。それから、例えば、部分#60の部分メタデータが、番号60であってもよく、この番号60は、連続部分の中の部分#60のランクを表す。ゆえに、部分は、そのランクに従って連続的に受信され得る。   In some cases, the set of parts is a continuous part that continuously forms a computer program, and the part metadata includes information related to the rank of the parts within the continuous part. For example, the set includes 100 consecutive parts up to part # 1, part # 2,..., Part # 100. Then, for example, the partial metadata of the part # 60 may be the number 60, and this number 60 represents the rank of the part # 60 in the continuous part. Thus, parts can be received continuously according to their rank.

本発明の別の態様が、装置にコンピュータプログラムをインストールするシステムであって、データパケットを送信するように配置されたホスト装置、を含み、上記データパケットのうち少なくともいくつかが、上記コンピュータプログラムのそれぞれの部分を含み、上記ホスト装置は、上記データパケットをワイヤレスに送信する送信ユニットを有し、上記装置は、コンピュータプログラムを含有するためのメモリであるプログラムメモリと、上記装置をブートするように配置されたブートローダを含むブートメモリと、上記コンピュータプログラム及び上記ブートローダを実行するプロセッサと、上記データパケットをワイヤレスに受信する受信ユニットと、を有し、上記ブートローダは、上記コンピュータプログラムをインストールするようにさらに配置され、上記データパケットのうちのデータパケットを検出することであって、該検出することは上記データパケットを受信することの一部である、ことと、上記データパケットから、(a)上記コンピュータプログラムの部分、及び該部分に関連した部分メタデータと、(b)上記コンピュータプログラムを集合的に形成する部分の集合に関連したプログラムメタデータと、のうち少なくとも1つを抽出することと、上記部分メタデータに基づいて上記プログラムメモリ内のメモリ位置を決定することと、上記プログラムメモリ内に記憶されている抽出された部分を表す進捗情報を維持することと、上記進捗情報と上記プログラムメタデータとに基づいて部分の上記集合の記憶の完了を決定することと、を含む。   Another aspect of the present invention is a system for installing a computer program in an apparatus, comprising a host device arranged to transmit data packets, at least some of the data packets being of the computer program The host device includes a transmission unit that wirelessly transmits the data packet, and the device boots the device and a program memory that is a memory for storing a computer program. A boot memory including a boot loader disposed; a processor that executes the computer program and the boot loader; and a receiving unit that wirelessly receives the data packet. The boot loader installs the computer program. And detecting a data packet of the data packets, wherein the detecting is part of receiving the data packet, and from the data packet, (a Extracting at least one of: a portion of the computer program, and partial metadata associated with the portion; and (b) program metadata associated with a set of portions collectively forming the computer program. Determining a memory location in the program memory based on the partial metadata; maintaining progress information representing the extracted portion stored in the program memory; and the progress information and the Determining completion of storage of the set of parts based on program metadata.

ゆえに、システムは、ブートローダを含む装置(本発明の一態様である上記の装置と整合する)と、ホスト装置とを含む。ホスト装置はデータパケットを送信することができ、該データパケットは装置によって受信され得る。例えば、システムがリモート装置の生産ラインの一部であってもよく、ホスト装置が、リモート制御装置である装置に新しいファームウェアのそれぞれの部分を含むパケットを送信してもよい。   Thus, the system includes a device that includes a boot loader (consistent with the device described above that is an aspect of the present invention) and a host device. The host device can send a data packet, which can be received by the device. For example, the system may be part of a production line for remote devices, and the host device may send a packet containing each part of the new firmware to the device that is the remote control device.

場合により、システムは、上記装置に従う複数の装置を含み、複数の装置の各々は、部分の集合のうちそれぞれの異なる初期部分に対応するそれぞれの異なる時点に上記検出を始動する。一効果は、コンピュータプログラムが複数のスモールメモリ装置にインストールされているとき、インストールが速度の観点から、向上した効率を有することである。装置のうち1つがそのインストールを、付近の複数の装置のうち別の装置のインストールと同時に実行することができる。各装置は、そのそれぞれの独自のホスト装置とのペアにされた接続を必要としない。代わって、複数の装置は、同じ単一のホスト装置から同じデータパケットを独立してスニフし、受信することができる。結果として、複数の装置が、データパケットを受信できるように単一のホスト装置の範囲内にある限り、コンピュータプログラムを同時にインストールすることができる複数の装置の量に対する制限は、存在しない。したがって、複数の装置にコンピュータプログラムをインストールする速度が、従来技術と比較して大きく増加する。   Optionally, the system includes a plurality of devices according to the device, each of the plurality of devices triggering the detection at a different time point corresponding to a different initial part of the set of parts. One advantage is that when a computer program is installed on multiple small memory devices, the installation has improved efficiency from a speed perspective. One of the devices can perform the installation simultaneously with the installation of another device of the plurality of nearby devices. Each device does not require a paired connection with its own unique host device. Alternatively, multiple devices can independently sniff and receive the same data packet from the same single host device. As a result, as long as multiple devices are within the scope of a single host device so that they can receive data packets, there is no limit on the amount of multiple devices that can simultaneously install a computer program. Therefore, the speed of installing a computer program on a plurality of devices is greatly increased as compared with the prior art.

本発明の別の態様が、システムにおいて使用されるホスト装置であって、
ラウンドロビン方式でデータパケットの集合を送信するように配置されたプロセッサであって、上記データパケットのうちの各データパケットがコンピュータプログラムの部分を含み、上記データパケットの上記集合は、上記コンピュータプログラムを集合的に形成する部分の集合を集合的に含み、データパケットの上記集合は、単一のラウンドロビン期間内に送信される、プロセッサと、上記データパケットをワイヤレスに送信する送信ユニットと、を含む。このことは、複数の装置が並列にコンピュータプログラムをインストールすることを可能にするだけでなく、さらに、複数の装置の各々がインストールをラウンドロビン期間の間又は次のラウンドロビン期間の間の任意の時間に開始することを可能にする。このことは、コンピュータプログラムの複数の装置へのインストールについて、速度とより実用的であることとの双方の観点から、効率をさらに増大させる。
Another aspect of the present invention is a host device used in the system,
A processor arranged to transmit a set of data packets in a round-robin manner, wherein each data packet of the data packets includes a computer program portion, and the set of data packets includes the computer program Collectively including a set of parts that form collectively, wherein the set of data packets includes a processor and a transmission unit that transmits the data packets wirelessly, transmitted within a single round-robin period. . This not only allows multiple devices to install the computer program in parallel, but also allows each of the multiple devices to install any round-robin period or any other during the next round-robin period. Allows to start on time. This further increases efficiency in terms of both speed and more practical installation of computer programs on multiple devices.

本発明の別の態様が、命令を含むコンピュータプログラム製品であって、上記命令がホスト装置のプロセッサにより実行されるときに、上記命令は上記プロセッサに、上記コンピュータプログラムからの部分を決定するステップと、上記部分に関連した部分メタデータを決定するステップと、上記部分と上記部分メタデータとを含むデータパケットを組み立てる(composing)ステップと、を実行させる。   Another aspect of the present invention is a computer program product comprising instructions, wherein when the instructions are executed by a processor of a host device, the instructions cause the processor to determine a portion from the computer program; Determining a partial metadata associated with the portion and composing a data packet including the portion and the partial metadata.

本発明の別の態様が、装置にコンピュータプログラムをインストールする方法であって、上記装置は、コンピュータプログラムを含有するためのメモリであるプログラムメモリと、上記装置をブートするように配置されたブートローダを含むブートメモリと、上記コンピュータプログラム及び上記ブートローダを実行するプロセッサと、データパケットをワイヤレスに受信する受信ユニットであって、上記コンピュータプログラムの部分がそれぞれの上記データパケットのうち少なくともいくつかによって含まれ、当該方法は、上記データパケットのうちのデータパケットを検出するステップであって、該検出するステップは上記データパケットを受信することの一部である、ステップと、上記データパケットから、(a)上記コンピュータプログラムの部分、及び該部分に関連した部分メタデータと、(b)上記コンピュータプログラムを集合的に形成する部分の集合に関連したプログラムメタデータと、のうち少なくとも1つを抽出するステップと、上記部分メタデータに基づいて上記プログラムメモリ内のメモリ位置を決定するステップと、上記プログラムメモリ内に記憶されている抽出された部分を表す進捗情報を維持するステップと、上記進捗情報と上記プログラムメタデータとに基づいて部分の上記集合の記憶の完了を決定するステップと、を含む。   Another aspect of the present invention is a method for installing a computer program in an apparatus, the apparatus comprising: a program memory that is a memory for containing a computer program; and a boot loader that is arranged to boot the apparatus. Including a boot memory, a processor for executing the computer program and the boot loader, and a receiving unit for wirelessly receiving data packets, wherein a portion of the computer program is included by at least some of the data packets, The method includes detecting a data packet of the data packets, the detecting step being a part of receiving the data packet; and from the data packet, (a) the above Computer Extracting at least one of a program part and part metadata associated with the part; and (b) program metadata associated with a set of parts that collectively form the computer program; Determining a memory location in the program memory based on partial metadata; maintaining progress information representing an extracted portion stored in the program memory; and the progress information and the program metadata Determining completion of storage of the set of parts based on.

本発明の別の態様が、命令を含むブートローダを含むコンピュータプログラム製品であって、上記ブートローダがプロセッサにより実行されるときに、上記ブートローダは上記プロセッサに請求項14に記載の方法を実行させる。   Another aspect of the present invention is a computer program product including a boot loader that includes instructions, wherein when the boot loader is executed by a processor, the boot loader causes the processor to perform the method of claim 14.

本発明の上記及び他の態様が、以降に説明される実施形態から明らかになり、該実施形態を参照して説明される。   These and other aspects of the invention will be apparent from and will be elucidated with reference to the embodiments described hereinafter.

異なる図において同じ参照番号を有するアイテムは、同じ構造的特徴及び同じ機能を有することが留意されるべきである。こうしたアイテムの機能及び/又は構造が説明されている場合、詳細な説明において該アイテムの説明が繰り返される必要がない。
スモールメモリ装置にコンピュータプログラムをインストールするシステムを例示する。 複数のスモールメモリ装置を含むシステムを例示する。 コンピュータプログラムのラウンドロビンインストールの間の、2つのスモールメモリ装置のメモリとホスト装置のメモリとを例示する。 コンピュータプログラムのインストールの完了におけるスモールメモリ装置のメモリを例示する。 コンピュータプログラムの別のラウンドロビンインストールの間の、スモールメモリ装置及びホスト装置のメモリを例示する。 コンピュータプログラムの最後の部分を記憶し、かつ部分を再順序付けする前の、スモールメモリ装置のメモリを例示する。 スモールメモリ装置にコンピュータプログラムをインストールする方法を例示する。
It should be noted that items having the same reference number in different figures have the same structural features and the same function. Where the function and / or structure of such an item has been described, the description of the item need not be repeated in the detailed description.
1 illustrates a system for installing a computer program in a small memory device. 1 illustrates a system including a plurality of small memory devices. 2 illustrates the memory of two small memory devices and the memory of a host device during a round robin installation of a computer program. 6 illustrates the memory of a small memory device upon completion of installation of a computer program. Fig. 6 illustrates the memory of the small memory device and the host device during another round robin installation of the computer program. Fig. 4 illustrates the memory of a small memory device before storing the last part of the computer program and reordering the parts. A method for installing a computer program in a small memory device is illustrated.

図1aは、スモールメモリ装置(small-memory device)DEV110にコンピュータプログラムをインストールするシステム100を例示している。システム100は、ホスト装置HST180(以降:ホストHST)、及びスモールメモリ装置DEV(以降:装置DEV)を含む。ホストHSTは、送信ユニットSND190を有する。装置DEVは、受信ユニットRCV170、ブートメモリMBOOT120、プログラムメモリMPROG130、アクティブメモリMACT140、及びプロセッサPROC150を有する。プロセッサPROCは、ブートメモリMBOOT、プログラムメモリMPROG、アクティブメモリMACT、及び受信ユニットRCVと、接続152−153及び171それぞれを通してデータを交換することができる。   FIG. 1 a illustrates a system 100 that installs a computer program on a small-memory device DEV 110. The system 100 includes a host device HST180 (hereinafter: host HST) and a small memory device DEV (hereinafter: device DEV). The host HST has a transmission unit SND190. The device DEV has a receiving unit RCV170, a boot memory MBOOT120, a program memory MPROG130, an active memory MACT140, and a processor PROC150. The processor PROC can exchange data with the boot memory MBBOOT, the program memory MPROG, the active memory MACT, and the receiving unit RCV through connections 152-153 and 171 respectively.

ホストHSTは、部分単位で送信ユニットSND190を介してコンピュータプログラムを送信することができ、各部分は、それぞれのデータパケットにより含まれる。ゆえに、コンピュータプログラムは全体として、データパケットの集合により、集合的に含まれる。ホストHSTはワイヤレス信号191を送信し、ワイヤレス信号191はデータパケットを含有し得る。ホストHSTは、図1aに図示されていない他の要素、例えば、プロセッサ、ホストメモリ、及び、別のネットワーク及び/又はインターネットに接続するネットワーク通信ユニットなどを含んでもよい。   The host HST can transmit the computer program in units of parts via the transmission unit SND 190, each part being included by a respective data packet. Therefore, the computer program as a whole is collectively contained by a set of data packets. The host HST transmits a wireless signal 191, which may contain data packets. The host HST may include other elements not shown in FIG. 1a, such as a processor, host memory, and a network communication unit that connects to another network and / or the Internet.

ホストHSTは、そのホストメモリに記憶されたコンピュータプログラムを有することができ、コンピュータプログラムからのデータパケットを下記のとおり決定することができる。ホストHSTは、最初、コンピュータプログラムを連続した部分へと分割する。上記部分は、サイズが異なってもよく、あるいは等しいサイズのものであってもよい。ホストは、部分に対するヘッダを先頭に付加すること(pre-pending)によって、データパケットを組み立てる。ヘッダは、部分に関連した部分メタデータを含むことができる。例えば、ヘッダは、パケット識別子と、部分を記憶する相対メモリ位置と、データパケットにより含まれる部分の(バイト単位における)サイズとを含んでもよい。ヘッダは、コンピュータプログラムを集合的に形成する部分の集合に関連したプログラムメタデータを代わって含んで(あるいは、さらに含んで)もよい。例えば、プログラムメタデータは、コンピュータプログラムを集合的に形成する部分の合計数を含んでもよい。あるいは、別の例として、プログラムメタデータは、コンピュータプログラムのバイト単位における合計サイズを含んでもよい。   The host HST can have a computer program stored in its host memory and can determine a data packet from the computer program as follows. The host HST first divides the computer program into successive parts. The portions may be different in size or may be of equal size. The host assembles the data packet by pre-pending the header for the part. The header can include partial metadata associated with the portion. For example, the header may include a packet identifier, a relative memory location that stores the portion, and the size (in bytes) of the portion included by the data packet. The header may alternatively (or additionally) include program metadata associated with a set of parts that collectively form a computer program. For example, the program metadata may include the total number of portions that collectively form the computer program. Alternatively, as another example, the program metadata may include a total size in bytes of the computer program.

一実施形態において、各データパケットは、同様のフォーマット及び内容を有する。例えば、各データパケットは、部分と、関連した部分メタデータと、さらにプログラムメタデータとを含んでもよい。別の実施形態において、2つのタイプのデータパケットが存在してもよい。第1のタイプのデータパケットが、部分と関連部分メタデータとを含有してもよく、第2のタイプのデータパケットが、プログラムメタデータを含有してもよい。プロセッサPROCが、各々の連続したデータパケット内で同じプログラムメタデータを受信する必要がないとき、ホストHSTは、時おりのみ、第2のタイプのデータパケットを送信してもよい。   In one embodiment, each data packet has a similar format and content. For example, each data packet may include a portion, associated partial metadata, and further program metadata. In another embodiment, there may be two types of data packets. The first type of data packet may contain a part and associated part metadata, and the second type of data packet may contain program metadata. When the processor PROC does not need to receive the same program metadata in each successive data packet, the host HST may only send a second type of data packet only occasionally.

下記のデータパケットの例について検討する。パケット識別子は、番号であり得る。コンピュータプログラムの第1の部分を含むデータパケットが、番号1であるパケット識別子を有し得る。第2の部分を含むデータパケットが、番号2であるパケット識別子を有し得る、などする。例えば、コンピュータプログラムが500キロバイトを含み、上記500キロバイトが各々1024バイト(1kb)の500個の部分に分割されてもよく、データパケットの合計数を500にすることになる。それから、500個のデータパケットの集合は、コンピュータプログラムを集合的に含むすべての部分を集合的に含み、ゆえに、上記集合の各データパケットは、コンピュータプログラムのそれぞれの部分を含む。部分の相対メモリ位置は、プログラムメモリMPROG内の開始位置に相対した、メモリ内でのその位置を示すことができる。例えば、コンピュータプログラムの第1の部分を含むデータパケットは、相対メモリ位置0000(ゼロ)を有することがあり、コンピュータプログラムの第2の部分を含むデータパケットは、相対メモリ位置1024を有することがあり、それから、第3の部分は、メモリ位置2048に関連する等である。さらに、データパケットヘッダが例えば64バイトの固定サイズを有する場合、データパケットのサイズは1088になることに留意する。   Consider the following data packet example: The packet identifier can be a number. The data packet containing the first part of the computer program may have a packet identifier that is number 1. A data packet that includes the second portion may have a packet identifier that is number 2, and so on. For example, a computer program may include 500 kilobytes, and the 500 kilobytes may be divided into 500 parts each of 1024 bytes (1 kb), resulting in a total number of data packets of 500. Then, the set of 500 data packets collectively includes all parts that collectively contain the computer program, and thus each data packet of the set includes a respective part of the computer program. The relative memory location of the part can indicate its location in memory relative to the starting location in program memory MPROG. For example, a data packet that includes a first portion of a computer program may have a relative memory location 0000 (zero), and a data packet that includes a second portion of a computer program may have a relative memory location 1024. , Then the third part is related to memory location 2048, and so on. Furthermore, note that if the data packet header has a fixed size of, for example, 64 bytes, the size of the data packet is 1088.

部分は、同じサイズのものであってもよいが、サイズにおいて異なってもよい。すべての部分が同じサイズである場合、部分の相対メモリ位置は、上記サイズとそれぞれのパケット番号とに基づいて率直な方法で計算されることができる。すなわち、相対メモリ位置は、(パケット番号−1)×部分サイズとして計算される。それから、相対メモリ位置は、ヘッダ内に明示的に含まれる必要がない。別法として、上記部分は、それぞれ異なるサイズである。この場合、相対メモリ位置の計算はあまり率直でなくなり、ゆえに、ヘッダ内に相対メモリ位置を含むことが有益であり得る。   The portions may be of the same size but may differ in size. If all parts are the same size, the relative memory location of the parts can be calculated in a straightforward manner based on the size and the respective packet number. That is, the relative memory position is calculated as (packet number-1) × partial size. Then the relative memory location need not be explicitly included in the header. Alternatively, the portions are different sizes. In this case, the calculation of the relative memory location is not very straightforward and therefore it may be beneficial to include the relative memory location in the header.

別法として、データパケットは、相対メモリ位置でなく、プログラムメモリMPROG内で部分を記憶する絶対メモリ位置を含んでもよい。それから、部分は、プログラムメモリMPROG内の絶対メモリ位置に直接記憶される。   Alternatively, the data packet may include absolute memory locations that store portions within the program memory MPROG, rather than relative memory locations. The part is then stored directly in an absolute memory location in the program memory MPROG.

装置DEVは、ブートメモリMBOOTを有し、ブートメモリMBOOTは、ブートローダを含む不揮発メモリであり得る。ブートローダは、装置DEVをブートするのに役立つソフトウェアを含む。装置DEVのブートは、プロセッサPROCがブートローダをアクティブメモリMACTにロードし、その後ブートローダを実行するとき、実行される。装置DEVをブートすることに対して追加で、本発明におけるブートローダは、コンピュータプログラムのインストールを実行するソフトウェア機能をさらに含む。コンピュータプログラムのインストールは、不揮発メモリであるプログラムメモリMPROGにコンピュータプログラムを記憶することを含む。   The device DEV has a boot memory MBBOOT, which can be a non-volatile memory including a boot loader. The boot loader contains software that helps boot the device DEV. The device DEV is booted when the processor PROC loads the boot loader into the active memory MACT and then executes the boot loader. In addition to booting the device DEV, the boot loader in the present invention further includes a software function that performs installation of a computer program. The installation of the computer program includes storing the computer program in a program memory MPROG that is a non-volatile memory.

ブートローダをプロセッサPROCにより実行するとき、装置DEVは、下記のとおり動作し得る。   When the boot loader is executed by the processor PROC, the device DEV can operate as follows.

プロセッサPROCがブートローダを実行するとき、装置DEVは、ホストHSTにより送信されているデータパケットについて「嗅ぎ付け(スニフ)(sniffing)」を開始する。データパケットのスニフは、装置DEVが受信ユニットRCVを介してワイヤレス信号191を受信し、データパケットの存在についてワイヤレス信号を調べることを暗に示す。例えば、プロセッサは、ホストHSTからの任意のデータパケットの始まりを特色づける所定のデータシーケンスを検出することによって、データパケットを検出することができる。それから、装置DEVは、データパケット全体を受信することができる。例えば、各データパケットが所定のバイト数に制限されてもよく、したがって、プロセッサDEVは、データパケット全体を受信するためには、データパケットの上記始まりから上記所定のバイト数を受信することを必要とされる。   When the processor PROC executes the boot loader, the device DEV starts “sniffing” on the data packet being sent by the host HST. The sniff of the data packet implies that the device DEV receives the wireless signal 191 via the receiving unit RCV and examines the wireless signal for the presence of the data packet. For example, the processor can detect a data packet by detecting a predetermined data sequence that characterizes the beginning of any data packet from the host HST. The device DEV can then receive the entire data packet. For example, each data packet may be limited to a predetermined number of bytes, so the processor DEV needs to receive the predetermined number of bytes from the beginning of the data packet in order to receive the entire data packet It is said.

データパケットは、アクティブメモリMACTに書き込まれることができる。データパケットは固定のヘッダサイズを有することができ、プロセッサPROCはデータパケットからヘッダを抽出することができる。ヘッダは、部分のサイズを含んでもよく(例えば、部分は1024バイトから成る)、したがって、プロセッサPROCは、部分を含有するアクティブメモリ内のメモリ位置を決定することができる。それから、プロセッサPROCは、アクティブメモリMACTから部分を読み出すことができる。それから、プロセッサPROCは、ヘッダと部分との双方をデータパケットから抽出する。   Data packets can be written to the active memory MACT. The data packet can have a fixed header size, and the processor PROC can extract the header from the data packet. The header may include the size of the part (eg, the part consists of 1024 bytes), so the processor PROC can determine the memory location in active memory that contains the part. The processor PROC can then read the part from the active memory MACT. The processor PROC then extracts both the header and the part from the data packet.

上記の実施形態は、揮発メモリであるアクティブメモリMACTを含むが、技術的に、代わって不揮発メモリを使用することがさらに可能であり得る。現在、揮発メモリは、不揮発メモリと比較して揮発メモリからの読み出し及び揮発メモリへの書き込みがかなりより高速であるため、多くのアプリケーションに対して典型的に好まれる。しかしながら、ハードウェア革新に起因して、将来の不揮発メモリが、現在の不揮発メモリと比較してより大きい速度を有することが自然に予期される。いくつかの実施形態について、将来の不揮発メモリの速度は、アクティブメモリMACTにおける使用に対して受け入れ可能になり得る。将来の不揮発メモリを使用した実施形態の一例が、可能性として、消費者装置(consumer device)を制御するリモート制御装置である装置DEVであり得る。   The above embodiments include active memory MACT, which is volatile memory, but technically it may further be possible to use non-volatile memory instead. Currently, volatile memory is typically preferred for many applications because it is much faster to read from and write to volatile memory compared to non-volatile memory. However, due to hardware innovation, it is naturally expected that future non-volatile memory will have a greater speed compared to current non-volatile memory. For some embodiments, future non-volatile memory speeds may be acceptable for use in active memory MACT. An example of an embodiment using a future non-volatile memory could possibly be a device DEV, which is a remote control device that controls a consumer device.

データパケットの完全性を検証するために、ヘッダは、パケットチェックサムをさらに含んでもよい。プロセッサPROCは、パケットチェックサムと受信したデータパケットとが整合的であるかどうかを検証することができる。このことが当てはまらない場合、プロセッサPROCは、受信したデータパケットが壊されていると結論づけることができ、応答において、データパケットのさらなる処理を中止することができる。それから、プロセッサPROCは、別のデータパケットについてスニフすることで続行してもよい。プロセッサPROCは、上記で言及されたとおり、ヘッダから相対メモリ位置をさらに抽出してもよい。それから、プロセッサPROCは、部分を記憶するためのプログラムメモリMPROG内の絶対メモリ位置を決定してもよい。上記絶対メモリ位置は、プログラムメモリ内の所定の開始メモリ位置に対して相対メモリ位置を加算することによって決定されることができる。それから、プロセッサPROCは、プログラムメモリMPROG内の上記絶対メモリ位置に、抽出された部分を記憶する(書き込む)ことができる。   In order to verify the integrity of the data packet, the header may further include a packet checksum. The processor PROC can verify whether the packet checksum and the received data packet are consistent. If this is not the case, the processor PROC can conclude that the received data packet has been corrupted and can stop further processing of the data packet in response. The processor PROC may then continue by sniffing for another data packet. The processor PROC may further extract the relative memory location from the header, as mentioned above. The processor PROC may then determine an absolute memory location in the program memory MPROG for storing the part. The absolute memory location can be determined by adding a relative memory location to a predetermined starting memory location in program memory. The processor PROC can then store (write) the extracted part in the absolute memory location in the program memory MPROG.

下記において、「プログラムメモリMPROG内に部分を記憶すること」は、「部分をインストールすること」ともいわれることが留意されるべきである。同様に、コンピュータプログラムは、コンピュータプログラムを集合的に形成するすべての部分がプログラムメモリMPROG内に記憶されているとき、「インストールされて」おり、各部分は、プログラムメモリMPROG内のその適切なメモリ位置に記憶される。   In the following, it should be noted that “storing a part in the program memory MPROG” is also referred to as “installing a part”. Similarly, a computer program is “installed” when all the parts that collectively form the computer program are stored in the program memory MPROG, and each part is in its appropriate memory in the program memory MPROG. Stored in position.

部分をインストールした後、又はインストールしている間、プロセッサPROCは、次のデータパケットについてスニフすることと、該次パケットについて上記の処理を繰り返すこととで続行することができる。プロセッサPROCは、コンピュータプログラムを集合的に形成するすべての部分がインストールされるまで、データパケットを受信することとそれぞれの部分をインストールすることとの処理を継続することができる。それから、装置DEVにコンピュータプログラムをインストールすることが完了される。   After or during the installation of the part, the processor PROC can continue by sniffing for the next data packet and repeating the above process for the next packet. The processor PROC can continue the process of receiving the data packet and installing each part until all parts collectively forming the computer program are installed. Then, the installation of the computer program on the device DEV is completed.

すべての部分の記憶の完了の決定は、下記のとおり作用し得る。プロセッサPROCは、インストールされたコンピュータプログラムのすべての部分の記録をつけることができる。下記の例について検討する。プロセッサPROCは、データパケットのヘッダから、部分の合計量が500であると決定する。ゆえに、プログラムメタデータは、500である上記合計量を含む。それから、プロセッサPROCは、各フラグがパケット番号に対応する500個のフラグのリストを維持することによって記録をつけ、対応する部分がすでにインストールされているかどうかを明示することができる。例えば、フラグ#25はパケット番号#25に対応し、部分#25がインストールされているかどうかを明示する。ゆえに、プログラムメタデータはパケット番号#25を含み、この番号がしたがって、連続した部分#1〜#500の、ランク#25の部分を表す。第1の部分をインストールする前、リストは、該リストのすべてのフラグを0(ゼロ)に設定することによって初期化される。それから、プロセッサPROCが部分を毎回インストールするたび、プロセッサPROCは、該部分の対応フラグを1(イチ)に設定する。プロセッサPROCは、上記リストのすべてのフラグが1に設定されたと決定すると、すべての500個の部分がインストールされたと決定する。   The decision to complete the memory of all parts can work as follows. The processor PROC can keep track of all parts of the installed computer program. Consider the following example. The processor PROC determines that the total amount of parts is 500 from the header of the data packet. Therefore, the program metadata includes the total amount that is 500. The processor PROC can then keep a record by maintaining a list of 500 flags, each flag corresponding to a packet number, to indicate whether the corresponding part is already installed. For example, flag # 25 corresponds to packet number # 25 and specifies whether or not part # 25 is installed. Thus, the program metadata includes packet number # 25, which thus represents the rank # 25 portion of the consecutive portions # 1- # 500. Before installing the first part, the list is initialized by setting all flags in the list to 0 (zero). Then, each time the processor PROC installs the part, the processor PROC sets the corresponding flag of the part to 1 (one). If the processor PROC determines that all the flags in the list have been set to 1, it determines that all 500 parts have been installed.

別法として、プログラムメタデータは、コンピュータプログラムにより含まれる合計バイト数を含む。プロセッサPROCは、プログラムメモリMPROGに記憶されている部分の累積バイト数の総数を保持することができる。累積バイト数が合計バイト数に合致するような最後の部分をインストールすると、プロセッサPROCは、コンピュータプログラムを集合的に形成するすべての部分がプログラムメモリMPROGに記憶されたと決定することができる。   Alternatively, the program metadata includes the total number of bytes included by the computer program. The processor PROC can hold the total number of accumulated bytes of the portion stored in the program memory MPROG. When the last part is installed such that the cumulative number of bytes matches the total number of bytes, the processor PROC can determine that all parts that collectively form the computer program have been stored in the program memory MPROG.

ホストHSTは、いわゆるラウンドロビン方式(round-robin fashion)で部分を送信することができる。このことは、ホストHSTがすべての部分を周期的な仕方で送信することを暗に示す。再び、部分の合計量が500である下記の例を検討する。500個の部分は、合計数500のそれぞれのデータパケットに対応する。500個のデータパケットをラウンドロビン方式で送信することは、ホストHSTがすべての500個のデータパケットを単一のラウンドロビン期間内に連続的に送信し、それから次のラウンドロビン期間に進むことを暗に示し、これにおいて、ホストHSTは、再びになるが、すべてのデータパケットを連続的に送信する。ラウンドロビン期間内に、ホストHSTは、データパケット#1を最初送信し、それからデータパケット#2を送信し、それからデータパケット#3を送信する、などする。データパケット#500を送信した後、ホストHSTは、次の期間を、再度データパケット#1を、それからデータパケット#2を、などと送信することで開始する。   The host HST can transmit the part in a so-called round-robin fashion. This implies that the host HST sends all parts in a periodic manner. Again, consider the following example where the total amount of parts is 500. The 500 parts correspond to a total number of 500 data packets. Sending 500 data packets in a round-robin fashion means that the host HST sends all 500 data packets continuously within a single round-robin period and then proceeds to the next round-robin period. Implied, in which the host HST again sends all data packets continuously. Within the round robin period, the host HST first transmits data packet # 1, then transmits data packet # 2, then transmits data packet # 3, and so on. After sending data packet # 500, host HST starts the next period by sending data packet # 1, again data packet # 2, and so on.

結果として、装置DEVは、同様にラウンドロビン方式で部分を受信することができ、結果として、これに応じてラウンドロビン方式でそれぞれの部分をさらにインストールすることができる。装置DEVは、ラウンドロビン期間内の任意の段階でスニフ及び受信を開始してよい。例えば、装置DEVがその第1のデータパケットを受信し、該第1のデータパケットはデータパケット#100であり、部分#100を含む。ゆえに、装置DEVが、ホストHSTにより連続的に送信される部分を受信し及びインストールする場合、装置DEVは、最初に第1のラウンドロビン期間の間に部分#100乃至#500を、それから第2のラウンドロビン期間の間に部分#1乃至#99をインストールする。   As a result, the device DEV can likewise receive the parts in a round robin manner, and as a result, it can further install each part in a round robin manner accordingly. The device DEV may start sniffing and receiving at any stage within the round robin period. For example, device DEV receives the first data packet, which is data packet # 100 and includes part # 100. Thus, if the device DEV receives and installs the part that is continuously transmitted by the host HST, the device DEV will first receive the parts # 100 to # 500 during the first round robin period and then the second During the round robin period, parts # 1 to # 99 are installed.

装置DEVが、何らかの理由で、第1のラウンドロビン期間の間にデータパケットを受信し及び/又はインストールすることを失敗した場合、装置DEVは、次のラウンドロビン期間の間、該データパケットを単に受信し及びインストールしてもよい。前の例で続けると、装置DEVが第1のラウンドロビン期間の間にデータパケット#200を受信することを失敗した場合、次のラウンドロビン期間は、下記のとおり進むことになる:装置DEVが(上記のとおり)部分#1乃至#99をインストールし、それから部分#100乃至#199をスキップし、最後、部分#200を受信し、インストールする。   If the device DEV fails to receive and / or install a data packet during the first round robin period for any reason, the device DEV simply sends the data packet during the next round robin period. Receive and install. Continuing with the previous example, if device DEV fails to receive data packet # 200 during the first round-robin period, the next round-robin period will proceed as follows: Install parts # 1 through # 99 (as above), then skip parts # 100 through # 199, and finally receive and install part # 200.

図1bは、複数のスモールメモリ装置110〜113を含むシステム199を例示している。システム199は、実際、システム100と3つのさらなる(スモールメモリ)装置111〜113とを含む。ラウンドロビン方式で部分をインストールすることは、複数の装置110〜113を有するシステム199において特に有用である。複数の装置110〜113の各々は、データパケットの受信を、ラウンドロビン期間の(又は、その事項についての次のラウンドロビン期間の)異なる段階において開始することができる。しかしながら、複数の装置110〜113の各々は、同じ単一のホストHSTから同じデータパケットを同時に受信し、その後、それぞれの同じ部分をインストールしてもよい。システム100又はシステム199に対して追加され得る(スモールメモリ)装置の量に対して、装置の各々が並列にホストHSTから部分を受信し及びインストールするとき、制限はない。唯一の要件は、複数の装置の各々が、ホストHSTにより送信されるデータパケットを受信するように、ホストHSTの範囲内であることである。このことは、装置の大きいグループである複数の装置へのコンピュータプログラムのインストールをスピードアップするという意味において大きな利益を提示する。   FIG. 1 b illustrates a system 199 that includes a plurality of small memory devices 110-113. System 199 actually includes system 100 and three additional (small memory) devices 111-113. Installing portions in a round robin fashion is particularly useful in a system 199 having multiple devices 110-113. Each of the plurality of devices 110-113 may start receiving data packets at different stages of the round robin period (or the next round robin period for that matter). However, each of the plurality of devices 110-113 may simultaneously receive the same data packet from the same single host HST and then install the same portions of each. There is no limit to the amount of (small memory) devices that can be added to system 100 or system 199 when each of the devices receives and installs portions from the host HST in parallel. The only requirement is that each of the plurality of devices is within range of the host HST so as to receive data packets transmitted by the host HST. This presents significant benefits in the sense of speeding up the installation of computer programs on multiple devices that are a large group of devices.

図2aは、コンピュータプログラムのラウンドロビンインストールの間のホストメモリMHST200と2つのプログラムメモリMPROG1 210及びMPROG2 220とを例示している。プログラムメモリMPROG1及びMPROG2は、それぞれ、2つのスモールメモリ装置DEV1及びDEV2のメモリである。ホストメモリMHSTは、ホストHSTのメモリである。ホストメモリMHSTは、(8個の)部分A〜Hの形式のコンピュータプログラムを、それぞれのメモリ位置201〜208に含有する。部分A〜Hは、コンピュータプログラムを集合的に形成する。ホストHSTは、部分A〜Hをラウンドロビン方式で送信することができる。それから、装置DEV1及びDEV2は、ホストHSTからの部分をそれぞれのプログラムメモリMPROG1及びMPROG2内に受信し、インストールすることができる。   FIG. 2a illustrates host memory MHST 200 and two program memories MPROG1 210 and MPROG2 220 during round robin installation of the computer program. Program memories MPROG1 and MPROG2 are memories of two small memory devices DEV1 and DEV2, respectively. The host memory MHST is a memory of the host HST. The host memory MHST contains computer programs in the form of (eight) parts AH in respective memory locations 201-208. Portions A to H collectively form a computer program. The host HST can transmit the parts A to H in a round robin manner. The devices DEV1 and DEV2 can then receive and install the parts from the host HST in the respective program memories MPROG1 and MPROG2.

ホストHSTは、ホストメモリMHSTのメモリ位置203に現在の読み出し位置を有する。現在の読み出し位置は、ポインタCURR0によって示される。ホストHSTは、部分Cを読み出し、部分Cと相対メモリ位置(を有するヘッダ)とを含有するデータパケットを組み立て、このデータパケットを送信ユニットSNDを介して送信する。   The host HST has a current read position at the memory location 203 of the host memory MHST. The current read position is indicated by the pointer CURR0. The host HST reads part C, assembles a data packet containing part C and a relative memory location (having a header), and transmits this data packet via the transmission unit SND.

装置DEV1は、データパケットを受信し、(a)部分と(b)相対メモリ位置とを抽出する。装置DEV1は、その開始メモリ位置211に相対メモリ位置を加算することによって絶対メモリ位置213を決定する。例えば、開始メモリ位置が値128を有し、相対メモリ位置が値2048を有し、したがって、絶対メモリ位置の値は2176になる。結果として、装置DEV1はその現在の書き込み位置を、ポインタCURR1により示される絶対メモリ位置に設定し、それから、プログラムメモリMPROG1のメモリ位置213に部分Cを記憶する(書き込む)。装置DEV2は、同様の処理を実行する。すなわち、装置DEV2は、データパケットを受信し、(絶対)メモリ位置223を決定し、メモリ位置223に部分Cを記憶する。ポインタCURR2は、装置DEV2の現在の書き込み位置を示す。   The device DEV1 receives the data packet and extracts (a) part and (b) relative memory location. Device DEV1 determines absolute memory location 213 by adding the relative memory location to its starting memory location 211. For example, the starting memory location has the value 128 and the relative memory location has the value 2048, so the absolute memory location value is 2176. As a result, the device DEV1 sets its current write position to the absolute memory location indicated by the pointer CURR1, and then stores (writes) part C in the memory location 213 of the program memory MPROG1. The device DEV2 performs similar processing. That is, device DEV2 receives the data packet, determines (absolute) memory location 223, and stores portion C in memory location 223. The pointer CURR2 indicates the current writing position of the device DEV2.

ホストHSTは、矢印260により示されるとおり、ラウンドロビン方式で部分を送信する。この例において、ホストHSTは、部分Cをちょうど送信したところである。ゆえに、ホストHSTにより送信されるべき次の部分は、部分Dであることになり、その後、部分Eなどである。部分Hを送信した後、それから、ホストHSTは、再度部分Aを送信することで続行することになる。   The host HST transmits the part in a round robin manner as indicated by arrow 260. In this example, the host HST has just sent part C. Therefore, the next part to be transmitted by the host HST will be part D, then part E, etc. After sending part H, the host HST will then continue by sending part A again.

DEV1が最初スニフを開始した後、ホストHSTが、同じラウンドロビン期間内の現在の部分Cを送信するほんの直前に、部分Bを送信した。したがって、装置DEV1は、部分Bを含むデータパケットを最初検出し、結果として、部分Bが、DEV1によりインストールされる最初の部分である。この例において、装置DEV1は、目下、部分B及びCをインストールし終えている。ポインタSTART1は、第1の部分が装置DEV1によってメモリ位置212に記憶されることを示している。プログラムメモリMPROG1内のパターンフィルされたエリアは、部分B及びCがメモリ位置212及び213それぞれに記憶されていることを示す。矢印261は、装置DEV1が部分を順序B、Cにおいてインストールしたことを示す。   After DEV1 first started sniffing, Host HST sent part B just before sending the current part C within the same round robin period. Thus, device DEV1 first detects a data packet containing part B, and as a result, part B is the first part installed by DEV1. In this example, the device DEV1 has now finished installing parts B and C. Pointer START1 indicates that the first part is stored in memory location 212 by device DEV1. The pattern filled area in program memory MPROG1 indicates that portions B and C are stored at memory locations 212 and 213, respectively. Arrow 261 indicates that device DEV1 has installed parts in order B and C.

DEV2は、ホストHSTが部分Gを送信する直前、前のラウンドロビン期間の間にスニフを最初開始している。したがって、装置DEV2は、部分Gを含むデータパケットを最初検出し、結果として、部分Gが、DEV2によりインストールされる最初の部分である。この例において、装置DEV2は、目下、部分G、H、A、B、及びCをインストールし終えている。ポインタSTART2は、装置DEV2がその第1の部分をメモリ位置227に記憶したことを示している。プログラムメモリMPROG2内のパターンフィルされたエリアは、部分G、H、A、B、及びCがメモリ位置227、228、221、222、及び223それぞれに記憶されていることを示す。矢印262は、DEV2が部分を順序G、H、A、B、Cにおいてインストールしたことを示す。   DEV2 starts sniffing first during the previous round robin period, just before the host HST sends part G. Thus, device DEV2 first detects a data packet containing part G, and as a result, part G is the first part installed by DEV2. In this example, the device DEV2 has now finished installing parts G, H, A, B and C. Pointer START2 indicates that device DEV2 has stored its first part in memory location 227. The pattern filled area in program memory MPROG2 indicates that portions G, H, A, B, and C are stored in memory locations 227, 228, 221, 222, and 223, respectively. Arrow 262 indicates that DEV2 installed the parts in the order G, H, A, B, C.

DEV1は依然として、「残りの(to go)」6つの部分を有し、ゆえにDEV1は依然として、すべての部分A〜Hのインストールを完了するために、部分D〜H及びAをインストールする必要がある。DEV2は、「残りの」部分を3つだけ有し、ゆえにDEV2は依然として、すべての部分A〜Hのインストールを完了するために、部分D〜Fをインストールする必要がある。装置DEV1及びDEV2が双方、ラウンドロビン方式でホストHSTにより送信される次の部分を受信し及びインストールする場合、DEV2は、すべての部分のインストールを、DEV1が完了する前に完了することになる。図2bは、コンピュータプログラムのインストールを完了したプログラムメモリMPROG1及びMPROG2を例示している。メモリMPROG1及びMPROG2の双方が、それぞれのメモリ位置211〜218と221〜228とにそれぞれ、すべての部分A〜Hを含む。   DEV1 still has 6 parts “to go”, so DEV1 still needs to install parts DH and A to complete the installation of all parts AH . DEV2 has only three “remaining” parts, so DEV2 still needs to install parts DF to complete the installation of all parts AH. If both devices DEV1 and DEV2 receive and install the next part sent by the host HST in a round robin fashion, DEV2 will complete the installation of all parts before DEV1 completes. FIG. 2b illustrates program memories MPROG1 and MPROG2 that have completed the installation of the computer program. Both memories MPROG1 and MPROG2 include all portions AH at respective memory locations 211-218 and 221-228, respectively.

図2cは、コンピュータプログラムの別のラウンドロビンインストールの間の、2つのプログラムメモリMPROG1 210及びMRPOG2 220とホストメモリMHST200とを例示している。図2cにおいて、ホストHSTとそのホストメモリMHSTとは、図2aのものと同一である。図2aの状況との差は、装置DEV1及びDEV2がその開始メモリ位置211及び221それぞれで、部分の記憶を開始していることである。装置DEV1及びDEV2は、そのそれぞれのプログラムメモリMPROG1及びMPROG2内の連続的なメモリ位置に、連続的な部分を、該部分を受信した順序に従って記憶する。ゆえに、装置DEV1は、次の部分D〜H及びAを、それぞれの連続的なメモリ位置213〜218に記憶する。同様に、装置DEV2は、連続的な部分D〜Fを、それぞれの連続的なメモリ位置225〜228に記憶する。すべての部分A〜Hを記憶した後、装置DEV1及びDEV2は、後に、そのそれぞれのプログラムメモリMPROG1及びMPROG2内の部分を、該部分の順序が図2bに従ったものになるように再順序付けする。   FIG. 2c illustrates two program memories MPROG1 210 and MRPOG2 220 and host memory MHST 200 during another round robin installation of a computer program. In FIG. 2c, the host HST and its host memory MHST are the same as those in FIG. 2a. The difference from the situation in FIG. 2a is that the devices DEV1 and DEV2 have begun to store parts at their starting memory locations 211 and 221, respectively. The devices DEV1 and DEV2 store successive parts in successive memory locations in their respective program memories MPROG1 and MPROG2 according to the order in which they were received. Therefore, the device DEV1 stores the next parts DH and A in respective successive memory locations 213-218. Similarly, device DEV2 stores successive portions D-F in respective successive memory locations 225-228. After storing all the parts AH, the devices DEV1 and DEV2 later reorder the parts in their respective program memories MPROG1 and MPROG2 so that the order of the parts is according to FIG. 2b. .

図2dは、コンピュータプログラムのすべての部分を記憶した後、かつ部分を再順序付けする前の、2つのプログラムメモリMPROG1及びMPROG2を例示している。装置DEV1は、そのメモリ内にすべての部分A〜Hが記憶されていると決定すると、プログラムメモリMPROG1内に部分A〜Hが図2bに表されたとおり記憶されるように、部分を再順序付けする。同様に、装置DEV2は、そのメモリ内にすべての部分A〜Hが記憶されていると決定すると、プログラムメモリMPROG2内に部分A〜Hが図2bに表されたとおり記憶されるように、部分を再順序付けする。   FIG. 2d illustrates two program memories MPROG1 and MPROG2 after storing all parts of the computer program and before reordering the parts. If device DEV1 determines that all parts AH are stored in its memory, it reorders the parts so that parts AH are stored in program memory MPROG1 as represented in FIG. 2b. To do. Similarly, if the device DEV2 determines that all the parts AH are stored in its memory, the part DEV2 is stored in the program memory MPROG2 so that the parts AH are stored as shown in FIG. 2b. Reorder.

図2cにおいて、装置DEV1及びDEV2は、図2aとは別様に、部分を記憶する絶対メモリ位置を決定する。例えば、第1の部分Bについて、装置DEV1は、部分Bを記憶するための絶対位置が開始メモリ位置211であると決定する。次の部分Cを受信した後、装置DEV1は、部分Cを記憶するための絶対メモリ位置が次のメモリ位置、メモリ位置212であると決定する。同様に、次の部分D〜H及びAが、次のメモリ位置213〜218にそれぞれ記憶される。装置DEV1は、パケット番号と、部分がプログラムメモリMPROG1に記憶されている順序を表すそれぞれのメモリ位置とのリストを維持することができる。この場合、上記リストは、部分が(図2dに示されるとおり)順序B、C、D、E、F、G、H、Aにおいて記憶されていると示す。上記リスト内の情報に基づいて、装置DEV1は、それから、部分Aをメモリ位置218からメモリ位置211に移動し、部分Bをメモリ位置211からメモリ位置212に移動し、部分Cをメモリ位置212からメモリ位置213に移動する、などすることができる。   In FIG. 2c, the devices DEV1 and DEV2 determine the absolute memory location where the part is stored, differently than in FIG. 2a. For example, for the first part B, the device DEV1 determines that the absolute position for storing the part B is the start memory position 211. After receiving the next part C, the device DEV1 determines that the absolute memory location for storing the part C is the next memory location, memory location 212. Similarly, the next portions DH and A are stored in the next memory locations 213-218, respectively. Device DEV1 can maintain a list of packet numbers and respective memory locations representing the order in which portions are stored in program memory MPROG1. In this case, the list indicates that the parts are stored in order B, C, D, E, F, G, H, A (as shown in FIG. 2d). Based on the information in the list, device DEV1 then moves part A from memory location 218 to memory location 211, part B from memory location 211 to memory location 212, and part C from memory location 212. Move to memory location 213, and so on.

ホストHSTが部分をラウンドロビン方式で送信する順序は、典型的に、上記で説明されたとおりである。ラウンドロビン期間内に部分を送信する典型的順序は、A、B、C、D、E、F、G、Hである。別法として、部分を送信する順序は、上記の典型的順序とは異なってもよい。例えば、順序が反対にされ、あるいはランダム化されてもよい。例えば、順序のランダム化の結果として、ホストがあるラウンドロビン期間内に順序E、D、A、C、G、B、H、Fにおいて部分を送信することがあり、ホストが別のラウンドロビン期間内に別の順序B、F、G、E、D、H、C、Aにおいて部分を送信することがある。   The order in which the host HST transmits the parts in a round robin manner is typically as described above. A typical order for transmitting portions within a round robin period is A, B, C, D, E, F, G, H. Alternatively, the order in which the parts are transmitted may be different from the typical order described above. For example, the order may be reversed or randomized. For example, as a result of order randomization, a host may transmit portions in order E, D, A, C, G, B, H, F within one round robin period, and the host may send another round robin period. May transmit parts in different orders B, F, G, E, D, H, C, A.

コンピュータプログラムのインストールは、様々な方法において始動され得る。例えば、ブートローダが実行されているとき、ブートローダが装置DEVにデータパケットのスニフを開始させてもよい。ブートローダは、所定のタイムアウト期間を有してもよく、したがって、スニフを開始した後、上記タイムアウト期間内にデータパケットが検出されないとき、装置DEVはスニフを中止し、装置DEVのブートを進める。対照的に、データパケットが上記タイムアウト期間内に検出される場合、装置DEVは、データパケットにより含まれる部分をインストールし、次のデータパケットについてスニフを開始する。   The installation of the computer program can be initiated in various ways. For example, when the boot loader is running, the boot loader may cause the device DEV to start sniffing data packets. The boot loader may have a predetermined timeout period, so after starting a sniff, if no data packet is detected within the timeout period, the device DEV stops the sniff and proceeds with the boot of the device DEV. In contrast, if a data packet is detected within the timeout period, the device DEV installs the part contained by the data packet and starts sniffing for the next data packet.

別の例として、ブートローダは、装置DEVに、正当なコンピュータプログラムがプログラムメモリMPROG内に記憶されているかどうかを検証させてもよく、正当なコンピュータプログラムがインストールされていないと決定するとスニフを開始してもよい。別の例として、ブートローダは、装置DEVに、装置を動作するためのいかなるコンピュータプログラムもプログラムメモリMPROG内に記憶されているかどうかを検証させてもよい。装置DEVは、コンピュータプログラムがインストールされていないと決定すると、プログラムメモリが「空」である(例えば、ゼロのみで埋められている)と決定すると、スニフを開始してもよい。   As another example, the boot loader may cause the device DEV to verify whether a legitimate computer program is stored in the program memory MPROG and initiates a sniff if it determines that the legitimate computer program is not installed. May be. As another example, the boot loader may cause the device DEV to verify whether any computer program for operating the device is stored in the program memory MPROG. If the device DEV determines that the computer program is not installed, it may initiate a sniff if it determines that the program memory is “empty” (eg, filled with only zeros).

別の例として、ブートローダは、装置DEVに、インストールフラグがインストール状態に設定されていると検出するとスニフを始動させてもよい。インストールフラグがインストール状態に設定されているとき、このことは、コンピュータプログラムのインストールが必要とされることを表す。インストールフラグが非インストール状態に設定されているとき、このことは、コンピュータプログラムのインストールが必要とされないことを表す。インストールフラグは、装置DEVの一部であり得る。インストールフラグは、外部入力に応答してインストール状態に設定されてもよい。例えば、装置DEVがリモート制御装置である場合、外部入力がリモート制御装置に所定コードを打ち込むユーザにより提供されて、リモート制御装置に(a)インストールフラグをインストール状態に設定することと、(b)リブートを行うことと、を実行させることができる。上述されたとおり、それから、装置DEVは、(リ)ブートの間にインストールフラグがインストール状態に設定されていると検出し、応答において、データパケットのスニフを開始する。コンピュータプログラムのインストールを完了すると、装置DEVは、インストールフラグを非インストール状態に設定することができる。別法として、外部入力が、インストールフラグを表す装置DEV上の手動スイッチを介して提供されてもよい。ユーザは、手動スイッチを第1の位置又は第2の位置に手動で設定することができる。第1の位置がインストール状態に対応してもよく、第2の位置が非インストール状態に対応してもよい。   As another example, the boot loader may start the sniff when the device DEV detects that the install flag is set to the install state. When the install flag is set to the install state, this indicates that a computer program needs to be installed. When the install flag is set to a non-install state, this indicates that no computer program installation is required. The install flag may be part of the device DEV. The installation flag may be set to an installation state in response to an external input. For example, if the device DEV is a remote control device, an external input is provided by a user typing a predetermined code into the remote control device, and (a) setting an installation flag in the remote control device to an installation state; Performing a reboot. As described above, the device DEV then detects that the install flag is set to the install state during (re) boot, and starts sniffing the data packet in response. When the installation of the computer program is completed, the device DEV can set the installation flag to the non-installed state. Alternatively, the external input may be provided via a manual switch on the device DEV that represents the installation flag. The user can manually set the manual switch to the first position or the second position. The first position may correspond to the installed state, and the second position may correspond to the non-installed state.

本発明の文脈において、装置DEVが「データパケットのスニフを開始する」とき、このことは、装置DEVがコンピュータプログラムのインストールを開始したことを暗に示し、コンピュータプログラムをインストールしたことは、コンピュータプログラムがプログラムメモリMPROG内に記憶されていることを暗に示すことが留意されるべきである。   In the context of the present invention, when the device DEV “starts sniffing the data packet”, this implies that the device DEV has started installing the computer program, and that installing the computer program It should be noted that is implicitly stored in the program memory MPROG.

セキュリティの目的で、データパケットは暗号化を含んでもよい。例えば、ホストHSTは、コンピュータプログラムの部分を暗号化し、ヘッダと暗号化された部分とを用いてデータパケットを組み立ててもよい。装置DEVは、データパケットを受信し、データパケットから暗号化された部分を抽出し、暗号化された部分を解読することによって部分を取得することができる。暗号化は、装置DEV又は同様の装置のみが部分を受信し及びインストールし得ることを確保することができる。   For security purposes, the data packet may include encryption. For example, the host HST may encrypt the computer program part and assemble a data packet using the header and the encrypted part. The device DEV can receive the data packet, extract the encrypted part from the data packet, and obtain the part by decrypting the encrypted part. Encryption can ensure that only the device DEV or similar device can receive and install the part.

一実施形態において、装置DEVは、リモート制御装置を生産する生産設備内のリモート制御装置である。生産設備は、様々な生産ステートにおけるリモート制御装置を有する生産ラインを含み得る。ラインの終わりにおいて、各リモート制御装置は、最新のファームウェアのインストールを必要とする。図1bにより概略的に例示されたのと同様の設定において、ホストHSTは、該ホストHSTにより送信されるデータパケットを複数のリモート制御装置が受信することができるように、生産ラインの付近にある。ホストHSTは、例えば、データパケットを送信するパーソナルコンピュータ又は何らかの専用装置であり得る。生産設備内の他の機器との干渉のリスクを最小化するために、ホストHST及びリモート制御装置は、他の機器によって使用されていない通信又は周波数バンドを使用してもよい。しかしながら、複数のリモート制御装置間における相互干渉は問題でなく、なぜならば、複数のリモート装置は、同じホストHSTから並列にデータパケットを単に受信しており、受信するからである。   In one embodiment, the device DEV is a remote control device in a production facility that produces the remote control device. A production facility may include a production line with remote controls in various production states. At the end of the line, each remote control device requires the installation of the latest firmware. In a configuration similar to that schematically illustrated by FIG. 1b, the host HST is in the vicinity of the production line so that a plurality of remote control devices can receive data packets transmitted by the host HST. . The host HST can be, for example, a personal computer or some dedicated device that transmits data packets. In order to minimize the risk of interference with other equipment in the production facility, the host HST and the remote controller may use communications or frequency bands that are not used by other equipment. However, mutual interference between multiple remote control devices is not a problem because multiple remote devices simply receive and receive data packets in parallel from the same host HST.

一実施形態において、装置DEVは、コンピュータプログラムのインストールを完了するとフィードバックを提供するインジケータを有する。例えば、装置DEVは、上記完了において点灯するLEDを有する。一変形として、上記LEDが、その色を上記完了において赤から緑に変える。別の例として、装置DEVは、上記完了において通知又は警告を生成するスピーカーを有する。別の例として、装置DEVは、上記完了において振動する手段を有してもよい。   In one embodiment, the device DEV has an indicator that provides feedback upon completing the installation of the computer program. For example, the device DEV has an LED that lights up upon completion. As a variant, the LED changes its color from red to green at the completion. As another example, the device DEV has a speaker that generates a notification or warning on completion. As another example, the device DEV may have means to vibrate on completion.

一実施形態において、装置DEVは、ワイヤレスに制御可能であるランプ、例えば、フィリップスにより生産される「ヒューパーソナルワイヤレスライティング(Hue Personal Wireless Lighting)」製品などである。ランプのライティング特性が、中央制御ボックスによって制御されることができ、あるいはランプは、スマートフォンによって直接制御されることができる。中央制御ボックスが、上記で説明されたとおりのホストHSTを含んでもよい。ユーザは、明るさ、色相、及び/又は彩度を、各ランプについて別個に、又はすべてのランプについて連帯的に制御したいことがある。典型的に、リビングルームが、複数のこうしたワイヤレス制御可能ランプを有するであろう。中央制御ボックスが、新しいファームウェアが複数のランプについて利用可能であると検出することができるとき、中央制御ボックスは、下記のとおりファームウェアアップグレードを始動させることができる。中央制御ボックスは、新しいファームウェアのバージョン番号を各ランプに送信し、応答において、各ランプは、新しいファームウェアの上記バージョン番号がそのインストールされたファームウェアに合致するかどうかを確認する。複数のランプのうちの一ランプが、該ランプのファームウェアが最新でないと検出する場合、このランプは、中央制御ボックスに、新しいファームウェアのインストールを始動することになると返信することができる。すなわち、このランプは、そのインストールフラグを「インストール状態」に設定し、リブートを実行する。リブートすると、上記ランプはそれから、中央制御ボックスからのデータパケットについてスニフを開始する。同様に、古いファームウェアを同様に有する他のランプが同じことを行い、並列に、さらにリブートし、新しいファームウェアのインストールを始動させてもよい。中央制御ボックスが少なくとも1つのランプから、新しいソフトウェアのインストールを始動させることを受信したとき、中央制御ボックスは、新しいファームウェアを、例えば製造業者のウェブサイトからダウンロードする。それから、中央制御ボックスは、新しいファームウェアを含むデータパケットの送信を開始する。上記ランプは、それから、中央制御ボックスにより送信されるデータパケットを検出し及び受信し、本発明に従うファームウェアのインストールを開始する。   In one embodiment, the device DEV is a wirelessly controllable lamp, such as a “Hue Personal Wireless Lighting” product produced by Philips. The lighting characteristics of the lamp can be controlled by a central control box, or the lamp can be controlled directly by a smartphone. The central control box may include a host HST as described above. A user may want to control brightness, hue, and / or saturation separately for each lamp or jointly for all lamps. Typically, a living room will have a plurality of such wirelessly controllable lamps. When the central control box can detect that new firmware is available for multiple lamps, the central control box can trigger a firmware upgrade as follows. The central control box sends the new firmware version number to each lamp, and in response, each lamp checks whether the version number of the new firmware matches its installed firmware. If one of the lamps detects that the lamp's firmware is not up-to-date, the lamp can reply to the central control box that it will initiate a new firmware installation. That is, this lamp sets its installation flag to “installed state” and executes reboot. Upon reboot, the lamp then starts sniffing for data packets from the central control box. Similarly, other lamps that also have old firmware may do the same thing, in parallel, reboot further, and initiate the installation of new firmware. When the central control box receives from the at least one lamp to initiate a new software installation, the central control box downloads the new firmware, eg, from the manufacturer's website. The central control box then starts sending data packets containing the new firmware. The lamp then detects and receives data packets transmitted by the central control box and initiates the installation of firmware according to the present invention.

前の実施形態の一変形として、新しいランプが、リビングルーム内の上記複数のランプに対して追加されることがあり、そのファームウェアが最新であるかどうかを確認することがある。新しいランプは、アーマチュア(armature)内に取り付けられ、ゆえに、このアーマチュアを介して電気的に電力供給される。電力供給されると、新しいランプは、中央制御ボックスとワイヤレスに連絡することができる。前の実施形態と同様の方法で、中央制御ボックスは、複数のランプのうちの他のランプにインストールされている最新のファームウェアを通信し、新しいランプのファームウェアが最新でない場合、中央制御ボックスと新しいランプとは、本発明に従う新しいファームウェアのインストールを開始する。   As a variation of the previous embodiment, a new lamp may be added to the lamps in the living room to check if its firmware is up to date. The new lamp is mounted in an armature and is therefore electrically powered through this armature. When powered, the new lamp can communicate wirelessly with the central control box. In a manner similar to the previous embodiment, the central control box communicates the latest firmware installed on the other lamps of the plurality of lamps, and if the new lamp firmware is not up-to-date, the central control box and the new one The lamp initiates the installation of new firmware according to the present invention.

一実施形態において、小売店が、メディアプレーヤである複数のスモールメモリ装置を有する。小売商は、ショップフロアですべてのメディアプレーヤに最新のファームウェアをインストールしたいことがある。小売商は、ホストHSTとして機能するように配置されたスマートフォンを有する。最新のファームウェアは、スマートフォン上にダウンロードされることができ、スマートフォンは、ラウンドロビン方式でコンピュータプログラムの部分の送信を開始することができる。メディアプレーヤに電力供給することによって、メディアプレーヤはリブートし(ゆえに、ブートローダを実行し)、それからブートローダの一部としてスニフを始動させ、その後、上記部分を受信し及びインストールすることができる。スマートフォンがラウンドロビン方式で部分を送信し続けるとき、メディアプレーヤは1つずつ電力供給されてもよく、各メディアプレーヤは、ラウンドロビン期間のうち異なる段階において、及び/又は異なるラウンドロビン期間内でさえ、ファームウェアのインストールを始動させることができる。ゆえに、それぞれのメディアプレーヤのインストールは同期的である必要がなく、このことは、手順全体を実用的にする。上記のファームウェアを更新する手順は、そのワイヤレスの及び自動的な性質のため、簡便である。さらに、上記手順は、メディアプレーヤ上のファームウェアの更新が並列に行われるため、高速でもある。   In one embodiment, the retail store has a plurality of small memory devices that are media players. Retailers may want to install the latest firmware on all media players on the shop floor. The retailer has a smartphone arranged to function as a host HST. The latest firmware can be downloaded onto the smartphone, and the smartphone can start transmitting the portion of the computer program in a round robin manner. By powering the media player, the media player can reboot (and therefore run the boot loader), then start the sniff as part of the boot loader, and then receive and install the part. As the smartphone continues to transmit parts in a round robin fashion, the media players may be powered one by one, and each media player may be in a different stage of the round robin period and / or even within a different round robin period. The firmware installation can be started. Therefore, the installation of each media player need not be synchronous, which makes the entire procedure practical. The above firmware update procedure is simple due to its wireless and automatic nature. Furthermore, the above procedure is also fast because the firmware on the media player is updated in parallel.

装置DEVは、本発明に従う任意のスモールメモリ装置であり得る。多くのこうした装置が、現今、例えば、ホーム環境内、医療環境内、又は車の中の、他の装置に接続する無線能力を有する。ゆえに、装置は相互接続されることができ、例えば、互いに、及び/又は装置のローカルネットワーク内のユーザと、及び/又はインターネットと相互作用することができる。スモールメモリ装置DEVの例は、リモート制御装置、ワイヤレス制御可能ランプ(例えば、上記のもの)、メディアプレーヤ、ポータブルメディアプレーヤ、電子玩具、デジタルウォッチ、キッチン電化製品、冷蔵庫又はオーブンなどのキッチン装置、及びウェアラブル電子装置である。装置DEVは、医療目的の装置、例えば、血液飽和計測器、ウェアラブル心拍モニタ、又は、患者の生理学的又は身体的パラメータを監視する別のスモールメモリ装置などであり得る。さらに別の例として、装置DEVは、ワイヤレスに制御可能なデジタルタグ、例えば、個人識別のための名前タグとして、又は小売店で価格を示す価格タグとしての役割を果たすデジタルタグであり得る。   The device DEV can be any small memory device according to the present invention. Many such devices now have wireless capability to connect to other devices, for example, in a home environment, a medical environment, or in a car. Thus, the devices can be interconnected, for example, interacting with each other and / or with users within the device's local network and / or with the Internet. Examples of small memory devices DEV include remote control devices, wireless controllable lamps (eg those described above), media players, portable media players, electronic toys, digital watches, kitchen appliances, kitchen devices such as refrigerators or ovens, and It is a wearable electronic device. The device DEV may be a device for medical purposes, such as a blood saturation meter, a wearable heart rate monitor, or another small memory device that monitors a patient's physiological or physical parameters. As yet another example, the device DEV may be a wirelessly controllable digital tag, eg, a digital tag that serves as a name tag for personal identification or as a price tag that indicates a price at a retail store.

ホストHST及び装置DEVにより使用されるワイヤレステクノロジーは、任意の適切なワイヤレステクノロジー、例えば、RF4CE Zigbee、WiFi(登録商標)、又はペアリングを必要としないBlueTooth(登録商標)の一変形などであり得る。本発明の利益は、ブートローダによるコンピュータプログラムのインストールがいわゆるMACレベルで作用し得るものであり、ゆえにブートローダ内にRF4CEソフトウェアスタックを必要としないという意味で、ブートローダがとても簡素であり得ることであることが留意されるべきである。   The wireless technology used by the host HST and device DEV can be any suitable wireless technology, such as RF4CE Zigbee, WiFi®, or a variant of BlueTooth® that does not require pairing. . An advantage of the present invention is that the boot loader can be very simple in the sense that installation of the computer program by the boot loader can work at the so-called MAC level and therefore does not require an RF4CE software stack within the boot loader. Should be noted.

プログラムメモリMPROGは、該プログラムメモリMPROGがコンピュータプログラムとさらにコンピュータプログラムのコピーとの双方を同時に含有するのに不十分なサイズであるという意味で小さい(スモールな)ものであり得ることが上記で言及されている。しかしながら、本発明は、明らかに、プログラムメモリMPROGがコンピュータプログラムと上記コピーとの双方を含有するのに十分なサイズであるようにプログラムメモリMPROGが大きいとき、同様に作用することになる。一実施形態において、プログラムメモリMPROGは実際大きく、しかしそれにかかわらず、プログラムメモリMPROGのうち小さい一部のみ利用可能であることがあり、なぜならば、残りが他の目的に使用されるためである。   It is mentioned above that the program memory MPROG may be small (small) in the sense that the program memory MPROG is insufficiently sized to contain both a computer program and also a copy of the computer program at the same time. Has been. However, the present invention will obviously work similarly when the program memory MPROG is large so that the program memory MPROG is large enough to contain both the computer program and the copy. In one embodiment, the program memory MPROG is actually large, but nevertheless, only a small portion of the program memory MPROG may be available because the rest is used for other purposes.

ホストHSTは、データパケットを組み立てる命令を含むソフトウェアを実行することができる。このソフトウェアは、コンピュータプログラム製品、例えば、CD−ROM又はソリッドステートメモリなどに具現化されることができる。コンピュータプログラム製品は、命令がプロセッサにより実行されるときにホストHSTのプロセッサに下記のステップを実行させる該命令を含み得る:コンピュータプログラムから部分を決定するステップ、部分に関連した部分メタデータを決定するステップ、及び、部分と部分メタデータとを含むデータパケットを組み立てるステップ。   The host HST can execute software that includes instructions for assembling data packets. This software can be embodied in a computer program product, such as a CD-ROM or solid state memory. The computer program product may include instructions that cause a host HST processor to perform the following steps when instructions are executed by the processor: determining a part from the computer program, determining part metadata associated with the part And assembling a data packet including the part and the partial metadata.

図3は、スモールメモリ装置DEVにコンピュータプログラムをインストールする方法300を例示している。方法300は、ステップ301〜305を含む。ステップ301は、複数のデータパケットのうちのデータパケットを検出することを含み、該検出することは、上記データパケットを受信することの一部である。ステップ302は、上記データパケットから、(a)コンピュータプログラムの部分、及び該部分に関連した部分メタデータと、(b)コンピュータプログラムを集合的に形成する部分の集合に関連したプログラムメタデータと、のうち少なくとも1つを抽出することを含む。ステップ303は、上記部分メタデータに基づいてプログラムメモリ内のメモリ位置を決定することを含む。ステップ304は、プログラムメモリ内に記憶されている抽出された部分を表す進捗情報を維持することを含む。ステップ305は、進捗情報とプログラムメタデータとに基づいて部分の集合の記憶の完了を決定することを含む。方法300は、システム100において及び装置100によって実行され得るステップと整合する。   FIG. 3 illustrates a method 300 for installing a computer program on a small memory device DEV. Method 300 includes steps 301-305. Step 301 includes detecting a data packet of the plurality of data packets, the detecting being part of receiving the data packet. Step 302 comprises: from the data packet, (a) a portion of a computer program and partial metadata associated with the portion; and (b) program metadata associated with a set of portions that collectively form a computer program; Extracting at least one of them. Step 303 includes determining a memory location in the program memory based on the partial metadata. Step 304 includes maintaining progress information representing the extracted portion stored in the program memory. Step 305 includes determining completion of storing the set of portions based on the progress information and the program metadata. Method 300 is consistent with steps that may be performed in system 100 and by apparatus 100.

方法300は、コンピュータプログラム製品に具現化されてもよい。上記コンピュータプログラム製品は、命令を含むブートローダを含み、ブートローダは、該ブートローダがプロセッサPROCにより実行されるとき、プロセッサPROCに方法300を実行させる。コンピュータプログラム製品は、例えば、CD−ROM又はソリッドステートメモリであり得る。上述された実施形態は、本発明を限定するのでなく例示していることと、別記の特許請求の範囲から逸脱することなく、多くの代替的な実施形態を当業者が設計可能であろうこととが留意されるべきである。本発明に係る上述された実施形態、実装、及び/又は態様のうち2つ以上が、有用と思われる任意の方法で組み合わせられてもよいことが当業者により十分理解されるであろう。   Method 300 may be embodied in a computer program product. The computer program product includes a boot loader that includes instructions that cause the processor PROC to perform the method 300 when the boot loader is executed by the processor PROC. The computer program product can be, for example, a CD-ROM or a solid state memory. The above-described embodiments illustrate rather than limit the invention, and many alternative embodiments may be designed by those skilled in the art without departing from the scope of the appended claims. Should be noted. It will be appreciated by those skilled in the art that two or more of the above-described embodiments, implementations, and / or aspects of the invention may be combined in any manner deemed useful.

システム、装置、ホスト装置、方法、又はコンピュータプログラム製品の修正及び変形は、説明された、監視サブシステムの修正及び変形に対応し、本説明に基づいて当業者により実行されることができる。   Modifications and variations of the system, apparatus, host device, method, or computer program product correspond to the described modifications and variations of the monitoring subsystem and can be performed by those skilled in the art based on this description.

請求項において、丸括弧の間に置かれたいかなる参照符号も、請求項を限定するものとみなされるべきではない。動詞「含む」及びその活用の使用は、請求項に明示された要素又はステップ以外の要素又はステップの存在を除外するものではない。要素の前にある冠詞「一の(a,an)」は、複数のこうした要素の存在を除外するものではない。本発明は、いくつかの区別可能な要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実装されることができる。いくつかの手段を列挙する装置(又はシステム)クレームにおいて、上記手段のうちいくつかが、1つの及び同じアイテムのハードウェアによって具現化されてもよい。特定の方策が相互に異なる従属請求項に記載されているという単なる事実は、こうした方策の組み合わせが利益をもたらすのに使用され得ないことを示すものではない。   In the claims, any reference signs placed between parentheses shall not be construed as limiting the claim. Use of the verb “include” and its conjugations does not exclude the presence of elements or steps other than those explicitly stated in a claim. The article “one (a, an)” preceding an element does not exclude the presence of multiple such elements. The present invention can be implemented by hardware including several distinguishable elements and by a suitably programmed computer. In the device (or system) claim enumerating several means, several of the means may be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to provide a benefit.

本発明は、独立請求項内に定義される。有益な、しかし任意的な実施形態が、従属請求項内に定義される。
The invention is defined in the independent claims. Useful but optional embodiments are defined in the dependent claims.

Claims (15)

装置であって、
‐ コンピュータプログラムを含有するためのメモリであるプログラムメモリと、
‐ 当該装置をブートするように配置されたブートローダを含むブートメモリと、
‐ 前記コンピュータプログラム及び前記ブートローダを実行するプロセッサと、
‐ データパケットをワイヤレスに受信する受信ユニットであって、前記コンピュータプログラムの部分がそれぞれの前記データパケットのうち少なくともいくつかによって含まれる、受信ユニットと、
を有し、
前記ブートローダは、前記コンピュータプログラムをインストールするようにさらに配置され、
‐ 前記データパケットのうちのデータパケットを検出することであって、該検出することは前記データパケットを受信することの一部である、ことと、
‐ 前記データパケットから、(a)前記コンピュータプログラムの部分、及び該部分に関連した部分メタデータと、(b)前記コンピュータプログラムを集合的に形成する部分の集合に関連したプログラムメタデータと、のうち少なくとも1つを抽出することと、
‐ 前記部分メタデータに基づいて前記プログラムメモリ内のメモリ位置を決定することと、
‐ 前記プログラムメモリ内に記憶されている抽出された部分を表す進捗情報を維持することと、
‐ 前記進捗情報と前記プログラムメタデータとに基づいて部分の前記集合の記憶の完了を決定することと、
を含む、装置。
A device,
-A program memory, which is a memory for containing computer programs;
-A boot memory including a boot loader arranged to boot the device;
A processor for executing the computer program and the boot loader;
A receiving unit for wirelessly receiving data packets, wherein the receiving unit comprises a part of the computer program by at least some of the respective data packets;
Have
The boot loader is further arranged to install the computer program;
-Detecting a data packet of the data packets, wherein the detecting is part of receiving the data packet;
-From the data packet, (a) a portion of the computer program and partial metadata associated with the portion; and (b) program metadata associated with a set of portions that collectively form the computer program. Extracting at least one of them,
-Determining a memory location in the program memory based on the partial metadata;
-Maintaining progress information representing the extracted part stored in the program memory;
-Determining completion of storage of the set of parts based on the progress information and the program metadata;
Including the device.
前記ブートローダは、ラウンドロビン方式でデータパケットの集合を受信するように配置され、データパケットの前記集合は部分の前記集合を集合的に含み、データパケットの前記集合は単一のラウンドロビン期間内に送信される、
請求項1に記載の装置。
The boot loader is arranged to receive a set of data packets in a round-robin manner, the set of data packets collectively including the set of portions, and the set of data packets is within a single round-robin period Sent,
The apparatus of claim 1.
部分の前記集合は、前記コンピュータプログラムを連続的に形成する連続部分であり、前記部分メタデータは、前記連続部分内の部分のランクに関連した情報を含む、
請求項1又は2に記載の装置。
The set of portions is a continuous portion that continuously forms the computer program, and the portion metadata includes information related to a rank of the portions within the continuous portion;
The apparatus according to claim 1 or 2.
前記ブートローダは、前記検出することを、
‐ 外部入力信号を受信することであって、当該装置は前記外部入力信号を受信するように配置される、ことと、
‐ 前記プログラムメモリ内における事前インストールされたコンピュータプログラムの欠如を検出することであって、当該装置は前記欠如を検出するように配置される、ことと、
‐ インストールフラグがインストール状態を示すと検出することであって、当該装置は前記インストールフラグを含み、前記インストールフラグが前記インストール状態を示すことを検出するように配置される、ことと、
のうち1つに応答して始動するように配置される、請求項1乃至3のうちいずれか1項に記載の装置。
The boot loader detects the detection;
-Receiving an external input signal, the device being arranged to receive the external input signal;
-Detecting a lack of a pre-installed computer program in the program memory, the device being arranged to detect the lack;
-Detecting that an installation flag indicates an installation state, wherein the apparatus includes the installation flag and is arranged to detect that the installation flag indicates the installation state;
4. Apparatus according to any one of claims 1 to 3, arranged to start in response to one of the two.
‐ 前記ブートローダは、ユーザ入力に基づいて外部入力信号を受信することに応答して前記検出することを始動するように配置され、
‐ 当該装置は、ユーザが前記ユーザ入力を提供することを可能にするユーザ入力手段を含む、
請求項4に記載の装置。
The boot loader is arranged to trigger the detection in response to receiving an external input signal based on user input;
The device includes user input means that allow a user to provide the user input;
The apparatus according to claim 4.
前記ブートローダは、前記検出を始動した後、所定のタイムアウト期間内に前記データパケットを検出しないと、前記インストールを中止するように配置される、
請求項1乃至5のうちいずれか1項に記載の装置。
The boot loader is arranged to stop the installation if it does not detect the data packet within a predetermined timeout period after starting the detection.
Apparatus according to any one of claims 1 to 5.
前記ブートローダは、暗号化された部分である前記部分を解読するように配置される、
請求項1乃至6のうちいずれか1項に記載の装置。
The boot loader is arranged to decrypt the portion that is an encrypted portion;
Apparatus according to any one of claims 1 to 6.
前記プログラムメモリは、前記コンピュータプログラムを含有するのに十分なサイズであり、前記コンピュータプログラムと前記コンピュータプログラムのさらなるコピーとの双方を含有するのに不十分なサイズである、請求項1乃至7のうちいずれか1項に記載の装置。   8. The program memory of claim 1-7, wherein the program memory is of a size sufficient to contain the computer program and insufficient to contain both the computer program and a further copy of the computer program. The apparatus of any one of them. 当該装置は、リモート制御装置、ワイヤレス制御可能ランプ、メディアプレーヤ、電子玩具、キッチン電化製品、ウェアラブル電子装置、及び医療装置のうち1つにおいて具現化される、請求項1乃至8のうちいずれか1項に記載の装置。   9. The device of claim 1, wherein the device is embodied in one of a remote control device, a wireless controllable lamp, a media player, an electronic toy, a kitchen appliance, a wearable electronic device, and a medical device. The device according to item. 装置にコンピュータプログラムをインストールするシステムであって、
データパケットを送信するように配置されたホスト装置、
を含み、
前記データパケットのうち少なくともいくつかが、前記コンピュータプログラムのそれぞれの部分を含み、前記ホスト装置は、前記データパケットをワイヤレスに送信する送信ユニットを有し、
前記装置は、
‐ コンピュータプログラムを含有するためのメモリであるプログラムメモリと、
‐ 前記装置をブートするように配置されたブートローダを含むブートメモリと、
‐ 前記コンピュータプログラム及び前記ブートローダを実行するプロセッサと、
‐ 前記データパケットをワイヤレスに受信する受信ユニットと、
を有し、
前記ブートローダは、前記コンピュータプログラムをインストールするようにさらに配置され、
‐ 前記データパケットのうちのデータパケットを検出することであって、該検出することは前記データパケットを受信することの一部である、ことと、
‐ 前記データパケットから、(a)前記コンピュータプログラムの部分、及び該部分に関連した部分メタデータと、(b)前記コンピュータプログラムを集合的に形成する部分の集合に関連したプログラムメタデータと、のうち少なくとも1つを抽出することと、
‐ 前記部分メタデータに基づいて前記プログラムメモリ内のメモリ位置を決定することと、
‐ 前記プログラムメモリ内に記憶されている抽出された部分を表す進捗情報を維持することと、
‐ 前記進捗情報と前記プログラムメタデータとに基づいて部分の前記集合の記憶の完了を決定することと、
を含む、システム。
A system for installing a computer program on a device,
A host device arranged to transmit data packets,
Including
At least some of the data packets include respective portions of the computer program, and the host device comprises a transmission unit for wirelessly transmitting the data packets;
The device is
-A program memory, which is a memory for containing computer programs;
-A boot memory including a boot loader arranged to boot the device;
A processor for executing the computer program and the boot loader;
A receiving unit for wirelessly receiving the data packet;
Have
The boot loader is further arranged to install the computer program;
-Detecting a data packet of the data packets, wherein the detecting is part of receiving the data packet;
-From the data packet, (a) a portion of the computer program and partial metadata associated with the portion; and (b) program metadata associated with a set of portions that collectively form the computer program. Extracting at least one of them,
-Determining a memory location in the program memory based on the partial metadata;
-Maintaining progress information representing the extracted part stored in the program memory;
-Determining completion of storage of the set of parts based on the progress information and the program metadata;
Including the system.
前記装置に従う複数の装置を含み、前記複数の装置の各々が、部分の前記集合のうちそれぞれの異なる初期部分に対応するそれぞれの異なる時点に前記検出することを始動する、請求項10に記載のシステム。   11. The apparatus of claim 10, comprising a plurality of devices according to the device, wherein each of the plurality of devices initiates the detection at a different time point corresponding to a different initial portion of the set of portions. system. 請求項10に記載のシステムにおいて使用されるホスト装置であって、
‐ 前記データパケットをワイヤレスに送信する送信ユニットと、
‐ 前記送信ユニットを介してラウンドロビン方式でデータパケットの集合を送信するように配置されたプロセッサであって、前記データパケットのうちの各データパケットがコンピュータプログラムの部分を含み、前記データパケットの前記集合は、前記コンピュータプログラムを集合的に形成する部分の集合を集合的に含み、データパケットの前記集合は、単一のラウンドロビン期間内に送信される、プロセッサと、
を含むホスト装置。
A host device used in the system according to claim 10, comprising:
-A transmission unit for transmitting the data packet wirelessly;
A processor arranged to transmit a set of data packets in a round robin manner via the transmission unit, wherein each data packet of the data packets includes a part of a computer program, A set collectively includes a set of portions that collectively form the computer program, wherein the set of data packets is transmitted within a single round-robin period; and
Including host device.
命令を含むコンピュータ読取可能記憶媒体であって、前記命令が請求項12に記載のホスト装置のプロセッサにより実行されるときに、前記命令は前記プロセッサに、
‐ 前記コンピュータプログラムからの部分を決定するステップと、
‐ 前記部分に関連した部分メタデータを決定するステップと、
‐ 前記部分と前記部分メタデータとを含むデータパケットを組み立てるステップと、
を実行させる、コンピュータ読取可能記憶媒体。
A computer readable storage medium comprising instructions, wherein when the instructions are executed by a processor of a host device according to claim 12, the instructions are sent to the processor,
-Determining a part from said computer program;
-Determining partial metadata associated with the part;
-Assembling a data packet comprising said part and said partial metadata;
A computer-readable storage medium that executes
装置にコンピュータプログラムをインストールする方法であって、前記装置は、コンピュータプログラムを含有するためのメモリであるプログラムメモリと、前記装置をブートするように配置されたブートローダを含むブートメモリと、前記コンピュータプログラム及び前記ブートローダを実行するプロセッサと、データパケットをワイヤレスに受信する受信ユニットであって、前記コンピュータプログラムの部分がそれぞれの前記データパケットのうち少なくともいくつかによって含まれ、当該方法は、
‐ 前記データパケットのうちのデータパケットを検出するステップであって、該検出するステップは前記データパケットを受信することの一部である、ステップと、
‐ 前記データパケットから、(a)前記コンピュータプログラムの部分、及び該部分に関連した部分メタデータと、(b)前記コンピュータプログラムを集合的に形成する部分の集合に関連したプログラムメタデータと、のうち少なくとも1つを抽出するステップと、
‐ 前記部分メタデータに基づいて前記プログラムメモリ内のメモリ位置を決定するステップと、
‐ 前記プログラムメモリ内に記憶されている抽出された部分を表す進捗情報を維持するステップと、
‐ 前記進捗情報と前記プログラムメタデータとに基づいて部分の前記集合の記憶の完了を決定するステップと、
を含む方法。
A method of installing a computer program in an apparatus, wherein the apparatus is a program memory that is a memory for storing a computer program, a boot memory including a boot loader arranged to boot the apparatus, and the computer program And a processor that executes the boot loader and a receiving unit that wirelessly receives data packets, wherein the portion of the computer program is included by at least some of the data packets, the method comprising:
-Detecting a data packet of the data packets, the detecting step being a part of receiving the data packet;
-From the data packet, (a) a portion of the computer program and partial metadata associated with the portion; and (b) program metadata associated with a set of portions that collectively form the computer program. Extracting at least one of them;
-Determining a memory location in the program memory based on the partial metadata;
-Maintaining progress information representing the extracted portion stored in the program memory;
-Determining completion of storage of the set of parts based on the progress information and the program metadata;
Including methods.
命令を含むブートローダを含むコンピュータ読取可能記憶媒体であって、前記ブートローダがプロセッサにより実行されるときに、前記ブートローダは前記プロセッサに請求項14に記載の方法を実行させる、コンピュータ読取可能記憶媒体。   15. A computer readable storage medium comprising a boot loader including instructions, wherein the boot loader causes the processor to perform the method of claim 14 when the boot loader is executed by a processor.
JP2016571403A 2014-06-11 2015-06-10 System for installing software on small memory devices Active JP6660311B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14171873.4A EP2955629B1 (en) 2014-06-11 2014-06-11 System for installing new firmware on a small-memory device
EP14171873.4 2014-06-11
PCT/SG2015/000130 WO2015190998A2 (en) 2014-06-11 2015-06-10 System for installing software on a small-memory device

Publications (2)

Publication Number Publication Date
JP2017518583A true JP2017518583A (en) 2017-07-06
JP6660311B2 JP6660311B2 (en) 2020-03-11

Family

ID=50972467

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016571403A Active JP6660311B2 (en) 2014-06-11 2015-06-10 System for installing software on small memory devices

Country Status (7)

Country Link
US (1) US10642591B2 (en)
EP (1) EP2955629B1 (en)
JP (1) JP6660311B2 (en)
KR (1) KR102400681B1 (en)
CN (1) CN106462416B (en)
TW (1) TWI560546B (en)
WO (1) WO2015190998A2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015100439A1 (en) 2013-12-26 2015-07-02 Tandem Diabetes Care, Inc. Integration of infusion pump with remote electronic device
EP3087548A4 (en) * 2013-12-26 2017-09-13 Tandem Diabetes Care, Inc. Safety processor for wireless control of a drug delivery device
WO2019033266A1 (en) * 2017-08-15 2019-02-21 General Electric Company Smart equipment, method used by smart equipment, and smart lamp
CN110083381B (en) * 2018-01-26 2023-04-28 启碁科技股份有限公司 Incremental upgrading method and device
CN111143232B (en) * 2018-11-02 2023-08-18 伊姆西Ip控股有限责任公司 Method, apparatus and computer readable medium for storing metadata

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03265953A (en) * 1990-03-15 1991-11-27 Fujitsu Ltd Down load control system for control program to terminal equipment
JP2000350185A (en) * 1998-08-03 2000-12-15 Matsushita Electric Ind Co Ltd Control program transmission method and method for downloading control program
JP2001274721A (en) * 2000-03-27 2001-10-05 Sharp Corp Method for rewriting firmware of wireless terminal
JP2003108398A (en) * 2001-09-28 2003-04-11 Seiko Epson Corp Method for rewriting program and device therefor, and information processing apparatus
JP2005050097A (en) * 2003-07-28 2005-02-24 Sony Corp Information processor, information processing method, program, and storage medium
JP2007274375A (en) * 2006-03-31 2007-10-18 Onkyo Corp Av system, source apparatus, and receiving apparatus
JP2009025937A (en) * 2007-07-18 2009-02-05 Funai Electric Co Ltd Electronic device
JP2009077125A (en) * 2007-09-20 2009-04-09 Sony Corp Reception system, receiver, control device and method and program
JP2009199335A (en) * 2008-02-21 2009-09-03 Kyocera Mita Corp Program distribution system, program distribution server device, and information processor
JP2010092297A (en) * 2008-10-08 2010-04-22 Olympus Corp Distributed control device and program rewriting method
JP2011257954A (en) * 2010-06-08 2011-12-22 Sony Corp Update management server, electronic device, update management system having the server and the device, and method of the system
JP2012093961A (en) * 2010-10-27 2012-05-17 Omron Automotive Electronics Co Ltd Control apparatus and method, and program write system
JP2012230474A (en) * 2011-04-25 2012-11-22 Japan Radio Co Ltd Program update system, and program update method
US20130211613A1 (en) * 2012-02-15 2013-08-15 Robert M. Praske Smart Bulb System

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4503533A (en) * 1981-08-20 1985-03-05 Stanford University Local area communication network utilizing a round robin access scheme with improved channel utilization
US6269398B1 (en) * 1993-08-20 2001-07-31 Nortel Networks Limited Method and system for monitoring remote routers in networks for available protocols and providing a graphical representation of information received from the routers
US5828887A (en) * 1996-05-23 1998-10-27 Electronic Data Systems Corporation Network based program loader system and method of operation
US6252880B1 (en) * 1997-11-10 2001-06-26 Advanced Micro Devices, Inc. Apparatus and method for selectively supplying a data packet to a selected network node in a buffered distributor
US6698017B1 (en) * 1999-07-16 2004-02-24 Nortel Networks Limited Software migration on an active processing element
US7031267B2 (en) * 2000-12-21 2006-04-18 802 Systems Llc PLD-based packet filtering methods with PLD configuration data update of filtering rules
US20020083331A1 (en) * 2000-12-21 2002-06-27 802 Systems, Inc. Methods and systems using PLD-based network communication protocols
US7055146B1 (en) * 2001-03-08 2006-05-30 Microsoft Corporation Method and system for dynamically inserting modifications for identified programs
JP4827310B2 (en) * 2001-03-30 2011-11-30 パナソニック株式会社 Remote program download system
WO2002084484A2 (en) * 2001-04-18 2002-10-24 Domosys Corporation Method of remotely upgrading firmware in field-deployed devices
US7065347B1 (en) * 2001-06-27 2006-06-20 Peoplenet Communications Corporation System and method for over the air programming
CN1529847A (en) * 2001-07-16 2004-09-15 任宇清 Embedded software update system
US20030028870A1 (en) * 2001-08-01 2003-02-06 Weisman Mitchell T. Distribution of downloadable software over a network
KR20030032257A (en) * 2001-10-17 2003-04-26 삼성전자주식회사 Method for upgrading program and apparatus therefor
EP1456777B1 (en) * 2001-12-19 2019-11-20 Irdeto B.V. Digital content distribution system
US20040098715A1 (en) * 2002-08-30 2004-05-20 Parixit Aghera Over the air mobile device software management
US7984435B2 (en) * 2002-11-13 2011-07-19 Hewlett-Packard Development Company, L.P. Update system employing reference software to reduce number of update packages
US7287068B1 (en) * 2002-12-13 2007-10-23 Bmc Software, Inc. System and method for updating devices that execute an operating system or application program directly from nonvolatile storage
US7171606B2 (en) * 2003-03-25 2007-01-30 Wegener Communications, Inc. Software download control system, apparatus and method
US7673297B1 (en) * 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
US8555273B1 (en) * 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7926051B2 (en) * 2003-11-10 2011-04-12 International Business Machines Corporation Automatic parallel non-dependent component deployment
US20050102666A1 (en) * 2003-11-10 2005-05-12 International Business Machines (Ibm) Corporation Pre-deployment component hosting environment analyzer
US20050102667A1 (en) * 2003-11-10 2005-05-12 International Business Machines (Ibm) Corporation Generating summaries for software component installation
US8713295B2 (en) * 2004-07-12 2014-04-29 Oracle International Corporation Fabric-backplane enterprise servers with pluggable I/O sub-system
TW200713037A (en) * 2005-09-06 2007-04-01 Benq Corp System and method for updating firmware
US7903267B2 (en) * 2005-11-02 2011-03-08 Kyocera Mita Corporation Automatic installation system for printer driver, and program recording medium
US8010638B2 (en) * 2007-04-05 2011-08-30 Alpine Electronics, Inc. Method and apparatus for updating firmware for interface unit connecting portable audio/video player with another audio/video player
US8359373B2 (en) * 2008-02-06 2013-01-22 Broadcom Corporation Handheld computing unit of a computing device with an extended computing unit
KR101498054B1 (en) * 2008-09-12 2015-03-03 엘지전자 주식회사 Method of performing communication in a wireless communication system
JP5289003B2 (en) * 2008-11-17 2013-09-11 エイチジーエスティーネザーランドビーブイ Disk drive and method of changing the program
TW201027324A (en) * 2009-01-14 2010-07-16 Giga Byte Tech Co Ltd Embedded electronic device free from being stuck in update failure and method of making the same
JP2010198155A (en) * 2009-02-24 2010-09-09 Fujitsu Ten Ltd Device and method for updating program, and information processing apparatus
TW201035870A (en) * 2009-03-20 2010-10-01 Chi Mei Comm Systems Inc System and method for dynamically loading data of a mobile phone
US20100262711A1 (en) * 2009-04-09 2010-10-14 Nokia Corporation Systems, methods, and apparatuses for media file streaming
TW201102924A (en) 2009-07-03 2011-01-16 Inventec Appliances Corp Embedded electronic device and method for updating firmware thereof
JP5278222B2 (en) * 2009-07-22 2013-09-04 富士通株式会社 Wireless communication apparatus, wireless communication method, and wireless communication program
US8752039B1 (en) * 2009-08-19 2014-06-10 Juniper Networks, Inc. Dynamic upgrade of operating system in a network device
US9819498B2 (en) * 2010-02-04 2017-11-14 Gentex Corporation System and method for wireless re-programming of memory in a communication system
KR20120041384A (en) * 2010-10-21 2012-05-02 삼성전자주식회사 Method and apparatus for updating firmware of mobile device
EP2729870A4 (en) * 2011-07-08 2014-12-17 Openpeak Inc System and method for validating components during a booting process
US20130024850A1 (en) * 2011-07-18 2013-01-24 Honeywell International Inc. Systems, methods and apparatus for fast file transfer
US8805990B2 (en) * 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
CN102946599B (en) * 2012-11-08 2016-08-17 惠州Tcl移动通信有限公司 Realize method and mobile terminal that application program for mobile terminal is downloaded
US8781502B1 (en) * 2013-02-01 2014-07-15 Swirl Networks, Inc. Systems and methods for display of supplemental content responsive to location
KR101515198B1 (en) * 2013-04-10 2015-05-11 주식회사 팬택 Apparatus and method for firmware upgrade in mobile device
US9342316B1 (en) * 2013-12-12 2016-05-17 American Megatrends, Inc. Installing digital signage device operating system from flash memory and registering signage device to a global network
US20150170136A1 (en) * 2013-12-18 2015-06-18 PayRange Inc. Method and System for Performing Mobile Device-To-Machine Payments

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03265953A (en) * 1990-03-15 1991-11-27 Fujitsu Ltd Down load control system for control program to terminal equipment
JP2000350185A (en) * 1998-08-03 2000-12-15 Matsushita Electric Ind Co Ltd Control program transmission method and method for downloading control program
JP2001274721A (en) * 2000-03-27 2001-10-05 Sharp Corp Method for rewriting firmware of wireless terminal
JP2003108398A (en) * 2001-09-28 2003-04-11 Seiko Epson Corp Method for rewriting program and device therefor, and information processing apparatus
JP2005050097A (en) * 2003-07-28 2005-02-24 Sony Corp Information processor, information processing method, program, and storage medium
JP2007274375A (en) * 2006-03-31 2007-10-18 Onkyo Corp Av system, source apparatus, and receiving apparatus
JP2009025937A (en) * 2007-07-18 2009-02-05 Funai Electric Co Ltd Electronic device
JP2009077125A (en) * 2007-09-20 2009-04-09 Sony Corp Reception system, receiver, control device and method and program
JP2009199335A (en) * 2008-02-21 2009-09-03 Kyocera Mita Corp Program distribution system, program distribution server device, and information processor
JP2010092297A (en) * 2008-10-08 2010-04-22 Olympus Corp Distributed control device and program rewriting method
JP2011257954A (en) * 2010-06-08 2011-12-22 Sony Corp Update management server, electronic device, update management system having the server and the device, and method of the system
JP2012093961A (en) * 2010-10-27 2012-05-17 Omron Automotive Electronics Co Ltd Control apparatus and method, and program write system
JP2012230474A (en) * 2011-04-25 2012-11-22 Japan Radio Co Ltd Program update system, and program update method
US20130211613A1 (en) * 2012-02-15 2013-08-15 Robert M. Praske Smart Bulb System

Also Published As

Publication number Publication date
TW201610679A (en) 2016-03-16
CN106462416A (en) 2017-02-22
CN106462416B (en) 2020-08-25
WO2015190998A3 (en) 2016-02-25
WO2015190998A2 (en) 2015-12-17
US20170083304A1 (en) 2017-03-23
EP2955629A1 (en) 2015-12-16
EP2955629B1 (en) 2021-10-27
JP6660311B2 (en) 2020-03-11
TWI560546B (en) 2016-12-01
KR102400681B1 (en) 2022-05-23
KR20170041687A (en) 2017-04-17
US10642591B2 (en) 2020-05-05

Similar Documents

Publication Publication Date Title
JP6660311B2 (en) System for installing software on small memory devices
US9000896B1 (en) Network addressable appliance interface device
JP5539354B2 (en) Scene update on remote controller in home control system
WO2016058366A1 (en) Smart home appliance control method and home control center
EP2840455A1 (en) Method, apparatus and system for intelligently controlling device, and plug-and-play device
US20110312272A1 (en) Remote control device, communication device, remote control method, and program
US20210119858A1 (en) Network node firmware update
US20160227474A1 (en) Multi-device network setup
WO2011130829A1 (en) Method and system for proximity-based, peer-initiated device configuration
EP3066564B1 (en) Software distribution architecture for hardware devices
WO2020239499A1 (en) Enabling upgrading firmware of a target device
CN104469503B (en) The initial method of a kind of electronic equipment and its external equipment, device
US9380626B2 (en) Communication apparatus, information processing apparatus, and control method for the same
CN109471651A (en) A kind of firmware upgrade method, gateway and firmware upgrade system
KR20170098516A (en) Dongle and control method thereof
WO2019129271A1 (en) Method for electronic device authentication and firmware update, and electronic device
CN103825937A (en) Method, device and system for controlling data updating of embedded equipment
CN103763008B (en) The method and system of transfer of data between a kind of controlled bluetooth equipment, bluetooth equipment
JP6889662B2 (en) Connected device system
CN115701580A (en) Method and device for upgrading firmware of remote controller, electronic equipment and storage medium
WO2014173249A1 (en) Terminal and upgrade method thereof
JP2018042018A (en) Communication device, communication method, and communication program
JP2015215635A (en) Management system and management device to be used for the same, and management method and management program
TWI541771B (en) Cloud system for setting sensing parameters and the operating method thereof
JP7002856B2 (en) Information processing equipment, information processing methods and programs

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20161202

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190807

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200207

R150 Certificate of patent or registration of utility model

Ref document number: 6660311

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250