4번째 발표를 오전에 마무리하고 오후에는 cortex 를 다루기 위한 이론강의를 진행.
# 선언
컴파일러에게 해당 실체의 타입과 이름을 (단순히) 알려주는 동작
# 정의
실체를 위한 메모리 영역이 확보딤
1KB = 2^10
1MB = 2^20 = 0x100000
1GB = 2^30
1TB = 2^40 = 0x10000000000 (10개)
# 16진수 용량 계산
0쓸때마다 4씩 소거, 4로 소거가 안되면 2^n해서 msb에 붙이기
2K = 2^11K = 0x800
8K = 2^13K = 0x2000
16K = 2^14K = 0x4000
32K = 2^15K = 0x8000
64K = 2^16K = 0x10000
50k = 32k + 16k + 2k
= 0x8000 + 0x4000 + 0x800 = 0xC800
100k = 64k + 32K + 4K
= 0x10000 + 0x8000 + 0x1000 = 0x19000
8M = 0x800000
32M = 3200000
# RAM
휘발성 메모리
전역변수 저장됨
# ROM
비휘발성 메모리
읽기 전용 메모리
이진코드, 상수형 데이터
실습 - 0번지부터 시작하게 설정
부팅될 때는 쓰레기 값이 있지만 초기화 과정과 keil의 __main 프로그램이 끝나면 알맞은 변수의 내용이 들어가있음
- Target 설정창에서 ROM, RAM의 시작 주소를 설정한다
- C/C++ ->asm -> linker
- bin파일이 rom의 초기 내용과 같다 (rom은 0번지부터 시작하기에)
- bin 파일과 Total ROM size(Code + RO Data + RW Data)의 내용은 같다
- map file : rom에 들어있는 내용물은 기계코드 뿐 아니라 데이터도 있는데 ro, rw 데이터가 있다
- zi : zero intialize data 0을 뜻함. 0으로 초기화해야하는 데이터
- 어셈블리어를 통해 나온 오브젝트파일 :
- main.c -> mian.o code, RO, RW
- test.c -> test.o code, RO (RW)
- 링크과정 : code, RO, RW 모두 모아서 BIN파일을 생성한다
'FW 심화 과정 > [2] STM32심화실습' 카테고리의 다른 글
0720 포인터,배열의 동작구조 / 함수포인터 / 구조체 / union ~176 (0) | 2022.07.22 |
---|---|
0720 형식지정자(typedef) / 매크로 ~84 (0) | 2022.07.21 |
0719 스택 / keil메모리값변화 / 포인터 ~64 (0) | 2022.07.19 |
0715 웹 서버 기반 하드웨어 제어 (0) | 2022.07.17 |
0715 인터럽트 / I2C를 이용한 가속도센서 (0) | 2022.07.17 |
[4주차 세미나] 포트포워딩 분석 (0) | 2022.07.16 |