묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨ARM Cortex-M 프로세서 프로그래밍
pipeline stall 현상 방지에 관한 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요. 강사님.강의 잘 보고 있습니다.질문이 있습니다.blanch 코드의 경우 pipeline stall이 발생할 수 있다하셨습니다.아래는 예제입니다. cmp r0, r1 bge 1f 만약 이 명령어가 실행된다 가정하면blt 2f1:bx lr2:mov r0,r1...3-stage pipeline일 때 각 단계를 보면 아래처럼 될 것으로 생각이 듭니다.E bge 1fD blt 2fF bx lrExecute 에서 갑자기 분기를 했으니 그 전에 있던 Fetch Decode 값이 의미가 없다?라고 생각하고 버리겠죠. 이게 pipeline stall로 이해하고 있는데it 명령어는 왜 pipeline stall이 없는 명령어인지 이해가 되지 않습니다.다음에 실행될 명령어를 미리 안다? 생각해도 Decode 단계에서 해석을 해야 가능할 것 같은데, 그렇다면 pipeline stall이 발생할 것 같아서요.제가 잘못 이해하고 있는건가요?
-
해결됨ARM Cortex-M 프로세서 프로그래밍
프로그램 다운로드가 안됩니다...
강사님 안녕하세요.질문 있습니다.혹시 강사님께서 실습 보드에 따로 파워를 공급해주나요?USB ST-LINK 단자로만 사용하고 있는데 드라이버 업데이트도 다 되어있고(제거 후 설치까지 해봤습니다.) 펌웨어 업데이트도 다 했는데 자꾸 디버그만 누르면Error in final launch sequence:Failed to start GDB serverFailed to start GDB serverjava.lang.NullPointerException 위와 같은 에러 메세지만 출력되고 디버그가 실행되지 않습니다. 무엇이 문제인지 모르겠습니다. 너무 답답하네요.ST-LINK Utility 프로그램으로 연결해보니 잘되는 것을 보아 전원이나 연결 문제는 아닌 것 같습니다.위 log처럼 디버그 configure를 설정해도 같은 문제가 발생하네요. ㅠㅠ
-
해결됨ARM Cortex-M 프로세서 프로그래밍
thumb2명령어와 thumb명령어가 섞여있을 때 플래시 메모리 읽기 동작
안녕하세요. 강의 잘 보고 있습니다.강의를 보다 질문이 있어서 글 남깁니다...1. 강사님께서 예로 보여주신 플래시 메모리 내용이 아래처럼 되어 있는데요.0x080001d4 ldr0x080001d6 mov0x080001d8 str0x080001da ldr0x080001dc mov...이 메모리 안에는 현재 Thumb명령어만 있다고 가정한 것으로 이해해도 될까요? Thumb2명령어라면 주소가 2가 아니라 4씩 증가해야할 것 같아서요.2.플래시 메모리의 성능 향상을 위해 버스 크기가 128bit라 하셨습니다. thumb명령어의 경우 8번, thumb2 명령어의 경우 4번의 읽기가 가능하다는 것인데, 만약 이 두 명령어가 섞여있다면 어떻게 되는건가요?0x080001d4 ldr0x080001d6 mov.w0x080001da str.w0x080001de ldr.w0x080001e2 mov.w...이렇게 되어 있다면 총 96bit밖에 읽을 수 없는 것인가요? 3.D-Code는 어떤 역할을 하는 것인가요? 코드 영역에 있는 const 데이터 등을 읽어들일 때 사용하는 버스인가요?그렇다면 명령어랑 데이터랑 플래시메모리 버퍼에 같이 저장될 수도 있는 것인가요?
-
해결됨ARM Cortex-M 프로세서 프로그래밍
BOOT 핀을 통해 부팅 모드 변경시 리맵핑이 따로 필요한가요?
강의 잘 보고 있습니다.강의를 듣다가 질문이 생겨서 남깁니다.강의를 보면 SRAM에서 부팅을 하고 싶을 때? SYSCFG_MEMRMP의 MEM_MODE[2:0] 비트로 제어를 한다고 설명하신거 같은데요. (이 경우 MEM_MODE = 2'b001이 되겠죠?)BOOT[1:0] 핀을 하드웨어에서 2'b11로 만들으면 따로 SYSCFG_MEMRMP 레지스터 값 변경없이 자동으로 변경이 되는건가요??추가적으로 System 메모리에 UART로 데이터를 플래시메모리에 다운로드할 수 있는 코드를 삽입하고 유저가 플래시메모리로 부팅할지 아니면 프로그램 다운로드를 할지 선택하는 것을 주로 봐와서 System 메모리로 부팅한다라는 것은 이해가 가는데 SRAM으로 부팅하는 경우가 잘 이해가 되질 않습니다.코드 영역에 있는 데이터를 굳이 SRAM으로 복사를 해서 부팅해야하는 경우가 있나요?