인프런 커뮤니티 질문&답변

김상현님의 프로필 이미지
김상현

작성한 질문수

ARM Cortex-M 프로세서 프로그래밍

s403_소프트웨어의 논리적인 메모리 구조

메모리 구조 질문 드립니다.

해결된 질문

작성

·

358

1

강사님 안녕하세요. 강의 잘 보고 있습니다.

질문 있습니다.

강의에서 메모리 구조 ROM, RAM mixed structure와 RAM only를 보았는데요.

ROM, RAM mixed structure같은 경우는 NOR flash와 RAM을 사용하는 경우

RAM only는 NAND flash와 RAM을 사용하는 경우라고 이해해도 되나요?

NOR flash같은 경우 랜덤 액세스가 가능해서 플래시메모리에서 실행 가능하지만 NAND flash는 랜덤 액세스가 불가능하여 자체적으로 실행은 못하고, RAM으로 복사해야한다고 알고 있거든요.

추가적으로 만약 그게 아니라면 RAM only는 어떤 경우에 가능한 것인지 궁금합니다.

답변 2

0

김상현님의 프로필 이미지
김상현
질문자

case 2. 소프트웨어 디버거를 사용하는 환경

예전 임베디드 시스템에서 플래시 메모리에 R/W하는 것이 오래 걸려 간단한 프로그램 같은 경우 RAM에 직접 올려 테스트한다고 들었는데, 이 경우에 속하는 것 같네요. 답변 감사합니다.

0

홍영기님의 프로필 이미지
홍영기
지식공유자

안녕하세요. 김상현님!

질문하신 RAM only 모델은 다음과 같이 2가지 상황 정도가 있겠습니다.

case 1. XIP 에서 재배치(relocation)로...

XIP는 "Execute in Place"의 약자이며, 임베디드 시스템에서 프로그램 코드를 저장하는 방식 중 하나입니다.

일반적으로, 컴퓨터에서 실행하는 프로그램은 하드 디스크나 SSD 같은 비휘발성 저장장치에 저장된 후 메모리로 로드되어 실행됩니다. 하지만 임베디드 시스템에서는 메모리 용량이 제한되기 때문에 프로그램 코드를 저장하기 위한 전용 메모리를 사용하기도 합니다. 이 때 XIP를 사용하면 프로그램 코드를 저장하는 전용 메모리와 실행하는 메모리가 별도로 필요하지 않고, 프로그램 코드를 실행하기 위해 저장장치에서 메모리로 옮겨오는 시간을 절약할 수 있습니다. 일반적으로 많이 사용하는 NOR 형 플래시 메모리가 대표적인 XIP 구조입니다.

하지만, XIP 구조를 사용할 지의 여부는 주어진 상황에 따라 판단하는 것이 좋습니다.
NOR-FLASH 메모리는 일반적으로 16비트 메모리를 많이 사용합니다.
만약, 32비트 DDR 메모리를 함께 사용하는 임베디드 시스템이라면 어떨까요? 이 경우는 프로그램을 NOR-FLASH 에서 그대로 실행하는 것보다는, 부팅 중 FLASH 에서 DDR 로 프로그램을 복사해주고 DDR 메모리에서 이후 프로그램을 실행하는 것이 보다 높은 성능을 이끌어 낼수 있어서 좋습니다. 이 작업을 RELOCATION 이라고 부릅니다. 소프트웨어의 논리적인 맵 구조는 이때부터 RAM only 모델에 따릅니다.

case 2. 소프트웨어 디버거를 사용하는 환경

보통의 CORTEX-M 지원 STM32CubeIDE 와 같은 통합 개발 환경에서 디버깅을 하게되면 MCU 내장 플래시에 사용자가 작성한 프로그램을 다운로드하여 테스트하는 것이 일반적입니다.

하지만, 사용자가 원하면 프로그램을 플래시가 아닌 SRAM 에 다운로드하여 실행할 수도 있겠습니다. 이 내용은 이 강의 s708_소프트웨어를 램에서 실행하기 에서 확인하실 수 있습니다. 이 경우도 소프트웨어의 논리적인 맵 구조는 RAM only 모델에 따릅니다.

마무리 ...

김상현님이 언급하신 NAND 플래시를 사용하는 환경도 물론 RAM only 모델 입니다. 이 경우는 case 1 로 분류하면 될 것 같습니다

김상현님의 프로필 이미지
김상현

작성한 질문수

질문하기