[Armadillo:06859] Re: Armadillo-300 拡張バスについて
Takenoshita Koyo
email@hidden
2011年 3月 7日 (月) 15:03:42 JST
竹之下です。
> -march=armv4オプションをつけたところ、
> リード及び、ライトとも希望通りの1回出力にすることが出来ました。
> しかし、makeでコンパイルを行うと2回でてしまいました。
> なにか、間違いがあるでしょうか?
>
> <コンパイル lftpで転送すると希望通りの動きになる>
> arm-linux-gcc MacProgram.c command.c sub.c App.c -lm -lrt -march=armv4 -o
> App
>
> <Makefile Flashに焼いて動作させると以前のままでNG>
> LDFLAGS = -lm -lrt -march=armv4
> EXEC = App
> OBJS = sub.o command.o MacProgram.o App.o
> all: $(EXEC)
> $(EXEC): $(OBJS)
> $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
> clean:
> -rm -f $(EXEC) *.elf *.gdb *.o
> romfs:
> $(ROMFSINST) /bin/$(EXEC)
> %.o: %.c
> $(CC) -c $(CFLAGS) -o $@ $<
これは、Armadillo開発者ガイドに載っている、Out of Treeでアプリをビルドする方法でしょうか?
http://manual.atmark-techno.com/dist/atmark-dist_developers_guide_ja-1.0.7/ch10#sec-10-1
やり方が色々ありますので、どこどこのドキュメントを参照している、ということを
教えていただけると、問題点の絞り込みが容易になります。
今回の場合の問題点は、"-march=armv4"はコンパイル時のオプション(CFLAGS)に指定
しなければならない、という点だと思います。
> LDFLAGS = -lm -lrt -march=armv4
とすると、"-march=armv4"の指定は
> $(EXEC): $(OBJS)
> $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
でしか効きません。この行はオブジェクトファイルをリンクしているだけですので、
ハーフワードインストラクションを使う/使わないとは関係ありません。
ハーフワードインストラクションを使うように指定するのは、コンパイル時であるべき
なので、
> %.o: %.c
> $(CC) -c $(CFLAGS) -o $@ $<
ここで効くように、CFLAGSに"-march=armv4"を追加指定します。
具体的には、以下のようになるでしょう。
LDFLAGS = -lm -lrt
EXEC = App
OBJS = sub.o command.o MacProgram.o App.o
CFLAGS += -march=armv4
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
romfs:
$(ROMFSINST) /bin/$(EXEC)
%.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<
--
Koyo Takenoshita
armadillo メーリングリストの案内