KR100799599B1 - 기억 관리 장치가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 시스템 및 방법 - Google Patents

기억 관리 장치가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 시스템 및 방법 Download PDF

Info

Publication number
KR100799599B1
KR100799599B1 KR1020060039906A KR20060039906A KR100799599B1 KR 100799599 B1 KR100799599 B1 KR 100799599B1 KR 1020060039906 A KR1020060039906 A KR 1020060039906A KR 20060039906 A KR20060039906 A KR 20060039906A KR 100799599 B1 KR100799599 B1 KR 100799599B1
Authority
KR
South Korea
Prior art keywords
code
kernel
area
application
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
KR1020060039906A
Other languages
English (en)
Other versions
KR20070107426A (ko
Inventor
차호정
김효승
Original Assignee
연세대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 연세대학교 산학협력단 filed Critical 연세대학교 산학협력단
Priority to KR1020060039906A priority Critical patent/KR100799599B1/ko
Publication of KR20070107426A publication Critical patent/KR20070107426A/ko
Application granted granted Critical
Publication of KR100799599B1 publication Critical patent/KR100799599B1/ko
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 커널과 응용이 논리적으로 분리되어 있고 정적 및 동적 코드 검사를 수행하는 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법에 관한 것이다.
이를 위해, 본 발명은 코드 영역, 데이터 영역 및 하드웨어로 포함하는 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템에 있어서, 상기 코드 영역과 데이터 영역은 커널의 듀얼 모드 수행에 의하여 사용자 영역과 커널 영역으로 나누어지고, 상기 코드 영역의 사용자 영역은 응용을 포함하고 상기 코드 영역의 커널 영역은 응용 오류 관리 모듈을 포함하여 구성되며, 상기 데이터 영역의 사용자 영역은 사용자 데이터와 다른 사용자 데이터를 포함하고 상기 데이터 영역의 커널 영역은 커널 데이터를 포함하여 구성되는 것을 특징으로 한다.
기억 관리 장치, 마이크로 컨트롤러, 임베디드, 커널, 멀티 스레드, 정적 코드 검사, 동적 코드 검사, 특권 모드, 듀얼 모드

Description

기억 관리 장치가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 시스템 및 방법{Resilient Operating System and Method for MMU-less Embedded Systems}
도 1은 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템의 구성도이다.
도 2는 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 방법의 순서도이다.
도 3은 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법의 응용 빌드 순서도이다.
도 4는 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 방법에서의 응용 동적 코드 검사 및 정적 코드 검사가 필요한 명령어들이다.
도 5는 TI MSP430 하드웨어에서의 동적 검사 코드의 실시예이다.
도 6은 TI MSP430 하드웨어에서의 정적 검사 코드의 실시예이다.
도 7과 도 8은 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법의 효용성을 평가하는 실험 결과이다.
<도면의 주요 부분에 대한 부호의 설명>
110 : 코드 영역 120 : 데이터 영역
111 : 사용자 영역 121: 사용자 영역
112 : 커널 영역 122 : 커널 영역
113 : 응용 123 : 사용자 데이터
114 : 응용 오류 관리 모듈 124 : 다른 사용자 데이터
125 : 커널 데이터 150 : 하드웨어
본 발명은 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법에 관한 것으로서, 더욱 상세하게는 커널과 응용이 논리적으로 분리되어 있고 정적 및 동적 코드 검사를 수행하는 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법에 관한 것이다.
일반적으로 마이크로 컨트롤러(Micro Controller)는 기억 관리 장치(Memory Management Unit, MMU)를 구비하여 복수의 프로그램에서 공통적으로 사용되는 기억 영역의 사용 상황을 관리하고 각 사용자 프로그램으로부터의 요구에 따라 기억 할당을 수행한다.
그러나 저비용, 저전력 등의 이유로 기억 관리 장치가 없는 마이크로 컨트롤 러의 임베디드(embedded) 하드웨어의 사용이 증가하고 있으며, 특히 무선 센서 네트워크 분야에서 이러한 경향이 두드러진다.
그러나 마이크로 컨트롤러의 임베디드 하드웨어에서 기억 관리 장치가 존재하지 아니하므로 단일 선형 주소공간에서 특권 모드의 구동이 불가능한 환경의 발생하는 응용(application)의 오류는 커널(kernel)의 정상적인 수행을 방해한다. 여기서 응용은 응용 프로그램을 의미한다.
특히, 무선 센서 네트워크 분야와 같이 하드웨어를 외부 환경에 배치한 뒤 원격으로 관리하는 시스템에서는 더 심각한 문제가 있다. 응용의 오류 발생시 오류가 발생하였다는 사실을 인식하지 아니하고 계속하여 부정확한 데이터를 수집할 수 있으며, 노드가 수행 불능 상태에 이르게 되는 것이다.
이렇게 배포된 하드웨어가 수행 불능 상태에 빠지는 경우 이를 원격으로 복구하거나 새로운 응용을 탑재하는 것이 불가능하므로 전체 노드를 직접 수거하여 제거해야 하는 어려움이 있다.
결국 TI MSP430이나 AVR ATmega 등과 같은 마이크로 컨트롤러의 임베디드 하드웨어가 기억 관리 장치를 구비하지 아니하여 단일 선형 공간을 가짐으로써 응용의 오류가 발생하여 커널의 정상적인 수행을 방해하는 문제가 발생하는 것이다.
또한 상기 마이크로 컨트롤러의 임베디드 하드웨어에서 특권 모드가 존재하지 아니하여 응용이 자신에게 할당된 공간 외부 훼손이나 실행, 하드웨어 직접 제어하는 문제가 발생한다.
따라서, 본 발명은 상기와 같은 문제점을 해결하기 위하여 발명한 것으로서, 본 발명은 커널이 듀얼 모드를 수행하여 단일 선형 주소 공간을 커널과 응용의 수행 공간으로 논리적으로 분리하는 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법을 제공하는데 목적이 있다.
또한 본 발명은 정적 코드 검사와 동적 코드 검사를 수행하여 신뢰성 있는 코드를 제공하는 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법을 제공하는데 목적이 있다.
또한 본 발명은 시스템에 적재된 각 응용이 자신의 주소 공간에 데이터를 기록하는 것은 허용되나, 응용 빌드 시 발견되지 않은 다른 응용 및 커널의 메모리 영역 침범이나 코드 실행, 하드웨어 직접 제어와 같은 응용 오류는 커널에 보고하는 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법을 제공하는데 목적이 있다.
이하, 첨부한 도면을 참조하여 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법을 상세히 설명하면 다음과 같다.
상기한 목적을 달성하기 위한 본 발명은 코드 영역, 데이터 영역 및 하드웨어로 포함하는 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템에 있어서, 상기 코드 영역과 데이터 영역은 커널의 듀얼 모드 수행에 의하여 사용자 영역과 커널 영역으로 나누어지고, 상기 코드 영역의 사용자 영역은 응용을 포함하고 상기 코드 영역의 커널 영역은 응용 오류 관리 모듈을 포함하여 구성되며, 상기 데이터 영역의 사용자 영역은 사용자 데이터와 다른 사용자 데이터를 포함하고 상기 데이터 영역의 커널 영역은 커널 데이터를 포함하여 구성되는 것을 특징으로 한다.
더욱 바람직하게는 상기 코드 영역은 플래시 롬으로 구성되는 것을 특징으로 한다.
더욱 바람직하게는 상기 데이터 영역은 램으로 구성되는 것을 특징으로 한다.
상기한 목적을 달성하기 위한 본 발명은 응용 수행을 하던 스레드가 시스템 콜을 실행하거나 시스템의 인터럽트가 발생하는 (s201)단계; 상기 (s201)단계에서 시스템 콜이나 인터럽트가 발생하면 커널 모드로 전환하는 (s202)단계; 상기 응용(113)을 가리키고 있던 스택 포인트(sp)를 커널 스택으로 옮기고 그 이후의 커널 수행을 계속하는 (s203)단계; 상기 커널에서의 수행을 모두 마치고 사용자 모드로 복귀하기 이전에 리턴 주소값 검사를 수행하여 올바른 리턴 주소값이라면 s205)단계로 진행하고, 훼손된 리턴 주소값이라면 (s207)단계로 진행하는 (s204)단계; 상기 (s204)단계에서 검사된 주소값이 올바른 경우 사용자 모드로 복귀하는 s205)단계와 상기 스레드의 수행을 계속하는 (s206)단계; 및 상기 (s204)단계에서 검사된 주소값이 훼손된 경우 응용 오류 관리 모듈(114)에 보고하는 (s207)단계와 상기 스레드의 수행을 종료하는 (s208)단계로 이루어지는 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 방법이다.
더욱 바람직하게는 상기 응용은 사용자가 작성한 응용 소스 코드를 어셈블리 코드로 컴파일하는 (s301)단계; 응용 수행의 동적 검사를 위하여 동적 검사 코드를 삽입하는 (s302)단계; 상기 (s302)단계에서 동적 코드 삽입이 끝나면 바이너리 코드로 컴파일하는 (s303)단계; 상기 (s303)단계에서 컴파일된 바이너리 코드를 대상으로 정적 코드 검사를 수행하는 (s304)단계; 및 상기 (s304)단계에서 정적 코드 검사가 끝나면 응용 코드가 완성하는 (s305)단계로 이루어져 응용 빌드되는 것을 특징으로 한다.
이하, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 또한 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
도 1은 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템의 구성도이고, 도 2는 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 방법의 순서도이다. 또한 도 3은 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법의 응용 빌드 순서도이고, 도 4는 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 방법에서의 응용 동적 코드 검사 및 정적 코드 검사가 필요한 명령어들을 나타낸다.
도 5는 TI MSP430 하드웨어에서의 동적 검사 코드의 실시예를 나타내고, 도 6은 TI MSP430 하드웨어에서의 정적 검사 코드의 실시예를 나타내고, 도 7과 도 8은 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법의 효용성을 평가하는 실험 결과를 나타낸다.
도 1을 참조하면, 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템은 코드 영역(110), 데이터 영역(120), 하드웨어(130)를 포함하여 구성된다. 여기서 상기 하드웨어(130)은 MCU(Micro-Controller Unit) control 레지스터, I2C, SPI 등을 포함할 수 있다.
상기 코드 영역(110)은 사용자 영역(111)과 커널 영역(112)로 나누어져 있으며, 사용자 영역(111)은 응용(113)을 포함하고, 커널 영역(112)은 응용 오류 관리 모듈(114)를 포함한다. 여기서 상기 코드 영역(110)은 플래시 롬(Flash Rom)으로 구성되는 것이 바람직하다.
또한 상기 데이터 영역(120)은 사용자 영역(121)과 커널 영역(122)로 나누어 져 있으며, 사용자 영역(121)은 사용자 데이터(123)와 다른 사용자 데이터(124)를 포함하고, 커널 영역(122)은 커널 데이터(125)를 포함한다. 여기서 데이터 영역(120)은 램(RAM)으로 구성되는 것이 바람직하다.
이 경우 커널이 듀얼 모드를 수행하여 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템의 코드 영역(110)과 데이터 영역(120)을 사용자 영역(111,121)과 커널 영역(112,122)으로 논리적 분리시킨다.
상기 응용(113)은 정적 코드 검사와 동적 코드 검사를 위한 코드 삽입을 거친 상태로 상기 운영 시스템에 적재된다. 특히 상기 응용(113)이 자신의 사용자 데이터(123)에 저장하는 것은 올바른 동작이나, 다른 사용자 데이터(124)에 저장하거나 하드웨어(130)를 직접 제어하는 것은 응용 오류 관리 모듈(114)에 보고된다.
본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템의 구성요소간의 연결관계는 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 방법을 통하여 보다 상세하게 살펴본다.
도 2를 참조하면, 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 방법은 (s201)단계에서 (s208)단계를 포함하여 구성된다.
(s201)단계에서는 응용 수행을 하던 스레드(thread)가 시스템 콜(system call)을 실행하거나 시스템의 인터럽트(interrupt)가 발생한다. (s202)단계에서는 상기 (s201)단계에서 시스템 콜이나 인터럽트가 발생하면 커널 모드로 전환한다.
(s203)단계에서는 응용(113)을 가리키고 있던 스택 포인트(stack point, sp) 를 커널 스택으로 옮기고 그 이후의 커널 수행을 계속한다.
(s204)단계에서는 커널에서의 수행을 모두 마치고 사용자 모드로 복귀하기 이전에 리턴 주소값 검사를 수행하여 올바른 리턴 주소값이라면 (s205)단계로 진행하고, 훼손된 리턴 주소값이라면 (s207)단계로 진행한다.
여기서 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템의 시스템 API는 일반적으로 단순히 함수 호출로 구현되기 때문에 사용자 스택에 커널 모드에서 복귀될 주소가 저장되며, 멀티 스레드 응용에서 다른 스레드가 상기 주소값을 훼손하여 문제를 발생시키므로 다른 스레드에 의하여 상기 응용(113)의 사용자 모드로의 복귀 주소값이 훼손되었는지 검사하는 것이다.
(s205)단계에서는 (s204)단계에서 검사된 주소값이 올바른 경우 사용자 모드로 복귀하고, (s206)단계에서는 스레드의 수행을 계속한다.
(s207)단계에서는 (s204)단계에서 검사된 주소값이 훼손된 경우 응용 오류 관리 모듈(114)에 보고하고, (s208)단계에서는 스레드의 수행을 종료한다.
도 3을 참조하면, 본 발명 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법의 응용 빌드 순서도를 나타내며, (s301)단계에서 (s305)단계를 포함하여 구성된다.
(s301)단계에서는 사용자가 작성한 응용 소스 코드를 어셈블리 코드로 컴파일한다. (s302)단계에서는 응용 수행의 동적 검사를 위하여 동적 검사 코드를 삽입한다.
(s303)단계에서는 상기 (s302)단계에서 동적 코드 삽입이 끝나면 바이너리 코드로 컴파일한다. (s304)단계에서는 상기 (s303)단계에서 컴파일된 바이너리 코드를 대상으로 정적 코드 검사를 수행한다.
(s305)단계에서는 상기 (s304)단계에서 정적 코드 검사가 끝나면 응용 코드가 완성한다.
도 4를 참조하면, 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 방법에서의 응용 동적 코드 검사 및 정적 코드 검사가 필요한 명령어들을 나타낸다.
여기서 동적 코드 검사가 필요한 코드는 indirect addressing으로 목적 데이터를 변경하는 명령어(401)(예를 들어 mov 1, 1(r14)), 함수 리턴 명령어(402)(예를 들어ret, reti), 스택 푸쉬(push) 명령어(403)(예를 들어 push)이다. 이러한 명령어들(401,402,403)에 대한 동적 검사 코드를 원래 응용(113)의 어셈블리 언어에 추가하여 빌드한다.
또한 정적 코드 검사가 필요한 코드는 인터럽트 상태 제어 명령어(404)(예를 들어 eint, dint), PC-Relative 점프 명령어(405)(예를 들어 jmp +38), 목적 필드가 MCU 상태 제어 레지스터인 명령어(406)(예를 들어 mov 0, r2 /* r2는 msp430의 status reg. */)이다. 여기서 응용 코드가 컴파일된 후 완성된 바이너리 코드를 대상으로 이러한 명령어들(404,405,406)에 대한 정적 코드 검사를 수행한다.
도 5를 참조하면, TI MSP430 마이크로 컨트롤러가 장착된 센서 노드를 위한 동적 검사 코드 중 indirect addressing을 사용하는 call 명령어에 대한 실시예를 나타낸다.
(501)에서 C언어에서 함수 포인터를 이용한 함수 호출 명령을 작성할 경우 어셈블리 언어로 컴파일하면 (502)처럼 indirect addressing을 이용한 call 명령으로 나타난다. 여기서 indirect addressing call은 동적 검사가 필요한 코드이므로 (503)처럼 call 명령어 앞에 목적 필드를 검사하는 명령어가 추가되며, 상기 명령어들은 (504)처럼 응용에 할당된 코드 영역인지 범위 검사를 통해 확인할 수 있다.
도 6을 참조하면, MSP430 시스템에서 정적 코드 검사 중 call과 mov 명령어를 검사하는 실시예를 나타낸다.
바이너리 코드(601)에서 우선 call 명령어가 주소값(예를 들어 0x1254)을 호출하고 있다. 우선 (603)에서 상기 주소값이 Relocation Table(602)에 존재하는지 검사한다. 상기 Relocation table(602)에는 대부분의 컴파일러에서 컴파일 시 자동으로 생성 가능한 것으로 응용 코드가 사용하는 모든 심볼 정보와 해당 심볼을 참조하는 명령어의 오프셋이 나타나 있으므로 목적 주소가 Relocation Table(602)에 없을 경우 올바른 코드가 아님을 알 수 있다.
그 후 (604)에서는 해당 주소가 코드 영역 내에 존재하는지 범위 검사를 수행하고 이러한 (603)과 (604) 과정을 통과하면 call 명령의 검사가 종료된다. 또한 mov 명령어도 call 명령어처럼 (603)과 (604) 과정을 거치면 되나, (604)에서 코드 영역 대신 데이터 영역을 검사한다.
도 7과 도 8은 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법의 효용성을 평가하는 실험 결과를 나타낸다.
도 7을 참조하면, TI MSP430 마이크로 컨트롤러의 임베디드 하드웨어에서 오류 코드를 수행한 결과 스택, 데이터, 코드, 하드웨어 안정성에 있어서 만족함을 보여준다.
구체적으로 살펴보면, 도 7에서 기억 관리 장치가 없는 시스템에서 발생할 수 있는 응용의 오류들에 대한 안정성 보장 구간을 Stack, Data, Code, Hardware의 4단계로 나누었다. 여기서 본 발명에 따른 방법은 기계어 레벨의 검사를 수행하므로 응용프로그램을 작성하는 프로그래밍 언어와 무관하나, 여기서는 C언어를 기반으로 한 오류 코드를 이용하였다.
Stack safety는 응용의 함수 호출 또는 지역변수 사용에 따른 스택 오버플로우 방지를 의미하며, 일반 재귀호출과 상호 재귀호출로 검사한다. Data safety는 시스템 내 다른 응용에 할당된 데이터 영역 훼손이나 커널 데이터 영역 훼손으로부터의 보호를 나타내며, 직접 주소 지정된 포인터와 범위가 벗어난 배열 인덱싱을 이용한 응용 외부 영역을 훼손하는 코드로 검사한다.
Code safety는 커널 코드나 시스템 내 다른 응용의 코드 실행을 막을 수 있는지 의미하며, 직접 주소 지정된 함수 호출과 버퍼 오버플로우로 인한 함수의 리턴 주소값을 손상시키는 코드로 검사한다. Hardware safety는 응용의 하드웨어를 직접 제어로부터 안전한지를 나타내며, 응용이 시스템의 인터럽트를 불가능하게 만드는 코드와 플래쉬 롬에 저장되어있는 다른 응용 또는 커널의 코드를 수정하는 코드로 검사한다.
이러한 테스트 결과, 본 발명에 따른 시스템에서는 도 7의 시스템 안정성을 위협하는 응용 코드로부터 시스템 안정성을 보장할 수 있었다. 여기서 재귀호출, 범위가 벗어난 배열 인덱싱, 버퍼 오버플로우에 의한 함수 리턴 주소 훼손은 응용 실행 시 동적 검사코드에 의해 커널이 이를 감지하고 실행을 중지시켰다. 또한 직접 주소 지정된 포인터에 의한 데이터 영역 훼손이나 함수 호출, 인터럽트 불능이나 플래쉬 롬 수정은 응용 컴파일 단계에 정적 코드 검사에 의해 검출되었다.
도 8을 참조하면, 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 방법을 무선 센서 네트워크에 적용했을 때, 일반적인 센서 응용을 대상으로 한 성능 오버헤드 정도(801)와 응용 코드 크기의 오버헤드 정도(802)를 나타낸다.
(801)에서 동적 검사 코드로 인한 수행 오버헤드는 0.5~8.4%로 나타났다. 구체적으로는 계산량이 많은 응용인 MPT_mobile과 같은 응용에서는 2%의 오버헤드를, 계산시간보다는 데이터 영역 접근이 많은 R_recv, Pingpong, Surge 같은 응용에서는 6~8%의 오버헤드를 기록하였다. 이를 통해 메모리 사용량이 많은 응용에서 보다 많은 성능 오버헤드가 발생할 수 있지만 그 정도가 크지 않음을 알 수 있다
(802)에서 동적 검사 코드의 추가로 인한 코드 크기 증가량은 4~12%로 나타났다. 그러나 이 정도의 코드 크기 증가는 센서네트워크에서 널리 사용되는 TI MSP430이나 AVR ATmega128L과 같은 마이크로 컨트롤러의 플래쉬 롬에서 무리가 되지 않는다.
이러한 오버헤드의 정도를 볼 때, 본 발명에 따른 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 이 기억 관리 장치가 없는 마이크로 컨트롤러 시스템에서 매우 적은 오버헤드로 동작한다는 것을 알 수 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
이상에서 설명한 바와 같이, 본 발명에서 제안하고 있는 것은 기억 관리 장치가 없는 마이크로 컨트롤러의 임베디드 하드웨어에서 운영 시스템 및 방법으로서, 이러한 본 발명에 의하면 다음과 같은 효과를 얻을 수 있다.
첫째, 본 발명은 커널이 듀얼 모드를 수행하여 단일 선형 주소 공간을 커널과 응용의 수행 공간으로 논리적으로 분리함으로써 응용의 오류를 방지하여 커널이 정상적인 수행을 할 수 있도록 한다.
둘째, 본 발명은 정적 코드 검사와 동적 코드 검사를 수행하여 신뢰성 있는 코드를 제공함으로써 특권 모드가 존재하지 아니하여 응용이 자신에게 할당된 공간 외부 훼손이나 실행, 하드웨어 직접 제어를 방지할 수 있다.
셋째, 본 발명은 시스템에 적재된 각 응용이 자신의 주소 공간에 데이터를 기록하는 것은 허용되나, 응용 빌드 시 발견되지 않은 다른 응용 및 커널의 메모리 영역 침범이나 코드 실행, 하드웨어 직접 제어와 같은 응용 오류는 커널에 보고함 으로써 커널은 오류가 발생한 위치를 알 수 있어 안전하게 응용을 종료할 수 있다.
결국 본 발명은 AVR ATmega, TI MSP430 등의 기억 관리 장치가 없는 저비용 마이크로 컨트롤러 급의 임베디드 기기의 안정성 보장하고, 무선 센서 네트워크에 적용 시 노드의 데이터 수집에서 시스템 안정적인 수행으로 데이터의 신뢰도를 높이고, 배포된 센서 노드의 응용 오류 시 시스템 자체적으로 오류 탐지 및 복구하는 효과가 있다.

