세번째 예제는 똑같이 두 개의 태스크를 실행하는데 우선순위를 다르게 하면 어떻게 되는지를 보여줍니다. 아두이노에 업로드 시켜보며 우선선위가 높은 태스크2만 계속 출력되는 것을 확인할 수 있습니다. 이전 예제들에서는 두 개의 태스크가 모두 우선순위가 같아서 번갈아 문자열이 출력 되었죠. /* FreeRTOS.org includes. */ //#include "FreeRTOS.h" //#include "task.h" #include "FreeRTOS_AVR.h" /* Demo includes. */ #include "basic_io_avr.h" /* Used as a loop counter to create a very crude delay. */ #define mainDELAY_LOOP_COUNT 4000..
두번째 예제에서는 하나의 함수를 구현해놓고 두 개의 태스크에서 같이 사용하는 것을 보여줍니다. 어떤 태스크가 돌고 있는지 구분하기 위해서 파라메터로 문자열을 넘겨주어 태스크가 출력하도록 하고 있습니다. 실행결과는 첫번째 예제와 동일합니다. /* FreeRTOS.org includes. */ //#include "FreeRTOS.h" //#include "task.h" #include "FreeRTOS_AVR.h" /* Demo includes. */ #include "basic_io_avr.h" /* Used as a loop counter to create a very crude delay. */ #define mainDELAY_LOOP_COUNT 400000// ( 0xffffff ) //태스크에서 ..
아래 포스팅으로 설치된 예제코드들을 하나씩 분석해보고 있습니다. 아두이노 코드랑 freeRTOS코드랑 같이 사용하는게 생소하네요. freeRTOS는 각 포팅되는 플랫폼에서 사용되는 함수들하고 같이 사용되어 지는 거 같네요. Arduino Uno에서 freeRTOS 올려보기 http://webnautes.tistory.com/595 첫번째 예제는 두 개의 택스트가 시리얼로 문자열을 출력하는 예제입니다. Task2와 Task1이 번갈아 가며 출력됩니다. /* FreeRTOS.org includes. */ //#include "FreeRTOS.h" //#include "task.h" #include "FreeRTOS_AVR.h" /* Demo includes. */ #include "basic_io_avr.h..
https://github.com/greiman/FreeRTOS-Arduino에서 Download ZIP을 클릭하여 전체 소스를 다운로드 압축을 풀은 후.. 아래 경로에 있는 폴더 세 개를 복사하여 다음 경로에 넣어주었다. 그리고 나서 Arduino IDE를 실행시켜보면 라이브러리가 포함되어 있는 것을 확인해 볼 수 있음. 예제 코드도 추가되어 있음. 쓰레드 2개를 이용하여 LED를 깜빡이게 하는 frBlink예제를 불러와서 업로드 시켜보았다. 그전에 디지털입력 13번에 LED를 연결시켜주어야 함. 잠시 후 LED가 깜빡이기 시작함.
참고 https://istarc.wordpress.com/2014/07/10/stm32f4-deploy-freertos-in-under-10-seconds/ 툴체인 설치 아래 글에 나온 대로 설치하면 됨 stm32f4 discovery보드를 Ubuntu linux에서 시작하기 (http://webnautes.tistory.com/591) 추가로 필요한 패키지 설치 sudo apt-get install build-essential git openocd qemu-system-arm symlinks expect freeRTOS 예제 프로젝트 git clone https://github.com/istarc/stm32.git cd stm32 git submodule update –init 실제로 다운로드 받아보니..
참고 https://launchpadlibrarian.net/192227680/readme.txt https://liviube.wordpress.com/2013/04/22/blink-for-stm32f4-discovery-board-on-linux-with-makefile/ 구입해놓고 먼지가 잔뜩 쌓여있던 cortex 보드를 개봉했다. 그리고 gcc환경에서 컴파일하고 보드로 올리는 방법들을 찾아봤다. ToolChain 설치 $ sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded $ sudo apt-get update $ sudo apt-get install gcc-arm-none-eabi webnautes@virtual-machine:~$ arm-none-e..
참고 http://goo.gl/GF4i3K 기본적인 방법 마스크 배열(=커널)을 이용하여 이미지 상의 픽셀 값들을 다시 계산한다. 현재 위치의 픽셀 값을 포함한 이웃 픽셀들의 값에 가중치를 곱하여 현재 픽셀 값을 결정한다. 이웃 픽셀들 중 어느 값의 영향을 많이 받아 현재 픽셀 값이 결정되지 여부에 따라 에지 검출이 되기도 하고 잡음제거가 되기도 하는 등 여러 가지 효과를 만들 수 있다. 아래 예제로 나온 마스크는 이미지를 선명하게 만듭니다. filter2D 함수 이용 앞에서 기술한 방법보다 코드가 짧아지고 더 빠른 방법이라고 함.
참고 http://goo.gl/Q0It8 지난번에 작성한 OpenCV 튜토리얼 – Mat (기본 이미지 컨테이너) 1/2를 이어서 작성. http://webnautes.tistory.com/584 Mat 객체 생성하는 방법 1.Mat() 생성자 2x2, 8bit, unsigned char, 1 channel 3x3, 8bit, unsigned char, 1 channel 2x2, 8bit, unsigned char, 3 channel 2.C/C++ 배열 과 생성자 이용 1x2, 8bit, unsigned char, 1 channel 2x1, 8bit, unsigned char, 1 channel 2x2, 8bit, unsigned char, 1 channel 3.create()함수 만들고 나서 사용 전에..
참고 http://goo.gl/Q0It8 디지털화된 이미지는 픽셀이라는 부르는 점들이 모여서 형상을 만든다. 아래 이미지처럼 격자상에 있는 이미지 픽셀의 값은 0~255사이의 값으로 가지도록 해서 파일로 저장된다. 그레이 스케일 영상의 경우 0이면 검은색 점이며 255는 흰색 점이고 그 사이 값들은 해당 값을 강도로 가지는 회색 점들이다. 이런 점들이 모여 디지털 이미지를 화면에 표현하게 된다. 이미지 출처: http://goo.gl/Q0It8 C++로 넘어오면서 자동으로 해주기 때문에 메모리 관리를 따로 해줄 필요가 없다니 다행이지만 튜토리얼에 따르면 임베디드에서는 아직 C만 지원한다는 게 문제라고 한다. 예전에 Mat가 아닌 IplImage를 사용했을 때 할당했다가 수동으로 메모리를 해제해주어야 했었..
C++를 공부해보려고 괜찮은 IDE를 찾다가 발견한 건데 아직 정식판이 나온게 아니라서 아래 링크에서 다운로드 주소를 복사해서 http://confluence.jetbrains.com/display/CLION/Early+Access+Program wget을 이용해 다운로드 받고 압축을 풀었습니다. $ wget http://download.jetbrains.com/cpp/clion-140.1221.2.tar.gz $ tar xvzf clion-140.1221.2.tar.gz $ cd clion-140.1221.2/bin/ 실행시켜봤는데 기존에 JETBRAINS에서 접했던 IDE와는 처음 실행 시 뜨는 창이 조금 다르군요. $ ./clion.sh CMake를 이용해서 컴파일하는 게 낯설지만 GDB와 연동해서..