Forums: Help (Thread #2162)

acre_cycについて (2003-03-09 14:24 by Anonymous #4088)

はじめまして。nabeこと渡辺と申します。
早速ですが,周期ハンドラの動的生成について,教えてください。初期化関数でpk_ccycに値をセットしてacre_cycをコールするように組んでみましたが,コンパイル時にエラーが出てしまいます。
ソース・・・
ER_ID cycid;
T_CCYC cycinf;
cycinf.cycatr = TA_HLNG;
cycinf.exinf = 0;
cycinf.cychdr = CycHandler1;
cycinf.cyctim = 1000;
cycid = acre_cyc(&cycinf);
コンパイル時のエラー・・・
hos-v4/lib/h83/gcc/libh4h83.a(acre_cyc.o)(.text+0x34):acre_cyc.c: undefined reference to `kernel_cyccb_ram_tbl'
hos-v4/lib/h83/gcc/libh4h83.a(acre_cyc.o)(.text+0x3e):acre_cyc.c: undefined reference to `kernel_cyccb_ram_tbl'
hos-v4/lib/h83/gcc/libh4h83.a(sta_cyc.o)(.text+0x3c):sta_cyc.c: undefined reference to `kernel_cyccb_ram_tbl'
hos-v4/lib/h83/gcc/libh4h83.a(kcre_cyc.o)(.text+0x7e):kcre_cyc.c: undefined reference to `kernel_cyccb_ram_tbl'
collect2: ld returned 1 exit status

どうやら,kernel_cyccb_ram_tblが定義されてない,ということのようです。そこで,system.cfgにCRE_CYCを定義してみたらコンパイルに成功しました。kernel_cyccb_ram_tblをkernel_cfg.cで定義しておけば良いみたいです。
動的生成なので,CRE_xxxを定義しなくても良い,との認識でしたが,やはりいったんコンフィギュレータを通さないとだめなのでしょうか。今,目指しているのは周期ハンドラの起動周期を任意に設定できるプログラムなのです。静的APIだと周期固定になってしまいますので・・・

Reply to #4088×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: acre_cycについて (2003-03-09 14:26 by Anonymous #4089)

スレッド立てたnabeです。
環境について書くのを忘れてました。
秋月製H8/3052F + GCC(cygwin)です。
以上,よろしくお願いいたします。
Reply to #4088

Reply to #4089×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: acre_cycについて (2003-03-09 14:31 by ryuz #4090)

 お世話になります。Ryuzです。

 コンフィギュレーターで
 HOS_MAX_CYCID(16);
 のように宣言してみてください。
 16個まで生成可能になります。

 静的生成のみ使う場合のメモリ削減のため、デフォルト
0個で、必要なテーブルが生成されないためリンク
エラーとなります。
 分かりにくくて申し訳ないです。
Reply to #4088

Reply to #4090×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: acre_cycについて (2003-03-09 14:36 by ryuz #4091)

 Ryuzです。追記...

> 今,目指しているのは周期ハンドラの起動周期を任意に
> 設定できるプログラムなのです。静的APIだと周期
> 固定になってしまいますので・・・

 私もITRONのこの仕様には困ったことがありまして...
 HOSの実装的には、周期を途中で変えるのもそれほど
難しくは無いのですが...
 ただ、私は大抵、細かい周期で作っておいて後から
ハンドラで分周してます。
# 手抜きで isig_tim の呼び出し自体の周期を変える
# こともあります。
# デバッグ目的で全体を低速動作させる時とか...

 OS内部でも、isig_tim を分周しているだけなので
ハンドラで分周してもパフォーマンスに大差はないと
思います。
 参考までに。


Reply to #4090

Reply to #4091×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: acre_cycについて(解決です) (2003-03-09 14:39 by Anonymous #4092)

早速試してみました。見事にコンパイル成功しました。ありがとうございます。

言われてみれば,コンフィギュレータのドキュメントにしっかり書いてありました。
この仕組みを知ったときは,よくできているものだと感動していたのですが,肝心なときに忘れてました。
お騒がせしてもうしわけありませんでした。

まだまだ組み込みもOSも初心者ですが,これからもよろしくお願いいたします。
Reply to #4088

Reply to #4092×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login