Claims (5)

  1. 기억 관리 장치(MMU)가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영시스템에 있어서,
    상기 임베디드 하드웨어의 코드 영역과 데이터 영역은 커널의 듀얼 모드 수행에 의하여 사용자 영역과 커널 영역으로 나누어지고,
    상기 코드 영역의 사용자 영역은 응용 프로그램을 포함하고 상기 코드 영역의 커널 영역은 응용 오류 관리 모듈을 포함하여 구성되며,
    상기 데이터 영역의 사용자 영역은 사용자 데이터를 포함하고 상기 데이터 영역의 커널 영역은 커널 데이터를 포함하여 구성되는 것을 특징으로 하는 임베디드 하드웨어의 운영 시스템.
  2. 청구항 1에 있어서, 상기 코드 영역은 플래시 롬으로 구성되는 것을 특징으로 하는 임베디드 하드웨어의 운영 시스템.
  3. 청구항 1에 있어서, 상기 데이터 영역은 램으로 구성되는 것을 특징으로 하는 임베디드 하드웨어의 운영 시스템.
  4. 응용 프로그램을 수행하던 스레드가 시스템 콜을 실행하거나 시스템의 인터럽트가 발생하는 (s201)단계;
    상기 (s201)단계에서 시스템 콜이나 인터럽트가 발생하면 커널 모드로 전환하는 (s202)단계;
    상기 응용 프로그램(113)을 가리키고 있던 스택 포인트(sp)를 커널 스택으로 옮기고 그 이후의 커널 수행을 계속하는 (s203)단계;
    상기 커널에서의 수행을 모두 마치고 사용자 모드로 복귀하기 이전에 리턴 주소값 검사를 수행하여 올바른 리턴 주소값이라면 (s205)단계로 진행하고, 훼손된 리턴 주소값이라면 (s207)단계로 진행하는 (s204)단계;
    상기 (s204)단계에서 검사된 주소값이 올바른 경우 사용자 모드로 복귀하는 (s205)단계와 상기 스레드의 수행을 계속하는 (s206)단계; 및
    상기 (s204)단계에서 검사된 주소값이 훼손된 경우 응용 오류 관리 모듈(114)에 보고하는 (s207)단계와 상기 스레드의 수행을 종료하는 (s208)단계로 이루어지는 기억 관리 장치(MMU)가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 방법.
  5. 청구항 4에 있어서, 상기 응용 프로그램은,
    사용자가 작성한 응용 소스 코드를 어셈블리 코드로 컴파일하는 (s301)단계;
    응용 프로그램 수행의 동적 검사를 위하여 동적 검사 코드를 삽입하는 (s302)단계;
    상기 (s302)단계에서 동적 코드 삽입이 끝나면 바이너리 코드로 컴파일하는 (s303)단계;
    상기 (s303)단계에서 컴파일된 바이너리 코드를 대상으로 정적 코드 검사를 수행하는 (s304)단계; 및
    상기 (s304)단계에서 정적 코드 검사가 끝나면 응용 코드가 완성되는 (s305)단계로 이루어져 응용 프로그램이 빌드되는 것을 특징으로 하는 기억 관리 장치(MMU)가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 방법.
