Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

임베디드 소프트웨어

CCMRAM 사용하기

방피터 2023. 3. 22. 22:18

지금 사용하고 있는 stm32f407vg는 sram 192kbytes 있다고 되어 있는데;

빌드해보니 CCMRAM이라는 녀석은 사용을 안하고 있더라고?

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에 1024가 할당되었다!

참고 - 검색해보니 "ccmram" 이나 "CCMRAM" 이런식으로 하라고 글들이 돌아다니던데

최근 stmcubdeide 기준으로 ".ccmram" 이 맞아.

2023년 3월 22일임!

🎉🎉🎉

그런데 문제가 있어!

그게 뭐냐면!

CCMRAM 메모리는 DMA가 동작을 안해!!

stm32f407 버스 구조 CCM램은... D-bus에 direct로 붙어 있다!

DMA 메모리 버스가 internal sram 에만 연결되어 있기 때문이지!

stm32f407 reference manual

사실 ㅋ 아무도 안 읽는 데이터 시트 맨 앞에도 나와 있어.

👇

CCM 메모리는 cpu 코어만 접근이 가능하다고 ㅎㅎ

cpu에서만 직접 접근할 수 있어서 다른 메모리보다 빠르다고는 하는데 음...

I don't think so!

CCM data RAM은 버스 메트릭스에 연결 안되어 있고 CPU를 통해서만 엑세스가 가능하다

그리고 인터넷 찾아보면 ld 파일 변경해서들 많이 하는데;;

그다지 추천하고 싶은 방법이 아니네~~ ld 파일 관리하는 것도 일이니까 말이야!

그러니까 CCMRAM은 DMA를 사용하지 않는 커다란 전역 변수!로만 사용하도록 하자고!

그럼 안녕!

👋👋👋👋

반응형

'임베디드 소프트웨어' 카테고리의 다른 글

STM32CubeMX 와치독 디버그 옵션  (0) 2023.05.26
CMake!!!!!!!!!!  (2) 2022.08.18