Busan IT/디지털 제어

AVR makefile 소스의 이해와 1차원 배열

newind2000 2015. 3. 12. 17:33

디지털 제어 - AVR makefile 소스의 이해와 1차원 배열

 

AVR makefile 소스의 이해와 1차원 배열

 

학습목표

 

WinAVR에서 makefile 구동 개념을 안다.

makefile의 기본 문법을 안다.

1차원 배열의 기본개념의 대해 이해한다.

 

WinAVR Makefile

 

87 CPPSRC = , C++ 소스

 

97 ASRC = , 어셈블리 소스

 

103 OPT = s,optimization 최적화.(0 = 속도 최적화, s = 메모리 최적화)

 

110 DEBUG = dwarf-2, 출력하는 디버그 파일 형식 설정

 

//COFF - Common File Form

 

//윈도우 실행 파일은 PE format

 

117 EXTRAINCDIRS =, Extra Included Directories

 

125 CSTANDARD = -std=gnu99, C 표준 설정

 

129 CDEFS = -DF_CPU=$(F_CPU)UL, C++ defined

 

 

cl /DSMART=100 CDEF.c

 

// 컴파일 옵션에서 사용하는, /(C) = -(

 

129 CDEFS = -DF_CPU=$(F_CPU)UL -> #define F-CPU 16000000UL //UL unsigned long

 

-D를 추가할 시 한 칸 띄우고 같은 다시 적어주면 된다.

 

makefile에 소스코드에 없는 내용이 적혀서 구동할 수 있기 때문에 소스를 분석할 때 makefile을 같이 보아야 한다.

 

133 ADEFS = -DF_CPU=$(F_CPU)

 

137 CPPDEFS = -DF_CPU=$(F_CPU)UL

 

//아래에 CFLAG는 누적된다.

 

150 CFLAGS = -g$(DEBUG), DEBUG에 위에 선언한 dwarf가 들어간다.

 

151 CFLAGS += $(CDEFS), //상위에서 나온 내용이 아닌 경우 오류가 난다.

 

152 CFLAGS += -O$(OPT),

 

153 CFLAGS += -funsigned-char,

 

157 CFLAGS += -Wall, Warning All 경고를 전부 출력해라. -> 소스에 사소한 것이라도 알려 달라.

 

// ‘-’ 다음에 나오는 것들은 옵션이다.

 

164 CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)

 

CFLAGS는 가독성을 위해서 짧게 나누어서 나열한다.

 

233 MATH_LIB = -lm, math 라이브러리를 추가시킬 때 쓰는 옵션 //여기서 나오는 수학은 단순 사칙연산이 아니라 고등수학을 말한다. ex) sin, cos

 

262 LDFLAGS = -Wl,-Map=$(TARGET).map,--cref, LD(objexe로 만들어주는 기능)에 사용되는 flag(옵션)

 

340 CC = avr-gcc, C compiler(C:\WinAVR-20100110\bin)

 

355 MSG_ERRORS_NONE = Errors: none

 

389 ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS), /m MCU = atmega128

 

모든 flag값들을 ALL_CFLAGS가 다 가지고 있다는 의미

 

‘:’ label 표시이다.

 

// 탭으로 들여 쓰고 반드시 붙어 있어야 한다.

 

//대입 연산자랑 비슷한 순서로 수행된다.

 

 

 

 

 

이리하여 ‘make’를 쳤을 때 makefile이 어떻게 동작하는지 기본배경을 알 수 있다.

 

p/254 Ch. 11. 1차원 배열

 

같은 형의 자료를 한 개 이상 열거해 놓은 것을 배열이라고 한다.

 

모든 프로그래밍은 배열을 가지고 있고 그 개념은 거의 다 비슷하다.

 

C가 가지는 특징은 주소를 사용한다는 것이다. 또한 배열과 포인터는 밀접한 관련이 있다.

 

대괄호([])1개만 있으면 1차원 2개 있으면 2차원... so and so forth.

 

구형 c compiler에서는 배열 속 대괄호 안에 숫자를 변수로 만들어 쓸 수 없다.

//C++과 신형 c compiler에서는 허용한다.

 

p/256 예제 - 배열의 합)


 

반응형