JP3542529B2 - フラッシュ内蔵マイコンのプログラムリンク方法 - Google Patents
フラッシュ内蔵マイコンのプログラムリンク方法 Download PDFInfo
- Publication number
- JP3542529B2 JP3542529B2 JP27251999A JP27251999A JP3542529B2 JP 3542529 B2 JP3542529 B2 JP 3542529B2 JP 27251999 A JP27251999 A JP 27251999A JP 27251999 A JP27251999 A JP 27251999A JP 3542529 B2 JP3542529 B2 JP 3542529B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- rewritable
- program
- built
- microcomputer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
【発明の属する技術分野】
本発明は、フラッシュ内蔵マイコンのプログラムリンク方法に関し、特に、書換可能部分のアプリケーションプログラムの更新があった場合にもその動作を自動的に継続することができるロードモジュールを生成することができるフラッシュ内蔵マイコンのプログラムリンク方法に関する。
【0002】
【従来の技術】
フラッシュEEPROM内蔵の出現によりアプリケーションプログラムのセルフ書き換えを行なうことが多くなってきている。セルフ書き換えを行なうことにより、アプリケーションプログラムの機能や情報の追加・更新、障害の対処を容易に行なうことができる反面、アプリケーションプログラム開発時には、セルフ書き換えを行なった後でもアプリケーションプログラムが正常に動作するような手段を用意してそれを管理しなければならない。
【0003】
従来の技術では、関数呼び出しの分岐先をあるアドレスに固定し、そのアドレスに分岐命令を配置し、二段分岐を行なうようなソースファイルを用意してロードモジュールを生成するリンク方法が用いられていた。フラッシュEEPROMによるアプリケーションプログラムのセルフ書き換えを用いたこのようなシステムでは、アプリケーションプログラムの規模が大きくなるとともに、正常に動作させる手段を用意してそれを管理することに手間がかかっていた。このように手間がかかる理由は、アプリケーションプログラムのソースファイルを変更し、目的の関数を直接呼び出さずに中継点を経由するように、関数呼び出し毎に修正を行なわなければならないためである。
【0004】
フラッシュ内蔵マイコンのアプリケーションプログラムの動作時にセルフ書き換えを行なった後にも、手間がかからずに正常に動作することが望まれる。
【0005】
【発明が解決しようとする課題】
本発明の課題は、アプリケーションプログラムの動作時にセルフ書き換えを行なった後にも、手間がかからずに正常に動作するフラッシュ内蔵マイコンのプログラムリンク方法を提供することにある。
【0006】
【課題を解決するための手段】
その課題を解決するための手段が、下記のように表現される。その表現中に現れる技術的事項には、括弧()つきで、番号、記号等が添記されている。その番号、記号等は、本発明の実施の複数・形態又は複数の実施例のうちの少なくとも1つの実施の形態又は複数の実施例を構成する技術的事項、特に、その実施の形態又は実施例に対応する図面に表現されている技術的事項に付せられている参照番号、参照記号等に一致している。このような参照番号、参照記号は、請求項記載の技術的事項と実施の形態又は実施例の技術的事項との対応・橋渡しを明確にしている。このような対応・橋渡しは、請求項記載の技術的事項が実施の形態又は実施例の技術的事項に限定されて解釈されることを意味しない。
【0007】
本発明によるフラッシュ内蔵マイコンのプログラムリンク方法は、リンク未解決な関数呼び出しを書換可能部分(1)のロードモジュール(5)に存在する関数への分岐命令とみなすこと、分岐先を下記分岐テーブルに修正すること、関数呼出しのリンク解決が終了した後に、修正による分岐先の関数呼出しの情報の一覧(11)を自動生成し、書換不可能部分(2)のロードモジュール(6)内に保管すること、その情報に基づいて分岐テーブル(9)を書換可能部分(1)のロードモジュール(5)に自動生成することとからなる。アプリケーションプログラムは、その動作時にセルフ書き換えを行なった後にも手間を要しないで正常に動作する。
【0008】
書換不可能部分(2)のアプリケーションプログラムのリンク時に未定義関数の呼出しがある場合に、一覧(11)は、書換不可能部分(2)の側のロードモジュール(6)の生成時のアプリケーションプログラムリンク時に分岐先修正ルーチン(8)により生成される。書換可能部分(1)のアプリケーションプログラムのリンク時に一覧(11)がある場合に、分岐テーブル(9)は、書換可能部分(1)の側のロードモジュール(5)の生成時のアプリケーションプログラムのリンク時に、分岐テーブル生成ルーチン(7)により生成される。
【0009】
本発明によるフラッシュ内蔵マイコンのプログラムリンク方法は、更に、書換不可能部分(2)のアプリケーションプログラムの中の情報を一覧(11)に保管すること、書換可能部分(1)のアプリケーションプログラムを更新した場合、一覧(11)を参照して再び分岐テーブル(9)を生成することにより、書換可能部分(1)のアプリケーションプログラムをリンクして書換可能部分(1)の側のロードモジュール(5)を生成することとからなり、アプリケーションプログラムの更新があった場合にも、自動的に動作を継続することができるロードモジュールを生成することができる。
【0010】
アプリケーションプログラム動作時にセルフ書き換えを行なうことにより、フラッシュに配置されたプログラムコードサイズが変化し、関数アドレス1が変動して、書き換えができない部分からの関数呼び出しがある場合にプログラムコードは不正になるが、図1に示されるように、フラッシュに二段分岐用のテーブル(9)を固定アドレスに用意し、中継して分岐することにより、関数アドレスの変動に対応することができるようになる。
【0011】
【発明の実施の形態】
本発明によるフラッシュ内蔵マイコンのプログラムリンク方法の実施の形態は、アプリケーションプログラムが、書き換えが可能である書換可能部分と、書き換えが不可能である書換不可能部分に分けられて設けられている。フラッシュ内蔵マイコン上で動作するアプリケーションプログラムは、図2に示されるように、書換可能部分1と、書換不可能部分2とに分けられている。書換可能部分1と書換不可能部分2は、第1リンカ3と第2リンカ4により、それぞれに書換可能部分側ロードモジュール5と書換不可能部分側ロードモジュール6を生成する。第1リンカ3と第2リンカ4は、同一のコマンドでもかまわない。その場合には、オプションを指定させる等の動作を切り換える仕組みを用意する。
【0012】
第1リンカ3には、これに属して分岐テーブル生成ルーチン7が設けられている。第2リンカ4には、これに属して分岐先修正ルーチン8が設けられている。書換可能部分ロードモジュール5には、分岐テーブル9が設けられる。書換不可能部分ロードモジュール6には、一覧11が設けられる。
【0013】
一覧11は、未定義関数呼び出し情報を保持している。一覧11は、書換不可能部分側ロードモジュール6の生成工程のアプリケーションプログラムリンク時に、分岐先修正ルーチン8により生成される。先に書換不可能部分2のリンク時に未定義関数の呼び出しがある場合に、第2リンカ4に属する分岐先修正ルーチン8で、固定アドレスに配置される分岐テーブル9を呼び出すようにする。書換不可能部分側ロードモジュール6内に埋め込まれている未定義関数呼び出しの一覧11が、書換可能部分1のリンク時に参照され、分岐テーブル生成ルーチン7により分岐命令を羅列した分岐テーブル9が内部で自動生成される。分岐テーブル9は、書換可能部分側ロードモジュール5の中に埋め込まれる。
【0014】
書換不可能部分2のリンク時に参照した情報を一覧11に保管しておくことにより、書換可能部分1であるアプリケーションプログラムを更新した場合に、一覧11を参照して再び分岐テーブル9を生成し、書換可能部分1をリンクして書換可能部分側ロードモジュール5を生成する。このようにして、フラッシュ内蔵マイコンにおいて、アプリケーションプログラム動作時にセルフ書き換えを行なった後でも、正常に動作する仕組みをプログラムリンク時に自動的に解決することが可能である。
【0015】
分岐テーブル9は、二段分岐用の分岐命令を保持し、書換可能部分ロードモジュールの生成工程のアプリケーションプログラムリンク時に、分岐テーブル生成ルーチン7により生成される。
【0016】
図3は、既述の実施の形態のうち分岐修正ルーチン8の動作を示している。分岐先修正ルーチン8は、リンク未解決な関数呼び出しが存在する場合(ステップS1)、その関数呼び出しを書換可能部分側ロードモジュール5に存在する関数への分岐命令とみなして(ステップS1)、分岐先を中継点である分岐テーブル9に修正する。図6に分岐テーブル9の内部構造が示されるように、分岐先のアドレスは、分岐テーブルの先頭アドレス+通し番号*テーブルの1要素の大きさから算出される。全ての関数呼出しのリンク解決終了後に、図5に示される形式により、修正した分岐先の情報の一覧11を書換不可能部分側ロードモジュール6に埋め込む(ステップS3)。
【0017】
図4は、既述の実施の形態のうち、分岐テーブル生成ルーチン7の動作を示している。分岐テーブル生成ルーチン7は、分岐先を修正された関数呼び出しの情報の一覧11を読みこむ(ステップS4)。この情報を元に、通し番号順に分岐命令を羅列した分岐テーブル9を書換可能部分ロードモジュール5の内部に自動生成する。その際、各分岐命令に対して、リンク解決に必要な情報も生成する(ステップS5)。その後、リンク解決を行ない(ステップS6)、未定義関数呼び出しが存在するかどうかの判定を行なう(ステップS7)。未定義関数呼び出しが存在する場合には、エラー処理を行なう(ステップS8)。なお、分岐テーブル9の中に未定義関数呼び出しが存在する場合、リンカは、どちらのロードモジュール内にあるべき関数であるかの判断を行なうことができない。リンク解決が正常に終了した場合、アプリケーションプログラム動作時にセルフ書き換えを行なった後でも正常に動作するロードモジュールの生成が完了する。
【0018】
図6に示される分岐テーブルによる二段分岐は、図7に示される関数アドレステーブルを用いたレジスタ間接分岐に代替され得る。書換不可能部分ロードモジュールの生成工程では、第2リンカ4の分岐先修正ルーチンのステップ9(図3参照)で、固定アドレスに配置される関数アドレステーブルのN番目に格納されるアドレスを参照して、分岐を行なうようにリンク解決をする。
【0019】
次に、書換可能部分ロードモジュールの生成工程では、第1リンカ3の分岐テーブル生成ルーチン7が、情報の一覧11に従って、通し番号順に関数アドレスを羅列した関数アドレステーブル(図7)を第1リンカ3の内部で自動生成する。この際、各関数アドレスに対して、リンク解決に必要な情報も生成するようにする。このような変更を行うことにより、関数アドレステーブルを用いたレジスタ間接分岐を用いた代替実行が可能である。なお、どちらのテーブルを用いるかは、生成するアプリケーションプログラムを動作させるアーキテクチャの特性を考慮して判断する。
【0020】
【発明の効果】
本発明によるフラッシュ内蔵マイコンのプログラムリンク方法は、書換可能部分の固定アドレスに分岐命令を配置する分岐テーブルを持ち、そこを介する二段階分岐により正しく動作するアプリケーションプログラムがリンカにより自動生成され、アプリケーションプログラム開発時のユーザは、意識することなく、セルフ書き換え機能を用いることができる。
【図面の簡単な説明】
【図1】図1は、本発明によるフラッシュ内蔵マイコンのプログラムリンク方法の概念ブロック図である。
【図2】図2は、本発明によるフラッシュ内蔵マイコンのプログラムリンク方法の実施の形態を示す回路ブロック図である。
【図3】図3は、本発明によるフラッシュ内蔵マイコンのプログラムリンク方法の実施の形態のうち分岐修正ルーチンの動作を示すフローチャートである。
【図4】図4は、本発明によるフラッシュ内蔵マイコンのプログラムリンク方法の実施の形態のうち分岐テーブル生成ルーチンの動作を示すフローチャートである。
【図5】図5は、関数呼出しの情報の一覧である。
【図6】図6は、分岐テーブルである。
【図7】図7は、関数のアドレスを示すテーブルである。
【符号の説明】
1…書換可能部分(のアプリケーションプログラム)
2…書換不可能部分(のアプリケーションプログラム)
5…書換可能部分側ロードモジュール
6…書換不可能部分側ロードモジュール
7…分岐テーブル生成ルーチン
8…分岐先修正ルーチン
9…分岐テーブル
11…一覧
Claims (6)
- リンク未解決な関数呼び出しを書換可能部分のロードモジュールに存在する関数への分岐命令とみなすこと、
分岐先を後記分岐テーブルに修正すること、
前記関数呼出しのリンク解決が終了した後に、前記修正による分岐先の関数呼出しの情報の一覧を自動生成し、書換不可能部分のロードモジュール内に保管すること、
前記情報に基づいて分岐テーブルを書換可能部分のロードモジュールに自動生成すること
とからなるフラッシュ内蔵マイコンのプログラムリンク方法。 - 請求項1において、
前記一覧は、前記書換不可能部分のロードモジュールの生成時のアプリケーションプログラムリンク時に、分岐先修正ルーチンにより生成される
フラッシュ内蔵マイコンのプログラムリンク方法。 - 請求項1において、更に、
書換不可能部分のアプリケーションプログラムのリンク時に未定義関数の呼出しがある場合に、分岐先修正ルーチンにより、前記分岐テーブルを呼び出すこと
からなるフラッシュ内蔵マイコンのプログラムリンク方法。 - 請求項3において、更に、
書換可能部分のアプリケーションプログラムのリンク時に前記一覧を参照すること
からなるフラッシュ内蔵マイコンのプログラムリンク方法。 - 請求項4において、
前記自動生成は、分岐テーブル生成ルーチンにより実行される
フラッシュ内蔵マイコンのプログラムリンク方法。 - 請求項1において、更に、
書換不可能部分のアプリケーションプログラムのリンク時の前記情報を前記一覧に保管すること、
書換可能部分のアプリケーションプログラムを更新した場合、前記一覧を参照して再び前記分岐テーブルを生成することにより、書換可能部分の前記アプリケーションプログラムをリンクして書換可能部分のロードモジュールを生成すること
とからなるフラッシュ内蔵マイコンのプログラムリンク方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27251999A JP3542529B2 (ja) | 1999-09-27 | 1999-09-27 | フラッシュ内蔵マイコンのプログラムリンク方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27251999A JP3542529B2 (ja) | 1999-09-27 | 1999-09-27 | フラッシュ内蔵マイコンのプログラムリンク方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001100984A JP2001100984A (ja) | 2001-04-13 |
JP3542529B2 true JP3542529B2 (ja) | 2004-07-14 |
Family
ID=17515036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27251999A Expired - Fee Related JP3542529B2 (ja) | 1999-09-27 | 1999-09-27 | フラッシュ内蔵マイコンのプログラムリンク方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3542529B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7389391B2 (en) * | 2005-04-29 | 2008-06-17 | Mediatek, Inc. | Memory disposition methods and systems |
US10877743B2 (en) * | 2016-11-29 | 2020-12-29 | Mitsubishi Electric Corporation | Control apparatus for updating stored program and method for updating program stored in control apparatus |
JP7081805B2 (ja) * | 2018-06-21 | 2022-06-07 | 日本電気通信システム株式会社 | 情報処理装置、ロードモジュール生成方法及びプログラム、並びに、動的プログラム更新システム及び方法 |
-
1999
- 1999-09-27 JP JP27251999A patent/JP3542529B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001100984A (ja) | 2001-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102486733B (zh) | 引导程序的升级方法和装置 | |
JP3563768B2 (ja) | Romプログラム変更装置 | |
JPH09231262A (ja) | プログラム設計方法、これに関連する方法、命令デコーダ及びプロセッサ | |
JP3542529B2 (ja) | フラッシュ内蔵マイコンのプログラムリンク方法 | |
EP3584697B1 (en) | Information processing device | |
JP2007257271A (ja) | メモリ診断方法、マイクロコンピュータシステム及びプログラム | |
JP3682050B2 (ja) | 組込みソフトウェア開発装置 | |
US6779173B1 (en) | Control system with an embedded microcomputer | |
JP2004126658A (ja) | プロセッサシステム | |
JP2004078294A (ja) | 信号処理装置 | |
JPH0876990A (ja) | カメラ用制御回路 | |
JP2002532802A (ja) | 読み出し専用メモリに格納されたプログラムのシーケンスを変更する方法 | |
JP2005284925A (ja) | コンピュータシステムおよびプログラム更新方法 | |
JPH05150983A (ja) | プログラム呼び出し方法 | |
JP2003076558A (ja) | プログラム実行制御方法及びプログラム実行制御プログラム | |
JP2573391B2 (ja) | プログラマブルコントローラ | |
JPH09288655A (ja) | プロセッサ増設方法 | |
JPH08194614A (ja) | マイクロコンピュータ | |
JP2002182931A (ja) | 共通osシステムコール方法 | |
JP2005332228A (ja) | プログラム切替え制御装置 | |
JPH11143708A (ja) | デジタルプロセッサ | |
JPH1021067A (ja) | プログラムの動的修正方法 | |
JP2000276348A (ja) | プログラム修復用フラッシュメモリを内蔵したワンチップマイクロコンピュータ | |
JP2007279918A (ja) | 組み込みソフトウェアのカスタマイズ方法および制御装置 | |
JP2006079282A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20040304 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040331 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080409 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090409 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100409 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110409 Year of fee payment: 7 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110409 Year of fee payment: 7 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120409 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120409 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130409 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140409 Year of fee payment: 10 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |