묻고 답해요
145만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
(해결)업그레이드 질문
안녕하세요, st link를 교환받은 학생입니다. st link와 연결하여 위의 프로그램을 통해 업그레이드 진행은 성공적으로 되었습니다.이후 st link와 보드를 연결하고 ide내부에서 업그레이드를 진행(HAL_INIT();디버깅 오류가 나서 업데이트 창이 뜸)하였으나위와 같은 오류가 떴습니다.보드에도 따로 usb케이블을 연결하여 전원을 공급하여 업그레이드를 진행하였으나 2번의 오류가 다시 발생합니다.** st link와 보드를 연결시 보드에 불이 들어오지 않습니다.이후 보드에 휴대폰 충전 어댑터를 이용해 전원을 공급하면 일시적으로 빨간불이 들어오나 이내 곧 다시 꺼집니다.더 진행해봐야 할 사항이 있을까요? 해결하였습니다.고속 충전용 휴대폰 어댑터를 사용해서 보드에 전원이 바로 꺼지는 것인가 싶습니다.낮은 출력의 어댑터를 이용하여 보드에 전원 공급시 빨간불이 지속적으로 들어와있는 상태였고3.IDE에서 기존 설정해둔 폴더와 파일을 삭제 후 다시 처음부터 프로젝트를 만들었습니다. 더불어 경로상에 한글이 없도록 지정해두었습니다. 위 3가지를 모두 적용하였더니 정상적으로 HAL_Init()에서 걸렸습니다. 이것이... 임베디드의 길인가요,, 추가질문 - 보드에 별도 전원을 연결하지 않을시 보드에 LED가 들어오지 않는다면 실습하는 동안은 계속 보조 전원을 통해 전원을 공급해야하나요?
-
미해결[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
온도계 모듈 관련 문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.현재 Ds18b20_Init(); 을 할 경우에 제대로 값을 불러오지 못하고 있습니다. 혹시나 제가 다른 옵션을 건드렸을까 새로 프로젝트를 생성해서 확인해도 값을 불러오지를 못하네요오늘 점심 쯤에 정상 작동하는 것을 확인했었는데, 갑자기 작동이 안되어 당혹스럽습니다... 온도계 모듈만 따로 구할 수 있을까요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
stlink연결
안녕하세요, stlink연결이 안되어 질문드립니다.stlink만 동봉된 케이블로 노트북과 연결하였습니다. com이라 쓰여진 부분에 빨간 부분이 깜빡깜빡하고 윈도우에서는 장치인식 실패라고 뜹니다.장치관리자에서도 인식을 하지 못합니다. 어떻게 해야하나요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
영상속 ppt
영상속에서 나오는 ppt는 어디에 있나요? 11분 30초 경에 나오는 사이트 접속하고 싶은데 강의자료에는 ppt가 없어요
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
온도센서 제어 중 타이머 설정
안녕하세요, 온도센서 라이브러리 포팅하는 부분의 강의를 듣고있습니다. 강사님께서 타이머 설정을 할 때 처음에는 8MHz가 기준인 타이머로 설정을 하시다가 최종적으로는 타이머를 72MHz로 변경하신 후 이것을 기준으로 사용하셨는데꼭 해당 방식으로 변경한 후에 진행을 해야할까요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
main.c가 뜨지 않아요
강의에 따로 설명이 없어요. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
부품 구입 문의입니다.
섹션 28의 2번째 강의에서 GPIO역할을 하는 부품이 없습니다. 따로 구입하고 싶은데 부품명을 알 수 있을까요?감사합니다.
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
섹션 5의 GPIO 간단 제어해보기.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.D2 LED를 켜고 끄는 코드를 작성했는데 전혀 깜빡이지가 않습니다.강의 내용에서 말씀하신 UserLabel을 GPIO_LED로 설정했는데, 헤더파일이 프로젝트에 들어가지 않아서 깜빡이지 않는걸까요? 헤더파일에 내가 라벨붙인걸 확인할 수 있다고 하셨는데 헤더파일이 어디에 있는지도 잘 모르겠습니다..
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
ST LINK 연결
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 다른 질문글에서 답변주신대로 다른 유틸리티 이용해서 펌웨어 업데이트와 USB로 보드에도 충전하고 장치관리자에서 ST LINK 연결된 것도 다 확인했는데 아래와 같이 떠서요..! 보드와 ST LINK연결도 다른 질문글에서 본 사진 그대로 잘 끼웠는데도 그러네요.. STM IDE버전을 최신버전으로 했을 땐 다른 오류가 나서 16버전으로 설치했어요 그리고 ST LINK내에서 펌웨어 업데이트 하라해서 하면 맨 아래사진과요
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
프로젝트 생성시 오류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 아래 사진과 같이 오류가 나서 회원가입하고 이 오류가 떴을때 로그인을 하면,이젠 아래와 같은 오류가 떠서요 ! 펌웨어 업데이트도 하고 아래와 같이 check connection이라는 옵션도 설정해서 다시 프로그램을 껐다가 켜봐도 계속 안되어서 여쭤봅니다..! 다른 프로젝트 생성하면 또 위의 사진처럼 다시 오류가 떠요
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
current 매크로를 이용할때 sp_el0 를 활용하는 이유
안녕하세요. 좋은강의 감사합니다.설명해주신대로 코드를 보면 sp_el0 를 이용해서 current 주소를 얻어온다는것을 이해할 수 있었습니다. 그런데 문득 sp_el1 도 있을텐데 왜 sp_el0 를 활용한건지 궁금합니다. sp_el0 는 user process 들이 활용하는 sp 이고 sp_el1 은 kernel process 들이 활용하는 sp 로 알고 있는데 요,그런용도가 아니라 그냥 sp_el0 를 모든 process 의 task_struct 의 시작주소를 저장하는 용도로 활용하는걸까요? <arch/arm64/include/asm/current.h>15 static __always_inline struct task_struct *get_current(void) 16 { 17 unsigned long sp_el0; 18 19 asm ("mrs %0, sp_el0" : "=r" (sp_el0)); 20 21 return (struct task_struct *)sp_el0; 22 } <arch/arm64/kernel/entry.S>829 SYM_FUNC_START(cpu_switch_to) 830 mov x10, #THREAD_CPU_CONTEXT 831 add x8, x0, x10 832 mov x9, sp 833 stp x19, x20, [x8], #16 // store callee-saved registers 834 stp x21, x22, [x8], #16 835 stp x23, x24, [x8], #16 836 stp x25, x26, [x8], #16 837 stp x27, x28, [x8], #16 838 stp x29, x9, [x8], #16 839 str lr, [x8] 840 add x8, x1, x10 841 ldp x19, x20, [x8], #16 // restore callee-saved registers 842 ldp x21, x22, [x8], #16 843 ldp x23, x24, [x8], #16 844 ldp x25, x26, [x8], #16 845 ldp x27, x28, [x8], #16 846 ldp x29, x9, [x8], #16 847 ldr lr, [x8] 848 mov sp, x9 849 msr sp_el0, x1 850 ptrauth_keys_install_kernel x1, x8, x9, x10 851 scs_save x0 852 scs_load_current 853 ret 854 SYM_FUNC_END(cpu_switch_to) 855 NOKPROBE(cpu_switch_to)
-
해결됨한국에서 제일 쉬운 리눅스 커널 강의
context switching 을 할때 수행되는 asm 코드 관련 문의 드립니다.
안녕하세요. 강의 잘 보고 있습니다.어리석은 질문일수도 있습니다만 문득 든 생각이라 여쭤봅니다. X0 ~ X18 은 저장 및 복원 하지 않고,X19~X29, SP, LR 만 복원하는 이유가 있을까요? 829 SYM_FUNC_START(cpu_switch_to) 830 mov x10, #THREAD_CPU_CONTEXT 831 add x8, x0, x10 832 mov x9, sp 833 stp x19, x20, [x8], #16 // store callee-saved registers 834 stp x21, x22, [x8], #16 835 stp x23, x24, [x8], #16 836 stp x25, x26, [x8], #16 837 stp x27, x28, [x8], #16 838 stp x29, x9, [x8], #16 839 str lr, [x8] 840 add x8, x1, x10 841 ldp x19, x20, [x8], #16 // restore callee-saved registers 842 ldp x21, x22, [x8], #16 843 ldp x23, x24, [x8], #16 844 ldp x25, x26, [x8], #16 845 ldp x27, x28, [x8], #16 846 ldp x29, x9, [x8], #16 847 ldr lr, [x8] 848 mov sp, x9 849 msr sp_el0, x1 850 ptrauth_keys_install_kernel x1, x8, x9, x10 851 scs_save x0 852 scs_load_current 853 ret 854 SYM_FUNC_END(cpu_switch_to) 855 NOKPROBE(cpu_switch_to)
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
ST-Link 연결
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 수강생인데 처음에 따라하다가 다시 처음부터 해보려고 하는데 st-Link update 진행 시 Error 발생이 지속적으로 됩니다. 연결이 계속 되었던 상태인데 왜그럴까요? 끄고 디버그 진행 시 Host 응답이 안되어서 디버그도 Error 발생 합니다. 해결방법좀 부탁드립니다.
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
ds18b20 의 address 내부 값
안녕하세요 강의를 보고 온도센서를 사용하기 위해라이브러리 포팅 후 해당 코드를 작성하였습니다. 그런데 구조체 내부의 데이터가 0에서 변화하지 않습니다. 문제를 해결하기 위해 확인해야할게 어떤것이 있을까요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
"UART로 printf()를 구현해보자! 4" 강의에서 문제 발생.
강의 - 섹션16 - "UART로 printf()를 구현해보자! 4" 강의를 따라하던 도중 문제가 발생하여 질문을 올려봅니다.이게 사실 지금은 무시해야 할 문제이긴 한데, 해결하는 걸 워낙에 좋아해서... 그래서 신경쓰지 말고 지금은 무시하라고 답해주셔도 됩니다! 혹여 봐주신다면 알고 계신 문제인지, 문제 해결 과정에 오류가 있는지 봐주시면 감사합니다!해결 과정에서 적은 노트는 아래에 적었습니다.Xshell에 "i = 1"이, 코드 업로드 후 최초 1회 더 출력되는 문제가 있다. 원인을 찾아보자.->printf() 함수에 내부적으로 사용되는 _write() 함수가, "syscalls.c" 소스파일에 weak symbol로 정의가 되어 있어서, _write() 함수를 "main.c" 파일에서 retarget하여 printf() 함수를 강의대로 Xshell에 출력하도록 했다.int _write(int file, char *ptr, int len) { HAL_UART_Transmit(&huart1, (const uint8_t*)ptr, len, 10); return len; }결과i = 1 // user가 설정한 딜레이와 관계없이, 다음의 "i = 1"과 대략 1초 정도의 간격 i = 1 // user가 설정한 HAL_Delay(100), 이후로 동일한 100ms 딜레이 i = 2 i = 3 i = 4 ... "main.c" 코드만으로 보았을 때, 분명 'i'는 1이 증가하여 출력되었으므로, 문제는 printf() 함수에 있음이 분명하다.->write() 함수를 통해 원인을 찾고자, write() 함수가 최초 1회는 무시하도록 코드를 다음과 같이 수정한다.bool ignoreFirstWrite = true; int _write(int file, char *ptr, int len) { if (ignoreFirstWrite) { ignoreFirstWrite = false; } else { HAL_UART_Transmit(&huart1, (const uint8_t*)ptr, len, 10); } return len; }결과i = 1 // user가 설정한 HAL_Delay(100), 이후로 동일한 100ms 딜레이 i = 2 i = 3 i = 4 ...!!! _write() 함수가 최초 1회 더 실행되는 것을 확인했다.int _write(int file, char *ptr, int len) { HAL_UART_Transmit(&huart1, (const uint8_t*)ptr, len, 10); return len; }위의 _write() 함수로 하여 두 가지의 테스트를 추가로 진행해본다.->1.'i' 초기값만 바꿔서 코드를 업로드한다.2.코드 업로드가 아니라, debug로 실행해본다. (최초 HAL_Init() 함수에서 걸리고, 곧바로 breakpoint 없이 resume한다.)->!!! 최초 1회 출력 문제가 사라졌다. 1.'i' 초기값을 변경하여 업로드한다.int i = 10;결과i = 1 i = 11 i = 12 i = 13 i = 14 ...다시 'i' 초기값을 변경하여 업로드한다.int i = 0;결과i = 11 i = 1 i = 2 i = 3 i = 4 ...!!! 이전에 업로드할 때 _write() 함수로 처음 출력한 문자열이, 다음 업로드 때 출력된다.정리1._write() 함수가 최초 1회 더 실행된다.2.디버그 환경에서는 문제가 발생하지 않는다.->전혀 모르겠다.->[수정]: float로 테스트 후부터는, 디버그 환경에서도 정수/실수 모두 동일하게 문제가 발생한다.3.이전에 업로드할 때 _write() 함수로 처음 출력한 문자열이, 다음 업로드 때 출력된다.->마지막에 출력한, 혹은 출력 대기중인 문자열도 아니고, 왜 이전 업로드 때 처음 출력한 문자열일까?->원인이 어디인지 찾아보자.board, FT232, Xshell 혹은 그 사이 어디서 문제인지 찾으려 했으나, 애초에 _write() 함수가 1회 더 실행되는 것이 확실하니,->?????"stdio.h" 구조로 접근해야 하나?아니, 코드는 새롭게 업로드하는 거고,이전의 정보가 'board'에 남아있다는 건데,printf() 함수가, 이전 업로드할 때 최초로 출력했던 문자열을 어떻게 가지고 있을 수 있지?아니면 PA9 USART1 transmitter에 buffer가?어떻게 접근해야 하지?->전혀 모르겠다. 포기. 끝. 무시하고 강의 진행하자.
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
FND 제어 시 2자리수 제어가 잘 안됩니다.
강의 대로 위와 같이 코드를 작성하였습니다.LOW -> HIGH에서 HIGH->LOW로 바꾸고 output level도 바꿔가면서 해봤습니다.디버깅 시 강의에서는 1부터 빠르게 숫자가 바뀌는데제 코드로 디버깅해보니 위사진과 같은 상태로 멈춰있고 숫자가 바뀌지 않습니다. 혹시 몰라서 뒤의 내용인 4자리수 제어를 진행해봤는데 4자리수는 정상적으로 올라갑니다.두자리수만 잘 안되는건 뭐가 문제인지 궁금합니다.
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
OneWire_WriteBit와 OneWire_ReadBit함수에 대해 궁금한 점이 있습니다.
if (bit){/* Set line low */ONEWIRE_LOW(OneWireStruct);ONEWIRE_OUTPUT(OneWireStruct);ONEWIRE_DELAY(10); /* Bit high */ONEWIRE_INPUT(OneWireStruct); /* Wait for 55 us and release the line */ONEWIRE_DELAY(55);ONEWIRE_INPUT(OneWireStruct);} 위는 OneWire_WriteBit의 한 부분으로 이 부분에서 LOW로 만들어서 output모드로 만든 다음에 10us만큼 딜레이를 줘서 input 모드로 만들어서 버스를 high로 만드는 것이라고 이해했습니다. 그런데 이 이후에 딜레이를 55us 만큼 준 다음에 다시 input 모드로 만드는 이유는 무엇인가요?inline uint8_t OneWire_ReadBit(OneWire_t* OneWireStruct){uint8_t bit = 0; /* Line low */ONEWIRE_LOW(OneWireStruct);ONEWIRE_OUTPUT(OneWireStruct);ONEWIRE_DELAY(2); /* Release line */ONEWIRE_INPUT(OneWireStruct);ONEWIRE_DELAY(10); /* Read line value */if (HAL_GPIO_ReadPin(OneWireStruct->GPIOx, OneWireStruct->GPIO_Pin)) {/* Bit is HIGH */bit = 1;} /* Wait 50us to complete 60us period */ONEWIRE_DELAY(50); /* Return bit value */return bit;}그리고 OneWire_ReadBit에서 input모드로 바꾸는 것이 버스를 high로 만든다는 것을 주석으로 짐작한거라서 정확히 바꾼 이유를 잘 모르겠습니다. input모드가 디폴트 모드인건가요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
UART 통신 실습 중 궁금한 점이 있습니다.
Pinout & Configuration 을 통해 핀설정을 하고 실습을 진행하고 있습니다.USART 2 또는 USART 3로 설정했을 때는, 정상적으로 터미널을 통해 결과가 넘어오는 것을 확인했습니다.하지만, USART 1으로 설정하고 통신할 경우 터미널에서 데이터가 넘어오지 않습니다. USART 2와 USART 3 APB1 클럭을 사용하고,USART 1 은 APB2 클럭을 사용하기 때문에 클럭 또한 맞춰 주었습니다.핀 위치도 몇번이나 확인했지만, 원인을 모르겠어요...제대로 된 신호가 넘어가는지는 확인하지 못했습니다 ㅜ(오실로스코프가 배달중입니다 ㅎ..) 현 이슈 원인에 대한 선생님의 직관이나 조언을 얻을 수 있을까요? === 2024-12-22 추가 작성 ====remap 기능을 사용하여 PinA9 대신 PinB6을 사용하니 정상적으로 데이터가 전송되는 것을 터미널에서 확인했습니다. 혹시나 해서 확인해봤는데, PinA9가 죽어있었네요.다른 모든 핀도 살펴봤는데 PinB14도 죽어있었구요. (GPIO로 LED 키는 방식으로 테스트 했습니다.) SW를 작성하기 전에, 하드웨어 동작 여부부터 확인해야 한다는 교훈을 얻어갑니다... 죽은 핀을 다시 살릴 수 있는 방법이 있나요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
FND 제어
안녕하세요 FND 제어 코드를 작성해 LED가 켜지는지 확인중에 있습니다. 다른 문의 글을 보니 74HC595D 칩으로 이루어진 모듈을 사용하면 SCLK을 기본 low로 설정해야한다는 것을 확인했습니다.해당 내용을 통해서 SCLK과 RCLK을 모두 low로 설정하고 아래와 같이 코드를 구성하였는데도 동작하지 않아 문의드립니다. 제 코드가 잘못되었거나 추가 조치방법이 있나요?
-
해결됨[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.
안녕하세요. 제 노트북이 st-link 드라이버를 인식을 못하는것 같습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 자주 묻는 질문에 혹시 답이 있을 수 있어요.- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.제 노트북이 lenovo e15 인데 usb 허브를 연결한다음 st link와 보드를 usb 허브에 연결하면장치관리자에서 인식을 못합니다 ㅠ 자꾸 장치연결 실패라고 하네요. 드라이버까지 설치햇는데 왜그런지 잘모르겟습니다.이상하게 제 pc에서는 잘됩니다... ㅠ 혹시 원격으로도 도움을 받을수있을까요?