プログラム書込み
【機能】
ユーザプログラムをプログラム格納エリアに書込みます。
【関数】
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(またはリセット)を行なうと、メモリの内容が破壊される場合があります。