(toppers-users 3125) Re: cq_starmのCFGについて

yasuo kominami(nifty) ykominami @ nifty.com
2010年 3月 29日 (月) 21:56:36 JST


小南と申します。

とりいそぎ、1についてのみ、気がついた点を書きます。

2010/3/27 koizumi yoshiyuki <koizumiyoshiyuki @ gmail.com>:
>  koisanです。
>
>  TOPPERS/ASP cq_starmのUARTを#1から#2に変えて実機では動作しています。target\cq_starm_gccのtarget_config.c、target_serial.c、target_serial.h、target_syssvc.hを修正しました。cfgの使い方が良く解からないので、割り込みベクタの修正はkernel_cfg.cのexc_tblとbitpat_cfgintを直接書き換えて進めて来ました。
>
>  動作したことで、問題が整理されてきました。疑問が3点あります。
>
> 1.
>  この状態で、新たにディレクトリ作成からsample1を作り直せば、kernel_cfg.cはUART#2用のものが作成されると思っていますが、UART割り込みは#1(53)のままで#2(54)にはなりません。kernel_cfg.cのUART割り込み番号は、target\cq_starm_gcc\target_serial.cfgのCFG_INT(INTNO_SIO,
> { TA_ENAINT|INTATR_SIO, INTPRI_SIO
> });のINTNO_SIOで指定され、cgfにてkernel_cfg.cに反映されると思っています。INTNO_SIOは
> cq_starm_gcc\target_serial.h(58): #define INTNO_SIO  IRQ_VECTOR_USART2
> cq_starm_gcc\cq_starm.h(75): #define IRQ_VECTOR_USART2  (16 + 38)
> で定義しています。小生の早とちりでしょうか。
>

asp_cq_starm_gcc-20081003.tar.gzを展開して確認してみました。

target_serial.hは、以下の順に読み込まれています。

sample1.cfg->syssvc/syslog.cfg->syssvc/serial.cfg->target_serial.cfg->target_serial.h

で、target_serial.hは以下のように定義されています。

/*
 *  SIOの割込みベクタ番号
 */
#if (SIO_PORTID == 1)
#define INHNO_SIO		IRQ_VECTOR_USART1
#define INTNO_SIO		IRQ_VECTOR_USART1
#elif (SIO_PORID == 2)
#define INHNO_SIO		IRQ_VECTOR_USART2
#define INTNO_SIO		IRQ_VECTOR_USART2
#endif
#define INTPRI_SIO		-3				/* 割込み優先度 */
#define INTATR_SIO		0				/* 割込み属性 */

ここに示されているように、マクロSIO_PORTIDの値により、マクロINTNO_SIOの値が変わります。
そして、マクロSIO_PORTIDは、以下で定義されています。
target/cq_starm_gcc/target_config.h

メールではこれらに対して言及されていませんでした。
このあたりが、kernel_cfg.cに意図された変更が反映されない原因かもしれません。