인하대학교 공과대학에서 전자공학 학사 학위를 받았으며 임베디드 시스템용 소프트웨어 개발자로써 수년간의 경력을 쌓았습니다. 임베디드 시스템 및 프로그래밍을 위한 전문 강사로도 활동 중입니다. 아이폰 3GS 등장과 같은 시기에 맥(북)에 입문하였고, 그때부터 맥(북) 자동화에 관심을 갖게 되었습니다. '맥(북)에서 사용할 수 있는 시리 리모트', '키보드마에스트로를 이용한 구글번역기' 같은 오픈 소스를 깃허브(https://github.com/guileschool) 에 두고 개발 및 유지보수하고 있습니다. 오픈 소스 하드웨어 '비글본블랙' 에도 많은 관심을 가지고 있습니다. 맥(북) 자동화를 이용하여 생산성을 높일 수 있는 컴퓨터를 사용하는 모든 분야에 관심을 가지고 있고, 이를 필요로 하는 사람들을 돕고 있습니다.
강의 요청 및 기타 문의사항은 guileschool@gmail.com으로 보내주세요 :)
강의
수강평
- ARM Cortex-M 프로세서 프로그래밍
- ARM Cortex-M 프로세서 프로그래밍
게시글
질문&답변
디버거모드에 진입이 안됩니다.
프로젝트를 선택후 실행해 보시기 바랍니다.
- 0
- 2
- 35
질문&답변
prvExampleTaskHook 함수 호출 부분에 대해 문의드립니다.
안녕하세요, yongdeok1985님!질문하신 후크함수는 일반적으로는 잘 사용되지 않은 함수인데요, 본 강의의 경우 12_LOGICSNIFFS 예제에서 문맥전환 시간을 측정하고자 사용하였습니다.소스코드 인용#include "logicSniff.h" #include void vLogicSniffMultiSetLED5( unsigned int channel, int xValue ); void vLogicSniffMultiSetLED6( unsigned int channel, int xValue ); void vLogicSniffSetLED( unsigned int channel, int xValue ); BaseType_t prvExampleTaskHook( void * pvParameter ) { /* Perform an action. This could be anything. In this example, the hook is used to output debug trace information. pxCurrentTCB is the handle of the currently executing task. (vWriteTrace() is not an API function. It's just used as an example.) */ vLogicSniffMultiSetLED5(LS_CHANNEL_ALL5, 0); // All Leds Clear vLogicSniffMultiSetLED6(LS_CHANNEL_ALL6, 0); // All Leds Clear vLogicSniffSetLED( pxCurrentTCB->uxTCBNumber, 1 ); printf("%d ", (int)pxCurrentTCB->uxTCBNumber); /* This example does not make use of the hook return value so just returns 0 in every case. */ return 0; }prvExampleTaskHook() 함수는 vTaskSetApplicationTaskTag()를 통해 현재 태스크에 hook 함수로 등록되었으며, 이후 해당 태스크에서 xTaskCallApplicationTaskHook(NULL, param)을 호출했을 때 실행됩니다. 즉, 자동으로 호출되지 않으며, 직접 xTaskCallApplicationTaskHook()을 호출해야만 동작합니다.
- 0
- 2
- 45
질문&답변
보드 STM32H735IG와 강의 호환 여부 문의
STUDY COMP! 안녕하세요~~요청하신 STM32H735G-DK 포팅 작업이 완료되어 소스코드를 올려드렸습니다.제가 해당 STM32 보드를 가지고 있지않아 소스코드 생성 작업만 하여 전달드립니다그렇기 때문에 포팅이 잘되었는지 여부는 본인이 직접 확인하셔야 합니다기기에서 테스트 해보시고 문제점이 발견되시면 글 남겨주세요
- 1
- 3
- 57
질문&답변
보드 STM32H735IG와 강의 호환 여부 문의
안녕하세요. 강의 구매 후 이 질문란에 사용하시려는 보드의 포팅을 요청주시면 실습 예제를 해당 보드에서 사용하실 수 있도록 작업해서 전달드립니다.포팅 작업이 완료되었습니다 🙂 . 위 글 참고해주세요.
- 1
- 3
- 57
질문&답변
[ L152RE ] 원샷 소프트타이머 실행 잘 되시나요?
안녕하세요. chul17.choi 님!아래와 같이 'task.c' 코드를 완성하여야 동작합니다.참고바랍니다./* TODO #1:원샷 소프트웨어 타이머(xOneShotTimer)의 구현 */#if 1/* Create the one shot timer, storing the handle to the created timer in xOneShotTimer. */xOneShotTimer = xTimerCreate(/* Text name for the software timer - not used by FreeRTOS. */"OneShot",/* The software timer's period in ticks. */mainONE_SHOT_TIMER_PERIOD,/* Setting uxAutoRealod to pdFALSE creates a one-shot software timer. */pdFALSE,/* This example does not use the timer id. */0,/* The callback function to be used by the software timer being created. */prvOneShotTimerCallback );#endif /* TODO #2:자동 반복 소프트웨어 타이머(xAutoReloadTimer)의 구현 */#if 1/* Create the one shot timer, storing the handle to the created timer in xOneShotTimer. */xAutoReloadTimer = xTimerCreate(/* Text name for the software timer - not used by FreeRTOS. */"AutoReload",/* The software timer's period in ticks. */mainAUTO_RELOAD_TIMER_PERIOD,/* Setting uxAutoRealod to pdFALSE creates a one-shot software timer. */pdTRUE,/* This example does not use the timer id. */0,/* The callback function to be used by the software timer being created. */prvAutoReloadTimerCallback );#endif
- 1
- 2
- 41
질문&답변
Deferred Interrupt Processing 샘플 예제 문의 드립니다.
안녕하세요. chul17.choi 님!이번 질문의 경우는 아래 을 참고하시면 될 것 같네요.아주 잘 설명하고 있습니다. ㅎㅎ
- 1
- 2
- 42
질문&답변
포팅 서비스 부탁드립니다
노승조님이 말씀하신 포팅 자료는 아래 링크에서 다운로드 하실 수 있습니다.https://www.inflearn.com/courses/lecture?courseId=327240&type=LECTURE&unitId=147777혹여 사용하시는 컴파일러 버젼과 이 자료가 호환성 문제가 있을 수 있으니 그때는 아래 글을 참고해주세요.https://www.inflearn.com/community/questions/1230491/caddr-t-undeclared-%EB%AC%B8%EC%A0%9C
- 1
- 2
- 41
질문&답변
RTOS Secure Boot 관련 자료 문의
안녕하세요. 선대님!Secure Boot는 RTOS 환경에서 중요한 보안 요소 중 하나죠. 다만, 저는 실무에서 Secure Boot를 직접 다뤄본 경험이 없어서 깊이 있는 답변을 드리기는 어렵습니다. 하지만 보통 Secure Boot 개념은 RTOS보다는 하드웨어(SoC/MCU)의 보안 부팅 메커니즘과 밀접하게 연관되어 있습니다. 따라서, 사용하시는 하드웨어 제조사의 Secure Boot 가이드나 공식 문서를 먼저 확인해보시면 도움이 될 것 같네요.
- 2
- 1
- 85
질문&답변
lcd 프로그램 수행
안녕하세요, new 개발자님!LCD 프로젝트의 경우 Nucleo-F103RB 보드에서만 컴파일및 동작 여부가 확인되었습니다. 말씀하신 STM32F429ZI-disc1 이나 Nucleo-F429ZI 보드의 경우는 컴파일및 동작 여부가 확인되지 않았음을 알려드리고, 만약 빌드시켜 실행을 해보시겠다고 하면 아래 내용을 참고해주세요.우선 소스파일을 받아주세요.liquidcrystal_i2c.cliquidcrystal_i2c.h이 소스를 기존 LCD 프로젝트 파일내의 SRC 로 넣어주신 후 빌드하시면 됩니다.디버깅은 강의 영상을 참고해서 해보세요.
- 1
- 2
- 69
질문&답변
timebase source를 systick timer로 하신 이유
안녕하세요, 김소명님!제 의견을 정리해서 전달하기 위해 시간이 좀 필요했습니다. 답변드리겠습니다.솔직히 말씀드리면, 제가 이 강의를 준비하면서 이 부분에 대해서 크게 의식하지 않았던 것은 확실합니다.그 이유는 간단합니다. CORTEX-M 의 systick 은 그 이름 속에서 잘 드러나 있듯이 TICK 전용 타이머인것입니다. 그리고, 과거부터 FREERTOS 에서 줄곧 사용해왔던 타이머이기도 합니다. 마이크로씨 오에스에서도 십수년간 사용해오던 타이머 이기도 합니다. 그래서 저는 팝업 경고 메시지에 크게 의미를 두지 않았던 것 같습니다. 그리고, ST 직원이 만들어낸 그 경고 메시지도 그리 아름답지 못합니다(강력히 추천한다니? 어쩌라는 거지? 쓰라는 말인가 말라는 것인가) .이미 오랜동안 낮은 우선순위(15)을 사용해 온 RTOS 틱 인터럽트의 우선순위를 정 반대의 논리인 높은 우선순위(0)로 바꾸려면 보다 강력한 분명한 이유가 있어야 하겠습니다.우선순위가 높아야 한다는 주장출처: https://shpp.freertos.org/FreeRTOS_Support_Forum_Archive/January_2016/freertos_SysTick_interrupt_priority_99f02a87j.html그들의 주장은 이렇습니다. 1초에 1000번 빠른 속도?로 발생하는 타이머 인터럽트가 다른 하드웨어 인터럽트보다 우선순위가 낮을 경우 인터럽트를 놓칠 수 있는 위험으로인해 시간 베이스에 오차가 발생한다. 따라서 우선순위를 높여서 이 문제를 예방할 필요가 있다.하지만,FREERTOS 제작자와 마이크로씨 오에스의 제작자인 리처드베리와 쟝제이 라브로쉐 모두 OS 용 타이머 틱 인터럽트의 우선순위는 오히려 낮아야 한다고 말했습니다. 그런데요 이들의 논리가 더 힘 있어보입니다. 한번 쟝제이의 오래전 글을 함께 보시죠.우선순위가 낮아야 한다는 주장(사진)출처: https://www.iar.com/knowledge/learn/programming/6-misconceptions-about-the-rtos-tick마무리 결론입니다.SysTick 우선순위 설정은 정답이 있는 문제가 아니라, 사용하는 RTOS의 특성과 애플리케이션 요구사항에 따라 다릅니다. 그러므로 두 가지 주장을 참고하되, 자신의 프로젝트와 경험을 바탕으로 판단해야 합니다.RTOS 제작자들의 권고(FreeRTOS, μC/OS 제작자)는 오랜 현장 경험을 바탕으로 하였으므로 이를 신뢰할 수 있습니다. 그러나 ST의 문서를 통해 제안된 방식 역시 특정 응용 사례에 유효할 수 있습니다.
- 1
- 2
- 127