JP2018018370A - 情報処理装置及びプログラム - Google Patents
情報処理装置及びプログラム Download PDFInfo
- Publication number
- JP2018018370A JP2018018370A JP2016149505A JP2016149505A JP2018018370A JP 2018018370 A JP2018018370 A JP 2018018370A JP 2016149505 A JP2016149505 A JP 2016149505A JP 2016149505 A JP2016149505 A JP 2016149505A JP 2018018370 A JP2018018370 A JP 2018018370A
- Authority
- JP
- Japan
- Prior art keywords
- information
- variable
- setting
- storage position
- data
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】設定情報がバイナリデータ形式で記憶された情報処理装置上で動作するソフトウェアのバージョンが変更された場合に、バージョン変更前において設定済みの設定情報の内容をバージョン変更後においても維持する。【解決手段】不揮発性メモリ12には、ユーザデータ14の旧データ構造を定義する旧構造体のメンバを識別するメンバID及びメンバに対する設定値の記憶位置を示すオフセット情報を含むNV側メンバ情報16が記憶される。ROM18には、ユーザデータ14の新データ構造を定義する新構造体のメンバを識別するメンバID及びメンバに対する設定値の記憶位置を示すオフセット情報を含むROM側メンバ情報20が記憶される。コンバート処理部28は、NV側メンバ情報16のオフセット情報に基づいて、各メンバの設定値を不揮発性メモリ12から読み出し、ROM側メンバ情報20のオフセット情報に基づいて読み出した各設定値を書き戻す。【選択図】図1
Description
本発明は、情報処理装置及びプログラムに関する。
従来、自装置に関する設定情報を記憶する情報処理装置が知られている。例えば、複合機などの画像処理装置には、プリント機能を選択したときのプリント設定(初期設定)などを示す設定情報が、画像処理装置内に設けられる記憶部に記憶される。これらの設定情報は、例えば情報処理装置の利用者あるいは管理者などにより設定される。
情報処理装置上で動作するソフトウェア(例えばファームウェア)のバージョンが変更された場合、変更前と変更後との間において、設定情報の互換性が問題となる場合がある。そこで、従来、情報処理装置上で動作するソフトウェアのバージョンが変更された場合であっても、バージョン変更前の設定情報をバージョン変更後においても利用できるようにする技術が提案されている。
例えば、特許文献1には、設定情報に含まれる各データのバージョン変更前と変更後における対応関係を示す変換ルール情報に基づいて設定情報を変換する技術が開示されている。また、特許文献2には、予め用意された設定移行プログラムによって、情報処理装置上で動作するソフトウェアのバージョン変更に伴って、設定情報の移行(変換)処理を実行するシステムが開示されている。
情報処理装置において、記憶部(例えばメモリなど)の容量削減、あるいは設定情報の高速な読み書きを実現するために、データ容量の小さいバイナリ形式で設定情報を記憶部に記憶することが考えられる。一般的に、記憶部からのバイナリデータの読み出しは、読み出し部(例えば制御部など)が、当該バイナリデータのデータ構造を示す情報に基づいて、記憶部のメモリアドレスあるいはデータサイズなどを指定することで実行される。
情報処理装置上で動作するソフトウェアのバージョンが変更され、設定情報のデータ構造が変更されると、設定情報に含まれる各データが格納されるべきメモリアドレスあるいはサイズなどが変更される。バイナリ形式で設定情報が記憶されている場合、ソフトウェアのバージョン変更により設定情報のデータ構造が変更されると、読み出し部が参照するデータ構造と、記憶部に実際に記憶されている設定情報のデータ構造とが互いに異なることになる。その結果、設定情報を読み出せなくなってしまう。これにより、情報処理装置の利用者あるいは管理者などは、ソフトウェアのバージョン変更後に、再度、設定情報の設定を行わなければならないという問題があった。なお、ソフトウェアのバージョン変更前後における設定情報に含まれる各データの対応関係を示す情報や、設定情報の変換処理を行うための専用プログラムは、それ自体の容量が膨大となるのが一般的であり、バイナリ形式で設定情報を記憶する情報処理装置においてそれらを適用するのは好ましくない。
本発明の目的は、設定情報がバイナリデータ形式で記憶された情報処理装置上で動作するソフトウェアのバージョンが変更された場合に、バージョン変更前において設定済みの設定情報の内容をバージョン変更後においても維持することにある。
請求項1に係る発明は、自装置の関する設定情報であって1又は複数の変数それぞれに対応する設定値を含む設定情報をバイナリ形式で記憶する設定情報記憶部と、自装置上で動作するソフトウェアのバージョン変更前における前記設定情報に含まれる1又は複数の第1変数を識別する第1変数識別情報、及び、前記設定情報記憶部における前記第1変数に対応する設定値の記憶位置を示す第1記憶位置情報を含む第1変数情報を記憶する第1変数情報記憶部と、前記ソフトウェアのバージョン変更後における前記設定情報に含まれる1又は複数の第2変数を識別する第2変数識別情報、及び、前記設定情報記憶部における前記第2変数に対応する設定値の記憶位置を示す第2記憶位置情報を含む第2変数情報を記憶する第2変数情報記憶部と、前記第1記憶位置情報が示す前記記憶位置に基づいて、前記第1変数に対応する前記設定値を前記設定情報記憶部から読み出し、前記第1及び第2変数識別情報に基づいて、当該第1変数に対応する前記第2変数を特定し、前記第2記憶位置情報が示す、特定された前記第2変数に対応する前記記憶位置に基づいて、読み出した前記設定値を前記設定情報記憶部に書き込む転換処理を実行する設定情報転換部と、を備えることを特徴とする情報処理装置である。
請求項2に係る発明は、前記第1変数情報は、さらに、前記第1変数に対応する設定値のデータサイズを示す第1サイズ情報を含み、前記第2変数情報は、さらに、前記第2変数に対応する設定値のデータサイズを示す第2サイズ情報を含み、前記設定情報転換部は、前記第1記憶位置情報及び前記第1サイズ情報が示す記憶領域から前記第1変数に対応する前記設定値を読み出し、前記第2記憶位置情報及び前記第2サイズ情報が示す、特定された前記第2変数に対応する記憶領域に、読み出した前記設定値の少なくとも一部を書き込む、ことを特徴とする請求項1に記載の情報処理装置である。
請求項3に係る発明は、前記第2変数情報は、さらに、前記第2変数のデータ型を示すデータ型情報を含み、前記設定情報転換部は、前記データ型情報が示す、特定された前記第2変数のデータ型に基づいて、読み出した前記設定値の少なくとも一部を書き込む、ことを特徴とする請求項2に記載の情報処理装置である。
請求項4に係る発明は、コンピュータを、自装置に関する設定情報であって1又は複数の変数それぞれに対応する設定値を含む設定情報をバイナリ形式で記憶する設定情報記憶部と、自装置上で動作するソフトウェアのバージョン変更前における前記設定情報に含まれる1又は複数の第1変数を識別する第1変数識別情報、及び、前記設定情報記憶部における前記第1変数に対応する設定値の記憶位置を示す第1記憶位置情報を含む第1変数情報を記憶する第1変数情報記憶部と、前記ソフトウェアのバージョン変更後における前記設定情報に含まれる1又は複数の第2変数を識別する第2変数識別情報、及び、前記設定情報記憶部における前記第2変数に対応する設定値の記憶位置を示す第2記憶位置情報を含む第2変数情報を記憶する第2変数情報記憶部と、前記第1記憶位置情報が示す前記記憶位置に基づいて、前記第1変数に対応する前記設定値を前記設定情報記憶部から読み出し、前記第1及び第2変数識別情報に基づいて、当該第1変数に対応する前記第2変数を特定し、前記第2記憶位置情報が示す、特定された前記第2変数に対応する前記記憶位置に基づいて、読み出した前記設定値を前記設定情報記憶部に書き込む転換処理を実行する設定情報転換部と、として機能させることを特徴とするプログラムである。
請求項1又は4に記載の発明によれば、設定情報がバイナリデータ形式で記憶された情報処理装置上で動作するソフトウェアのバージョンが変更された場合に、バージョン変更前において設定済みの設定情報の内容をバージョン変更後においても維持することができる。
請求項2に記載の発明によれば、ソフトウェアのバージョン変更により設定情報に含まれる各変数のデータサイズが変更された場合であっても、適切に転換処理を行うことができる。
請求項3に記載の発明によれば、設定情報記憶部から読み出した設定情報を第2変数のデータ型の適切なデータとして前記設定情報記憶部に書き戻すことができる。
以下、本発明の実施形態を図面に基づいて説明する。
<第1実施形態>
図1には、本実施形態に係る情報処理装置としての画像処理装置10の構成概略図が示されている。画像処理装置10は、いわゆる複合機であり、プリント機能、コピー機能、スキャン機能、あるいはファックス機能などを有する装置である。
図1には、本実施形態に係る情報処理装置としての画像処理装置10の構成概略図が示されている。画像処理装置10は、いわゆる複合機であり、プリント機能、コピー機能、スキャン機能、あるいはファックス機能などを有する装置である。
不揮発性メモリ12は、例えばハードディスクあるいはフラッシュメモリ(SDメモリカードあるいはUSB(Universal Serial Bus)メモリ)などから構成される。不揮発性メモリ12は、画像処理装置10に対して着脱可能となっていてもよい。不揮発性メモリ12は、電源の供給を遮断しても記憶済みの情報を保持するものである。不揮発性メモリ12には、設定情報としてのユーザデータ14、及び第1変数情報としてのNV側メンバ情報16が記憶される。つまり、不揮発性メモリ12は、設定情報記憶部及び第1変数情報記憶部として機能する。
ユーザデータ14は、画像処理装置10の動作に関する情報である。例えば、ユーザデータ14には、画像処理装置10において各機能が選択された場合の当該機能の設定(初期設定)などの情報が含まれる。ユーザデータ14は、画像処理装置10の利用者(ユーザ)あるいは管理者によって適宜設定されてよい。ユーザが画像処理装置10を利用する場合にユーザを識別するための認証処理が行われる場合は、ユーザデータ14はユーザ毎に記憶されてもよい。
ユーザデータ14は、バイナリ形式で記憶される。これにより、不揮発性メモリ12の低容量化が実現され、あるいは、不揮発性メモリ12からのユーザデータ14の高速な読み書き処理が実現される。
ユーザデータ14のデータ構造は、後述のROM(Read Only Memory)18に記憶される、画像処理装置10上で動作するソフトウェアとしてのファームウェアによって定義される。本実施形態においては、ユーザデータ14のデータ構造は、1又は複数の変数としてのメンバを含む構造体で定義され、C言語によって以下のように定義されるものとする。
struct AAA{
int aaa;
short bbb;
short ccc;
long ddd;
}
struct AAA{
int aaa;
short bbb;
short ccc;
long ddd;
}
ここで、「AAA」は構造体名である。「int aaa」、「short bbb」、「short ccc」、「long ddd」がそれぞれメンバを示す。「int aaa」を例に取ると、「int」がメンバのデータ型を示し、「aaa」がメンバのメンバ名を示す。なお、上記例では、ユーザデータ14は1つの構造体から定義されているが、ユーザデータ14のデータ構造は複数の構造体から定義されてもよい。
ユーザデータ14は、上記のような構造体の各メンバに設定される設定値を含む。例えば、メンバ「int aaa」に対する設定値、メンバ「short bbb」に対する設定値、メンバ「short ccc」に対する設定値、及び「long ddd」に対する設定値を含む。
NV側メンバ情報16は、不揮発性メモリ12に記憶されているユーザデータ14のデータ構造を定義する構造体のメンバに関する情報を含むものである。なお、NV側メンバ情報16もバイナリ形式で不揮発性メモリ12に記憶される。
ROM18に記憶されるファームウェアのバージョン変更(バージョンアップ及びバージョンダウンの双方を含む)が行われることによって、新バージョンのファームウェア(以下「新ファームウェア」と記載する)におけるユーザデータ14のデータ構造(以下「新データ構造」と記載する)を定義する1又は複数の構造体(以下「新構造体」と記載する)のメンバが変更された場合であっても、不揮発性メモリ12は、旧バージョンのファームウェア(以下「旧ファームウェア」と記載する)におけるユーザデータ14のデータ構造(以下「旧データ構造」と記載する)を定義する1又は複数の構造体(以下「旧構造体」と記載する)のメンバに関する情報をNV側メンバ情報16として保持し続ける。つまり、ファームウェアのバージョンが変更された場合、NV側メンバ情報16は旧構造体のメンバに関する情報を示すものとなる。
図2に、NV側メンバ情報16の内容が示されている。本実施形態においては、NV側メンバ情報16は、旧構造体に含まれる第1変数としてのメンバを識別、つまり一意に特定する第1変数識別情報としてのメンバID、及び、旧構造体の先頭アドレスから当該旧構造体に含まれるメンバに対応する設定値が記憶された記憶領域の先頭アドレスまでのバイトオフセットを示すオフセット情報を含んでいる。NV側メンバ情報16に含まれるオフセット情報は、第1変数に対応する設定値の記憶位置を示す第1記憶位置情報として機能する。メンバIDは、ファームウェアの作成者(プログラマ)によって各メンバに付与されるものである。また、図2には示されていないが、NV側メンバ情報16は、旧構造体の先頭アドレスを示す情報も含んでいる。
なお、図2において、メンバID「1」は上述の構造体におけるメンバ「int aaa」を示し、メンバID「2」はメンバ「short bbb」を示し、メンバID「3」はメンバ「short ccc」を示し、メンバID「4」はメンバ「long ddd」を示している。図2に示したNV側メンバ情報16によれば、各メンバIDが示すメンバに対応する設定値の記憶位置を把握することができる。例えば、メンバID「2」が示すメンバ(本例ではメンバ「short bbb」)に対応する設定値は、構造体「AAA」の先頭アドレスからオフセット4バイトから開始する記憶領域に記憶されていることが把握できる。
ROM18には、画像処理装置10を動作させるためのプログラムが記憶される。また、ROM18には、画像処理装置10上で動作する種々のソフトウェアが記憶される。当該ソフトウェアには、画像処理装置10の各機能に対応するファームウェア、あるいは画像処理装置10の機能全体に対応するファームウェアなどが含まれてよい。本実施形態では、ROM18には画像処理装置10の機能全体に対応するファームウェアがインストールされ、当該ファームウェアのバージョンによりユーザデータ14のデータ構造が変更され得るとする。当該ファームウェアは画像処理装置10のユーザあるいは管理者などによってインストールされる。また、ROM18には、当該ファームウェアのバージョンを示す情報が記憶される。
ROM18には、ROM18にインストールされたファームウェアにおけるユーザデータ14のデータ構造を定義する構造体のメンバに関する情報を含む第2変数情報としてのROM側メンバ情報20が記憶される。つまり、ROM18は第2変数情報記憶部として機能する。
ここで、ファームウェアのバージョン変更が行われ、ROM18に新ファームウェアがインストールされた場合、上述のように、NV側メンバ情報16としては、旧データ構造を定義する旧構造体のメンバに関する情報が保持される一方、ROM側メンバ情報20には新データ構造を定義する新構造体のメンバに関する情報が保持される。
本実施形態においては、旧データ構造と新データ構造とが互いに異なるものとし、新データ構造は、以下の新構造体により定義されるとする。
struct AAA{
int aaa;
short bbb;
double xxx;
short ccc;
long ddd;
}
struct AAA{
int aaa;
short bbb;
double xxx;
short ccc;
long ddd;
}
本実施形態においては、新構造体は、第2変数としてのメンバを5つ含む。詳しくは、旧構造体に比して「double xxx」が追加されている。このような場合、従来においては、メンバ「short ccc」及びメンバ「long ddd」のオフセットが変更されるため、これらのメンバの値を適切に読み込むことができなくなる。その結果、後述の制御部26は、ユーザデータ14が構造体「AAA」のデータであることを認識できず、旧ファームウェア時に設定されたユーザデータ14全体を読み込むことができなくなってしまう。
図3に、ROM側メンバ情報20の内容が示されている。本実施形態においては、ROM側メンバ情報20は、新構造体に含まれるメンバを識別する第2変数識別情報としてのメンバID、及び、新構造体の先頭アドレスから当該新構造体に含まれるメンバに対応する設定値が記憶される記憶領域の先頭アドレスまでのバイトオフセットを示すオフセット情報を含んでいる。ROM側メンバ情報20に含まれるオフセット情報は、第2変数に対応する設定値の記憶位置を示す第2記憶位置情報として機能する。
なお、図3において、メンバID「1」は上述の構造体におけるメンバ「int aaa」を示し、メンバID「2」はメンバ「short bbb」を示し、メンバID「3」はメンバ「short ccc」を示し、メンバID「4」はメンバ「long ddd」を示し、メンバID「5」はメンバ「double xxx」を示している。このように、NV側メンバ情報16及びROM側メンバ情報20において、新旧構造体において同一のメンバには同一のメンバIDが付与される。
さらに、図3に示されるように、ROM側メンバ情報20は、各メンバIDが示すメンバが含まれる構造体の構造体名を示す構造体名情報、各メンバのメンバ名を示すメンバ名情報、及び、各メンバに対応する設定値のデータサイズを示す第2サイズ情報としてのデータサイズ情報を含んでいる。各メンバのオフセット情報、及びデータサイズ情報に基づいて、当該メンバに対応する設定値が記憶される不揮発性メモリ12内の記憶領域が決定される。また、図3には示されていないが、ROM側メンバ情報20は、新構造体の先頭アドレスを示す情報を含んでいる。
RAM(Random Access Memory)22には、各種データが一時的に書き込まれる。画像処理装置10において処理が行われる際に、必要なデータがRAM22上に展開され、展開されたデータに基づいて制御部26が処理を行う。なお、RAM22は揮発性メモリであり、画像処理装置10がパワーオフされるなどしてRAM22への電源の供給が遮断されると、RAM22に記憶された内容は消去される。
入力部24は、タッチパネルあるいはボタンなどを含んで構成される。入力部24は、画像処理装置10のユーザあるいは管理者などの指示を画像処理装置10に入力するために用いられる。例えば、ユーザがユーザデータ14を入力する際に入力部24が用いられる。
制御部26は、例えばCPU(Central Processing Unit)、あるいはマイクロコンピュータなどを含んで構成され、ROM18に記憶されたプログラムに従って画像処理装置10の各部を動作させるものである。制御部26は、当該プログラムにより、設定情報転換部としてのコンバート処理部28としても機能する。
コンバート処理部28は、NV側メンバ情報16及びROM側メンバ情報20に基づいて、ユーザデータ14の内容の少なくとも一部を維持しつつ、ユーザデータ14のデータ構造を旧構造体によって定義される旧データ構造から新構造体によって定義される新データ構造に転換する転換処理としてのコンバート処理を行う。
以下、図2に示す内容のNV側メンバ情報16が不揮発性メモリ12に記憶され、図3に示す内容のROM側メンバ情報20がROM18に記憶された場合を例にして、コンバート処理部28が行うコンバート処理について説明する。なお、本実施形態では、ファームウェアのバージョン変更により、ユーザデータ14のデータ構造を定義する構造体の構造体名、並びに、同一のメンバIDが示すメンバのデータ型及びデータサイズは変更されないものとする。
ファームウェアのバージョン変更が行われた場合、コンバート処理部28は、NV側メンバ情報16及びROM側メンバ情報20に基づいて、旧データ構造のユーザデータ14を不揮発性メモリ12から読み出す。
メンバID「3」を例にすると、まず、コンバート処理部28は、ROM側メンバ情報20を参照して、メンバID「3」が示すメンバが含まれる構造体名「AAA」を特定する。次に、コンバート処理部28は、NV側メンバ情報16におけるメンバID「3」に関連付けられたオフセット情報「6バイト」に基づいて、旧データ構造における構造体「AAA」の先頭アドレスから6バイト目を読み出し開始位置として特定する。また、コンバート処理部28は、ROM側メンバ情報20におけるメンバID「3」に関連付けられたデータサイズ情報「2バイト」に基づいて、特定した読み出し開始位置から2バイト分を読み出し領域として特定する。そして、コンバート処理部28は、特定した読み出し領域から設定値を読み出す。読み出された設定値は、旧構造体におけるメンバ「short ccc」の設定値である。コンバート処理部28は、読み出した設定値と当該メンバID「3」を関連付けて、RAM22に保持する。
上記の処理をROM側メンバ情報20に含まれる各メンバIDについて行う。それにより、各メンバID「1」〜「4」に関連付けられた各設定値がRAM22に保持される。
メンバID「5」が示すメンバ「long ddd」は、新構造体において新たに追加されたメンバであるため、メンバID「5」に関する情報はNV側メンバ情報16に含まれていない。このように、ROM側メンバ情報20に含まれ、NV側メンバ情報16に含まれないメンバIDに対しては、RAM22おいて、予め定められた所定値が関連付けられる。当該所定値は、画像処理装置10のユーザあるいは管理者によって設定されてもよく、あるいは固定値(例えば「0」)であってもよい。なお、ROM側メンバ情報20に含まれず、NV側メンバ情報16に含まれるメンバIDについては設定値の読み出し処理を行わない。
上記の処理により、ROM側メンバ情報20に含まれる各メンバIDに対して設定値が関連付けられてRAM22に保持される。
次いで、コンバート処理部28は、ROM側メンバ情報20に含まれるメンバID、オフセット情報、及びデータサイズ情報に基づいて、RAM22に保持した各設定値を不揮発性メモリ12に書き戻す処理を行う。例えば、ROM側メンバ情報20におけるメンバID「3」に関連付けられたオフセット情報「14バイト」及びデータサイズ情報「2バイト」に基づいて、新データ構造における構造体「AAA」のオフセット14バイトから2バイト分の記憶領域を書き込み領域として特定する。そして、特定された書き込み領域に、RAM22に保持したメンバID「3」に関連付けられた設定値を書き込む。
メンバID「3」が示すメンバ「short ccc」に対応する設定値は、旧データ構造においては、旧構造体「AAA」の先頭アドレスからオフセット6バイトが示す位置に記憶されていたが、新データ構造においては、新構造体「AAA」の先頭アドレスからオフセット14バイトが示す位置に記憶されることになっている。つまり、新旧データ構造においてメンバ「short ccc」に対応する設定値の記憶位置が変わっている。このような場合であっても、コンバート処理部28は、NV側メンバ情報16に基づいて、旧データ構造のユーザデータ14からメンバ「short ccc」に対応する設定値を読み出し、ROM側メンバ情報20に基づいて、新データ構造においてメンバ「short ccc」に対応する設定値が書き込まれるべき記憶領域に、読み出した設定値を書き込むことができる。
以上の書き戻し処理によって、ユーザデータ14の内容が維持されつつ、ユーザデータ14のデータ構造が旧データ構造から新データ構造に変換される。つまり、たとえファームウェアのバージョン変更によりユーザデータ14のデータ構造が変化したとしても、ユーザデータ14の内容を引き継ぐことができる。
本実施形態では、コンバート処理部28は、ファームウェアのバージョンが変更された後に、画像処理装置10が起動されたタイミングでコンバート処理を行う。
画像処理装置10の構成概略は以上の通りである。以下、図4及び図5に示すフローチャートに従って、画像処理装置10の処理の流れについて説明する。図5に示すフローチャートは、図4に示すフローチャートに含まれる、設定情報のコンバート処理(ステップS14)の詳細を示すものである。なお、ここでは、図4に示すフローチャートの開始時において、不揮発性メモリ12には、図2に示す内容のNV側メンバ情報16が記憶されているものとする。また、図4に示すフローチャートの開始前において、画像処理装置10のユーザあるいは管理者によって、画像処理装置10に新ファームウェアがインストールされ、ROM18に新ファームウェアが記憶されたものとする。それと共に、ROM18には、図3に示す内容のROM側メンバ情報20が記憶されたものとする。
ステップS10において、コンバート処理部28は、不揮発性メモリ12にNV側メンバ情報16が記憶されているか否かを判定する。ここでは、不揮発性メモリ12にNV側メンバ情報16が記憶されているため(ここで、NV側メンバ情報16が示すのは旧構造体のメンバに関する情報となる)ステップS12に進む。仮に、画像処理装置10の初回起動時など、不揮発性メモリ12にNV側メンバ情報16が記憶されていない場合はステップS16に進む。
ステップS12において、コンバート処理部28は、ROM18にインストールされているファームウェアのバージョンが、前回起動時と同じであったか否かを判定する。同じである場合は、ユーザデータ14のデータ構造に変更が無いとみなせるため、ユーザデータ14のコンバート処理を行わずに処理を終了する。ファームウェアのバージョンが変更された場合はステップS14におけるユーザデータ14のコンバート処理に進む。
ステップS14において、コンバート処理部28は、ユーザデータ14の内容を維持しつつ、ユーザデータ14のデータ構造を旧データ構造から新データ構造にコンバートするコンバート処理を行う。当該コンバート処理の詳細については図5のフローチャートを参照して後述する。
ステップS16において、コンバート処理部28は、ROM側メンバ情報20に含まれる内容をNV側メンバ情報16として不揮発性メモリ12に記憶させる。具体的には、ROM側メンバ情報20に含まれるメンバID、及びオフセット情報をNV側メンバ情報16として不揮発性メモリ12に記憶させる。図6に、ステップS16において書き換えられたNV側メンバ情報16の内容が示されている。図6に示される通り、ステップS16の書き換え処理により、NV側メンバ情報16は、コンバートされた新構造体のメンバに関する情報を示すものとなる。
以下、図5に示すフローチャートに従って、ユーザデータ14のコンバート処理の詳細について説明する。
ステップS30において、コンバート処理部28は、新構造体のメンバに関する情報を示すROM側メンバ情報20に含まれる1つのメンバ(注目メンバ)のメンバIDを特定する。ここでは、メンバID「1」が特定されたとする。さらに、コンバート処理部28は、特定したメンバID「1」が、NV側メンバ情報16に含まれるか否かを判定する。NV側メンバ情報16にはメンバID「1」が含まれているため、ここではステップS32に進む。
ステップS32において、コンバート処理部28は、NV側メンバ情報16及びROM側メンバ情報20に基づいて、メンバID「1」が示すメンバの設定値を不揮発性メモリ12から読み出す。具体的な読み出し方法は上述の通りである。そして、メンバID「1」と、読み出した設定値とを関連付けてRAM22に保持させる。
ステップS34において、コンバート処理部28は、ROM側メンバ情報20に含まれる全てのメンバIDが示すメンバの設定値の読み出し処理を終えたか否かを判定する。ここでは、処理のメンバIDが残っているとしてステップS30に戻る。
再度のステップS30において、コンバート処理部28は、新構造体のメンバに関する情報を示すROM側メンバ情報20に含まれる他のメンバIDを特定する。ここでは、メンバID「5」が特定されたとする。そして、コンバート処理部28は、特定したメンバID「5」が、NV側メンバ情報16に含まれるか否かを判定する。NV側メンバ情報16にはメンバID「5」が含まれていないため、ここではステップS36に進む。
ステップS36において、コンバート処理部28は、メンバID「5」と所定値とを関連付けてRAM22に保持させる。ここでは、所定値として「0」がRAM22に保持される。
ステップS30からステップS34までの処理を繰り返すことで、ROM側メンバ情報20に含まれるすべてのメンバIDと、各メンバIDに対応付けられた設定値がRAM22に保持される。
再度のステップS34で、ROM側メンバ情報20に含まれる全てのメンバIDが示すメンバの設定値の読み出し処理を終えたとコンバート処理部28が判定した場合は、ステップS38に進む。
ステップS38において、コンバート処理部28は、ROM側メンバ情報20に基づいて、RAM22に保持した各設定値を不揮発性メモリ12に書き戻す処理を行う。具体的な書き戻し方法は上述の通りである。これにより、ユーザデータ14が、その内容を維持しつつ、旧データ構造から新データ構造へとコンバートされる。
以上説明した本実施形態によれば、画像処理装置10のファームウェアのバージョンが変更され、ユーザデータ14のデータ構造が変更されたとしても、ユーザデータ14の内容を維持しつつ、ユーザデータ14を旧データ構造から新データ構造にコンバートすることができる。これにより、画像処理装置10のユーザあるいは管理者は、ファームウェアのバージョンが変更され、ユーザデータ14のデータ構造が変更された場合であっても、ユーザデータ14を再設定する必要がなくなる。
<第2実施形態>
以下、第2実施形態について説明する。第2実施形態は、上述の第1実施形態に比して、NV側メンバ情報16及びROM側メンバ情報20に含まれる情報が異なるものである。第1実施形態と同様である部分については、その説明を省略する。
以下、第2実施形態について説明する。第2実施形態は、上述の第1実施形態に比して、NV側メンバ情報16及びROM側メンバ情報20に含まれる情報が異なるものである。第1実施形態と同様である部分については、その説明を省略する。
図7に、第2実施形態におけるNV側メンバ情報16の内容が示されている。本実施形態においては、NV側メンバ情報16は、第1実施形態に含まれていた情報に加え、旧構造体に含まれるメンバのデータ型を示すデータ型情報、及び、旧構造体に含まれるメンバに対応する設定値のデータサイズを示すサイズ情報(第1サイズ情報)を含んでいる。
第2実施形態においては、旧構造体は以下のプログラムで定義されるものとする。
struct AAA{
int aaa;
int bbb;
char ccc;
short ddd;
}
NV側メンバ情報16においては、メンバID「1」(メンバ「int aaa」を示す)には、データ型情報「int」が関連付けられ、さらにメンバID「1」にはサイズ情報としてデータ型「int」のデータサイズであるサイズ情報「4バイト」が関連付けられる。他のメンバについても同様である。
struct AAA{
int aaa;
int bbb;
char ccc;
short ddd;
}
NV側メンバ情報16においては、メンバID「1」(メンバ「int aaa」を示す)には、データ型情報「int」が関連付けられ、さらにメンバID「1」にはサイズ情報としてデータ型「int」のデータサイズであるサイズ情報「4バイト」が関連付けられる。他のメンバについても同様である。
図8に、第2実施形態におけるROM側メンバ情報20の内容が示されている。本実施形態においては、ROM側メンバ情報20においても、第1実施形態に含まれていた情報に加え、新構造体に含まれるメンバのデータ型を示すデータ型情報、及び、新構造体に含まれるメンバに対応する設定値のデータサイズを示すサイズ情報(第2サイズ情報)を含んでいる。
第2実施形態においては、新構造体は以下のプログラムで定義されるものとする。
struct AAA{
int aaa;
int bbb;
int xxx;
char ccc;
int ddd;
}
struct AAA{
int aaa;
int bbb;
int xxx;
char ccc;
int ddd;
}
第2実施形態においては、ファームウェアのバージョン変更により、ユーザデータ14のデータ構造を定義する構造体の構造体名は変更されないものの、同一のメンバIDが示すメンバのデータサイズあるいはデータ型が変更され得るものとする。本実施形態では、図7及び図8に示される通り、ファームウェアのバージョン変更により、メンバID「3」が示すメンバ「char ccc」のデータサイズが「4バイト」から「8バイト」へ変更されている。さらに、メンバID「4」が示すメンバ「short ddd」のデータ型が「short」から「int」へ変更され、それに伴い、データサイズも「2バイト」から「4バイト」へ変更されている。
第2実施形態における処理の流れも図4及び図5に示したフローチャートと同様である。ただし、コンバート処理の詳細については第1実施形態と異なる点があるため、以下、図7に示す内容のNV側メンバ情報16が不揮発性メモリ12に記憶され、図8に示す内容のROM側メンバ情報20がROM18に記憶された場合を例にして、第2実施形態におけるコンバート処理について説明する。
ファームウェアのバージョン変更が行われた場合、コンバート処理部28は、NV側メンバ情報16に含まれるオフセット情報及びサイズ情報に基づいて、旧データ構造のユーザデータ14を不揮発性メモリ12から読み出す。
メンバID「4」を例にすると、まず、コンバート処理部28は、ROM側メンバ情報20を参照して、メンバID「4」が示すメンバが含まれる構造体名「AAA」を特定する。次に、コンバート処理部28は、NV側メンバ情報16におけるメンバID「4」に関連付けられた、オフセット情報「12バイト」及びサイズ情報「2バイト」に基づいて、旧データ構造における構造体「AAA」の先頭アドレスから12バイト目から2バイトの領域を読み出し領域として特定する。そして、コンバート処理部28は、特定した読み出し領域から設定値を読み出す。読み出された設定値は、旧構造体におけるメンバ「short ddd」の設定値である。コンバート処理部28は、読み出した設定値と当該メンバID「4」を関連付けて、RAM22に保持する。
上記の処理をROM側メンバ情報20に含まれる各メンバIDについて行う。それにより、各メンバID「1」〜「4」に関連付けられた各設定値がRAM22に保持される。また、第1実施形態と同様に、コンバート処理部28は、NV側メンバ情報16には含まれないメンバID「5」については所定値を関連付けてRAM22に保持させる。
次いで、コンバート処理部28は、ROM側メンバ情報20に含まれるメンバID、オフセット情報、データ型情報、及びデータサイズ情報に基づいて、RAM22に保持した各設定値を不揮発性メモリ12に書き戻す処理を行う。
メンバID「4」が示すメンバ「short ddd」に着目すると、当該メンバに対応する設定値は、旧データ構造においてはサイズが「2バイト」であったが、新データ構造においてはサイズが「4バイト」となっている。このような場合、RAM22に保持されているメンバID「4」に関連付けられた設定値(2バイトデータ)をROM側メンバ情報20が示す4バイトの記憶領域(具体的には新構造体「AAA」の先頭アドレスからオフセット20バイト目から4バイトの領域)に書き込む。
本例のように、ファームウェアのバージョン変更により、同一のメンバIDに対応する設定値のデータサイズが増大した場合は、ROM側メンバ情報20が示す記憶領域に対して、先詰め(小さい値のメモリアドレス側に寄せて記憶させる)又は後詰め(大きい値のメモリアドレス側に寄せて記憶させる)にて読み出したデータの書き込み処理を行う。このとき、先詰めするか後詰めするかの決定は、ROM側メンバ情報20が示す当該メンバIDに関連付けられたデータ型に従って決定してよい。例えば、データ型が文字型(「char」型など)である場合は先詰めし、データ型が数値型(「short」型あるいは「int」型など)である場合は後詰めするとしてよい。本例では、コンバート処理部28は、ROM側メンバ情報20が示すメンバID「4」に関連付けられたデータ型(変更後のデータ型)「int」に従って、読み出し他2バイトデータを4バイトの記憶領域に対して後詰めにて書き込む。
また、ファームウェアのバージョン変更により、同一のメンバIDに対応する設定値のデータサイズが減少した場合は、ROM側メンバ情報20が示す記憶領域に対して、読み出したデータの先側又は後側の数バイトのデータを削除して書き込み処理を行う。このとき、先側又は後側のいずれのデータを削除するかは、ROM側メンバ情報20が示す当該メンバIDに関連付けられたデータ型に従って決定してよい。
RAM22に保持された、各メンバIDに関連付けられた設定値の書き戻し処理が完了すると、コンバート処理部28は、ROM側メンバ情報20に含まれる内容をNV側メンバ情報16として不揮発性メモリ12に記憶させる。具体的には、ROM側メンバ情報20に含まれるメンバID、オフセット情報、データ型情報、及びサイズ情報をNV側メンバ情報16として不揮発性メモリ12に記憶させる。図9に、書き戻し処理後に書き換えられたNV側メンバ情報16の内容が示されている。図9に示される通り、当該書き換え処理により、NV側メンバ情報16は、コンバートされた新構造体のメンバに関する情報を示すものとなる。
第2実施形態によれば、ファームウェアのバージョン変更により、同一のメンバIDが示すメンバのデータサイズあるいはデータ型が変更された場合であっても、ユーザデータ14の内容を適切に維持しつつ、ユーザデータ14を旧データ構造から新データ構造にコンバートすることができる。
例えば、第1実施形態においては、メンバIDに対応する設定値を不揮発性メモリ12から読み出す場合に、ROM側メンバ情報20において当該メンバIDに関連付けられたサイズ情報を参照して読み出し領域を決定していた。例えば、図7及び図8のメンバID「3」を例とすると、第1実施形態では、NV側メンバ情報16が示す構造体「AAA」の先頭アドレスからオフセット「8バイト」が読み出し開始位置として特定され、そこからROM側メンバ情報20が示すデータサイズ「8バイト」分のデータがメンバID「3」に対応する設定値として読み出されてしまう。そうすると、余計なデータ(本例ではメンバID「4」に対応する設定値)まで一緒に読み出してしまい、メンバID「3」に対応する設定値として適切なデータが読み出せなくなる。
第2実施形態によれば、NV側メンバ情報16において当該メンバIDに関連付けられたサイズ情報を参照して読み出し領域を決定する。図7及び図8のメンバID「3」を例とすると、第2実施形態では、NV側メンバ情報16が示す構造体「AAA」の先頭アドレスからオフセット「8バイト」から「4バイト」分のデータが、メンバID「3」に対応する設定値として読み出される。つまり、ファームウェアのバージョン変更により同一のメンバIDが示すメンバのデータサイズが変更された場合であっても、第2実施形態によれば、メンバID「3」に対応する設定値として適切なデータが読み出される。
以上、本発明に係る実施形態を説明したが、本発明は上記実施形態に限られるものではなく、本発明の趣旨を逸脱しない限りにおいて種々の変更が可能である。
例えば、本実施形態においては、情報処理装置として画像処理装置10を例に説明したが、本発明が適用される情報処理装置としてはこれに限られず、自装置に関する設定情報を記憶し、自装置上で動作するソフトウェアのバージョンが変更された場合に当該設定情報のデータ構造が変更され得るものである限りどのような装置(コンピュータ)であってもよい。
また、本実施形態においては、NV側メンバ情報16は、不揮発性メモリ12に記憶されていたが、NV側メンバ情報16は、他の記憶部に記憶されるようにしてもよい。例えば、ROM18に記憶されてもよい。
10 画像処理装置、12 不揮発性メモリ、14 ユーザデータ、16 NV側メンバ情報、18 ROM、20 ROM側メンバ情報、22 RAM、24 入力部、26 制御部、28 コンバート処理部。
Claims (4)
- 自装置に関する設定情報であって1又は複数の変数それぞれに対応する設定値を含む設定情報をバイナリ形式で記憶する設定情報記憶部と、
自装置上で動作するソフトウェアのバージョン変更前における前記設定情報に含まれる1又は複数の第1変数を識別する第1変数識別情報、及び、前記設定情報記憶部における前記第1変数に対応する設定値の記憶位置を示す第1記憶位置情報を含む第1変数情報を記憶する第1変数情報記憶部と、
前記ソフトウェアのバージョン変更後における前記設定情報に含まれる1又は複数の第2変数を識別する第2変数識別情報、及び、前記設定情報記憶部における前記第2変数に対応する設定値の記憶位置を示す第2記憶位置情報を含む第2変数情報を記憶する第2変数情報記憶部と、
前記第1記憶位置情報が示す前記記憶位置に基づいて、前記第1変数に対応する前記設定値を前記設定情報記憶部から読み出し、前記第1及び第2変数識別情報に基づいて、当該第1変数に対応する前記第2変数を特定し、前記第2記憶位置情報が示す、特定された前記第2変数に対応する前記記憶位置に基づいて、読み出した前記設定値を前記設定情報記憶部に書き込む転換処理を実行する設定情報転換部と、
を備えることを特徴とする情報処理装置。 - 前記第1変数情報は、さらに、前記第1変数に対応する設定値のデータサイズを示す第1サイズ情報を含み、
前記第2変数情報は、さらに、前記第2変数に対応する設定値のデータサイズを示す第2サイズ情報を含み、
前記設定情報転換部は、前記第1記憶位置情報及び前記第1サイズ情報が示す記憶領域から前記第1変数に対応する前記設定値を読み出し、前記第2記憶位置情報及び前記第2サイズ情報が示す、特定された前記第2変数に対応する記憶領域に、読み出した前記設定値の少なくとも一部を書き込む、
ことを特徴とする請求項1に記載の情報処理装置。 - 前記第2変数情報は、さらに、前記第2変数のデータ型を示すデータ型情報を含み、
前記設定情報転換部は、前記データ型情報が示す、特定された前記第2変数のデータ型に基づいて、読み出した前記設定値の少なくとも一部を書き込む、
ことを特徴とする請求項2に記載の情報処理装置。 - コンピュータを、
自装置に関する設定情報であって1又は複数の変数それぞれに対応する設定値を含む設定情報をバイナリ形式で記憶する設定情報記憶部と、
自装置上で動作するソフトウェアのバージョン変更前における前記設定情報に含まれる1又は複数の第1変数を識別する第1変数識別情報、及び、前記設定情報記憶部における前記第1変数に対応する設定値の記憶位置を示す第1記憶位置情報を含む第1変数情報を記憶する第1変数情報記憶部と、
前記ソフトウェアのバージョン変更後における前記設定情報に含まれる1又は複数の第2変数を識別する第2変数識別情報、及び、前記設定情報記憶部における前記第2変数に対応する設定値の記憶位置を示す第2記憶位置情報を含む第2変数情報を記憶する第2変数情報記憶部と、
前記第1記憶位置情報が示す前記記憶位置に基づいて、前記第1変数に対応する前記設定値を前記設定情報記憶部から読み出し、前記第1及び第2変数識別情報に基づいて、当該第1変数に対応する前記第2変数を特定し、前記第2記憶位置情報が示す、特定された前記第2変数に対応する前記記憶位置に基づいて、読み出した前記設定値を前記設定情報記憶部に書き込む転換処理を実行する設定情報転換部と、
として機能させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016149505A JP2018018370A (ja) | 2016-07-29 | 2016-07-29 | 情報処理装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016149505A JP2018018370A (ja) | 2016-07-29 | 2016-07-29 | 情報処理装置及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018018370A true JP2018018370A (ja) | 2018-02-01 |
Family
ID=61081928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016149505A Pending JP2018018370A (ja) | 2016-07-29 | 2016-07-29 | 情報処理装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018018370A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157328A (zh) * | 2021-05-20 | 2021-07-23 | 读书郎教育科技有限公司 | 一种Android终端同一个ROM兼容多款机型方法 |
-
2016
- 2016-07-29 JP JP2016149505A patent/JP2018018370A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157328A (zh) * | 2021-05-20 | 2021-07-23 | 读书郎教育科技有限公司 | 一种Android终端同一个ROM兼容多款机型方法 |
CN113157328B (zh) * | 2021-05-20 | 2022-05-10 | 读书郎教育科技有限公司 | 一种Android终端同一个ROM兼容多款机型方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6543122B2 (ja) | 情報処理装置と、前記情報処理装置による不揮発記憶装置の初期化方法、及びプログラム | |
US8397055B2 (en) | Method and system for post-build modification of firmware binaries to support different hardware configurations | |
JP6123766B2 (ja) | データ読み出し装置、プログラムおよびデータ読み出し方法 | |
JP2018041417A (ja) | 情報処理装置及びその制御方法、並びにプログラム | |
JP4867184B2 (ja) | 処理態様指定情報変換プログラム及び処理態様指定情報変換方法 | |
JP2018018370A (ja) | 情報処理装置及びプログラム | |
JP6740785B2 (ja) | 情報処理装置及びプログラム | |
JP2014191601A (ja) | ファームウェア更新方法及びファームウェアプログラム | |
JP2011170768A (ja) | 情報処理システム、情報処理装置、導入処理装置及びプログラム | |
JP5846016B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
JP5417820B2 (ja) | システムファイル共有装置、システムファイル共有方法及びプログラム | |
JP2013033338A (ja) | メモリシステム | |
JP6614404B1 (ja) | システム設計支援装置、方法、プログラム及び記録媒体 | |
JP2004013536A (ja) | フラッシュメモリ書き換え制御システム、フラッシュメモリ書き換え制御方法、フラッシュメモリ書き換え制御方法の各工程を実行させるプログラムおよび情報記録媒体 | |
JP2001060196A (ja) | 画像処理装置 | |
JP6580920B2 (ja) | 情報処理装置、情報処理装置の動作環境設定情報を更新する方法、及び、情報処理装置の動作環境設定情報を更新するプログラム | |
JP2008299423A (ja) | 情報処理装置および情報処理プログラム | |
JP5834666B2 (ja) | 記憶装置および装置 | |
JP4362777B2 (ja) | プログラミング装置、シンボル自動登録方法、プログラムおよび記録媒体 | |
JP2007055042A (ja) | 画像記録装置 | |
JP5488104B2 (ja) | 電子機器及びプログラム | |
JP6819535B2 (ja) | 画像形成装置、画像形成方法及びデータ消去プログラム | |
JP2019016243A (ja) | 注文データ管理装置、注文データ管理方法、および、注文データ管理プログラム | |
JP5842437B2 (ja) | 情報処理装置及び情報処理プログラム | |
JP2005222531A (ja) | データ記録装置及びデータ記録方法 |