티스토리 뷰
개요
- Arduino 의 메모리와 PROGMEM, F() macro 와의 상관관계를 알아본다.
참고링크
- 아두이노 메모리: http://playground.arduino.cc/Learning/Memory
- PROGMEM and F() macro: https://www.arduino.cc/reference/en/language/variables/utilities/progmem/
- F() macro QnA: https://forum.arduino.cc/index.php?topic=110307.0
아두이노의 메모리
아두이노 보드의 MCU (예를 들어 ATmega168) 에는 세 종류의 메모리가 있다.
1) Flash memory: 프로그램 (=아두이노 스케치)이 저장되는 곳. 아두이노 IDE로 업로드할때 쓰여진다. 무리하게 비유하면 하드디스크
2) SRAM (static random access memory): 실제로 프로그램이 올라가고 변수가 변경되는 곳. 무리하게 비유하면 램
- DRAM (Dynamic Random Access Memory): 전원이 공급되는 동안 주기적으로 내용을 갱신해줘야 한다.
- SDRAM (Synchronous Dynamic Random Access Memory): 동기화된 DRAM. 제어장치 입력과 Clock pulse가 동시에 일어남
- SRAM: DRAM 과 달리 전원이 공급되는 한 내용이 보존된다 = 주기적 갱신 불필요
3) EEPROM: 프로그래머가 쓰고 지울수 있으며, 전원공급이 중단되어도 보존된다.
- 설정값등을 저장해두면 좋겠지?
메모리 각각의 칩셋별 용량은 아래와 같다.
Flash memory > SRAM > EEPROM 의 순서로 용량이 크다. Flash memory 의 용량이 상대적으로 훨씬 크다.
* 참고로 아두이노 우노의 칩셋은 ATMega328 (메모리 용량은 ATMega328P와 동일)
SRAM 은 작고, Flash Memory 는 많이 크다
SRAM
char message[] = "I support the Cape Wind project."; |
라고 코딩한다면, 스케치 업로드시에 Flash Memory 에 저장되고,
실행시에는 SRAM 에 저장된다. 아두이노 우노라면 1.6% 의 SRAM 을 잡아먹는 것이다.
PROGMEM, 그리고 F() macro
SRAM 에 저장하지 않고, 훨씬 용량이 큰 Flash memory에 저장하는 방법이 있다.
1) PROGMEM keyword 를 쓰면 된다.
- 링크: https://www.arduino.cc/reference/en/language/variables/utilities/progmem/
- 자세한 사용법은 생략 (조금 복잡해져서 안 쓸것 같음)
2) F() macro
- 아두이노 IDE 1.0 이후에서는 F() macro 를 쓸 수 있다. (2018-09-28 시점 최신버전은 v1.8.5)
- string 을 SRAM 이 아닌 Flash memory 에 저장한다.
Serial.print(F("I support the Cape Wind project.")); |
'embedded' 카테고리의 다른 글
Atmel Studio, Atmel-ICD - debugWIRE 사용하기 (0) | 2018.12.27 |
---|---|
ScriptCommunicator - Serial packet test (0) | 2018.12.20 |
Arduino - TCP Client로 명령받기 (10) | 2018.09.18 |
Arduino Serial 로 hex 전송하기 (5) | 2018.09.04 |
UART, TTL, RS232, RS422, RS485 간단 구분 (3) | 2018.08.24 |
- Total
- Today
- Yesterday
- github
- 오블완
- 2024년
- folklore
- 체호프
- 클린 애자일
- 티스토리챌린지
- bun
- notion
- 엉클 밥
- Bug
- golang
- 독서후기
- strange
- websocket
- 잡학툰
- intellij
- 2023
- ChatGPT
- agile
- 인텔리제이
- Gin
- 노션
- solid
- go
- 영화
- clean agile
- OpenAI
- API
- 독서
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |