ビルドエラー

chip_mmr.cというファイルを作って、以下のような定義をずらりと並べます。

volatile unsigned short mmrPLL_CTL 	__attribute__ ((aligned(4), section("PWRMGMT")));
volatile unsigned short mmrPLL_DIV 	__attribute__ ((aligned(4), section("PWRMGMT")));
volatile unsigned short mmrVR_CTL 	__attribute__ ((aligned(4), section("PWRMGMT")));
volatile unsigned short mmrPLL_STAT 	__attribute__ ((aligned(4), section("PWRMGMT")));
volatile unsigned short mmrPLL_LOCKCNT __attribute__ ((aligned(4), section("PWRMGMT")));
volatile unsigned short mmrCHIPID	__attribute__ ((aligned(4), section("PWRMGMT")));

で、chip_mmr.hというファイルを作って、以下のような宣言をずらりと並べます。

extern volatile unsigned short mmrPLL_CTL 	;
extern volatile unsigned short mmrPLL_DIV 	;
extern volatile unsigned short mmrVR_CTL 	;
extern volatile unsigned short mmrPLL_STAT 	;
extern volatile unsigned short mmrPLL_LOCKCNT ;
extern volatile unsigned short mmrCHIPID	;

で、chip_mmr.hをchip_config.h ( sys_config.h )にインクルードしておけば、アプリケーションからmmrXXXXを使えると思ったのですが…リンク・エラーの嵐。

chip_mmr.o:(PWRMGMT+0x0): multiple definition of `_mmrPLL_CTL'
libkernel.a(chip_mmr.o):(PWRMGMT+0x0): first defined here

一体何が悪いのやら。