KR1020060039906A 2006-05-03 2006-05-03 기억 관리 장치가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 시스템 및 방법 Expired - Fee Related KR100799599B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060039906A KR100799599B1 (ko) 2006-05-03 2006-05-03 기억 관리 장치가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060039906A KR100799599B1 (ko) 2006-05-03 2006-05-03 기억 관리 장치가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20070107426A KR20070107426A (ko) 2007-11-07
KR100799599B1 true KR100799599B1 (ko) 2008-01-31

Family

ID=39062778

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060039906A Expired - Fee Related KR100799599B1 (ko) 2006-05-03 2006-05-03 기억 관리 장치가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR100799599B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262340B1 (en) 2011-12-29 2016-02-16 Cypress Semiconductor Corporation Privileged mode methods and circuits for processor systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363436B1 (en) 1997-01-27 2002-03-26 International Business Machines Corporation Method and system for loading libraries into embedded systems
KR20050007906A (ko) * 2003-07-12 2005-01-21 삼성전자주식회사 공유 라이브러리 시스템 및 상기 시스템 구축 방법
KR20050010640A (ko) * 2003-07-22 2005-01-28 재단법인서울대학교산학협력재단 응용 프로그램의 동적링크 방법
US20060010314A1 (en) 2004-07-07 2006-01-12 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363436B1 (en) 1997-01-27 2002-03-26 International Business Machines Corporation Method and system for loading libraries into embedded systems
KR20050007906A (ko) * 2003-07-12 2005-01-21 삼성전자주식회사 공유 라이브러리 시스템 및 상기 시스템 구축 방법
KR20050010640A (ko) * 2003-07-22 2005-01-28 재단법인서울대학교산학협력재단 응용 프로그램의 동적링크 방법
US20060010314A1 (en) 2004-07-07 2006-01-12 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MMU가 없는 Thread기반 운영체제에서 스택 보호를 위한 메모리 관리 기법, 한국정보과학회 학술발표논문집 제33권 제2호(A), 이영림 등, 2006. 10

