지금 사용하고 있는 stm32f407vg는 sram 192kbytes 있다고 되어 있는데;
빌드해보니 CCMRAM이라는 녀석은 사용을 안하고 있더라고?
이건 집에서 만든 예제라 사용량이 여유가 있지만
내가 하고 있는 실제 프로젝트에서 RAM 사용량이 90퍼센트가 넘어가다보니
CCMRAM 사용을 안할 수가 없더라고 ㅎㅎㅎ
램 사용량 빨간거 보면 참 ㅋㅋㅋ
생각이 많아지지 ㅋㅋ
저 영역을 사용하는 건 간단해. 👇
__attribute__((section(".ccmram"))) uint8_t buffer[1024];
앞에다가
__attribute__((section(".ccmram")))
이라고 선언만 해주면 됨!
그런데 귀찮으니까 메크로 고고!
#define CCMRAM __attribute__((section(".ccmram")))
CCMRAM uint8_t buffer[1024];
이렇게 하고 빌드를 하면 CCMRAM 영역에 1024 바이트가 할당된 걸 확인할 수 있지!👇👇
참고 - 검색해보니 "ccmram" 이나 "CCMRAM" 이런식으로 하라고 글들이 돌아다니던데
최근 stmcubdeide 기준으로 ".ccmram" 이 맞아.
2023년 3월 22일임!
🎉🎉🎉
그런데 문제가 있어!
그게 뭐냐면!
CCMRAM 메모리는 DMA가 동작을 안해!!
DMA 메모리 버스가 internal sram 에만 연결되어 있기 때문이지!
사실 ㅋ 아무도 안 읽는 데이터 시트 맨 앞에도 나와 있어.
👇
CCM 메모리는 cpu 코어만 접근이 가능하다고 ㅎㅎ
cpu에서만 직접 접근할 수 있어서 다른 메모리보다 빠르다고는 하는데 음...
I don't think so!
그리고 인터넷 찾아보면 ld 파일 변경해서들 많이 하는데;;
그다지 추천하고 싶은 방법이 아니네~~ ld 파일 관리하는 것도 일이니까 말이야!
그러니까 CCMRAM은 DMA를 사용하지 않는 커다란 전역 변수!로만 사용하도록 하자고!
그럼 안녕!
👋👋👋👋
'임베디드 소프트웨어' 카테고리의 다른 글
STM32CubeMX 와치독 디버그 옵션 (0) | 2023.05.26 |
---|---|
CMake!!!!!!!!!! (2) | 2022.08.18 |