System 0x37


プログラム書込み


【機能】

 ユーザプログラムをプログラム格納エリアに書込みます。

【関数】

 int WriteProgram( void *prg )
 {
   return trapa_svc( 0x37, pid, prg );
 }

【入力】

 prg プログラム 書込むプログラムの格納された領域の先頭アドレス

+0
+1
+2
--
prg+00
:
プログラム
名称
prg+0c
0
(予約)
バージョン(上位)
バージョン(下位)
prg+10
プログラムサイズ
prg+14
エントリアドレス
prg+18
:
プログラムコード
データ
変数エリア

【出力】

 リターンコード OK 正常終了
ERR_PARAM パラメータエラー
ERR_FLSHERT パラメータエラー
ERR_PRGMEMOVER プログラム格納エリアオーバ

【解説】

 本装置は、64キロバイトを一単位としたユーザプログラム格納エリアを10個持っており、ユーザプログラムが64キロバイト以内であれば、最大10本のユーザプログラムを格納することができます。
 本ファンクションは、ネットワーク等外部機器から受け取ったユーザプログラムを 、プログラム格納エリアに格納するために使用します。

 書込むプログラムの先頭アドレスが2バイト境界にない場合、パラメータエラーを返します。

 システムはユーザプログラムを格納する際、書込み結果をチェックし、書込んだデータと一致しない場合はフラッシュ書込みエラーを返します。

 ユーザプログラム格納エリアの空き容量(連続)が、プログラムサイズ(ヘッダを含む)に満たない場合、プログラム格納エリアオーバエラーを返します。

【関連項目】

 プログラム消去

【注意】

 本ファンクション実行中は、シリアルの受信オーバランが発生する可能性があるため、シリアルをクローズしてから実行することを推奨します。また、本ファンクション実行中に電源OFF(またはリセット)を行なうと、メモリの内容が破壊される場合があります。