묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결ARM Cortex-M 프로세서 프로그래밍
no-stlink
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. MAC M1에서 수강중이고이전에 어떻게어떻게 해서 잘 실습까지 진행했습니다.이번에 다시 강의를 들으려고 cube ide에서 디버깅을 눌러보니no-stlink detected! 가 나오네요..이유가 뭘까요??할 수 있는 방법은 전부 해본 상태입니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
4개의 CPU 사이클이 필요한 이유
안녕하세요 질문이 있어 글 남깁니다.플레시메모리 읽기 작업은 한번에 128비트를 읽을 수 있다로 이해했는데 왜 순차코드의 경우 명령줄을 실행하려면 적어도 4개의 CPU사이클이 필요한지 잘 모르겠습니다. 첫번째 클럭에 128비트를 한번에 다 읽을 수 있는건가요? 아니면 128비트를 읽는데 4사이클로 나눠서 읽는다는 건가요?(1사이클에 32비트씩) 이 128비트를 읽는게 'FETCH' 랑은 다른건가요? CPU4개의 사이클 동안 플레시메모리 버퍼가 채워진다고 하셨는데, 한번에 128비트를 읽을 수 있다고 했는데 이 한번이 한 사이클이 아닌건가요? 앞서 하버드 구조로 순차적으로 한 클럭에 동시에 F, D, E가 수행될 수 있음은 이해했습니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
MAC으로 진행 질문드려요..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. MAC으로 진행하고 있는데,혹시 ST-link server를 따로 다운받아야할까요???아니면 그냥 이 영상에 있는 설명대로만 하면 되는지요???맥 터미널을 시리얼 출력으로 사용하는 코드는 이미 ./zshrc에 넣어놓은 상태입니다.MAC용 실습환경 구성 영사도 찍어주시면 좋을 것 같아요!요즘 MAC사용비율도 상당히 높아져서요
-
미해결ARM Cortex-M 프로세서 프로그래밍
학습 진행 시, 사용하는 Board에 대한 문의 드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님! 이번에 ARM Cortex-M 강의를 수강하고자 합니다.수업에 들어가기에 앞서 한가지 궁금한 점이 있어 문의 드립니다.제가 현재 가지고 있는 STM32 보드는, STM32F769I - Discovery Board 인데,선생님께서 강의해서 사용하시는 보드는 STM32F429I-DISCOVERY Board와 종류가 다른데,혹시 수업 진도를 따라가는데 큰 제약이 있을까 해서 여쭤봅니다.제가 가지고 있는 769I Board로 그대로 진행해도 괜찮을까요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
push pop 질문
안녕하세요 강사님 강의 듣다가 궁금한 점이 있습니다.push {lr}bl F11POP {pc} 이렇게 동작할 때, lr값을 스택에 저장을 하고 나면 sp가 하나 증가하지 않나요? pop {pc}를 하면 스택메모리에서 현재 스택포인터가 가리키고 있는 아무것도 없는 쪽을 읽어서 pc에 저장해야되는게 아닌가요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
STM32Fx Cortex ARM 프로그래밍 저자:홍봉조, 출판사:지식과 감성
이책을 사용해도 도움이 되나요???
-
미해결ARM Cortex-M 프로세서 프로그래밍
CORTEX_02_ASSEMBLY 빌드시 에러
CORTEX_02_ASSEMBLY 빌드시 에러가 발생하여찾아보고 있는데 도무지 모르겠네요...ㅠㅠ도와주셔요.... 콘솔 에러 표시c:\st\stm32cubeide_1.9.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: ./Core/Src/sysmem.o: in function `_sbrk':C:/Users/gons/Desktop/CubeIDE_Workspace/00_CORTEX_02_ASSEMBLY_f429/Debug/../Core/Src/sysmem.c:54: multiple definition of `_sbrk'; ./Core/Src/syscalls.o:C:/Users/gons/Desktop/CubeIDE_Workspace/00_CORTEX_02_ASSEMBLY_f429/Debug/../Core/Src/syscalls.c:118: first defined herec:\st\stm32cubeide_1.9.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: ./startup/startup_stm32f429xx.o:(.isr_vector+0x0): multiple definition of `g_pfnVectors'; ./Core/Startup/startup_stm32f429zitx.o:(.isr_vector+0x0): first defined herec:\st\stm32cubeide_1.9.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127\tools\arm-none-eabi\bin\ld.exe: ./startup/startup_stm32f429xx.o: in function `Default_Handler':C:/Users/gons/Desktop/CubeIDE_Workspace/00_CORTEX_02_ASSEMBLY_f429/Debug/../startup/startup_stm32f429xx.s:114: multiple definition of `Default_Handler'; ./Core/Startup/startup_stm32f429zitx.o:C:/Users/gons/Desktop/CubeIDE_Workspace/00_CORTEX_02_ASSEMBLY_f429/Debug/../Core/Startup/startup_stm32f429zitx.s:114: first defined here
-
미해결ARM Cortex-M 프로세서 프로그래밍
외부 ST Link 연결 이용한 SWD 방법
안녕하세요. 실습환경 구축에서 사용하는 project인 00_CORTEX_12_PRINTF_F429에서는 uart (virtual COM) 기반으로 동작하여 PC에서 printf 메세지를 출력하는 것으로 보입니다. 이것을 외부 ST Link Debugger를 이용하여 stm32cube ide의 SWV를 통하여 printf 메세지를 볼 수 있도록 설정할 수 있을까요?.ioc 파일 수정하고, source code에 아래 함수를 넣고, cube ide에서 debug configuration을 수정하면 될 것으로 예상 하였으나 실패하였습니다.외부 ST Link 연결로 SWV이용하여 printf 출력을 볼 수 있는 설정법을 알려주시면 감사하겠습니다. 참고: https://mokhwasomssi.tistory.com/203int _write(int file, char *ptr, int len) { for(int i = 0; i < len; i++) { ITM_SendChar(*ptr++); } return len; }
-
해결됨ARM Cortex-M 프로세서 프로그래밍
파이프라인과 명령어
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님, 안녕하세요! 아래의 내용은 강사님께서 다른 분의 질문에 답변 해주신 부분인데 이해가 안되서 질문 남깁니다.(1)번을 처리하고 난 후, (2)(3)번을 한번에 페치하여 처리할 것을 짐작할 수 있겠죠. 그렇기에 (2)번 라인을 실행할 때는 페치를 건너뛸 것(쉬고 간다는 뜻)을 예상할 수 있을 겁니다.(1)thumb2 명령어(32비트 명령어)(2)thumb 명령어(16비트 명령어)(3)thumb 명령어(16비트 명령어)(4)thumb2 명령어(32비트 명령어)cortex-m4에서 명령어 fetch 단위가 32bit인가요?파이프라인 구조에서 1 clock마다 메모리에서 32bit를 fetch 하는 게 맞나요?2-1. 이때 16bit thumb2 명령어 2개라면 각각의 명령어가 decode → execute가 진행되는건가요?위 답변에서 (1)번 라인을 실행(즉, (2)번 라인을 decode))할 때 페치를 건너 뛰는게 아닌가요?답변 부탁드립니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
명령어 fetch
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 안녕하세요? 위의 질문과 유사하지만 더 명확하게 하고 싶어 질문 남깁니다. 강의에서 CORTEX-M 시리즈는 명령어를 항상 32bit 단위로 fetch. 여기서 1)명령어가 Thumb-2 32bit이면 명령어 1개가 실행. 2)명령어가 Thumb or Thumb-2 16bit 명령이면 명령어 2개가 동시에(순차적으로) 실행. 제가 이해한게 맞을까요?3)32bit 단위로 fetch하니깐 PC 레지스터의 값은 항상 4씩 증가하나요? 감사합니다.
-
해결됨ARM Cortex-M 프로세서 프로그래밍
lr 레지스터 LSB 값
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 꼼꼼한 강의에 항상 감사드립니다!강의 중에 lr 레지스터에 저장된 값의 LSB가 1이면 Thumb 명령어라고 하셨는데 Thumb2 명령어는 따로 구분하는게 있나요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
Disassembly 창 문제
Debug를 하고 처음 Disassembly 창을 열면 정상적으로 코드들이 보이지만 여기서 추가로 Debug나 Terminate And Relaunch를 하게 되면 아래 그림과 같이 No debug context라고 뜨면서 코드들이 보이지 않습니다. 이를 해결하는 방법이 있을까요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
s702 강좌에서 사용한 technical reference manual 문서
GPIOG 의 레지스터 주소를 알기 위해서 Technical Reference Manual 문서 : RM0090 문서를 사용하셨는데 해당 문서는 STM32F429 뿐만 아니라 STM32F407에도 사용가능한가요? 감사합니다 현정호 드림
-
미해결ARM Cortex-M 프로세서 프로그래밍
s702에 원자적 Access 를 위한 BSRR 코드작성 부분에 대해서
LED 점등을 위해 if 문 작성을 한 부분에 문의사항이 있습니다. if 문 조건을 보면 ODR 레지스터의 값을 조회하고서 BSRR 레지스터에 값을 입력하는 것으로 LED 점등을 하는데요 (GPIOG_13번) BSRR 레지스터에 값을 기록하면 ODR 레지스터에 값을 기록할 때와 다르게 바로 값만 입력하게 되어서 코드 블럭이 생기지 않는다고 하였는데 작성한 코드 전체에서 BSRR 에 값을 Write 하도록 작성되어있지만 if문 조건에서는 ODR 레지스터의 값을 Read 하는 동작이 섞여있어서 여전히 ODR 레지스터를 Read 하는 과정이 도중 중지되지 않을까 합니다?? 그런일이 안발생되는 BSRR 레지스터 Write 동작이 독립적/개별적으로 이루어진다고 말씀하신다면 확신할 수 있게 Disassembly를 통해 직접 확인하는 것을 영상추가해주실 순 없나요? 관련내용 사진 첨부드립니다.
-
해결됨ARM Cortex-M 프로세서 프로그래밍
s202 LED 점등 예제 실행시 에러
안녕하세요 iar 사용자 현정호입니다. STM32CUBE IDE는 처음 사용하는데 s202 강의처럼 New Project를 실행하려니 아래의 에러메시지가 나옵니다. software package를 받으려면 어떤 경로로 해서 Cube ide를 설치해야 하나요? st.com에서 제공하는 cube ide를 설치했는데도 저런 메세지가 나온 거면 버젼을 다른 것을 받아서 나오는 메세지 인가요?
-
해결됨ARM Cortex-M 프로세서 프로그래밍
STM32F429I-DISC 보드의 펌웨어
안녕하세요 강의를 보면서 따라서 실습해보려고 디버깅 보드를 구매했습니다. 그런데 STM32F429I-DISC 디버깅 보드를 컴퓨터와 연결하니 펌웨어가 하나 뜨더라고요. 배송해주기 전에 펌웨어를 서비스로 넣어준거 같은데 강의실습을 하면서 펌웨어를 동작시키다보면 다운로드 받은 펌웨어가 지워지지 않을까요? 그리고 펌웨어의 경로를 찾아봤는데 이 HEX 파일이 맞는지요?https://www.st.com/en/evaluation-tools/32f429idiscovery.html#tools-software HEX 파일은 Cube ide에서 디버깅 보드에 다운로드 탑재가 가능한가요? 저는 iar 사용자라서 ST-LINK 소프트웨어로 다운로드 탑재를 했었는데요.. 그리고 ST-LINK 디버깅 핀을 별도로 낼 수 있습니까?
-
해결됨ARM Cortex-M 프로세서 프로그래밍
제공되지 않은 강의교재
2강에서 제공 실습 파일 중에 마지막 펌웨어가 제공되지 않았습니다.하드웨어 폴트 실습을 위한 펌웨어로 보이는데04_BOOT_01_HARDFAULT_f429 라는 폴더입니다.이 파일이 MY_STM32Programming-student에 들어있지 않았습니다.나중에 제공되는 파일인지요? 감사합니다현정호 드림
-
미해결ARM Cortex-M 프로세서 프로그래밍
s524 테일체이닝 강의 질문
안녕하세요! s524 테일체이닝 강의를 보면서 궁금한 점이 생겨 질문 드립니다!강의에 보면 systick ISR에 delay함수와, 버튼 인터럽 ISR에 printf(".")을 쓰지 않으면 테일 체이닝을 관측하기 어렵다 하셨는데, 제가 생각하기에는 delay함수는 테일체이닝 관측에 영향을 끼치지 않고 선점현상 관측에만 영향을 끼칠 것 같습니다.systick ISR의 런타임이 짧아도 버튼 ISR 런타임 동안에만 발생하면 pend되기 때문에 버튼 ISR이후에 테일체이닝 된다고 생각하는데 제 생각이 틀린걸까요??제가 이해 못한 것이 있는지 다시 한번 설명 부탁 드립니다ㅠㅠ 그리고 인터럽의 priority 선정은 어떤 기준으로 하는 것이지도 궁금합니다!! 이전 강의들을 보면 systick priority를 15와 같이 낮은 우선순위를 할당해 주시던데 이유가 있을까요?
-
해결됨ARM Cortex-M 프로세서 프로그래밍
부트코드와 부트로더의 차이점
안녕하세요 이 강의를 정말 유용하게 듣고 있는 학생입니다!이 강의 소개란에 보면 부트코드와 부트로더는 다르다는 식으로 적혀있던데 부트코드와 부트로더의 차이점이 무엇인지 궁금합니다!제가 알기론 부트코드는 main sp를 sp 레지스터에 저장하고 reset handler를 통해 .bss영역을 0으로 초기화 후 main으로 분기로 알고 있는데 부트로더는 어떤 개념인지 잘 모르겠습니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
메모리 맵 질문
메모리 맵 자체는 data width가 1바이트인데, 0xE000ED00의가 가리키는 값은 왜 4바이트 인가요?