==========================================================================================
네트워크
==========================================================================================
<C>
=gcc 컴파일 옵션 : 주소 고정
cat /proc/self/maps => 스택 실행권한 확인
sysctl -w kernel.randomize_va_space=0 랜덤X => 주소 고정
sysctl -w kernel.randomize_va_space=1 stack 랜덤
sysctl -w kernel.randomize_va_space=2 stack heap 랜덤
(gcc -o main-1 main-1.c -z execstack) - 스택실행권한
-fno-stack-protector
=
<C>
-CODE | TEXT 영역
-DATA
-BSS
-HEAP
-STACK
cdecl call
-cdecl 방식 : 뒤에서부터 넣는 방식
-std방식 :
std call
-메모리 확인
#include <stdio.h> |
-WIN
-LINUX
-Return Address 변경(호출곳 다음줄 대신 hack함수 주소로 변경)
#include <stdio.h> |
=> 키입력 => ERROR발생 ( RETURN 시점에서 에러발생함)
=HEAP 영역 - 동적할당(생성 / 소멸 수동으로 정해줌)
#include <stdlib.h>
void * malloc(size_t size); // 인자 : 필요한 크기 Return : 주소(void *)
void free(void * ptr); // 해제할 곳의 주소(할당 못받으면 0반환)
- void * => int * : 캐스팅 없이 바로 사용 가능
=malloc / free
#include <stdio.h> |
=
int *P = malloc(4); // ---1
P = malloc(4); //---2
free(P); //---2번 free
free(P); //---2번 free
==> 1번 할당된 메모리 프로그램 종료시 까지 살아있음 => 심각한 문제 발생 가능성 있음(메모리 누수)
=> 2번 메모리 할당전 반드시 1번 메모리 free 해주어야 함
int *P = malloc(4); // ---1
free(P); //---1번 free
P = malloc(4); //---2
free(P); //---2번 free
=입력받는 개수만큼 할당도 가능
=calloc(개수, 크기) => clean : 0으로 채워줌
-my_calloc구현
#include <stdio.h> |
=realloc(주소, 크기)
==========================================================================================
AVR
==========================================================================================
=AVR2560
-트리거 : 잠깐 멈추는 모양
-프리러닝 : 오실로스코프 그냥 흘러가는 모양
=가변저항
=RV(RESISTER VARIABLE) = Potentionmeter = Trimmer
- TURN 수 많을수록 정밀제어 가능
-RV
=단일 : 0~1023
=차동 : -512 ~ 511
=A/D 변환 오차 발생(선 -> 계단)
-양자화 오차
-오프셋 오차 : 같은모양인데 실제보다 늦게 입력되는 것.. 등
: 같은모양인데 값이 일정량 차이나는 것.. 등
-이득 오차
-비선형 오차
-Thermocoupler K-type : 철사두개 용접해서 붙인 것 (직선 아니라 그래프가 꺾여 있거나 휘어져 있음)
: 금속에따라 type 바뀜(온도에 따른 전압)
-차동 비선형 오차
=SNR (Signal to Noise Ratio) : 신호대 잡음비
CCTV - 거리가 멀면 - (신호 작아짐 - 잡음 커짐) - 화면 잘 안나옴 -> 증폭기 설치시 잡음도 같이 커짐
=아날로그는 잡음에 약하다 => 잡음제거 방법
-아날로그 입력 신호선 짧게
:선로주변에 그라운드 => 외부잡음 방지
:선로주변에 홈을 파줌(PCB)
-AVCC에는 디지털 전원 VCC를 LC필터로 안정화시켜 인가
-GROUND Plane(4층기판)
-BYPASS (100nF) - 104(VCC단 가까이 붙여야함) (MAX 232 통신 드라이버에도 사용)
-AD 변환 수행되는 동안 스위칭하지 않는 것
-Idle mode/ ADC Noise Reduction mode에서 A/D 변환 수행하기
-디지털 필터 사용하거나 변환결과를 평균값 처리하기
=PCB
-양면기판 :TOP - BOTTOM
-4층기판(양면기판 + M + 양면기판) : TOP - Vcc + GND Plane - BOTTOM
=
<AVR2560.H>
<LCD.H>
<LCD.C>
<USART.H>
<USAR.C>
<ADC.H>
<ADC.C>
<MAIN.C>
<MAKEFILE>
=결과
<<
=SERIAL 통신 안되는 환경에서 DATA들어오는지 LED연결해서 확인하는 법
=PWM (방향키 UP : LED 밝게 / DOWN : LED 어둡게)
=RTC ( REAL TIME CLOCK) : 시간정보출력
>>
==시험
-온도 및 조도 정보의 ADC 변환 기술 능력 평가
-Character LCD 제어 능력 평가
-시리얼 통신에 대한 처리능력 평가
=필기
-A/D
1. A/D 레지스터
2. 입력버퍼 소비전력 절약
3. 동작설정 / 상태표시
4. 변환오차
5. 잡음제거
6. USART 레지스터
7. UBRR 계산
8.
9.
10.
=실기
-ADC 변환 기술, Character LCD제어, 시리얼통신
Character LCD TIMING 차트보기