[86] | 1 | #
|
---|
[421] | 2 | # Makefile のターゲット依存部(LPCXPRESSO-LPC812用)
|
---|
[86] | 3 | #
|
---|
| 4 |
|
---|
| 5 | #
|
---|
[421] | 6 | # ボード名,プロセッサ名,開発環境名の定義
|
---|
[86] | 7 | #
|
---|
| 8 | BOARD = lpcxpresso_lpc812
|
---|
| 9 | PRC = armv6_m
|
---|
| 10 | TOOL = gcc
|
---|
| 11 |
|
---|
| 12 | #
|
---|
[421] | 13 | # CMSIS を使うかどうか
|
---|
[86] | 14 | #
|
---|
| 15 | USE_CMSIS = false
|
---|
| 16 | CMSIS_INCLUDE_PATH = /Users/saito/Documents/LPCXpresso_5.2.4/workspace/CMSIS_CORE_LPC8xx/inc
|
---|
| 17 | CMSIS_LIB_PATH = /Users/saito/Documents/LPCXpresso_5.2.4/workspace/CMSIS_CORE_LPC8xx/Debug
|
---|
| 18 |
|
---|
| 19 | #
|
---|
[421] | 20 | # MTB(Micro Trace Buffer)を使うかどうか
|
---|
[86] | 21 | #
|
---|
| 22 | USE_MTB = false
|
---|
| 23 | MTB_BUF_SIZE = 64
|
---|
| 24 |
|
---|
| 25 | #
|
---|
[421] | 26 | # GNU開発環境のターゲットアーキテクチャの定義
|
---|
[86] | 27 | #
|
---|
| 28 | GCC_TARGET = arm-none-eabi
|
---|
| 29 |
|
---|
| 30 | #
|
---|
[421] | 31 | # コンパイルオプション
|
---|
[86] | 32 | #
|
---|
[421] | 33 | COPTS := $(COPTS) -mcpu=cortex-m0 -mthumb
|
---|
| 34 | CDEFS := $(CDEFS) -D__NEWLIB__
|
---|
| 35 | INCLUDES := $(INCLUDES) -I$(TARGETDIR)
|
---|
| 36 | LDFLAGS := $(LDFLAGS)
|
---|
| 37 | LIBS := $(LIBS)
|
---|
[86] | 38 |
|
---|
| 39 | #
|
---|
[421] | 40 | # システムサービスに関する定義
|
---|
[86] | 41 | #
|
---|
[421] | 42 | SYSSVC_DIRS := $(SYSSVC_DIRS)
|
---|
| 43 | SYSSVC_ASMOBJS := $(SYSSVC_ASMOBJS)
|
---|
| 44 | SYSSVC_COBJS := $(SYSSVC_COBJS)
|
---|
| 45 | SYSSVC_CFLAGS := $(SYSSVC_CFLAGS)
|
---|
| 46 | SYSSVC_LIBS := $(SYSSVC_LIBS)
|
---|
[86] | 47 |
|
---|
| 48 | #
|
---|
[421] | 49 | # カーネルに関する定義
|
---|
[86] | 50 | #
|
---|
[421] | 51 | KERNEL_DIRS := $(KERNEL_DIRS) $(TARGETDIR)
|
---|
| 52 | KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) target_support.o
|
---|
[86] | 53 | KERNEL_COBJS := $(KERNEL_COBJS) target_config.o target_serial.o
|
---|
| 54 | KERNEL_CFLAGS := $(KERNEL_CFLAGS) -fno-strict-aliasing
|
---|
| 55 |
|
---|
| 56 | #
|
---|
[421] | 57 | # トレースログに関する設定
|
---|
[86] | 58 | #
|
---|
[421] | 59 | ifeq ($(ENABLE_TRACE),true)
|
---|
| 60 | COPTS := $(COPTS) -DTOPPERS_ENABLE_TRACE
|
---|
| 61 | KERNEL_DIRS := $(KERNEL_DIRS) $(SRCDIR)/arch/logtrace
|
---|
| 62 | KERNEL_COBJS := $(KERNEL_COBJS) trace_config.o trace_dump.o
|
---|
| 63 | endif
|
---|
[86] | 64 |
|
---|
| 65 | #
|
---|
[421] | 66 | # コンフィギュレータ関係の変数の定義
|
---|
[86] | 67 | #
|
---|
[421] | 68 | CFG_TABS := $(CFG_TABS) --symval-table $(TARGETDIR)/target_sym.def
|
---|
| 69 | CFG1_OUT_LDFLAGS := $(CFG1_OUT_LDFLAGS)
|
---|
| 70 | CFG_OBJS := $(CFG_OBJS)
|
---|
| 71 | CFG2_OUT := $(CFG2_OUT)
|
---|
[86] | 72 |
|
---|
| 73 | #
|
---|
[421] | 74 | # -Wall オプションの省略
|
---|
| 75 | # -Wallを追加したくない場合に true に定義する
|
---|
[86] | 76 | #
|
---|
[421] | 77 | #OMIT_WARNING_ALL = true
|
---|
[86] | 78 |
|
---|
| 79 | #
|
---|
[421] | 80 | # 最適化フラグの省略
|
---|
| 81 | # -O2を追加したくない場合に true に定義する
|
---|
[86] | 82 | #
|
---|
[421] | 83 | #OMIT_OPTIMIZATION = true
|
---|
| 84 |
|
---|
[86] | 85 | #
|
---|
[421] | 86 | # CMSISライブラリ使用時は USE_CMSISをtrueに定義する
|
---|
| 87 | # その場合,LPC8xx.h を include してデバイスレジスタ定義を利用することが可能
|
---|
| 88 | # インクルードファイルのサーチディレクトリとして LPC8xx.h の存在するファイルのパスを指定する
|
---|
| 89 | # (もしくは,LPCXpresso IDE でサーチパスの設定をしても良い)
|
---|
| 90 | #
|
---|
| 91 | # ライブラリファイル(libCMSIS_CORE_LPC8xx.a)の利用は想定していない.
|
---|
| 92 | # 少なくともsystem_LPC8xx.c の SystemInit に相当する処理はSSPのシステム起動時に実施しているので基本的に呼び出す必要はない
|
---|
| 93 | #
|
---|
[86] | 94 | ifeq ($(USE_CMSIS),true)
|
---|
| 95 | INCLUDES := $(INCLUDES) -I$(CMSIS_INCLUDE_PATH)
|
---|
[421] | 96 | # 基本的に以下のライブラリファイルは使わないことを前提とする
|
---|
[86] | 97 | # LIBS := $(LIBS) -lCMSIS_CORE_LPC8xx -L$(CMSIS_LIB_PATH)
|
---|
| 98 | endif
|
---|
| 99 |
|
---|
| 100 | #
|
---|
[421] | 101 | # MTB(Micro Trace Buffer)に関する設定
|
---|
| 102 | # LPCXpresso IDE の利用を前提としている
|
---|
[86] | 103 | #
|
---|
| 104 | ifeq ($(USE_MTB),true)
|
---|
| 105 | COPTS := $(COPTS) -D__USE_MTB -D__MTB_BUF_SIZE=$(MTB_BUF_SIZE)
|
---|
| 106 | endif
|
---|
| 107 |
|
---|
| 108 | #
|
---|
[421] | 109 | # リンカスクリプトの定義
|
---|
[86] | 110 | #
|
---|
| 111 | LDSCRIPT = $(SRCDIR)/target/$(BOARD)_$(TOOL)/lpcxpresso_lpc812.ld
|
---|
| 112 |
|
---|
| 113 | #
|
---|
[421] | 114 | # 各セクションの先頭番地の指定
|
---|
[86] | 115 | #
|
---|
[421] | 116 | #TEXT_START_ADDRESS =
|
---|
| 117 | #DATA_START_ADDRESS =
|
---|
| 118 |
|
---|
[86] | 119 | #
|
---|
[421] | 120 | # スタートアップモジュールに関する定義
|
---|
| 121 | #
|
---|
| 122 |
|
---|
| 123 | # スタートアップモジュール
|
---|
| 124 | START_OBJS =
|
---|
| 125 | # リンカスクリプトに「STARTUP(start.o)」を記述したため,スタートアップモジュー
|
---|
| 126 | # ルの名前をHIDDEN_OBJSに定義する.また,LDFLAGSに-nostdlibを追加している.
|
---|
[86] | 127 | HIDDEN_OBJS = start.o
|
---|
| 128 |
|
---|
[421] | 129 | # スタートアップモジュールのコンパイルルール
|
---|
| 130 | $(START_OBJS): %.o: %.S
|
---|
| 131 | $(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
|
---|
[86] | 132 | $(HIDDEN_OBJS): %.o: %.S
|
---|
| 133 | $(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
|
---|
| 134 |
|
---|
[421] | 135 |
|
---|
| 136 | # スタートアップモジュールの依存関係作成ルール
|
---|
| 137 | $(START_OBJS:.o=.d): %.d: %.S
|
---|
| 138 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
|
---|
| 139 | -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
|
---|
[86] | 140 | $(HIDDEN_OBJS:.o=.d): %.d: %.S
|
---|
[421] | 141 | @$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \
|
---|
| 142 | -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
|
---|
[86] | 143 |
|
---|
| 144 | LDFLAGS := -nostdlib $(LDFLAGS) --entry=_start
|
---|
| 145 |
|
---|
| 146 | #
|
---|
[421] | 147 | # 依存関係の定義
|
---|
[86] | 148 | #
|
---|
[421] | 149 | cfg1_out.c: $(TARGETDIR)/target_sym.def
|
---|
| 150 | kernel_cfg.timestamp: $(TARGETDIR)/target_kernel.trb
|
---|
| 151 | check.timestamp: $(TARGETDIR)/target_check.trb
|
---|
[86] | 152 |
|
---|
| 153 | #
|
---|
[421] | 154 | # その他
|
---|
[86] | 155 | #
|
---|
[421] | 156 | CLEAN_FILES := $(CLEAN_FILES)
|
---|
| 157 | REALCLEAN_FILES := $(REALCLEAN_FILES)
|
---|
| 158 |
|
---|
| 159 |
|
---|
| 160 | #
|
---|
| 161 | # プロセッサ依存部のインクルード
|
---|
| 162 | #
|
---|
[86] | 163 | include $(SRCDIR)/arch/$(PRC)_$(TOOL)/Makefile.prc
|
---|