• 카테고리

    질문 & 답변
  • 세부 분야

    임베디드 · IoT

  • 해결 여부

    해결됨

thumb2명령어와 thumb명령어가 섞여있을 때 플래시 메모리 읽기 동작

23.02.08 06:18 작성 23.02.08 06:33 수정 조회수 257

1

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

강의를 보다 질문이 있어서 글 남깁니다...

1. 강사님께서 예로 보여주신 플래시 메모리 내용이 아래처럼 되어 있는데요.

0x080001d4 ldr

0x080001d6 mov

0x080001d8 str

0x080001da ldr

0x080001dc mov

...

이 메모리 안에는 현재 Thumb명령어만 있다고 가정한 것으로 이해해도 될까요? Thumb2명령어라면 주소가 2가 아니라 4씩 증가해야할 것 같아서요.

2.플래시 메모리의 성능 향상을 위해 버스 크기가 128bit라 하셨습니다. thumb명령어의 경우 8번, thumb2 명령어의 경우 4번의 읽기가 가능하다는 것인데, 만약 이 두 명령어가 섞여있다면 어떻게 되는건가요?

0x080001d4 ldr

0x080001d6 mov.w

0x080001da str.w

0x080001de ldr.w

0x080001e2 mov.w

...

이렇게 되어 있다면 총 96bit밖에 읽을 수 없는 것인가요?

 

3.D-Code는 어떤 역할을 하는 것인가요? 코드 영역에 있는 const 데이터 등을 읽어들일 때 사용하는 버스인가요?

그렇다면 명령어랑 데이터랑 플래시메모리 버퍼에 같이 저장될 수도 있는 것인가요?

답변 1

답변을 작성해보세요.

1

안녕하세요, 김상현님!

아래와 같이 답변드립니다.

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

강의를 보다 질문이 있어서 글 남깁니다...

1. 강사님께서 예로 보여주신 플래시 메모리 내용이 아래처럼 되어 있는데요.

0x080001d4 ldr

0x080001d6 mov

0x080001d8 str

0x080001da ldr

0x080001dc mov

...

이 메모리 안에는 현재 Thumb명령어만 있다고 가정한 것으로 이해해도 될까요? Thumb2명령어라면 주소가 2가 아니라 4씩 증가해야할 것 같아서요.

[ANS] 네, 예를 든것은 thumb2(32비트) 로 보시면 될 것 같습니다.

2.플래시 메모리의 성능 향상을 위해 버스 크기가 128bit라 하셨습니다. thumb명령어의 경우 8번, thumb2 명령어의 경우 4번의 읽기가 가능하다는 것인데, 만약 이 두 명령어가 섞여있다면 어떻게 되는건가요?

0x080001d4 ldr

0x080001d6 mov.w

0x080001da str.w

0x080001de ldr.w

0x080001e2 mov.w

...

이렇게 되어 있다면 총 96bit밖에 읽을 수 없는 것인가요?

 [ANS]STM32 데이터 북을 기초로 하여 말씀드렸고, 데이터 북에는 이와 관련하여 추가 상세 정보가 제공되지 않는 점 참고바랍니다. 영상에서 말씀드린바와 같이 플래시메모리는 항상 128비트 단위로 처리되고 있는 것으로 추정됩니다.

3.D-Code는 어떤 역할을 하는 것인가요? 코드 영역에 있는 const 데이터 등을 읽어들일 때 사용하는 버스인가요?

그렇다면 명령어랑 데이터랑 플래시메모리 버퍼에 같이 저장될 수도 있는 것인가요?

[ANS]FLASH 메모리내에는 .text(코드) 외에도 .rodata(상수) 도 존재합니다. 또한 SRAM 에는 .data(전역변수), .bss(전역변수), .stack(스택), heap(힙메모리). 이들은 모두 D-CODE 버스를 통하여 액세스됩니다.