FW 심화 과정/[2] STM32심화실습

0718 16진수용량계산 / ROM,RAM / Keil

천숭이 2022. 7. 18. 20:49

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

휘발성 메모리

전역변수 저장됨

https://velog.io/@malrang-malrang/RAM-ROM-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0

# 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파일을 생성한다