フォーラム: ヘルプ (スレッド #25445)

CRE_MPLの不具合? (2010-02-17 08:34 by easygo #48643)

V850ESで利用させて頂いております。

CRE_MPLにて生成した可変長メモリプールに対してpget_mplを実行すると取得に失敗します。
どうやらコンフィグレータ(hos4cfg)が生成するコード(kernel_cfg.c)に誤りがあるようです。

以下が該当箇所です

/* fixed size memory-pool area */
static VP kernel_mpl1_heap[(((2048) + sizeof(VP) - 1) / sizeof(VP))];

/* variable size memory-pool control block for rom area */
const T_KERNEL_MPLCB_ROM kernel_mplcb_rom[1] =
{
{(ATR)(TA_TFIFO), (SIZE)sizeof(kernel_mpl1_heap[0]), (VP)kernel_mpl1_heap},
};

ヒープサイズの定義が(SIZE)sizeof(kernel_mpl1_heap[0])となってしまっており
ポインタのサイズ(4byte)がヒープサイズとして定義されてしまいます。

正しくは、(SIZE)sizeof(kernel_mpl1_heap)ではないでしょうか?
コンフィグレータを修正することで解決しておりますが、念のためご連絡いたします。

メッセージ #48643 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: CRE_MPLの不具合? (2010-02-18 01:01 by m-arai #48679)

CRE_MPFにも同じ病があるようですね。
#48643 への返信

メッセージ #48679 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: CRE_MPLの不具合? (2010-02-18 09:12 by hamayan #48681)

同じジェネレータだからだとは思いますが、固定長メモリプールでも発生していますね。
#48679 への返信

メッセージ #48681 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: CRE_MPLの不具合? (2010-02-18 09:31 by hamayan #48682)

取り敢えずconfigの中のcrempl.cppの186行目辺りの
"(SIZE)sizeof(kernel_mpl%d_heap[0]), (VP)kernel_mpl%d_heap},\n",

"(SIZE)sizeof(kernel_mpl%d_heap), (VP)kernel_mpl%d_heap},\n",
で再コンパイルしてみては如何でしょうか。

同様に固定長メモリプールではcrempf.cppの190行目辺りの
"(SIZE)sizeof(kernel_mpf%d_heap[0]), (VP)kernel_mpf%d_heap},\n",

"(SIZE)sizeof(kernel_mpf%d_heap), (VP)kernel_mpf%d_heap},\n",
ですか。

問題を見つけていただいて感謝しています。
#48643 への返信

メッセージ #48682 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: CRE_MPLの不具合? (2010-02-18 09:44 by hamayan #48683)

ごめんなさい、固定長メモリプールの場合はこれに当たらないかも。
#48682 への返信

メッセージ #48683 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

メッセージ #48684 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: CRE_MPLの不具合? (2010-02-18 09:56 by hamayan #48685)

m-araiさん、直してもらってすいません。
固定長メモリプールはメモリブロックのサイズを指すので元が正しい様です。

本当にすいません。
#48684 への返信

メッセージ #48685 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: CRE_MPLの不具合? (2010-02-18 10:18 by m-arai #48686)

失礼しました。最初にデムパを飛ばしたのは私です。
固定長はメモリブロック数、ブロックサイズなので、
元のままで良いのでした。

http://sourceforge.jp/cvs/view/hos/hos/hos-v4/config/crempf.cpp?r1=1.10&r2=1.11
#48685 への返信

メッセージ #48686 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: CRE_MPLの不具合? (2010-02-21 18:10 by ryuz #48803)

反応遅れてすみません。Ryuz@バグの犯人です。

バグレポ並びに、修正有難うございました。 > 皆様

MPF先に作って、それをベースにMPL作成して、しくじっていたようです。
私自身あまりMPL使う機会が無くて長らく埋まっていたようですみません。

組込みの特性上、以前はMPLはあまり好まれない風潮がありましたが、最近はリソースに余裕があるケースも増えてきましたのでもっとリッチなヒープアルゴリズムを検討しても良いのかもしれませんね。
可変長という特性上、リアルタイム保証しにくいのが困ったものです。
#48686 への返信

メッセージ #48803 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする