FreeRTOS 특징먼저 RTOS에 대해서는 이전 포스팅을 참고하자. FreeRTOS는 오픈소스로, 누구나 무료로 사용 및 수정할 수 있고 많은 반도체 제조사와 마이크로 컨트롤러 플랫폼에서 FreeRTOS를 공식적으로 제공한다. 또 커뮤니티가 활발하고 다양한 상용 지원 옵션이 있어 개발이 용이하고 오랜 기간 사용되어 안정성과 신뢰성을 제공한다. 공식 웹 사이트 FreeRTOS™ - FreeRTOS™ freertos.org 네이밍 규칙FreeRTOS에서는 특정 네이밍 규칙을 사용한다. ccharsint16_t (short)iint32_t (int)xBaseType_tuunsignedppointer먼저 변수는 타입에 따라 접두어를 위와 같이 설정한다. vvoidxBaseType_tpvvoid*prvpriv..
전체 글
푸더기의 다사다난한 블로그입니다RTOS?RealTime Operation System, 애플리케이션의 수행 마감 시간을 정할 수 있는 운영체제이다. 운영체제론 시간에 다루는 Soft Realtime - Hard Realtime 과 같은 개념이 내재되어 있는 OS인 것이다. 주로 임베디드에 쓰이는 OS인 만큼, Scalability하다. 즉, 사용자가 원하는 기능을 추가하거나 제거하여 크기를 조절할 수 있다. 또한 Preemptive - 선점(우선순위가 높은 task가 리소스를 가져감)을 허용하고, Multitasking이 가능하며, Robustness, 즉 견고하다. 왜 써야 하는가범용 PC OS를 사용하는 범용 컴퓨터, 예를 들어 Windows를 사용하는 데스크탑에서는 보통의 경우 0.1초만에 끝낼 수 있는 프로세스가 다른 프로세..
SW 개발자가 왜 알아야 하는가?가장 중요한 이유로는 아무래도 기판을 만지는 직종이고, 컴퓨터 옆에 널부러져 있는 기판엔 전기가 흐르며, 만약 DC가 아닌 고압의 AC 전류가 흐르는 환경에서 전기를 잘 모른다면 좀 빨리 가버릴 수도 있다. (AC220V, 즉 311V짜리 전압이 초당 120번 극성이 바뀐다. 이에 감전되면 근육이 수축된 상태로 경직되어 움직이지 못하는데, 궁금하면 콘센트에 젓가락 꽂...진 말자) DC라 하더라도 역전류나 쇼트가 발생하면 기판은 물론 연결된 컴퓨터까지 태워먹을 수 있다. 물론 여기에 감전돼도 꽤 많이 아프다. 또한 당연하게도 회로도를 보며 여러 단자를 연결해야 하는데, 기초적인 전기 상식이 없으면 이도 쉽지 않다. 전기 기초 상식전압두 점 사이의 전위차를 의미한다. 이는 ..
임베디드 SW란?임베디드 SW는 특정 하드웨어 시스템 내에서 실행되도록 설계된 소프트웨어이다. 다시 말해, 하드웨어가 특정 기능을 수행하거나 특정 장치를 제어하도록 한다. 범용 컴퓨터와 달리 제한된 리소스 내에서 한정된 기능을 효율적으로 수행하는데 최적화되어 있다. 제품군으로는 가전 제품, 자동차, 의료기기, 통신기기 등에 적용되며, 형태로는 펌웨어, 디바이스 드라이버, 미들웨어, (특정 하드웨어에 종속되는) 애플리케이션 소프트웨어, 부트로더, 네트워크 스택, 실시간 제어 소프트웨어 등 굉장히 많은 분야가 임베디드 SW에 속해있다. 필요한 하드웨어 지식임베디드 SW에 관심을 가지는 하드웨어 전공자도 많겠지만, 소프트웨어 전공자도 꽤나 많을 것이다. (실제로, 임베디드 SW 직종의 70%는 소프트웨어 ..
Syntactic Sugar구문 설탕은 언어의 표현력을 증가시키진 않지만 프로그램을 더 읽고 쓰기 편하게 만들어준다. 예를 들어, let x = E1 in E2도 사실 설탕에 속하는데, 여기서 설탕을 빼면 (proc x E2) E1이 된다.let x = 1 in let y = 2 in x + y위와 같은 구문이, => (proc (x) (let y = 2 in x + y)) 1=> (proc (x) ((proc (y) (x + y)) 2)) 1설탕이 빠지면 이렇게 난잡해진다. 즉 우리가 사용한 기존 문법에서,let x = E1 in E2 ⇒ (proc (x) E2) E1 로 설탕을 쳐낼 수 있고letrec f(x) = E1 in E2 ⇒ let f = proc (x) (E1) in E2 으로 설탕..
Let-Polymorphic Type Checking Algorithmlet 다형성을 지원하는 타입 체크 알고리즘은 재계산을 피하고 효율적으로 타입 체크를 수행하기 위해 더 정교한 알고리즘을 사용한다. 1. Γ라는 타입 환경에서 표현식 e1을 찾기 위해 일반적인 타입 체크 알고리즘을 사용한다. (U(V(Γ, e1, t)))2. 타입 일반화: 타입 t에서 남아있는 변수를 일반화해서 type scheme, ∀α1 ... α_n.t 을 구한다. 이들은 t에서 나타나는 타입 변수들이다.3. 바인드된 변수 x에 대해 타입 스킴을 기록하도록 타입 환경을 확장하고, e2에 대해 타입 체크를 시작한다.4. x의 각 발생마다 새로운 타입 변수 β1 ... β_n을 생성하고 이를 사용하여 타입 스킴을 인스턴스화 한다. 위..
자동 타입 추론 문제자동 타입 추론은 주어진 프로그램 E에 대해 가장 일반적인 타입을 추론하는 문제이다. E가 타입을 가질 수 있는 경우 이를 결정하는 타입을 찾아내고, 그렇지 않은 경우에는 타입을 가질 수 없음을 표시한다. 자동 타입 추론은 정적 분석(static analysis) 알고리즘으로, 표현식의 사용 방식을 관찰하여 타입을 추론한다. 이 알고리즘은 정확(sound)하고 완전(complete)하다. 즉, 분석이 표현식에 대해 타입을 찾는다면 그 표현식은 잘 타입된 것이고, 표현식이 타입 시스템에 따라 타입을 가지면 분석은 그 타입을 반드시 찾아낸다. 이 알고리즘은 아래 두 단계로 구성된다. 1. 프로그램 텍스트에서 타입 방정식 생성2. 방정식 풀이 타입 방정식은 각 서브 표현식과 변수에 대해 타..
Motivation현재까지, 문법과 의미를 엄밀하게 정의하고 정식 설계를 반영한 인터프리터를 구현함으로써 Program → Interpreter → Result 구조의 언어를 설계하였다.그러나 현재 시스템에는 안전하지 않은 프로그램을 실행하려 시도하여 런타임 에러가 발생할 수 있다. (C++, Python, JS 등의 언어가 그렇다) 따라서 프로그램의 안전성을 분석하고 모든 버그를 정적으로 탐지하는 자동화된 기술을 만들어야 한다.Program → Analyzer → Interpreter → Result Static Analyzer는 정적, 그리고 자동으로 소프트웨어 버그를 감지한다.static: 실행 전에 프로그램 텍스트를 분석한다.automatic: Static Analyzer로 sw를 분석한다. 이는..