JP2012150535A - プログラム検証方法及び検証プログラム - Google Patents
プログラム検証方法及び検証プログラム Download PDFInfo
- Publication number
- JP2012150535A JP2012150535A JP2011006654A JP2011006654A JP2012150535A JP 2012150535 A JP2012150535 A JP 2012150535A JP 2011006654 A JP2011006654 A JP 2011006654A JP 2011006654 A JP2011006654 A JP 2011006654A JP 2012150535 A JP2012150535 A JP 2012150535A
- Authority
- JP
- Japan
- Prior art keywords
- access
- page
- information
- address
- program
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
【課題】
リファレンスとなる装置Aで動作するプログラムのメモリアクセスが開発の初期段階にある装置Bの仕様に違反していないかについて、簡便かつ短時間に確認することを課題とする。
【解決手段】
装置Aで動作するプログラムがアクセスしたアクセス先のアドレス及びリード・ライト等のアクセス種類の情報を有するアクセス先アドレスリストを生成する。アクセス先アドレスリストから、アクセス種類が連続する所定のアドレス範囲であるページごとに、ページID及びアクセス種類の情報を有するアクセスアドレス情報ファイルを生成する。また、装置Bのメモリマップ仕様に基づいて、ページごとのアクセス属性制約を有する構成マップ制約ファイルを生成する。そして、アクセスアドレス情報ファイルのアクセス種類が構成マップ制約ファイルのアクセス属性制約に違反しないか否かをページごとに検証する。
【選択図】図1
リファレンスとなる装置Aで動作するプログラムのメモリアクセスが開発の初期段階にある装置Bの仕様に違反していないかについて、簡便かつ短時間に確認することを課題とする。
【解決手段】
装置Aで動作するプログラムがアクセスしたアクセス先のアドレス及びリード・ライト等のアクセス種類の情報を有するアクセス先アドレスリストを生成する。アクセス先アドレスリストから、アクセス種類が連続する所定のアドレス範囲であるページごとに、ページID及びアクセス種類の情報を有するアクセスアドレス情報ファイルを生成する。また、装置Bのメモリマップ仕様に基づいて、ページごとのアクセス属性制約を有する構成マップ制約ファイルを生成する。そして、アクセスアドレス情報ファイルのアクセス種類が構成マップ制約ファイルのアクセス属性制約に違反しないか否かをページごとに検証する。
【選択図】図1
Description
本発明は、コンピュータ上で動作するプログラムの検証方法及び検証プログラムに関する。
従来から、CPU(Central Processing Unit)を搭載したコンピュータ等の情報処理装置(以下、「装置A」という)上で実行されるプログラムの動作確認を行うのに命令セット・シミュレータが用いられる場合がある。命令セット・シミュレータとは、命令レベルで装置A上で実行されるプログラム動作をシミュレートするものである。すなわち、装置Aの命令セット・シミュレータは、装置Aでの命令実行動作を模擬するシミュレータである。命令セット・シミュレータは、装置Aの開発時に合わせて開発されることが通常である。
命令セット・シミュレータがあれば、仮に装置Aが手元に無かったとしても、装置A上で実行されるプログラムの動作を検証することができる。そのため、装置A上で動作するプログラムの開発者は、装置Aを入手する前は、命令セット・シミュレータでプログラムを実行し、プログラムの動作を確認する。
ところで、メモリ搭載容量やメモリマップドIOのメモリマップ等が装置Aと異なる情報処理装置(以下、「装置B」という)を開発する場合、装置Aで動作していたプログラムが装置Bで動作するか否かを早い段階で確認したい場合がある。例えば、装置Aの試験プログラムを修正して開発中の装置Bの試験プログラムを作成しようとするような場合がある。情報処理装置を試験するための試験プログラムの数は膨大な数であることが多く、装置Bの開発と並行して装置Bの試験プログラムの先行開発も行っておくことが望ましい。
しかし、装置Bの開発初期段階では、装置Bはおろか、装置Bの命令セット・シミュレータも存在しない。このような状況においては、装置A及び装置Bの各々の装置仕様書を基に、各装置の仕様の差分調査を行ない、プログラムがアクセスする領域をプログラム仕様書、プログラム設計書、プログラムソースなどから解析するという作業を人手で行っていた。そして、人手による調査、解析の結果、装置Bでプログラムを実行するために、プログラムの修正が必要か否かを判断していた。
尚、実際にプログラムを実行させる装置がある場合には、実装置上でのプログラム動作のアクセス違反を検出する技術が特許文献1に開示されている。
前述のように、装置Aで動作していたプログラムが開発の初期段階にある装置Bで動作するか否かを調査する際、上記特許文献1のような実装置を使用する技術は、これから開発、製造しようという装置に対しては適用することができない。そのため、人手により、装置Aと装置Bとの仕様の差分調査を行ったり、プログラム動作の解析を行っていたが、これらの調査や解析に多くの時間を要していた。また、調査漏れや解析結果の間違い等により、プログラムのエラー解析にさらに時間を費やす場合があった。
開発中の装置Bが完成するまでの間、装置Bの命令セット・シミュレータを開発して、装置Bでプログラムを実行できるか否かを検証する方法もある。しかし、開発中の装置Bに対応する命令セット・シミュレータを新たに開発するためには、装置Bの仕様に合ったシミュレータの開発のための工数が必要となる。また、装置A用のプログラムを装置B用の命令セット・シミュレータで走行させると、仕様違反の箇所を実行する度にシミュレータが停止してしまい、効率よく仕様違反箇所を見つけることは困難であった。そのため、プログラムの仕様違反箇所の特定、エラー原因の解析、及びプログラムの修正に多くの時間を要していた。
さらに、装置Bで動作するか否かを確認したいプログラムの数が多い場合、人手で確認するのは非常に困難となる。例えば、装置Aを試験した試験プログラムを修正して開発中の装置Bの試験プログラムを作成しようとするような場合、試験プログラムの数が膨大な数存在すると、人手でプログラム修正箇所を確認していくのは非常に多くの労力と作業期間を要していた。
そこで、本発明は、開発の初期段階にある装置Bのリファレンスとなる装置Aがある場合において、装置Aで動作するプログラムのメモリアクセスが装置Bの仕様に違反していないかを、簡便な方法で、かつ、短時間に確認することを課題とする。
上記課題を解決するために、本実施例に係るプログラム検証方法では、
既存装置で動作するプログラムを、前記既存装置と異なり、装置仕様が既知の対象装置で動作可能か否かをコンピュータにより検証する。まず、前記プログラムがアクセスするアクセス先のアドレス及び前記アドレスに前記プログラムがアクセスする際にリード・ライトいずれのアクセスを行うのかを示すアクセス種類の情報を有するアクセス先アドレスリストから、同じアクセス種類が連続する所定のアドレスの範囲であるページごとに、各ページのアドレス範囲の識別情報であるページIDと各ページのアクセス種類の情報とを有するアクセスアドレス情報ファイルを生成する。また、前記対象装置のメモリ領域ごとのリード・ライト等のアクセス可否を示すアクセス属性の情報を有するメモリマップに含まれる複数のアドレス範囲を前記ページで分割した際のページごとに、各ページのアドレス範囲の識別情報であるページIDと各ページのアクセス属性の制約の情報を有する構成マップ制約ファイルを生成する。そして、前記アクセスアドレス情報ファイルのアクセス種類が前記構成マップ制約ファイルのアクセス属性の制約に違反しないか否かを検証する検証処理をページIDごとに行う。
既存装置で動作するプログラムを、前記既存装置と異なり、装置仕様が既知の対象装置で動作可能か否かをコンピュータにより検証する。まず、前記プログラムがアクセスするアクセス先のアドレス及び前記アドレスに前記プログラムがアクセスする際にリード・ライトいずれのアクセスを行うのかを示すアクセス種類の情報を有するアクセス先アドレスリストから、同じアクセス種類が連続する所定のアドレスの範囲であるページごとに、各ページのアドレス範囲の識別情報であるページIDと各ページのアクセス種類の情報とを有するアクセスアドレス情報ファイルを生成する。また、前記対象装置のメモリ領域ごとのリード・ライト等のアクセス可否を示すアクセス属性の情報を有するメモリマップに含まれる複数のアドレス範囲を前記ページで分割した際のページごとに、各ページのアドレス範囲の識別情報であるページIDと各ページのアクセス属性の制約の情報を有する構成マップ制約ファイルを生成する。そして、前記アクセスアドレス情報ファイルのアクセス種類が前記構成マップ制約ファイルのアクセス属性の制約に違反しないか否かを検証する検証処理をページIDごとに行う。
上記課題解決手段により、既存の装置Aで動作するプログラムを開発中の装置Bで動作させる場合にメモリアクセス違反を生ずるか否かを簡便かつ効率的な方法により検証することが可能となる。
以下、本発明を実施するための形態について詳細に説明する。
[第1の実施の形態]
図1は、実施例に係るプログラムの検証を行うための構成を説明する図である。図1において、装置1(以下、「装置A」と記す。)は、例えば、サーバやスーパーコンピュータから、マイクロコンピュータやASIC(Application Specific Integrated Circuit)までを含む情報処理装置である。装置Aは、CPUやメモリ等の記憶装置を有し(不図示)、プログラム11を実行可能な既存の情報処理装置である。装置2(以下、「装置B」と記す。)は、例えば、装置Aのメモリマップを変更した開発中の装置である。
[第1の実施の形態]
図1は、実施例に係るプログラムの検証を行うための構成を説明する図である。図1において、装置1(以下、「装置A」と記す。)は、例えば、サーバやスーパーコンピュータから、マイクロコンピュータやASIC(Application Specific Integrated Circuit)までを含む情報処理装置である。装置Aは、CPUやメモリ等の記憶装置を有し(不図示)、プログラム11を実行可能な既存の情報処理装置である。装置2(以下、「装置B」と記す。)は、例えば、装置Aのメモリマップを変更した開発中の装置である。
装置Bを開発している途中の時点においては、装置B仕様書21のみが存在するような場合がある。このような場合において、装置A用に作成されたプログラム11を装置Bで動作するように変更したい場合を考える。本実施例は、装置A用に作成されたプログラム11を装置A用のシミュレータで実行した際のメモリアクセス結果を利用して、プログラム11が装置Bで動作可能か否かを確認しようとするものである。
装置3は、装置A、装置Bとは異なる汎用コンピュータ等の情報処理装置である。装置3は、装置Aの命令セット・シミュレータ12を実行可能であり、実施例に係る後述の各処理を行う。
開発中の装置Bのリファレンスとなる装置Aがある場合、装置A上で動作するプログラム11を装置Bで動作させるには、プログラム11によるメモリアクセスが装置Bの仕様に違反しないことを要する。前述のように、装置A及び装置Bの装置仕様書やプログラム11の仕様書を人手により解析する手法では、解析に多くの時間を要していた。そのため、本実施例では、人手によるプログラムの解析ではなく、汎用の情報処理装置3を用いて、装置A用のプログラム11を装置Bで実行させる場合のメモリアクセス違反を自動的に検出する方法を提供する。
本実施例では、まず、汎用の装置3を利用して、装置A用に作成されたプログラム11を装置Aの命令セット・シミュレータ(装置Aシミュレータ)12で実行した際のメモリアクセス結果を出力したアクセス先アドレスリスト13を作成する。アクセス先アドレスリスト13は、プログラム11がアクセスしたアクセス先のメモリアドレスの情報及びリードアクセスやライトアクセス等を示すアクセス種類の情報を含む。アクセス種類としては、例えば、“リード”、“ライト”、“ライト・リード”等がある。
尚、本実施例においては、装置Aシミュレータ12のシミュレーション結果からアクセス先アドレスリスト13を作成する例を説明しているが、装置Aシミュレータ12を用いずにアクセス先アドレスリスト13を作成してもよい。例えば、装置Aでプログラム11を実際に実行した際の実行結果のログ等に基づいてアクセス先アドレスリスト13を作成してもよい。また、装置Aシミュレータ12によらない他の手段により、プログラム11のアクセス先のメモリアドレス情報及びアクセス種類の情報を取得し、アクセス先アドレスリスト13を作成してもよい。
また、装置Bの装置仕様のメモリ構成を示すメモリマップ情報から装置B−装置構成マップ22を作成する。装置構成マップ22は、装置Bのメモリマップに含まれるアドレス範囲毎の、リード可能/ライト可能/ライト・リード可能等を示すアクセス属性の情報を有する。具体的には、装置構成マップ22は、装置Bのメモリマップに含まれる各アドレス範囲の、開始アドレスと終了アドレスとアクセス属性とを含む情報を有する。
ここで、作成したアクセス先アドレスリスト13と装置構成マップ22とを用いて、プログラム11によるメモリアクセスが装置Bのメモリマップの仕様に違反しないか否かをチェックすること自体は可能である。しかし、アクセス先アドレスリスト13に記録されたプログラム11の個々のアクセス結果毎にチェックしていくのはあまり効率的ではない。そのため、本実施例では、アクセス先アドレスリスト13及び装置構成マップ22を所定のアドレス範囲で分割し、分割したアドレス範囲の単位でメモリアクセス違反の有無をチェックする。
具体的には、アクセス先アドレスリスト13及び装置構成マップ22を所定のアドレス範囲であるページ単位で分割して、アクセスアドレス情報ファイル33及び構成マップ制約情報ファイル35を作成する。アクセスアドレス情報ファイル33は、プログラム11がアクセスしたアクセス結果の情報をページ単位に分割して記録したファイルである。また、構成マップ制約情報ファイル35は、装置構成マップ22のアドレス範囲毎のアクセス属性情報をページ単位に分割して記録したファイルである。アクセス先アドレスリスト13及び装置構成マップ22の各々をページ単位で分割することにより、検証対象のプログラムがメモリアクセス違反を起こすか否かの検証を高速に行うことが可能となる。
その後、作成したアクセスアドレス情報ファイル33と、構成マップ制約情報ファイル35との比較を行い、プログラム11を装置Bで実行した場合に発生するメモリアクセス違反箇所を表示する。以下、具体的に説明する。
プログラム11は、装置A上で動作するプログラムである。装置Aシミュレータ12は、装置Aの動作を命令レベルでシミュレートする命令セット・シミュレータである。装置Aシミュレータ12は、情報処理装置3等の汎用のコンピュータにより実行することができる。アクセス先アドレスリスト13は、装置Aシミュレータ12上でプログラム11を実行させたときに、プログラム11がアクセス先のメモリアドレスの情報及びリードアクセスやライトアクセス等を示すアクセス種類の情報を出力したリストである。
装置B仕様書21は、装置Bの機能仕様を文書又は図表等により表した仕様書であり、電子ファイルとしてCD−ROM等の記録媒体に保持され、又は紙に印刷された資料である。
装置構成マップ22は、装置Bのメモリマップに含まれるアドレス範囲毎のアクセス属性を表したものである。装置構成マップ22は、装置Bの設計者やプログラム11を装置B用に変更しようとする者等により作成される。
ページデータ保持部31は、アクセス先アドレスリスト13に記録されたアクセス結果の中で、同じアクセス種類が続くアドレス範囲を特定範囲(ページ)で分割する際の範囲情報(ページデータ)を保持する。
アクセスアドレス情報ファイル生成部32は、アクセス先アドレスリスト13に含まれる装置Aシミュレータ12におけるアクセス結果の情報を、ページデータ保持部31に保持されたページデータで分割・整理してアクセスアドレス情報ファイル33を生成する。アクセスアドレス情報ファイル33は、プログラム11が装置Bで動作するか否かをデバッグするためのリファレンスデータとなる。
アクセスアドレス情報ファイル33は、検証対象となるプログラムのプログラム名、ページデータ、ページID情報、アドレスのオフセット情報等の詳細情報、アクセス種類等の情報を有する。ここで、ページデータは、アクセス先アドレスリスト13に記録されたアクセス結果の中で、同じアクセス種類が続くアドレス範囲を分割する際の特定の範囲(ページ)を示す範囲情報である。言い換えれば、ページデータは、アクセス先アドレスリストを特定のアドレス範囲で分割し、ID化して識別するための情報である。ページID情報や詳細情報の生成方法の詳細については、図5、図6を用いて後述する。尚、アクセスアドレス情報ファイル33に記録する情報としてプログラム名やページデータの情報は省略することも可能である。その場合、ページデータを参照する後述の処理においては、直接ページデータ保存部31からページデータを参照するようにすればよい。
構成マップ制約情報生成部34は、装置構成マップ22の各メモリ領域のアクセス制約をページデータで分割することにより、構成マップ制約情報ファイル35を生成する。構成マップ制約情報ファイル35の生成方法の詳細については、図8を用いて後述する。
チェック処理部36は、プログラム11を装置Bで実行したとすればアクセス違反となるプログラム箇所をチェックする。具体的にはチェック処理部36は、アクセス情報ファイル33と構成マップ制約ファイル35とに基づいて、プログラムBを装置Bで実行する場合にアクセス違反が発生するか否かをチェックする。
結果表示部37は、チェック処理部36によるチェック結果をディスプレイ(不図示)等の表示機器に表示する。
図2は、実施例に係るプログラム試験方法を実施するためのコンピュータ等の情報処理装置3のハードウェア構成例を示した図である。情報処理装置3は、CPU(Central Processing Unit)51、メモリ52、記憶装置53、キーボードやマウス等の入力装置とのインターフェース回路54、ディスプレイ57等の出力装置とのインターフェース回路55を有する。
図2は、実施例に係るプログラム試験方法を実施するためのコンピュータ等の情報処理装置3のハードウェア構成例を示した図である。情報処理装置3は、CPU(Central Processing Unit)51、メモリ52、記憶装置53、キーボードやマウス等の入力装置とのインターフェース回路54、ディスプレイ57等の出力装置とのインターフェース回路55を有する。
記憶装置53は、磁気ディスク装置、光ディスク装置、光磁気ディスク装置あるいは半導体記憶装置を含み、コンピュータ読み取り可能な記録媒体を扱うドライブ装置も含む。ドライブ装置が扱う記録媒体としては、磁気テープ、メモリカード、光ディスク(CD−ROM,DVD−ROM,等)、光磁気ディスク(MO,MD,等)といった、任意のコンピュータ読み取り可能な記録媒体を使用することができる。
記憶装置53は、実施例に係る各処理を行うプログラム、及び、実施例において使用する各種ファイル13、22、33、35等を格納する。CPU51は、バス56や各インターフェース回路54、55を介して、メモリ52、記憶装置53、及び各種入出力装置等にアクセスし、記憶装置53に格納された各種処理プログラム、又は、メモリ52等にロードされた各種処理プログラムを実行する。本実施例において説明した各種処理等は、図2に示す情報処理装置3が有するCPU51により実行される。
図3は、図1に係る実施例のプログラムの検証処理フローを説明する図である。
図3は、図1に係る実施例のプログラムの検証処理フローを説明する図である。
(S100) まず、S100では、アクセス先アドレスリスト13を作成する。アクセス先アドレスリスト13は、図1に示すように、プログラム11がアクセスした結果から、アクセス先のアドレス情報及びアドレス毎のリード、ライト等のアクセス種類の情報を有するリストである。アクセス先アドレスリスト13の作成は、前述の通りいくつかの作成方法があるが、ここでは、装置Aシミュレータ12を用いて作成する方法を例として説明する。
装置A用に開発されたプログラム11を装置Aの命令実行動作を模擬するシミュレータ12に動作させる。その際、シミュレータ12は、プログラム11がアクセスしたアクセス先のメモリアドレス及びリードアクセスかライトアクセスかを示すアクセス種類をアクセス先アドレスリスト13に出力する。シミュレータ12によるプログラム11の実行は、シミュレータ12を実行できる汎用の情報処理装置3で実行することができる。
アクセス先アドレスリスト13は、プログラム11をシミュレータ12により実行した際のアクセス結果の情報を時系列にファイルに出力することにより作成できる。ここで、プログラム11がアクセスした結果を時系列に出力した場合には、同じアドレスに対するアクセスが何度も繰り返される場合がある。また、アクセス種類が連続しているか否か、すなわち、連続するアドレスのアクセス種類が同じであるか否かを判断するには、アクセス結果の情報を一定の手順に従ってまとめておくと処理が容易となる。
具体的には、例えば、プログラム11のアクセス結果をアドレスでソートし、重複情報を削除する。そして、プログラム11のアクセス結果の中で、同一アドレスに対してリードアクセスとライトアクセスの両方があった場合には、アクセス種類をマージして“ライト・リード”とする。これらの処理は、例えば、テキストファイルを処理するためのプログラム言語等を用いた処理プログラムにより、シミュレータ12の実行結果を編集処理することにより実行できる。従って、シミュレータ12が時系列に出力したアクセス先の情報をアドレスの昇順又は降順にソートし、重複した情報を削除すると共に同一アドレスに対するアクセス種類をマージしたものをアクセス先アドレスリスト13としてもよい。
(S101) S101では、アクセス先アドレスリストの作成(S100)とは別に、装置Bのメモリマップである装置構成マップ22を作成する。装置構成マップ22を作成しようとする作業者、すなわち、装置Bの設計者やプログラム11を装置B上で実行しようとする者等は、装置B仕様書21に記載されたメモリマップの仕様に基づいて、装置構成マップ22を作成する。
装置構成マップ22は、図1に示すように、装置B仕様書21に記載されたメモリマップで規定された個々のメモリ領域の開始アドレス(start adr)、終了アドレス(end adr)、アクセス属性の各情報を有するファイルである。ここで、アクセス属性は、特定のメモリ領域がリードのみ可能(read)であるか、ライトのみ可能(write)であるか、あるいは、ライト・リードともに可能(write, read)であるか等を示す属性をいう。
装置構成マップ22の作成は、作業者が装置構成マップ22のファイルに情報を手入力して作成しても良いし、装置構成マップファイルの生成を行うための何らかの補助ツール(プログラム)を用いて作成しても良い。補助ツールを用いた装置構成マップファイルの生成については、図13を用いて後述する。
(S102) S102では、アクセスアドレス情報生成部32により、ページデータを決定する。ページデータは、アクセス先アドレスリスト13に記録された同じアクセス種類が連続するアドレス範囲を分割する際の特定の範囲(ページ)を示す範囲情報である。図3のS103以降の各処理においては、S102で決定したページデータを共通のページデータとして使用して処理を行う。ページデータの決定手順の詳細については図4を用いて後述する。
(S103) S103では、アクセスアドレス情報生成部32により、アクセス先アドレスリスト13に記録されたプログラム11のアクセス先の情報をページデータで分割・整理して、アクセスアドレス情報ファイル33を生成する。アクセスアドレス情報ファイル33は、アクセス先アドレスリスト13に記録されたアクセス種類が連続するアドレス範囲のアクセス種類を示す情報を、ページデータに示される範囲(ページ)毎にまとめたファイルである。図1に示すように、アクセスアドレス情報ファイル33は、ページ毎のページアクセス情報及び詳細情報を有する。アクセスアドレス情報ファイル33の作成手順の詳細については図5を用いて後述する。
(S104) S104では、構成マップ制約情報生成部34により、構成マップ制約情報ファイル35を生成する。構成マップ制約情報ファイル35は、装置構成マップ22の各メモリ領域のアクセス制約をページデータで分割したファイルである。構成マップ制約情報生成部34は、アクセスアドレス情報ファイル33又はページデータ保存部31からページデータを読み出し、S101で作成した装置構成マップ22のメモリマップ情報をページデータのアドレス範囲で分割した構成マップ制約情報35を作成する。構成マップ制約情報35の作成手順の詳細については図8を用いて後述する。
(S105〜S109) S105のチェック処理では、チェック処理部36が、S103で作成したアクセスアドレス情報ファイル33と、S104で作成した構成マップ制約情報ファイル35とを用いて、プログラム11を装置Bで実行したとすればアクセス違反となるプログラム箇所をチェックする。具体的には、アクセスアドレス情報ファイル33から読み出したアクセス種類が、構成マップ制約情報ファイル35から読み出したアクセス属性に違反しないか否かをページ毎にチェックする。S105でのチェックの結果、エラー、すなわち、アクセス違反がある場合(S106 Yes)、チェック処理部36はアクセス違反の詳細を調査し(S107)、結果表示部37によりエラー結果を出力する(S108)。S105でのチェック結果にエラーがない場合(S106 No)、S109の処理に進む。
S109では、アクセスアドレス情報ファイル33に記録された全てのページデータの範囲についてチェックが完了したか否かを判定する。アクセスアドレス情報ファイル33に記録された全てのページデータの範囲についてチェックが完了していない場合(S109 No)、S105の処理に戻って、未チェックのページデータの範囲の一つについて同様にチェックを行う。アクセスアドレス情報ファイル33の全てのページデータの範囲についてチェックが完了すると(S109 Yes)処理を終了する。S105〜S109のチェック処理の詳細については、図9、図15を用いて後述する。
以下、図3の各処理の詳細を説明する。
以下、図3の各処理の詳細を説明する。
図4は、ページデータを決定する処理を説明する図である。ページデータ保持部31は、ページデータの初期値として予め定められた値を有する。図4の例では、ページデータの初期値は0x1000である。ページデータの初期値は、例えば、後述のページ候補の中の最も小さなページデータの候補の値とすることができる。
アクセスアドレス情報生成部32は、アクセスアドレス情報ファイル33の生成に先立って、ページデータの決定を行う。ページデータの決定では、アクセス先アドレスリスト13に記録されたアクセスアドレス及びアクセス種類のデータの中で、アクセス種類が連続するアドレスの範囲のうち、一番小さいアドレス範囲をページデータとする。その際、例えば、ページデータの候補となるページ候補32−10を予め準備しておき、アクセス種類が連続するアドレスの範囲の大きさに応じてページ候補の中から一つのページデータの候補を選択するようにすることができる。
ページデータの候補となるページ候補32−10としては、既存の装置Aや開発中の装置Bの各装置のメモリマップ仕様等から、メモリアドレス領域を区切る単位となりそうなアドレス範囲の候補をいくつか仮定して決定できる。その際、装置構成マップ22に含まれる各アドレス範囲を区切りよく分割できる値をページ候補としておくことが望ましい。後述の構成マップ制約情報ファイルの生成において、装置Bの装置構成マップ22のアドレス範囲をページデータで分割する際に、アクセス属性が異なるアドレス範囲をまたぐように分割しないようにするためである。また、装置Bの制御レジスタ仕様等の詳細が決まっていないような場合等においては、制御レジスタ等のアクセス属性が混在する領域については、ひとくくりにライト・リード可能な領域として扱うようにしてもよい。
ページデータの決定について図4のフローに沿って説明する。まず、アクセス種類が連続する一連のアドレスの一つに着目し、着目した一連のアドレスを読み出す(S102−1)。アクセス先アドレスリスト13を所定のアドレス範囲(ページ)で分割する際に、読み出した一連のアドレスが1つのページ内に含まれるように分割できるアドレス範囲をページ候補の中から選択する。その際、選択可能なページ候補のうち、最も小さいページ候補を着目した一連のアドレスのページデータ(仮ページデータ)とする(S102−2)。以下、着目した一連のアドレス毎にページ候補から選んだページデータを「仮ページデータ」と呼ぶ。また、仮ページデータの最小値を「最小ページデータ」と呼ぶこととする。
仮ページデータの最小値は、最小ページデータ32−20として保存する。すなわち、個々の一連のアドレス毎の仮ページデータをページ候補32−10の中から選択して決定した後、決定した仮ページデータがすでに得られた最小ページデータ32−20の値よりも小さいかどうかを比較する。決定した仮ページデータが最小ページデータ32−20の値よりも小さい場合には、仮ページデータの値を最小ページデータ32−20の値に上書きする(S102−3)。尚、例えば、ページ候補の中で一番大きな値を最小ページデータ32−20の初期値とすることができる。
ページ候補から仮ページデータを選択しようとする際に、S102−1で読み出した一連のアドレスにマッチするページ候補がない場合、仮ページデータの選択や最小ページデータの更新を行うことなく、S102−4に進む。例えば、図4のページ候補32−10の例において、S102−1で読み出した一連のアドレスの最大値と最小値の差分値が0x20000よりも大きいような場合には、仮ページデータの選択や最小ページデータの更新を行うことなく、S102−4に進む。
S102−3の処理が終わると、S102−4に進む。S102−4では、アクセス先アドレスリスト13の中で、仮ページデータを選択していないアドレス範囲があるか否かを判定する。アクセス先アドレスリスト13の中で、仮ページデータを選択していないアドレス範囲があれば(S102−4 Yes)、再度S102−1に進み、次の一連のアドレスを読み出し、仮ページデータを選択する(S102−2)。
アクセス先アドレスリスト13の中の全てのアドレス範囲について仮ページデータを選択済みの場合には(S102−4 No)、最小ページデータ32−20を、ページデータ保持部31に格納する(S102−5)。尚、最小ページデータの更新が一度も行われなかった場合には、ページデータ保持部31へのページデータの格納は行わずに、ページデータ保持部31に格納された初期値をページデータとする。
前述の通り、ページデータの決定には、装置Bの装置B仕様書21に基づいて作成された装置構成マップ22の情報も考慮しておくことが望ましい。すなわち、装置構成マップ22に含まれる各アドレス範囲を同じ大きさの範囲に分割できる値をページデータとしておくことが望ましい。例えば、図1の破線の矢印で示されるように、装置構成マップ22の各アドレス範囲の開始アドレス等の情報をアクセスアドレス情報生成部32が参照するようにしてもよい。そして、アクセスアドレス情報生成部32は、装置構成マップ22の各アドレス範囲の開始アドレスを決定したページデータで割り切れるか否かを確認することにより、各アドレス範囲を同じ大きさの範囲に分割できるか否かを確認する。決定したページデータで装置Bのメモリマップの各アドレス範囲を同じ大きさで分割できない場合、決定したページデータは、装置構成マップ22のアドレス領域をアクセス属性が混在しないように分割できないことが判明する。従って、ページデータの決定の際に、装置構成マップ22の情報も考慮しておくことにより、早い段階でページデータの値を修正することが可能となる。
ところで、作業者がプログラム11の仕様や装置構成マップ22のメモリマップの仕様から、適切なページデータの値を把握しているような場合もあり得る。このような場合には、図4で説明した一連の処理を省略して、予め作業者がページデータ保持部31に所望の値のページデータを保存しておくようにしてもよい。
尚、ページデータとして、例えば、0x1を予め格納するようなことも可能である。この場合、全てのアドレスに対してページIDが割り振られ、個々のアドレス毎にアクセス違反をチェックすることも可能である。但し、後述のチェック処理部36でのチェック処理を行う際の処理速度やメモリ使用量の観点からは、ある程度の大きさのアドレス範囲をページデータとしておくことが望ましい。
図5は、アクセスアドレス情報ファイル33の生成処理を説明する図である。以下に説明するアクセスアドレス情報ファイル33の生成処理は、アクセスアドレス情報生成部32により行われる。
図5は、アクセスアドレス情報ファイル33の生成処理を説明する図である。以下に説明するアクセスアドレス情報ファイル33の生成処理は、アクセスアドレス情報生成部32により行われる。
まず、図5(A)に示すアクセス先アドレスリスト13中の、対となっているアドレス情報とアクセス種類情報とを、アクセス先アドレスリスト13から一対分だけ読み出す。図5(A)では、アクセス先アドレスリスト13の1つ目の対のデータを読み出し、読み出したアドレス情報を「アクセスアドレス1」とし、読み出したアクセス種類情報を「アクセス種類情報1」とする(S103−1)。そして、ページデータ保持部31に格納されているページデータを読み出し、アクセスアドレス1をページデータの値で割った商をページID情報1とし、余りをoffset情報1とする(S103−2)。
ここで、ページID情報は、アクセスアドレスの上位側のビットであり、アクセス先アドレスリスト13に含まれる複数のアドレス情報をページデータで分割した場合の分割された各アドレス範囲を識別する識別情報である。また、offset情報は、アクセスアドレスの下位側のビットであり、分割された各アドレス範囲(ページ)内におけるアドレスを示すオフセットアドレスである。アクセス種類情報は、アクセスがリードかライトかのいずれであるかを示す情報であり、例えば、2ビットの2進数の数値で表される。
アクセス種類を例えば{“write”,“read”}の形式で表すとすると、「リード」の場合は“01”(0x1)、「ライト」の場合は“10”(0x2)、「ライト・リード」の場合は“11”(0x3)となる(括弧内の数値は16進数表記)。アクセス種類の情報は、各ページIDや各offset情報と組にして持たせる。
次に、ページID情報1とアクセス種類情報1とを結合して、ページアクセス情報1とする(S103−3)。ページアクセス情報1としてページID情報と結合されたアクセス種類情報1をページアクセス種類1と呼ぶ。さらに、offset情報1と、アクセス種類情報1とを結合して、詳細情報1とする(S103−4)。こうして、ページアクセス情報1と詳細情報1とを有する一組のアクセスアドレス情報が生成される。
図5(B)は、アクセス先アドレスリスト13の2つ目の対のデータを読み出して、図5(A)と同様の手順により、ページアクセス情報2及び詳細情報2を生成する様子を示した図である。以下、同様にアクセス先アドレスリスト13から、順次、アクセスアドレスとアクセス種類情報とを読み出し、ページアクセス情報及び詳細情報を生成していく。
図6は、アクセスアドレス情報ファイルの生成において、ページIDが同じページの情報をマージする処理を説明する図である。図5のように、アクセス先アドレスリスト13から対のデータを順次読み出してページアクセス情報を作成していく際に、ページアクセス情報に含まれるページID情報が、既に作成済みのページID情報と一致する場合がある。例えば、アクセスアドレス2から算出したページID情報2が既に作成済みのページID情報1と一致する場合、新たにページアクセス情報2を作成することなく、アクセスアドレス2から算出したページアクセス種類2を、ページID情報1のページアクセス種類1にマージする。
図6は、アクセスアドレス情報ファイルの生成において、ページIDが同じページの情報をマージする処理を説明する図である。図5のように、アクセス先アドレスリスト13から対のデータを順次読み出してページアクセス情報を作成していく際に、ページアクセス情報に含まれるページID情報が、既に作成済みのページID情報と一致する場合がある。例えば、アクセスアドレス2から算出したページID情報2が既に作成済みのページID情報1と一致する場合、新たにページアクセス情報2を作成することなく、アクセスアドレス2から算出したページアクセス種類2を、ページID情報1のページアクセス種類1にマージする。
具体的には、図6に示すように、まず、ページID情報1に対応するページアクセス種類1と、アクセスアドレス2に対応するページアクセス種類2との論理和をとった情報を、新たなページアクセス種類1とする。ここで、「論理和」の意味は、例えばページアクセス種類1がライト(“10”)で、ページアクセス種類2がリード(“01”)だった場合、その論理和の結果として「ライト・リード」(“11”)とすることをいう。そして、アクセスアドレス2から生成されたoffset情報2とアクセス種類情報2とを有する詳細情報2を詳細情報1の後に結合する。
以下、アクセス先アドレスリスト13から、順次読み出したデータに対して同様に処理していく。アクセス先アドレスリスト13の全ての対となっているアドレス情報とアクセス種類情報とについて図5、図6で説明した処理が完了すると、アクセスアドレス情報ファイル33の作成に必要なデータの抽出が完了する。
図7は、アクセスアドレス情報ファイルの例を説明する図である。図5、図6で説明した処理に従ってアクセスアドレス情報ファイル33の作成に必要なデータの抽出が完了すると、アクセスアドレス情報生成部32は、抽出したデータを図7に示すようにアクセスアドレス情報ファイル33として書き出す。
図7は、アクセスアドレス情報ファイルの例を説明する図である。図5、図6で説明した処理に従ってアクセスアドレス情報ファイル33の作成に必要なデータの抽出が完了すると、アクセスアドレス情報生成部32は、抽出したデータを図7に示すようにアクセスアドレス情報ファイル33として書き出す。
その際、アクセスアドレス情報生成部32は、ページデータ保存部31に格納されているページデータを読み出して、アクセスアドレス情報ファイル33に書き込む。図7の例では、アクセスアドレス情報ファイル33の最初の部分にページデータを格納しているが、アクセスアドレス情報ファイル33の最後に書き込むようにしてもよい。また、アクセスアドレス情報ファイル33へのページデータの書き込みを省略して、後述の処理において、ページデータ保存部31から直接ページデータを参照するようにしてもよい。
図5、図6の処理において個々のページアクセス情報と詳細情報を生成する度にアクセスアドレス情報ファイル33に書き込むようにしてもよい。あるいは、図5、図6の処理において生成した個々のページアクセス情報と詳細情報をメモリ等に一時的に保存しておき、最後にまとめてアクセスアドレス情報ファイル33に書き出すようにしてもよい。
図8は、構成マップ制約情報ファイル35の生成処理を説明する図である。まず、構成マップ制約情報生成部34は、アクセスアドレス情報ファイル33からページデータを読み出す(S104−1)。
図8は、構成マップ制約情報ファイル35の生成処理を説明する図である。まず、構成マップ制約情報生成部34は、アクセスアドレス情報ファイル33からページデータを読み出す(S104−1)。
次に、構成マップ制約情報生成部34は、装置構成マップ22から、最初のアドレス範囲(start adr1 - end adr1)を読み出し、読み出したアドレス範囲をページデータで分割する。そして、分割したアドレス範囲の各々の開始アドレスをページデータで割った商をページID情報として生成する(S104−2)。図8の例では、最初のアドレス範囲(start adr1 - end adr1)がページデータで3分割され、3つのページID情報1〜3が生成される。尚、ページデータの値は、前述の通り、装置構成マップ22の各アドレス範囲の開始アドレスをページデータで割った際に、余りが発生しない値とすることが望ましい。
構成マップ制約情報生成部34は、生成したページID情報1〜3の各々に、装置構成マップ22から読み出した最初のアドレス範囲に対応するアクセス属性情報1を結合してページアクセス制約情報を生成する(S104−3)。
以下、装置構成マップ22から、順次、アドレス範囲とアクセス属性を読み出して、同様にページアクセス制約情報を作成していく。装置構成マップ22の全てのアドレス範囲についてのページアクセス制約情報をまとめたものが、構成マップ制約情報ファイル35となる。
図9は、チェック処理部36の処理を説明する図である。チェック処理部36は、アクセス情報ファイル33と構成マップ制約ファイル35とに基づいて、プログラムBを装置Bで実行する場合にアクセス違反が発生するか否かをチェックする。
図9は、チェック処理部36の処理を説明する図である。チェック処理部36は、アクセス情報ファイル33と構成マップ制約ファイル35とに基づいて、プログラムBを装置Bで実行する場合にアクセス違反が発生するか否かをチェックする。
具体的には、まず、アクセスアドレス情報ファイル33からページアクセス情報、すなわち、ページID情報及びページアクセス種類を読み出す(S105−1)。次に、アクセスアドレス情報ファイル33から読み出したページID情報に対応するページアクセス制約情報を構成マップ制約情報ファイル35から読み出す(S105−2)。その際、ページアクセス制約情報に含まれるアクセス属性情報だけを構成マップ制約情報ファイル35から読み出してもよい。
アクセスアドレス情報ファイル33から読み出したアクセス種類が、構成マップ制約情報ファイル35から読み出したアクセス属性に違反しないか否かをチェックする(S105−3)。アクセス種類がアクセス属性に違反しないか否かのチェックの具体的な方法については後述する。
S105−3でのチェックの結果、違反がない場合(S105−3 No)、S105−6に進み、未チェックのページアクセス情報がないか確認する。未チェックのページアクセス情報がある場合(S105−6 Yes)、アクセスアドレス情報ファイル33から次のページアクセス情報を読み出し(S105−7)、S105−2に進んで同様にチェックしていく。
S105−3でのチェックの結果、違反がある場合(S105−3 Yes)、アクセスアドレス情報ファイル33のページアクセス情報に付随する詳細情報を読み出す。そして、読み出した詳細情報に含まれるoffset情報ごとに、各offset情報に対応するアクセス種類が、構成マップ制約情報ファイル35から読み出したアクセス属性に違反しないかチェックしていく(S105−4)。
S105−4のチェックでアクセス違反を検出したoffset情報及びアクセス種類情報をエラー結果として出力する(S105−5)。その際、ディスプレイ57等の出力装置にエラー結果として表示すると共に、エラー結果についてのログ出力するようにしてもよい。また、ネットワーク通信回線を介してエラー結果を他の情報処理装置に通知するようにしても良い。その後、S105−6の処理に進む。
S105−6において、未チェックのページアクセス情報がない場合(S105−6 No)、チェック処理部36におけるチェック処理を終了する。
以上説明した、既存の装置Aで動作するプログラムを開発中の装置Bで動作可能か否かを検証する方法では、既存の装置Aでのプログラム実行結果からプログラムのアクセス情報を抽出し、装置Bの仕様から抽出した制約情報と比較する。すなわち、装置Aのシミュレータによりプログラムを実行してアクセス先アドレスリスト13を生成する。生成したアクセス先アドレスリスト13とページデータとを用いて、アクセスアドレス情報ファイル33を生成する。また、装置B仕様書に基づいて作成された装置構成マップ22とページデータとを用いて構成マップ制約情報ファイル35を生成する。生成されたアクセスアドレス情報ファイル33及び構成マップ制約情報ファイル35の各情報をページID毎に比較することにより、プログラムの装置Bでのアクセス違反箇所が発生するか否かをチェックする。
以上説明した、既存の装置Aで動作するプログラムを開発中の装置Bで動作可能か否かを検証する方法では、既存の装置Aでのプログラム実行結果からプログラムのアクセス情報を抽出し、装置Bの仕様から抽出した制約情報と比較する。すなわち、装置Aのシミュレータによりプログラムを実行してアクセス先アドレスリスト13を生成する。生成したアクセス先アドレスリスト13とページデータとを用いて、アクセスアドレス情報ファイル33を生成する。また、装置B仕様書に基づいて作成された装置構成マップ22とページデータとを用いて構成マップ制約情報ファイル35を生成する。生成されたアクセスアドレス情報ファイル33及び構成マップ制約情報ファイル35の各情報をページID毎に比較することにより、プログラムの装置Bでのアクセス違反箇所が発生するか否かをチェックする。
従って、簡便かつ効率的な方法により、開発中の装置Bの命令セット・シミュレータが存在しないような状態において、装置Bで動作させるプログラムのメモリアクセス違反の検出を短時間で行うことが可能となる。そのため、装置Bの開発検討段階において、装置Aで動作するプログラムを装置Bで動作させるためのプログラム修正量の見積もりも早期に行うことが可能となる。また、上述の通り、メモリアクセス違反の検出を行うために装置Bや装置Bのシミュレータを必要とせず、汎用のパーソナルコンピュータ等の少ない資源でプログラムの検証を行うことが可能となる。
本発明は、既存の装置Aで動作する汎用的なプログラムについて、開発中の装置Bで動作するか否かを検証することに使用することができるが、例えば、装置Bを開発するための試験プログラムの作成においても使用することができる。特に、サーバ等の情報処理装置の動作試験では、膨大な数の試験プログラムを作成して動作検証が行われる。開発中の装置Bの試験プログラムを、既存の装置Aの試験プログラムを修正して作成しようとした場合等においては、上述のプログラム検証方法により、短時間で多数の試験プログラムの検証を行うことが可能となる。また、例えば、アクセス違反を期待する試験プログラムを作成したい場合等においては、アクセス違反が期待通りに発生するかも短時間に確認することが可能となる。従って、装置Bの開発の早い段階でプログラムの修正箇所の特定及び修正量の見積もりを行うことが可能となる。
以下、装置Aの試験プログラムを開発中の装置Bの試験プログラムとして修正しようとする場合のプログラム検証例について、第2の実施の形態として具体例を用いて説明する。
[第2の実施の形態]
図10は、既存の装置Aのメモリマップ仕様の例を説明する図である。装置Aは、例えば、図10に示すようなメモリマップ仕様を有するとする。すなわち、0x0番地から0xFFF番地まではリード可能・ライト不可能、0x1000番地から0xFFFF番地まではライト・リード可能、0x10000番地から0x1FFFF番地まではリード可能・ライト不可能という仕様であるとする。
まず、アクセスアドレス情報ファイルの作成の生成について説明する。
[第2の実施の形態]
図10は、既存の装置Aのメモリマップ仕様の例を説明する図である。装置Aは、例えば、図10に示すようなメモリマップ仕様を有するとする。すなわち、0x0番地から0xFFF番地まではリード可能・ライト不可能、0x1000番地から0xFFFF番地まではライト・リード可能、0x10000番地から0x1FFFF番地まではリード可能・ライト不可能という仕様であるとする。
まず、アクセスアドレス情報ファイルの作成の生成について説明する。
図11は、図1のプログラム11の例として、装置Aのメモリアクセステストを行うテストプログラムを説明する図である。このテストプログラムは、装置A上で動作するように作成され、例えば、装置A内部のメモリを正しくアクセスできるか否かを試験するプログラムである。テストプログラムは、例えば、図11に示すように、0x1000番地から0xFFFF番地まで、データライト(S200)とデータリード(S201)とを実行し、ライトデータが正しくリードできるかどうかをチェック(S202)するプログラムである。
シミュレータ12は、装置Aの動作を機械語命令レベルでシミュレートし、汎用のコンピュータである情報処理装置3のOS(Operating System)上で動作する。シミュレータ12は、テストプログラムを命令解読しながらプログラムを実行する装置の動作をシミュレートする。テストプログラムをシミュレートする際、メモリアクセスを行う度に、シミュレータ12は、アクセス先のメモリアドレスであるアクセスアドレス、リードやライト等のアクセス種類をアクセス先アドレスリストとしてファイルに書き出す。図11に示すテストプログラムをシミュレータ12で実行させると、テストプログラムがアクセスしたアクセス先のアドレス情報及びライト・リード等のアクセス種類の情報がアクセス先アドレスリスト13として書き出される。具体的には、0x1000番地から0xFFFF番地までのデータライト(S200)時及びデータリード(S201)時のアクセス先アドレス情報及びアクセス種類の情報がアクセス先アドレスリスト13として書き出される。
アクセスアドレス情報生成部32は、シミュレータ12により書き出されたアクセス先アドレスリスト13に基づいてアクセスアドレス情報ファイル33を生成する。アクセスアドレス情報ファイル33は、図7に示すようにアクセス先アドレスリストを特定の範囲で分割するためのページデータと、ページデータを用いてアクセス先アドレスリストを分割して得られるページアクセス情報及び詳細情報とを有する。アクセスアドレス情報ファイル33のページアクセス情報及び詳細情報に含まれるアクセス種類は、処理の便宜のために数値化することが望ましい。
図5、図6に示したようなアクセスアドレス情報ファイルの生成について、図12の具体例を用いて説明する。図12は、アクセスアドレス情報ファイルの生成処理の例を説明する図である。
図5、図6に示したようなアクセスアドレス情報ファイルの生成について、図12の具体例を用いて説明する。図12は、アクセスアドレス情報ファイルの生成処理の例を説明する図である。
図12(A)は、アクセス先アドレスリストの一例を示した図であり、図12(B)はページデータの一例を示した図である。図12(A),(B)に示す例において、ページIDはアクセスアドレスをページデータ0x1000で割った値となる。従って、図12(A)に記載されている3つのアクセスアドレス0x00001000、0x00001008、0x00001010のページIDは、図12(C)に示すように“0x00001”となる。
ここで、アクセス種類を数値化するために、write=0x1(“01”)、read=0x2(“10”)とする(カッコ内は2進数表記)。すると、アクセス種類が“write, read”となっているものは、write(“01”)とread(“10”)の論理和をとって、アドレス種類が2進数表記で“11”すなわち、16進数表記で“0x3”となる。
図12(A)の例に図示されている3つのアクセスアドレスのページIDはいずれも0x00001で同じとなるため、図6に示す方法でページアクセス種類を求めると、3つのアクセス種類の論理和をとって0x3(“11”)となる。
ページアクセス情報は、図5、図6に示すように、ページID(0x00001)の後にページアクセス種類(“0x3”)を連結したものである。従って、図12(A)に記載されている3つのアクセスアドレスのページアクセス情報は、図12(D)に示すように“0x000013”となる。
詳細情報は、図5、図6に示すように、offset情報及びアクセス種類情報を有する。offset情報は、前述の通り、アクセスアドレスをページデータで割った余りであるので、図12(A),(B)の例におけるアクセスアドレスと、個々のアクセスアドレスに対応するoffset情報と、アクセス種類とを並べて記載すると図12(E)のようになる。
詳細情報は、図5、図6に示すように、offset情報とページアクセス情報とを連結したものであるので、図12(E)の例において、詳細情報は、図12(F)に示すように“0x0003,0x0081,0x0102”となる。すると、図12(A),(B)の例におけるアクセスアドレス情報ファイル中のページアクセス情報及び詳細情報は図12(G)のように、“0x000013,0x0003,0x0081,0x0102”となる。
図12で説明したような手順により、アクセス先アドレスリスト中の全てのアクセス結果のデータについて、いずれかのページIDに属するように処理を行い、ページデータの情報を追加することにより、アクセスアドレス情報ファイル33が生成される。
次に、装置構成マップファイル22の生成例について説明する。
次に、装置構成マップファイル22の生成例について説明する。
図13は、装置構成マップの作成処理を説明する図である。作業者は、装置Bの装置構成マップを作成する前に、装置Bの仕様書からメモリマップを理解する。図13の例では、0x0番地から0x3FFF番地までがリード可能・ライト不可能であり、0x4000番地から0x1FFFF番地までがライト・リード可能であり、0x20000番地から0x3FFFF番地までがリード可能・ライト不可能となっているものとする。
図13(A)は、装置構成マップファイルを作成するための補助ツールの入力画面を示したものである。この補助ツールは、汎用コンピュータを用いて任意のOS上で動作するプログラムにより実現される。
図13(A)に示した入力例では、装置Bのメモリマップの最初のアドレス範囲に対して、まず、開始アドレスの入力要求(“Input start Address -> ”)が入力画面に表示され、作業者が、最初の開始アドレスとして“0x00000000”を入力する。次に、終了アドレスとアクセス属性の入力要求(“Input end Address, w/r/wr -> ”)が入力画面に表示されるため、作業者が、終了アドレス及びアクセス属性として、“0x00003FFF,r”を入力する。 図13(A)の例では、アクセス属性を“w”(ライト可能・リード不可能)、“r”(ライト不可能・リード可能)、“wr”(ライト・リード可能)として入力している。
以下、同様に開始アドレスと終了アドレス及びアクセス属性とを入力していき、装置Bのメモリマップの各アドレス範囲について一通り入力が完了すると、アドレス入力の要求画面において“end”を入力することで補助ツールへの入力処理が完了する。補助ツールへの入力処理が完了すると、補助ツールは、入力された情報に基づいて、開始アドレスと終了アドレスと数値に変換したアクセス属性とを並べ、図13(B)に示すような装置Bの装置構成マップファイル22Aを生成する。図13(B)に示す装置構成マップ22Aの例では、各行において、開始アドレス、終了アドレス、数値で表現したアクセス属性の順で各情報を16進数表記で表している。
尚、補助ツールの入力画面や情報の入力仕様は図13の例に限られない。また、補助ツールによらず、人手によって直接装置構成マップファイル22Aに情報を入力してもよい。
次に、ページデータの情報と、図13の例で作成した装置構成マップファイル22Aとを用いて構成マップ制約情報ファイル35を作成する例について説明する。ここで、ページデータは、前述の図12の例にならって0x1000とする。
次に、ページデータの情報と、図13の例で作成した装置構成マップファイル22Aとを用いて構成マップ制約情報ファイル35を作成する例について説明する。ここで、ページデータは、前述の図12の例にならって0x1000とする。
構成マップ制約情報ファイル35の生成は、図8に示すように、装置構成マップ22Aに記載された各アドレス範囲をページデータで分割する。図13(B)の1行目のアドレス範囲(0x00000000〜0x00003FFF)をページデータ(0x1000)で分割すると、4つのアドレス領域に分割される。そして、分割された4つのアドレス領域の各開始アドレスをページデータで割ると、4つのページID情報、すなわち、0x00000、0x00001、0x00002、0x00003が得られる。
前述の通り、構成マップ制約情報ファイル35に格納されるページアクセス制約情報は、ページID情報の後にアクセス属性情報を連結したものである。従って、図13(B)の1行目のアドレス範囲に対するページアクセス制約情報は、4つのページID 0x00000、0x00001、0x00002、0x00003の各々の後にアクセス属性0x1を連結して、図14のようになる。図13(B)に示す装置構成マップファイル22Aに記載された全てのアドレス範囲について、図8に示す手順に従ってページアクセス制約情報を作成し、1つのファイルにまとめると、構成マップ制約情報ファイル35が生成される。
次にチェック処理について説明する。アクセスアドレス情報ファイル33と構成マップ制約情報ファイル35Aの作成が完了すると、これらのファイルに基づいて、プログラム11を装置Bで動作させた場合のメモリアクセスエラーのチェックを行う。
次にチェック処理について説明する。アクセスアドレス情報ファイル33と構成マップ制約情報ファイル35Aの作成が完了すると、これらのファイルに基づいて、プログラム11を装置Bで動作させた場合のメモリアクセスエラーのチェックを行う。
図15は、チェック処理の例を説明する図である。チェック処理部36は、まず、アクセスアドレス情報ファイル33からページアクセス情報、すなわち、ページID及びページアクセス種類を読み出す(S105−11)。前述の通り、図10の装置Aのメモリマップ仕様では、最初のページアクセス情報は0x000013となる。
次に、アクセスアドレス情報ファイル33から読み出したページID(0x00001)に対応するページアクセス制約情報(0x000011)を構成マップ制約情報ファイル35Aから読み出す(S105−12)。その際、ページIDに対応するページアクセス制約情報がない場合、例えば、ページIDにアクセス属性として“0x0”を付加したものを対応するページアクセス制約情報とすることができる。ページIDに対応するページアクセス制約情報が無いということは、装置Bの該当ページIDに対応する領域はアクセスできない領域に該当するのが一般と考えられる。従って、この場合、リードもライトもできないという意味で、例えばアクセス属性として“0”を設定できる。
続いて、アクセスアドレス情報ファイル33から読み出したアクセス種類が、構成マップ制約情報ファイル35Aから読み出したアクセス属性に違反しないか否かをチェックする(S105−13)。ここで、最初のページIDに対してアクセスアドレス情報ファイル33から読み出したページアクセス情報(0x000013)に含まれるアクセス種類は0x3である。また、このページID(0x00001)に対応するページアクセス制約情報(0x000011)に含まれるアクセス属性は0x1である。
ページID 0x00001に対しては、アクセス制約は0x1でリードのみ可能となっているのに対して、プログラム11はライト・リード(0x3)している。そのため、プログラム11はページIDが0x00001の領域に対してアクセス違反を起こすことになる。従って、S105−13のチェックでは、アクセス違反が存在することになり、S105−14の処理に進む。
S105−14では、ページID 0x00001に対する詳細情報をアクセスアドレス情報ファイル33から読み出す。そして、読み出した詳細情報のoffset情報毎にアクセス種類が、構成マップ制約情報ファイル35Aから読み出したアクセス属性に違反しないかどうかをチェックする。つまり、図15に示すように、ページID 0x00001の詳細情報である“0x0003,0x0081,0x0102”の各アクセス種類(0x3,0x1,0x2)がアクセス属性(0x1)に違反しないか否かをチェックする。その結果、offset情報が0x000,0x010の場合のアクセス種類がアクセス属性に違反することが分かる。S105−14のチェック処理でアクセス種類がアクセス属性に違反することが判明したoffset情報及びアクセス種類は、アクセス違反を起こした情報として出力される(S105−15)。S105−15のアクセス違反情報の出力は、結果表示部37により、ディスプレイにアクセス違反情報を表示してもよいし、アクセス違反情報を格納するファイルに出力してもよい。また、S105−14で見つかったアクセス違反情報をネットワーク通信回線を介して他の情報処理装置に通知するようにしても良い。
尚、S105−13とS105−14でのアクセス違反の有無のチェックは、例えば、
(A)ページアクセス情報に含まれるアクセス属性とページアクセス制約情報に含まれるアクセス属性とをAND(論理和)した結果と、
(B)ページアクセス情報に含まれるアクセス属性と
を比較し、不一致であれば違反があると判断することができる。
(A)ページアクセス情報に含まれるアクセス属性とページアクセス制約情報に含まれるアクセス属性とをAND(論理和)した結果と、
(B)ページアクセス情報に含まれるアクセス属性と
を比較し、不一致であれば違反があると判断することができる。
未チェックのページアクセス情報がある場合には(S105−16 Yes)、順次、次のページIDについて情報を読み出し(S105−17)、同様にチェックしていく。そして、未チェックのページアクセス情報が無くなると(S105−16 No)、チェック処理が完了する。
このように、既存の装置Aで動作するプログラムのシミュレーション結果と、開発中の装置Bのメモリマップ仕様をそれぞれ数値化した情報として取り扱い、ページ単位でページアクセス情報及びページアクセス制約情報を作成する。作成したページアクセス情報及びページアクセス制約情報に基づいて、ページ単位でプログラムのメモリアクセス違反が発生するか否かを確認することにより、高速にプログラムのメモリアクセス違反発生の有無を検証することが可能となる。従って、既存の装置Aで動作するプログラムを開発中の装置Bで動作させるためのプログラムの修正の要否判断を短時間で行うことが可能となる。
[第3の実施の形態]
他の実施の形態の一例として、例えば、アクセス先アドレスリスト13へ出力する情報として、アクセスアドレスとアクセス属性以外の情報を含めることもできる。例えば、メモリアクセスを行った際のプログラムカウンタの値(PC値)や、メモリアクセスが命令フェッチであるかデータアクセスであるか等の情報を、アクセス属性の情報と共にアクセス先アドレスリスト13へ出力することができる。アクセス先アドレスリスト13に出力されたPC値等の情報は、offset情報毎にアクセス属性と合わせて詳細情報として、アクセスアドレス情報ファイル33に保存しておく。
[第3の実施の形態]
他の実施の形態の一例として、例えば、アクセス先アドレスリスト13へ出力する情報として、アクセスアドレスとアクセス属性以外の情報を含めることもできる。例えば、メモリアクセスを行った際のプログラムカウンタの値(PC値)や、メモリアクセスが命令フェッチであるかデータアクセスであるか等の情報を、アクセス属性の情報と共にアクセス先アドレスリスト13へ出力することができる。アクセス先アドレスリスト13に出力されたPC値等の情報は、offset情報毎にアクセス属性と合わせて詳細情報として、アクセスアドレス情報ファイル33に保存しておく。
ページアクセス情報の単位でのアクセスチェックでは、これらPC値等の詳細情報は参照されない。しかし、アクセス違反が発見された場合(図9のS105−3 Yes)、図9のS105−5で詳細結果を表示する際に、アクセス違反が発生時のPC値等の詳細情報も合わせてアクセスアドレス情報ファイル33から読み出して表示することが可能となる。このように、アクセス違反発生時にPC値等の詳細情報もディスプレイ表示等することで、アクセス違反のエラー解析がより容易となる。
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
本発明は、コンピュータ上で動作するプログラムの検証に利用することができる。
1 既存の装置A
2 開発中の装置B
3 情報処理装置
11 プログラム
12 装置Aの命令セット・シミュレータ
13 アクセス先アドレスリスト
21 装置B仕様書
22 装置Bのメモリマップを示す装置構成マップ
31 ページデータ保持部
32 アクセスアドレス情報生成部
33 アクセスアドレス情報ファイル
34 構成マップ制約情報生成部
35 構成マップ制約情報ファイル
36 チェック処理部
37 結果表示部
57 ディスプレイ装置
2 開発中の装置B
3 情報処理装置
11 プログラム
12 装置Aの命令セット・シミュレータ
13 アクセス先アドレスリスト
21 装置B仕様書
22 装置Bのメモリマップを示す装置構成マップ
31 ページデータ保持部
32 アクセスアドレス情報生成部
33 アクセスアドレス情報ファイル
34 構成マップ制約情報生成部
35 構成マップ制約情報ファイル
36 チェック処理部
37 結果表示部
57 ディスプレイ装置
Claims (5)
- 既存装置で動作するプログラムを、前記既存装置と異なり、装置仕様が既知の対象装置で動作可能か否かをコンピュータにより検証するプログラム検証方法であって、
前記プログラムがアクセスするアクセス先のアドレス及び前記アドレスに前記プログラムがアクセスする際にリード・ライトいずれのアクセスを行うのかを示すアクセス種類の情報を有するアクセス先アドレスリストから、同じアクセス種類が連続する所定のアドレスの範囲であるページごとに、各ページのアドレス範囲の識別情報であるページIDと各ページのアクセス種類の情報とを有するアクセスアドレス情報ファイルを生成し、
前記対象装置のメモリ領域ごとのリード・ライト等のアクセス可否を示すアクセス属性の情報を有するメモリマップに含まれる複数のアドレス範囲を前記ページで分割した際のページごとに、各ページのアドレス範囲の識別情報であるページIDと各ページのアクセス属性の制約の情報を有する構成マップ制約ファイルを生成し、
前記アクセスアドレス情報ファイルのアクセス種類が前記構成マップ制約ファイルのアクセス属性の制約に違反しないか否かを検証する検証処理をページIDごとに行う
ことを特徴とするプログラム検証方法。
- 請求項1に記載のプログラム検証方法であって、
前記アクセスアドレス情報ファイルの生成において、前記アクセス先アドレスリストに含まれるアドレスの各々を、前記ページの大きさを示す値であるページデータで割り、商を前記ページIDとすると共に、余りをオフセットアドレスとし、前記ページID及び前記ページIDに係るアクセス種類の情報を有するページアクセス情報と、前記ページIDに係るオフセットアドレス及び各オフセットアドレスに係るアクセス種類の情報を有する詳細情報とを生成し、
前記検証処理において、ページIDごとの検証処理で前記アクセスアドレス情報ファイルのアクセス種類が前記構成マップ制約ファイルのアクセス属性の制約に違反していることを示すアクセス属性制約違反を検出した場合、アクセス属性制約違反を検出したページIDに係る詳細情報に含まれる個々のオフセットアドレスごとにアクセス種類が前記アクセス属性制約に違反しないか否かを検証し、
前記個々のオフセットアドレスごとの検証で検出したアクセス属性制約違反となるオフセットアドレス及びアクセス種類の情報を、検証結果として出力する
ことを特徴とするプログラム検証方法。
- 請求項2に記載のプログラム検証方法であって、
前記アクセスアドレス情報ファイルの生成において、
互いにページIDが共通するアクセス種類の情報の論理和を取ったものを前記ページアクセス情報に係るアクセス種類の情報とし、ページIDが共通するオフセットアドレス及び各オフセットアドレスに係るアクセス種類の情報の組を、ページIDが共通する詳細情報に含める
ことを特徴とするプログラム検証方法。
- 請求項1乃至3のいずれか1項に記載のプログラム検証方法であって、
前記アクセス先アドレスリストは、前記プログラムを前記既存装置の動作を模擬するシミュレータで動作させた場合に、前記プログラムがアクセスしたアクセス先のアドレス及び前記プログラムがアクセスした際にリード・ライトいずれのアクセスを行ったかを示すアクセス種類の情報を前記シミュレータにより出力して生成する
ことを特徴とするプログラム検証方法。
- 既存装置で動作するプログラムを、前記既存装置と異なり、装置仕様が既知の対象装置で動作可能か否かをコンピュータにより検証する検証プログラムであって、
前記プログラムがアクセスするアクセス先のアドレス及び前記アドレスに前記プログラムがアクセスする際にリード・ライトいずれのアクセスを行うのかを示すアクセス種類の情報を有するアクセス先アドレスリストから、同じアクセス種類が連続する所定のアドレスの範囲であるページごとに、各ページのアドレス範囲の識別情報であるページIDと各ページのアクセス種類の情報とを有するアクセスアドレス情報ファイルを生成し、
前記対象装置のメモリ領域ごとのリード・ライト等のアクセス可否を示すアクセス属性の情報を有するメモリマップに含まれる複数のアドレス範囲を前記ページで分割した際のページごとに、各ページのアドレス範囲の識別情報であるページIDと各ページのアクセス属性の制約の情報を有する構成マップ制約ファイルを生成し、
前記アクセスアドレス情報ファイルのアクセス種類が前記構成マップ制約ファイルのアクセス属性の制約に違反しないか否かを検証する検証処理をページIDごとに行う
ことを特徴とする検証プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011006654A JP2012150535A (ja) | 2011-01-17 | 2011-01-17 | プログラム検証方法及び検証プログラム |
US13/329,798 US20120185669A1 (en) | 2011-01-17 | 2011-12-19 | Program inspection method and non-transitory, computer readable storage medium storing inspection program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011006654A JP2012150535A (ja) | 2011-01-17 | 2011-01-17 | プログラム検証方法及び検証プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012150535A true JP2012150535A (ja) | 2012-08-09 |
Family
ID=46491645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011006654A Withdrawn JP2012150535A (ja) | 2011-01-17 | 2011-01-17 | プログラム検証方法及び検証プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20120185669A1 (ja) |
JP (1) | JP2012150535A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015122010A (ja) * | 2013-12-25 | 2015-07-02 | 株式会社リコー | 情報処理装置、情報処理システム、情報処理方法、及びプログラム |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943251B2 (en) * | 2012-05-14 | 2015-01-27 | Infineon Technologies Austria Ag | System and method for processing device with differentiated execution mode |
US8595680B1 (en) * | 2012-06-15 | 2013-11-26 | Google Inc. | Constrained random error injection for functional verification |
CN105988921A (zh) * | 2015-02-06 | 2016-10-05 | 中兴通讯股份有限公司 | 一种内存越界的检测方法及装置 |
JP7367359B2 (ja) * | 2018-08-10 | 2023-10-24 | 株式会社デンソー | 車両用電子制御システム、ファイルの転送制御方法、ファイルの転送制御プログラム及び装置 |
CN110764995B (zh) * | 2019-09-05 | 2023-06-06 | 北京字节跳动网络技术有限公司 | 一种检测文件访问异常的方法、装置、介质和电子设备 |
US11321225B2 (en) * | 2020-05-22 | 2022-05-03 | International Business Machines Corporation | Reducing the memory load time for logic simulator by leveraging architecture simulator |
CN113312266B (zh) * | 2021-06-11 | 2023-09-15 | 成都精灵云科技有限公司 | 基于自动化测试快速生成测试拓扑结构图的系统及其方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06236300A (ja) * | 1993-02-08 | 1994-08-23 | Mitsubishi Electric Corp | マイクロコンピュータ |
US20030229484A1 (en) * | 2002-06-07 | 2003-12-11 | Igor Liokumovich | Method and apparatus for simulating conditional branch instructions in a simulator which implies binary translation |
-
2011
- 2011-01-17 JP JP2011006654A patent/JP2012150535A/ja not_active Withdrawn
- 2011-12-19 US US13/329,798 patent/US20120185669A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015122010A (ja) * | 2013-12-25 | 2015-07-02 | 株式会社リコー | 情報処理装置、情報処理システム、情報処理方法、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20120185669A1 (en) | 2012-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012150535A (ja) | プログラム検証方法及び検証プログラム | |
JP5659238B2 (ja) | ソースコード変換方法およびソースコード変換プログラム | |
US9158514B2 (en) | Method and apparatus for providing change-related information | |
US9619373B2 (en) | Method and apparatus to semantically connect independent build and test processes | |
US8135571B2 (en) | Validating manufacturing test rules pertaining to an electronic component | |
US6353904B1 (en) | Method of automatically generating new test programs for mixed-signal integrated circuit based on reusable test-block templates according to user-provided driver file | |
US20100274520A1 (en) | Creation of test plans | |
JP2012059026A (ja) | ソースコード変換方法およびソースコード変換プログラム | |
US10049031B2 (en) | Correlation of violating change sets in regression testing of computer software | |
JP2010003008A (ja) | 検出プログラム、検出装置および検出方法 | |
JP6925433B2 (ja) | データ検証装置、データ検証方法及びデータ検証プログラム | |
US8589734B2 (en) | Verifying correctness of processor transactions | |
JP2013218492A (ja) | ソフトウェアテスト自動評価装置および方法 | |
CN112631852B (zh) | 宏检查方法、装置、电子设备和计算机可读存储介质 | |
JP5811978B2 (ja) | モデルベースの制御装置用のテストケース生成装置およびテストケース生成方法 | |
US10345378B2 (en) | Apparatus and method for performing a scalability check on a hardware description language representation of a circuit | |
US9824175B1 (en) | Method and system of evaluation of validity of a refinement rule for a hardware emulation | |
US7689399B1 (en) | Automatic extraction of design properties | |
JP6748357B2 (ja) | 解析装置、解析プログラムおよび解析方法 | |
JP2009193488A (ja) | ソフトウェアテスト項目編集支援装置およびソフトウェアテスト項目編集支援方法 | |
JP5736588B2 (ja) | ソースコード変換方法及びソースコード変換プログラム | |
US9665454B2 (en) | Extracting test model from textual test suite | |
CN116861829B (zh) | 用于定位逻辑系统设计中错误的方法、电子设备 | |
JP6556091B2 (ja) | システム仕様検証支援装置及びシステム仕様検証支援方法 | |
JP2006202140A (ja) | 回路ブロックの管理方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131007 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20140312 |