JP3542529B2 - フラッシュ内蔵マイコンのプログラムリンク方法 - Google Patents

フラッシュ内蔵マイコンのプログラムリンク方法 Download PDF

Info

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
Application number
JP27251999A
Other languages
English (en)
Other versions
JP2001100984A (ja
Inventor
潤 高梨
Original Assignee
Necマイクロシステム株式会社
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 Necマイクロシステム株式会社 filed Critical Necマイクロシステム株式会社
Priority to JP27251999A priority Critical patent/JP3542529B2/ja
Publication of JP2001100984A publication Critical patent/JP2001100984A/ja
Application granted granted Critical
Publication of JP3542529B2 publication Critical patent/JP3542529B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、フラッシュ内蔵マイコンのプログラムリンク方法に関し、特に、書換可能部分のアプリケーションプログラムの更新があった場合にもその動作を自動的に継続することができるロードモジュールを生成することができるフラッシュ内蔵マイコンのプログラムリンク方法に関する。
【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. リンク未解決な関数呼び出しを書換可能部分のロードモジュールに存在する関数への分岐命令とみなすこと、
    分岐先を後記分岐テーブルに修正すること、
    前記関数呼出しのリンク解決が終了した後に、前記修正による分岐先の関数呼出しの情報の一覧を自動生成し、書換不可能部分のロードモジュール内に保管すること、
    前記情報に基づいて分岐テーブルを書換可能部分のロードモジュールに自動生成すること
    とからなるフラッシュ内蔵マイコンのプログラムリンク方法。
  2. 請求項1において、
    前記一覧は、前記書換不可能部分のロードモジュールの生成時のアプリケーションプログラムリンク時に、分岐先修正ルーチンにより生成される
    フラッシュ内蔵マイコンのプログラムリンク方法。
  3. 請求項1において、更に、
    書換不可能部分のアプリケーションプログラムのリンク時に未定義関数の呼出しがある場合に、分岐先修正ルーチンにより、前記分岐テーブルを呼び出すこと
    からなるフラッシュ内蔵マイコンのプログラムリンク方法。
  4. 請求項3において、更に、
    書換可能部分のアプリケーションプログラムのリンク時に前記一覧を参照すること
    からなるフラッシュ内蔵マイコンのプログラムリンク方法。
  5. 請求項4において、
    前記自動生成は、分岐テーブル生成ルーチンにより実行される
    フラッシュ内蔵マイコンのプログラムリンク方法。
  6. 請求項1において、更に、
    書換不可能部分のアプリケーションプログラムのリンク時の前記情報を前記一覧に保管すること、
    書換可能部分のアプリケーションプログラムを更新した場合、前記一覧を参照して再び前記分岐テーブルを生成することにより、書換可能部分の前記アプリケーションプログラムをリンクして書換可能部分のロードモジュールを生成すること
    とからなるフラッシュ内蔵マイコンのプログラムリンク方法。
JP27251999A 1999-09-27 1999-09-27 フラッシュ内蔵マイコンのプログラムリンク方法 Expired - Fee Related JP3542529B2 (ja)

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)

* Cited by examiner, † Cited by third party
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 日本電気通信システム株式会社 情報処理装置、ロードモジュール生成方法及びプログラム、並びに、動的プログラム更新システム及び方法

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