(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に意図された変更が反映されない原因かもしれません。