본문 바로가기

분류 전체보기

(42)
Suspending and Resuming task /* USER CODE BEGIN 0 */ TaskHandle_t Led_GateKeeperHandle = NULL; TaskHandle_t myTask2Handle = NULL; void Led_GateKeeper(void *pvParameters) { int count = (int*) pvParameters; //TickType_t xDelay = 500 / portTICK_PERIOD_MS; TickType_t xDelay = pdMS_TO_TICKS(1000); TickType_t myLastUnblock; myLastUnblock = xTaskGetTickCount(); for(;;) { HAL_GPIO_WritePin(GPIOD, LD4_Pin|LD3_Pin|LD5_Pin|LD6_Pin, GP..
Create Task & Delete Task , Delay 먼저 CubeMX를 이용해서 STM32F4 Discovery 보드 환경설정을 해준다. https://www.youtube.com/watch?v=CsMUmFLNTok&list=LLnJ3dJnBdwC2gZZdKionReg&index=4&t=169s 다음의 영상을 보면 FreeRTOS 코드를 다운로드해서 따로 설정하지 않아도 MiddleWare로 바로 FreeRTOS를 껴넣을 수있다. 최근에는 FreeRTOS CMSIS_V2 도 사용 할 수 있게 되었는데 더 좋은 성능을 내는 것 같다. 하지만 교육영상에서는 V1을 사용했으므로 V1으로 설정해주자. Create Task /* Private user code ---------------------------------------------------------*..
FreeRTOS Setup Target : STM32F407VGxx (Cortex-M4 Discovery Board) IDE : atollic TrueStudio 9.2 https://youtu.be/7efj3bJbGbk 다음의 영상을 보고 FreeRTOS setup을 따라해봤다. 좋은 점은 완전히 새로운 사용자에게 어떤 파일이 필요한지, 어떤 파일만 Build 할 것인지 대략적으로 알려준다는 것이다. 그러나 계속해서 linker 오류가 났는데 이유는 짐작하기에 FreeRTOSConfig.h 파일을 영상제작자는 따로 준비하여 왔는데 나는 그렇지 않았기 때문 인 것 같다. (본인은 FreeRTOS 폴더에 있는 Demo 파일중 Cortex-M4 아무거나 긁어왔음) 그래서 찾은게 https://www.youtube.com/watch?v..
IoT 시대, 차세대 RTOS를 주목해야할 이유 클라우드 기술의 융합, 급격한 데이터 증가와 커넥티드 기기 발달과 함께 사물인터넷(Internet of Things: IoT)이 새로운 기회를 창출할 것이라는 사실에는 의심의 여지가 없다. 여러 시스템이 연결된 복합 시스템(System-of-Systems)은 데이터에 대한 새로운 통찰을 가능하게 하고 새로운 서비스를 발굴하며 생산성과 효율성을 향상시키는 것은 물론, 실시간 의사 결정 역량을 강화해 중요한 문제를 해결하며, 새롭고 혁신적인 사용자 경험을 개발하는 등 비즈니스 가치를 실현하는 핵심 토대가 되고 있다. 사물인터넷은 수십 억 개의 지능형 디바이스와 시스템들로 구성된다. 여기에서 ‘사물’의 대부분이 바로 임베디드 시스템이다. 임베디드시스템 상당수는 실시간 임베디드 운영체제(Real-Time Ope..
Cortex-M에서의 HardFault 디버깅 Embedded Vol.184 - Technical Report [테크월드=정환용 기자] 하드폴트(HardFault)란 일반적인 예외 처리 메커니즘으로 처리할 수 없는 모든 경우의 결함을 말한다. 일반적으로 하드폴트는 복구할 수 없는 시스템 오류다. 하드폴트는 다양한 원인에 의해 발생할 수 있고, 하드폴트 오류가 발생한 경우 명확한 원인 분석과 문제 해결이 쉽지 않다. 이렇게 다양한 하드폴트 오류를 살펴보고 IAR 임베디드 워크벤치(Embedded Workbench)를 활용해 하드폴트 오류를 수정할 수 있는 방법을 알아보자. 예제 1. CPU 오버클럭 코어텍스 M3(Cortex-M3) 코어 보드를 매우 빠른 주파수의 클럭으로 설정한 경우 하드폴트가 발생할 수 있다. 이런 경우에는 특정 코드위치가 아닌 무..
Linux Ubuntu Grub 복구 방법 윈도우 설치나 리눅스가 설치 되어있는 상태에서 다른 하드에 설치하다가 Grub이 날라가는 경우가 있다. 그래서 본인은 리눅스를 다시 깐 적도 많았는데 그럴 필요 없이 Grub 복구만 해주면 된다. 일단 LinuxLive 부팅 USB로 부팅한다. (or 리눅스 설치 CD) Ctrl + Alt + T 를 눌러 터미널을 연다. $ sudo add-apt-repository ppa:yannubuntu/boot-repair $ sudo apt-get update $ sudo apt-get install -y boot-repair $ sudo boot-repair 이 때 인터넷이 연결되어있어야 진행되므로 주의한다. boot-repair 프로그램이 아래 그림과 같이 실행될 것이다. Recommended repair ..
직선 차선 검출 하기 import cv2 import numpy as np import matplotlib.pyplot as plt def canny(image): gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) blur = cv2.GaussianBlur(gray, (5,5), 0) canny = cv2.Canny(blur, 50, 150) return canny def display_lines(image, lines): line_image = np.zeros_like(image) if lines is not None: for line in lines: #print(line) x1, y1, x2, y2 = line.reshape(4) cv2.line(line_image, (x1, y1), ..
pseudo inverse Math: line fitting 만약 서로 다른 2개의 (x,y) 쌍을 가지고 있다면 아래와 같은 직선의 방정식을 계산해낼 수 있습니다. 이를 아래와 같은 매트릭스 형태로 표현할 수도 있습니다. 그런데 (x,y) 값을 2 쌍보다 더 많이 알고 있다면, 해가 구해낼 수 없게됩니다. 이를 over constraint 라고 하며, over constraint 상태에서 가장 에러가 작은 직선의 방정식을 구해내는 것을 line fitting 이라고 부릅니다. line fitting 을 하는 방법은 크게 2가지 방법이 있습니다. 첫번째는 에러를 최소화 하는 계수 a, b 를 찾기 위해 편미분을 이용하는 것이고, 두번째로는 pseudo inverse 를 이용하는 방법입니다. line fitting with diff..