728x90
반응형
728x90
반응형
FreeRTOS에는 메모리관리 기능이 제공된다!! 아래내용은 최근 FreeRTOS를 심층(?) 분석해 실무에 적용하기 위해 기록을 남긴 내용이다. 다소 부족하고 정리가 안될 수도 있다. 질문, 반박은 언제나 환영이다.메모리 정적/동적 옵션 설정정적(static)으로 메모리 영역을 할당하기 위해서는 configSUPPORT_STATIC_ALLOCATION 옵션을 set 해야 한다.동적(dynamic)으로 메모리 영역을 할당하기 위해서 configSUPPORT_DYNAMIC_ALLOCATION 옵션을 set 해야 한다. 1로 설정하지 않아도 관계 없다.두 가지 옵션을 모두 1로 설정하는 것도 가능하다.메모리 할당(malloc)/해제(Free)malloc() 대신 pvPortMalloc()free() 대신 p..
Free RTOS에는 데이터 타입과 코딩룰이 있다. 정리해보면, 변수명(Variable Names) c - char 형의 변수를 의미 s - int16_t 형의 변수를 의미 i - int32_t 형의 변수를 의미 x - BaseType_t 형의 변수나 구조체, Task handle, queue handles 등을 의미 u - unsigned를 의미 p - 포인터를 의미 변수의 자료형에 따라 접두사를 조합해서 쓴다. 예를 들어 unsinged char 형 이라면 uc, char* 형 이라면 pc와 같은 형태로 접두어를 조합해 사용한다. 함수명(Function Names) v - void 를 반환하는 함수를 의미, 즉 반환값이 없는 함수 x - BaseType_t 형 변수를 반환하는 함수를 의미 pv - v..
4번째 포스팅에서 Task를 만드는 방법에 대해 알아봤고, 5번째 포스팅에서는 Task 상태에 대해 알아봤다.(아래 링크 참고) https://vuzwa.tistory.com/entry/4-Free-RTOS-Task-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0-Multi-Taskwith-STM32L475VGT-B-L475E-IOT01A1 4. Free RTOS - Task 생성하기, Multi Task(with STM32L475VGT, B-L475E-IOT01A1) https://vuzwa.tistory.com/entry/2-Free-RTOS-UART-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0with-STM32L475VGT-B-L475E-IOT01A1 2. F..
https://vuzwa.tistory.com/entry/4-Free-RTOS-Task-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0-Multi-Taskwith-STM32L475VGT-B-L475E-IOT01A1 4. Free RTOS - Task 생성하기, Multi Task(with STM32L475VGT, B-L475E-IOT01A1) https://vuzwa.tistory.com/entry/2-Free-RTOS-UART-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0with-STM32L475VGT-B-L475E-IOT01A1 2. Free RTOS - UART 사용하기(with STM32L475VGT, B-L475E-IOT01A1) 이전 포스팅에서는 RTOS ..
https://vuzwa.tistory.com/entry/2-Free-RTOS-UART-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0with-STM32L475VGT-B-L475E-IOT01A1 2. Free RTOS - UART 사용하기(with STM32L475VGT, B-L475E-IOT01A1) 이전 포스팅에서는 RTOS 프로젝트 생성까지 확인해봤다. https://vuzwa.tistory.com/entry/1-Free-RTOSwith-STM32L475VGT-B-L475E-IOT01A1 1. Free RTOS(with STM32L475VGT, B-L475E-IOT01A1) RTOS를 포스팅해야지.. vuzwa.tistory.com 이전 포스팅에서는 C 표준 함수를 통해 UART ..
CMSIS? ARM 코어를 다루다 보면 자주 보이는 단어다. Common Microcontroller Software Interface Standard의 약자로 "마이크로 컨트롤러에서 공통적으로 사용되는 표준 소프트웨어 인터페이스"정도로 해석할 수 있다. 아래 그림은 ARM 홈페이지에 나와있는 MCU 리스트다. 그럼 CMSIS_RTOS는? FreeRTOS의 API 함수를 호출하는 함수로 구현되어 있다. Project Explorer - Middlewares - Thrid_Party - FreeRTOS - Source - CMSIS_RTOS 위 경로를 확인해보면 cmsis_os.c파일을 확인할 수 있다. 하나만 예를 들어 살펴보면, cmsis_os.c에 선언되어 있는 osKernelStart 함수다. 함수..
이전 포스팅에서는 RTOS 프로젝트 생성까지 확인해봤다. https://vuzwa.tistory.com/entry/1-Free-RTOSwith-STM32L475VGT-B-L475E-IOT01A1 1. Free RTOS(with STM32L475VGT, B-L475E-IOT01A1) RTOS를 포스팅해야지 하고 이론적 배경만 쓰고 잠시 쉬었다. 다시 RTOS를 다뤄야 할 일이 생길 수도 있어서 하나씩 정리해보려고 한다. 우선 RTOS에 대한 이론적 배경은 이전 포스팅을 참고하면 되 vuzwa.tistory.com RTOS에서 왜 갑자기 uart로 넘어가는지는 포스팅을 보면 바로 이해가 될 거다. 펌웨어 개발에서 UART는 필수적이다. 다른 기기와 통신뿐만 아니라 보드의 상태를 확인할 수 있는 log를 출력..
RTOS를 포스팅해야지 하고 이론적 배경만 쓰고 잠시 쉬었다. 다시 RTOS를 다뤄야 할 일이 생길 수도 있어서 하나씩 정리해보려고 한다. 우선 RTOS에 대한 이론적 배경은 이전 포스팅을 참고하면 되고, https://vuzwa.tistory.com/entry/0-FreeRTOS-FreeRTOS%EB%9E%80 0. FreeRTOS - FreeRTOS란? 1. FreeRTOS 란 ? 1.1 RTOS ? 실시간(Real Time) 운영체제(Operating System)의 약자이다. RTOS는 제한된 시간내에 원하는 작업을 모두 처리하는것을 보장하는 운영체제를 뜻한다. RTOS가 들어가는 기기는 거의.. vuzwa.tistory.com 지금부터는 ST의 개발 보드인 B-L475E-IOT01A1으로 Fre..
리눅스 명령어 중 가장 기본이라고 할 수 있는 'ls'명령어에 대해 알아보도록 하겠다. 명령어에 대해 알아보기 위해 터미널에서 'ls --help를 입력하면 아래 그림과같이 명령어에 대한 설명이 나타난다. ls --help ls는 List, Sort의 약어로 볼 수 있다. 명령어 옵션과 사용법에 대해 아주 친절하게(?)설명해 주지만 전부 다 사용할 것이 아니기 때문에 가장 많이쓰이고 중요한것들만 알아보도록 하자. 1. ls 가장 기본적으로 ls를 입력하면 현재 디렉토리의 파일 및 폴더의 리스트를 볼 수 있다. ls 2. ll, ls -l l(L의 소문자)을 연속으로 2개 입력하거나 ls에 옵션으로 -l을 입력하면 파일의 권한, 링크 수, 소유권, 소유그룹, 파일크기, 파일 최종 수정 일시, 파일이름의 정..
후.. 드디어 마지막이다. File system을 다운받아서 설치해보자! 하기전에 잠깐. file system이 뭐냐 ? 1. File system ? 컴퓨터(개발보드)에서 파일을 쉽게 보관 및 조작이 가능하도록 구성된 체제를 말한다. https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC_%EC%8B%9C%EC%8A%A4%ED%85%9C 파일 시스템 - 위키백과, 우리 모두의 백과사전 파일 시스템(file system, 문화어: 파일체계)은 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말이다. 파일 시스템은 통상 하드 디스크나 CD-ROM ko.wikipedia.org 본 포스팅에서 설치할 파일 시스템은 Root File..
BSP구성 요소 중 가장 중요하다 할 수 있는 Linux kernel을 설치해보도록 하겠다. 커널에 대해 다들 한번쯤은 들어봤을거다. 커널? Kernel? 그게 뭔데?? 알아보자. 1. Kernel ? 난 위키백과가 좋으니까. 아래 참고바람. 간단히 설명하면 하드웨어(CPU, Memory, Sensor 등)와 운영체제 위에서 동작하는 Application 프로그램 중간에서 하드웨어를 제어하고 관련 정보를 Application에 제공하거나 Application으로부터 명령을 받아 하드웨어를 제어하는 프로그램이다. https://ko.wikipedia.org/wiki/%EC%BB%A4%EB%84%90_(%EC%BB%B4%ED%93%A8%ED%8C%85) 커널 (컴퓨팅) - 위키백과, 우리 모두의 백과사전 커..
BSP(Board Support Package)는 개발 보드 대한 설명은 아래 링크 참조, 간단히 설명하면 "보드(프로세서 및 주변 회로)를 사용하기 위한 소프트웨어 모음"이다. Bootloader, Kernel, file system로 구성된다. https://ko.wikipedia.org/wiki/BSP_(%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C) BSP (임베디드) - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org 이번 포스팅에서는 Bootloader를 먼저 설치해보도록 하겠다. 1. 부트로더 ? Bootloader 란 HDD, SSD 또는 Flash memory에 있는 커널 및 펌웨어 이미지를 로딩하는 역할을 한다. 시스템의 전원을 켜면 가장 먼저 동작되는..
Host PC에 우분투도 설치했고, 개발 보드(본 포스팅에서는 비글본 블랙)도 구매했으니 이제 개발환경 울 구성해보자. 이전 포스팅에서 설명했듯이 Cross Compiler와 BSP가 있어야 한다. 본 포스팅에서는 Cross Complier를 설치하는 방법에 대해 알아보겠다! Cross Compiler 설치 전 GCC는 반드시 설치되어 있어야 한다. 리눅스에서 사용하는 모든 컴파일러는 GCC를 기본으로 하기 때문에. 1. GCC 1.1 GCC란? GCC란 GNU Compiler Collection의 약자이다. GNU 프로젝트의 일환으로 개발에 활용되는 컴파일러의 모음이다. 처음에는 C언어를 컴파일하기 위해 만들어졌다. 하지만 세월이 흐르면서 다양한 프로그래밍 언어와 프로세서가 나오면서 범용적인 컴파일러로..
임베디드 리눅스 개발을 위해 필요한것이 무엇이고, 어떻게 구하고, 어떤 환경을 구성해야하는지 설명하도록 하겠다. 1.임베디드 리눅스 개발 환경(Embedded linux development environment) 임베디드 리눅스를 개발하기 위해서는 Host PC, 개발보드, 컴파일러, BSP 이렇게 총 4가지가 필요하다. 1.1 Host PC 리눅스가 설치된 PC가 있어야한다. 윈도우 기반에서 가상머신을 이용해 리눅스를 사용해도되고, PC의 기본 OS 리눅스로 설치해도 된다. 리눅스의 종류가 워낙에 많다보니 무엇을 설치하라고 딱 지정해서 말 할 수는 없지만 대세는 Ubuntu 인것 같다.(이건 개인적인 생각) Ubuntu 설치방법은 아래 포스팅을 참고하면 된다. PC에 기본 OS를 설치하는 방법이고 가..
임베디드 리눅스 개발에 대해 알아보고 넘어가자. 개념을 확실히 하고 가는 것이 중요하기 때문에! 1. 리눅스? 1.1 리눅스란? 리눅스는 운영체제의 한 종류로 오픈소스 기반으로 개발되었다. 오픈소스기 때문에 누구나 사용 가능하고 또 누구나 개발하여 배포 가능하다. 우리가 사용하는 스마트폰의 안드로이드도 리눅스 기반의 OS이다. 리눅스는 Ubuntu, CentOS, Embedded Linux 등 다양한 리눅스가 있다. 자세한 설명은 아래 위키백과를 참고하기 바란다. https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4 리눅스 - 위키백과, 우리 모두의 백과사전 리눅스(Linux)개발자리누스 토르발스 (커뮤니티 주체)프로그래밍 언어C, 어셈블리어OS 계열유닉..
1. 포스팅을 시작한 이유 이 포스팅을 왜 시작하게 되었냐면.. 맨날 펌웨어만 하다 보니 회로 보기도 지겹고, 문제가 발생했을 때 회로가 문제인가 소스코드가 문제인가 고민하는 것도 지겹고 뭐 암튼 이래저래 지겨워서 완벽한(?) 하드웨어에서 소프트웨어만 구현하면 되는 오픈 하드웨어! 오픈 소프트웨어 기반을 다뤄보고 싶어서 시작한다. 이런 이유 말고도 사실 리눅스를 잘 다뤄서 몸값을 올리고 싶은 이유도 있다. 리눅스를 손 대려다 보니 무엇부터 시작해야 할지 몰라서 우선 책을 한 권 샀다.(이것도 몇 년 전에 구매) 참고로 이 글을 쓰는 나는 저 책과 그 어떠한 연관도 없는 사람임을 밝힌다. 그냥 사람들이 많이 샀길래 샀다.(책 사는 거 좋아함) http://www.kyobobook.co.kr/product/..
설치까지 완료했으면, 정상적으로 설치되었는지 확인해보자! 아래 그림과 같이 ./ct-ng show-arm-cortex_a8-linux-gnueabi 입력하면 관련 정보가 나타난다. 명령어는 crosstool-ng의 경로로 이동해서 입력해야 한다! 다른 core의 toolchain을 찾고 싶다면, 위 그림의 폴더 중 "samples" 폴더로 이동해 ls 명령을 입력하면 다음과 같이 지원하는 core list가 나올 것이다. 본 포스팅에서는 arm-cortex_a8-linux-gnueabi를 이용할 것이다. 자, 그럼 이제 이걸 가지고. c파일을 빌드하는 과정을 알아보도록 하겠다. 다시 뒤로 돌아가./ct-ng arm-cortex_a8-linux-gnueabi 입력하면 아래 그림과 같이 된다. 여기서./ct..
리눅스 기반의 프로젝트 진행해야 할 일이 있어서 리눅스를 본격적으로(?) 공부하는 중이다. 펌웨어만 죽어라 하다 보니 더 이상 발전도 없고 재미도 없고.. 그래서 리눅스를 해보고 싶다는 갈망이 늘 있었지만 쉽게 시작하지 못했다. 역시 뭐든 일로 시작해야 한다. 리눅스에서 보드에 올릴 파일을 컴파일하기 위해서는 toolchain이라는 것이 필요하다! 다양한 toolchain이 있지만 그중에서 crosstool-ng를 설치하고 사용할 것이다.! 사용할 toolchain은 crosstoo-NG다. 어떻게 설치하나.. 해서 검색해보니 이렇게 하면 된다고 나온다. 그래서 직접 따라 해 봤다! https://gist.github.com/ghawkgu/213c726fc087ec9f2306c9b023a3658a cro..
어느 버전인지 모르겠지만 Ubuntu에서 root 계정으로 로그인하면 소리가 안나오는 경우가 있다. 나만그런가? 아무튼 그래서 찾아보니 .. 이렇게 하면 된다고 한다. 화면 하단에 3x3 아이콘을 눌러서 아래 그림과 같이 시작 프로그램을 실행한다 저는 이미 추가해놔서 있지만 이 글을 보시는 분들은 아래 "audio"가 보이지 않을거에요. 저걸 추가해줘야 합니다.! "추가(A)" 버튼을 눌러서 아래와같이 입력하고 저장하면 위 그림과 같이 될거에요! 재부팅 하면 끝 ! - 끝 -
오늘의 포스팅은 운영체제가 설치되지 않은 PC에 Ubuntu Linux를 설치하는 방법이다! 보통은 윈도우가 설치된 PC에 VMware 등 가상 환경에서 Linux를 사용한다. 단순히 학습을 하고 작은 프로젝트를 수행한다면 문제가 안 되겠지만 규모가 큰 프로젝트에서는 처리속도가 많이 느려 개발에 어려움이 있을 것이다. 우선 리눅스를 설치할 부팅 USB를 준비하는 방법을 알아보자 우분투 홈페이지를 접속해 "Download"를 선택하면 위와 같은 화면이 나타난다. 왼쪽 아래에 보면 TUTORIALS라는 메뉴가 보이고 여기서 "Burn a DVD on Ubuntu, macOS, or Windows. Create a bootable USB stick on Ubuntu, macOS, or Windows" 이와 같..
1. FreeRTOS 란 ? 1.1 RTOS ?실시간(Real Time) 운영체제(Operating System)의 약자이다. RTOS는 제한된 시간내에 원하는 작업을 모두 처리하는것을 보장하는 운영체제를 뜻한다. RTOS가 들어가는 기기는 거의 대부분 임베디드 시스템인데 이런 기기는 보통 일반 PC보다 낮은 하드웨어 성능을 갖는다. "Real Time OS 인데 어떻게 낮은 하드웨어 성능을 갖는 기기에서 동작을 하나?" 라는 물음을 가질 수 있지만, Real Time과 High performance는 다른 개념이다. PC에서 동시에 여러가지 응용 프로그램을 사용하다보면 처리속도가 지연되거나 프로그램실행이 1초 이상 지연되는 경험을 해봤을 것이다. 하지만 RTOS를 사용한 기기는 응용 프로그램을 최대..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.