ビルドエラー
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
一体何が悪いのやら。