Also Published As

Publication number Publication date
KR20070107426A (ko) 2007-11-07

Similar Documents

Publication Publication Date Title
JP5680679B2 (ja) 例外イベントを取り扱うための装置および方法
RU2374675C2 (ru) Системы и способы использования синтезированных команд в виртуальной машине
CN103116532B (zh) 从嵌入式软件系统中的堆栈损坏故障中恢复
US7712084B2 (en) Method for monitoring a program execution using a debug logic
EP3864555B1 (en) Verifying a stack pointer
EP4012554B1 (en) Chip patching method and chip
CN103218262A (zh) 在线补丁的激活方法、装置及系统
CN113342376B (zh) 一种针对物联网设备的操作系统进行升级的方法及装置
CN106228065B (zh) 一种缓冲区溢出漏洞的定位方法与装置
CN111666094B (zh) 一种实时固件升级系统与方法
Kim et al. Towards a Resilient Operating System for Wireless Sensor Networks.
CN116150739A (zh) 一种基于关键地址动态保护的栈溢出自动防御方法
US7716464B2 (en) Method to have fault resilient booting
CN101526908A (zh) 固件更新装置和方法
KR20070107426A (ko) 기억 관리 장치가 없는 마이크로 컨트롤러를 포함하는 임베디드 하드웨어의 운영 시스템 및 방법
US12174950B2 (en) Method for detecting reverse engineering on a processor using an instruction pointer and corresponding integrated circuit
Sedaghat et al. A software-based error detection technique using encoded signatures
KR100928865B1 (ko) 컴퓨터 시스템에서의 스택 확장 및 보호 방법과 그 장치
US20080209265A1 (en) Information-Processing Method and Apparatus
US7246206B2 (en) Method and device for storing a computer program in a program memory of a control unit
Maebe et al. Instrumenting JVMs at the machine code level
US8949868B2 (en) Methods, systems and computer program products for dynamic linkage
CN121255227A (zh) 一种基于Flash与硬件中断的ROM补丁方法及系统
WO1990005951A1 (en) Method of handling unintended software interrupt exceptions
JP3480903B2 (ja) エミュレータにおける全命令トレースの制御方法

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

P14-X000 Amendment of ip right document requested

St.27 status event code: A-5-5-P10-P14-nap-X000

P16-X000 Ip right document amended

St.27 status event code: A-5-5-P10-P16-nap-X000

Q16-X000 A copy of ip right certificate issued

St.27 status event code: A-4-4-Q10-Q16-nap-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

FPAY Annual fee payment

Payment date: 20121213

Year of fee payment: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

FPAY Annual fee payment

Payment date: 20131212

Year of fee payment: 7

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

FPAY Annual fee payment

Payment date: 20150710

Year of fee payment: 8

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 8

FPAY Annual fee payment

Payment date: 20160118

Year of fee payment: 9

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 9

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20170125

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20170125

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301