해결된 질문
23.02.08 06:18 작성
·
298
·
수정됨
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
2023. 02. 08. 23:21
안녕하세요, 김상현님!
아래와 같이 답변드립니다.
안녕하세요. 강의 잘 보고 있습니다.
강의를 보다 질문이 있어서 글 남깁니다...
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 버스를 통하여 액세스됩니다.