묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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바이트 인가요?
-
미해결ARM Cortex-M 프로세서 프로그래밍
xPSR 레지스터 플래그 값 및 기타 질문 드립니다.
안녕하세요. xPSR 레지스터와 기타 궁금한 부분들 질문 드려봅니다!1. mov r0, #0x7fff fffe or mov r0, #0x8000 00020x7fff fffe, 0x8000 0002는 mov 명령어가 invalid constant라고 오류가 나옵니다.강의에서 0x7fff ffff , 0x8000 0000등은 mov 명령어를 썼는데 그것보다 작은 값이 왜 오류인지 궁금합니다. r0 레지스터에 0x7ffffffe 값이 들어있고 adds r0, #1을 한 경우 xPSR(0x1000 0000)이 나왔습니다. Overflow가 되는 상황이 아닌것 같은데 이유가 궁금합니다. Carry가 일어나면 xPSR의 C플래그가 1이 되는데 Borrow는 어떤 경우인지 궁금합니다.작은값에서 큰 값을 빼는 경우 Borrow가 되는건가요? MSB에서 값을 가져올 때에 발생하나요??( 발생하는 예시 하나만 들어주시면 감사하겠습니다) 어셈블리에서 signed unsigned의 구분은 어떻게 이루어지나요?? 이루어지지 않는다면 c언어 한정으로 컴파일러가 변수 타입을 파악하고 자동으로 바꿔주는건가요? 어셈블리 언어는 Arm cortex m3, m4 모두 동일한 명령어를 사용하나요??좋은 강의 해주셔서 감사합니다. 여기서 어셈블리를 더 잘 쓰기에 필요한 책이나 사이트들 혹은 어떤 데이타시트를 봐야하는지 추천 가능하시면 부탁드립니다 ㅎㅎ 고민해보다가 막혀서 안되는 부분과 궁금한 부분 질문 드려봤는데 답변 부탁 드리겠습니다!감사합니다.
-
미해결ARM Cortex-M 프로세서 프로그래밍
컴퓨터 연결 및 회로도
너무 기초적인 질문인것 같은데요 혹시STM32F429보드와 컴퓨터를 연결하려면 USB어떤걸 사용해야 하나요? 제가 가지고 있는 걸로는 안되는것 같아서요. 직접 구입해야할것같은데 mini 인지 micro 혹은 다른것인지 궁금합니다. 찾아도 잘 안나와서 혹시 이런걸 설명해주는 문서가 있나요? 보드에 연결하는 부분이 2개가 있는데 어디로 연결해야 하나요? 강의 앞부분에 LED회로도가 나오는데 어디문서에 있는 건가요? 직접 공식사이트에서 받아보고 싶습니다.
-
해결됨ARM Cortex-M 프로세서 프로그래밍
유저 mode, xSPR, 어셈블리어 활용, STM32 선정 이유 관련
안녕하세요.강의를 듣는 과정에서 궁금한 사항이 있어서 질문 드립니다.유저 모드 관련특권 모드와 유저 모드가 있는데, 대부분 특권모드에서 동작한다고 알려주셨습니다.인터럽트 핸들러도 특권모드에서 동작을 하고요.유저 모드에서는 특권모드로 이동도 못해서 제약이 상당히 많은 것 같은데,유저 모드는 어떠한 상황에서 사용되는지 궁금합니다.xSPR 관련AR, VR 등을 합쳐서 부르기 위해, XR이라고 부르는 것과 같이xSPR도 ASPR, ESPR 등을 통칭하기 위해 xSPR로 부르는 것인가요?아니면, xSPR은 ASPR, ESPR, ISPR을 모두 합친 프로세서 레지스터라고 봐야 할까요?어셈블리어 활용 관련요즘에는 어셈블리어로 코딩하는 일이 많지 않을 것 같은데,어셈블리어의 지식은 어떤 곳에 활용할 수 있을까요?프로그램에 문제가 생겼을 때 디버깅을 하면서 어셈블리어를 알면 문제 원인을 찾기가 쉬울 것 같은데,혹시 다른 용도로는 어떻게 활용할 수 있는지 궁금합니다.STM32 관련ARM Cortex-M4를 사용하는 MCU를 만드는 제조사는 ST Micronics 외에도 Nordic이나 Microchip등 여러 회사들이 있는 것을 알고 있습니다.그런데, 대부분의 강의를 보면 STM32 Series의 보드를 사용하시더라고요.STM32 Series 보드의 장점이 무엇이기에 대부분 이를 선택하시는지 궁금합니다.또한, STM Cube IDE와 유사하게 nRF Series에서도 segger IDE를 제공하는 것으로 알고있는데, Cube IDE처럼 segger로도 disassemble 등의 기능을 사용할 수 있는지도 궁금합니다.질문 사항이 좀 길어졌네요...강의는 잘 듣고 있습니다!감사합니다.
-
해결됨ARM Cortex-M 프로세서 프로그래밍
S520 실습 시, SCB register가 표시되지 않는 문제
강사님, 안녕하세요.S520 실습 시, __NVIC_SetPriorityGrouping에서 breakpoint를 설정하는 부분에서강의와 같이 SFRs -> All register 에서 SCB register가 아예 존재하지 않았습니다.(SCB resigter가 없어서 내부 저장된 값도 확인할 수 없음)그래서, S520 강의의 후반부도 동일한 문제로 실습을 진행할 수 없었는데 혹시 해결방법이 있을까요?참고로, 이전 인터럽트 강의들은 실습 시 문제가 없었고, pinout 설정이나, NVIC 설정도 Enabled 된 것을 확인하였습니다.감사합니다.