임베디드 시스템 arm board (+ Raspberry Pi 4)
NUCLEO-F401RE (NUF401RE$AU1)
- cubeMX("configurator")와 uVision("IDE")
SoC : st32F401Re ======= SoC (chip)
ARM Cortex - M4 ======== Processor
core M

iROM --- ROM의 비중이 점점 작아지고, RAM으로 역할 이동.
iRAM --- core의 속도가 가장 빠르다.
RAM과 ROM에서 메모리를 사용하려면, 주소값의 차이 이해 해야 함. cf. startup.o (링커가 자동으로 가져옴)
: main 함수에 들어오기 전에 먼저 해줘야 함.

a.o와 a.out의 차이를 RAM과 ROM에 초기화 되는 변수로 이해
BSS의 정보와 DATA 정보의 차이 <-> startup 코드가 함.
일컬어서 ZI(Zero Initialization).
stack pointer (SP)가 가리킨다. 이것의 초기화도 startup 코드가 함. processor, NVIC, SoC <---> 아키텍처 공부.
(Stack Pointer)
main 이전의 전역변수 != main 안의 전역변수 != 지역변수.
cf. scope rule과 linkage 개념.
안에서는 밖을 본다. vs 밖에서는 안을 못 본다. (block)
ex) 모든 지역변수는 스택에 잡힌다? : X. (auto 변수는 O)
static으로 선언 된다면? DATA or BSS 영역.
DATA영역에 들어가있는 CONST 영역 체크!
(.rodata 영역)
.rodata 영역: 데이터 영역은 .bss, .data, .rodata 세 영역으로 나뉘는데, const 변수는 보통 .rodata(read-only data) 영역에 저장됩니다.
CPU vs MCU, SoC vs MPU.
(Buffer의 내용 추가.) MCU는 "Dedicated Function" 수행.
ALU FPU
ex) 아두이노 ATMega328 --- MCU.
Address, Data, Control ------ Bus. (Internal vs External)
Volatile ---- DRAM, SRAM
"Flash memory" :: NOR Type, NAND Type.
메모리 맵 (Memory Map) : CPU가 시스템의 다양한 하드웨어 구성 요소에 접근하기 위해 사용하는 주소 공간. CPU의 컨텍스트 스위칭(Context Switching) 및 리셋(Reset) 시점에 따라 동적으로 변경. 
ROM과 RAM에 존재하는 /CS(Chip Select) - 메모리 맵에서 신호 전송.
Locality (지역성) 의 개념 --- 메모리 위치 재사용의 경향.
-> 캐시 메모리, 가상 메모리 관리에서 중요(최적화)
1. 시간적(Temporal) 지역성 : 한 번 참조된 메모리 위치가 가까운 미래에 다시 참조될 가능성이 높다는 특성...(루프/변수/스택)
2. 공간적(Spacial) 지역성 : 현재 참조된 메모리 위치와 가까운 주소에 있는 데이터나 명령어가 곧 참조될 가능성이 높다는 특성...(배열/명령어/구조체)
Pipe Line
3,5,7-8-12
SRAM vs DRAM (cf. 삼성전자, 트랜지스터 효율, matlab)


- MPU vs MMU
Cache Memory

.TEXT
.CONST
.DATA
.BSS