KR20050043299A - 임베디드 시스템에서 동적 할당 메모리를 사용하여인터럽트를 처리하기 위한 장치 및 방법 - Google Patents

임베디드 시스템에서 동적 할당 메모리를 사용하여인터럽트를 처리하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR20050043299A
KR20050043299A KR1020030078135A KR20030078135A KR20050043299A KR 20050043299 A KR20050043299 A KR 20050043299A KR 1020030078135 A KR1020030078135 A KR 1020030078135A KR 20030078135 A KR20030078135 A KR 20030078135A KR 20050043299 A KR20050043299 A KR 20050043299A
Authority
KR
South Korea
Prior art keywords
interrupt
memory
interrupt signal
signals
embedded system
Prior art date
Application number
KR1020030078135A
Other languages
English (en)
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 KR1020030078135A priority Critical patent/KR20050043299A/ko
Publication of KR20050043299A publication Critical patent/KR20050043299A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 임베디드 시스템에서 인터럽트를 처리하기 위한 방법에 있어서, 발생 가능한 모든 인터럽트 신호 중 필요한 일부 또는 전부의 인터럽트 신호를 선택하는 과정과, 메모리를 동적으로 할당하는 과정과, 상기 선택한 신호를 상기 동적으로 할당된 메모리에 기록하는 과정과, 상기 메모리에 기록된 각각의 인터럽트 신호와 그에 상응하는 인터럽트 서비스 루틴(ISR) 함수를 일대일 맵핑하는 과정을 포함함을 특징으로 한다.

Description

임베디드 시스템에서 동적 할당 메모리를 사용하여 인터럽트를 처리하기 위한 장치 및 방법{APPARATUS AND METHOD FOR HANDLING INTERRUPT USING DYNAMIC ALLOCATION MEMORY IN EMBEDDED SYSTEM}
본 발명은 임베디드 시스템(embedded system)에서 인터럽트(interrupt)를 처리하기 위한 장치 및 방법에 관한 것으로, 특히 메모리를 할당하여 인터럽트를 처리하기 위한 장치 및 방법에 관한 것이다.
임베디드 시스템은 제한된 자원을 가지고 특정한 목적을 갖는 작업을 처리하기 위해 임의의 기기에 내장된 시스템이라고 정의할 수 있다. 일 예로, 휴대폰에서상기 제한된 자원이라면 크기와 배터리 등이 있다. 또한, 상기 특정한 목적을 갖는 작업이란 전화의 송수신을 담당하는 호(call) 처리가 될 수 있다. 이렇듯 상기 임베디드 시스템은 우리 주변에서 쉽게 찾아볼 수 있는 시스템이다. 실제로 연간 생산되는 임베디드 시스템은 데스크톱 PC에 비해 훨씬 많은 양을 차지하고 있으며 다양한 분야에서 활용되고 있다. 상기 임베디드 시스템이 활용되고 있는 분야와 대표적인 적용예들을 살펴보면 하기와 같다.
1. 정보가전 - TV, 냉장고, 세탁기등의 가전제품을 인터넷과 연동하는 분야
2. 정보단말 - 개인 휴대형 정보 단말기(PDA: Personal Digital Assistant, 이하 'PDA'라 칭하기로 한다), 영상 전화기등의 이동 통신 단말 분야
3. 통신장비 - 디지털 교환기, 사설 자동 전화 교환기, 라우터, 스위치등의 통신 장비 분야
4. 물류/금융 - 현금 자동 지급기, 바코드(barcode) 관련 장치등의 물류/금융 분야
5. 차량/교통 - 자동차의 엔진 및 각종 제어 시스템, 지능형 교통 시스템(ITS: Intelligent Transport Systems)등의 차량/교통 분야
상기 활용 분야 및 적용예들 외에도 상기 임베디드 시스템은 의료, 게임, 항공/군용 등 생활과 밀접한 관련을 맺는 모든 시스템에 적용되었다고 해도 무방할 것이다.
최근들어 상기 임베디드 시스템이 각광받고 있는 이유는 다음과 같은 두가지 이유가 있을 수 있다.
첫째, 개인용 컴퓨터(Personal Computer)의 포화와 정보가전(information appliance) 수요의 증가이다. 상기 PDA, 휴대폰, 고화질 TV 등 다양한 정보가전이 출현하면서 이들이 개인용 컴퓨터를 대체해가고 있다. 즉, 임베디드 시스템이 각광받는 이유는 개인용 컴퓨터에는 1개의 마이크로프로세서(microprocessor)가 들어가지만 정보가전 1대에는 수십개의 임베디드 시스템이 목적에 따라 들어갈 수 있어서 그 시장성이 무한하기 때문이다.
둘째, 새로운 기술의 개발로 인한 시스템의 노후화이다. 기존의 임의의 시스템은 급격한 기술 발달에 맞추어 적시에 제어 프로그램을 제공하는 것이 불가능하다. 따라서 경량화되고 집적화된 저전력의 임베디드 시스템 개발이 불가피해졌다.
한편, 상기 임베디드 시스템은 다양한 하드웨어로 구성될 수가 있는데 상기 하드웨어가 시스템에 작업을 수행하겠다고 요청하는 것을 인터럽트(interrupt)라고 한다. 상기 인트럽트가 발생하는 이유는 상기 임베디드 시스템은 제한된 수의 중앙 처리 장치(Central Processing Unit, 이하 'CPU'라 칭하기로 한다)를 포함하고 있으며, 대개 하나의 CPU가 하나의 시스템에 포함되어 있다. 즉, 임의의 하드웨어 장치 A의 작업을 수행하는 CPU가 인터럽트 우선 순위에 의해 더 높은 우선 순위의 다른 하드웨어 장치 B로부터 작업 요청을 수신하면, 먼저 수행되고 있던 하드웨어 장치 A의 작업을 일시 중지하고 후에 작업 요청을 한 B의 작업을 처리한다. 상기 B의 처리 작업을 마친 CPU는 메모리에 저장된 A의 작업정보를 로딩하여 일시 중지된 시점부터 연속적으로 A의 작업을 재개한다. 이렇듯 CPU는 하나의 하드웨어 장치에 대해 하나씩의 작업만 수행하지만 처리 시간이 너무 짧아 사용자는 상기 하드웨어 장치 A와 B가 동시에 처리되는 것으로 느껴진다.
상기 인터럽트를 처리하는 CPU는 메인 메모리에 프로그래밍(programming)적으로 구현된 인터럽트 서비스 루틴(Interrupt Service Routine, 이하 'ISR'이라 칭하기로 한다)이라는 함수와 각각의 하드웨어 장치에서 발생하는 인터럽트 신호를 맵핑(mapping)시켜 처리한다. 일 예로, 키보드의 임의의 키로부터의 입력 신호를 수신한 CPU는 메인 메모리(main memory)에 저장된 해당 ISR을 호출하여 상기 키보드 입력에 대한 인터럽트를 처리한다. 이하 도 1을 참조하여 상기 인터럽트 요청 신호를 수신한 CPU와 메인 메모리의 ISR간의 관계를 설명하기로 한다.
도 1은 일반적인 인터럽트를 처리하기 위한 CPU와 메인 메모리간의 수행 흐름을 개략적으로 도시한 도면이다.
상기 도 1을 참조하면, 먼저 임의의 하드웨어 장치로부터 인터럽트 요청(102) 신호를 수신한 CPU(100)는 기 수행되고 있던 임의의 작업을 CPU내의 임시 메모리(도시하지 않음)에 그에 관한 정보를 저장하고 수신한 인터럽트 요청 신호를 판독한다. 일 예로, 상기 인터럽트 요청 신호(102)는 키보드의 키 입력으로 발생한 것으로 가정하며 상기 임시 메모리는 캐시(cache) 메모리 및 레지스터(register)가 될 수 있다. 상기 캐시 메모리는 기억장치 계층에 있어 CPU의 처리 속도를 개선하는 역할을 한다. 또한 상기 캐시는 주기억 장치중의 데이터가 CPU에 의해 한번 사용된 후, 다시 사용될 것을 예상해서 그 사본을 캐쉬 메모리에 남겨 두는 작업을 한다. 상기 키보드의 인터럽트 요청 신호를 감지한 CPU(100)는 메모리 버스(memory bus)(104)라는 CPU(100)와 메인 메모리(150)간의 통로를 통해 메인 메모리(150)에 구현된 ISR0(106)를 호출한다. 여기서 상기 ISR0(106)는 키보드 인터럽트 신호에 대한 일련의 처리 과정을 프로그래밍적으로 구현한 함수이다. 상기 ISR0(106) 내지 ISRn(112)은 배열 구조로 구현된 인터럽트 벡터 테이블(interrupt vector table)이라고 하며 각 인터럽트 요청 신호에 대한 처리를 프로그래밍 함수로 구현하고 있다. 상기 ISR0를 참조하여 CPU는 상기 인터럽트 요청 신호에 관해 일련의 작업을 수행하고 처리를 완료하면 상기 임시 메모리에 기저장된 이전의 작업을 로딩(loading)하여 일시 중지된 시점부터 연속적으로 작업을 재개한다.
그러면 상기 임베디스 시스템의 하드웨어 장치들과 일반적인 개인용 컴퓨터(PC)의 하드웨어 장치들의 차이점을 하기 <표 1>을 참조하여 설명한다.
상기에서와 같이, 임베디드 시스템은 기능의 복잡도(complexity) 및 시스템의 크기도 다양하게 존재한다. 일 예로, 임베디드 시스템이 내장된 냉장고와 PDA를 들 수가 있다. 상기 PDA는 휴대를 목적으로하는 시스템을 구현하기 위해서 최고의 성능을 가지면서도 최소한의 하드웨어 장치를 사용해야 된다. 즉, 상기 <표 1>을 참조하면, 상기 임베디드 시스템은 다양한 하드웨어 장치를 거의 사용하지 않으며 메모리의 경우도 최소한의 메모리를 필요로하고 있다.
이렇게 제한된 메모리 용량을 사용하는 임베디드 시스템은 상기 인터럽트 발생시 상기 인터럽트를 처리하기 위해 상기 메모리에 일련의 처리 과정을 수행할 ISR을 저장한다. 만약 상기 임베디드 시스템이 다수의 인터럽트가 발생하는 하드웨어 장치로 구성되어 있다면 상기 인터럽트를 처리하는 메모리의 일정 영역도 함께 증대되어야 한다. 하지만, 상기 메모리는 인터럽트만을 처리하는 것이 아니고 응용 프로그램도 구동하며 각종 데이터를 저장하는 역할을 수행해야 한다. 즉, 상기 임베디드 시스템은 제한된 메모리 자원을 효과적으로 사용할 필요성이 있다.
종래의 인터럽트 처리 과정을 저장한 메모리는 일정 영역을 배열 구조로 할당한다. 상기 배열 구조는 프로그래밍 언어, 일 예, C 언어로 메모리 물리 주소(physical address)의 임의의 시작점부터 종료점까지 동일한 데이터형을 가진 요소들을 하나의 이름으로 연속된 기억 공간속에 저장할 수 있는 데이터 구조로 인터럽트 처리를 위해 모두 초기화한다. 상기와 같은 경우, 임의의 하드웨어 장치가 인터럽트 신호를 두개만 발생시킨다고 가정할때 그외 발생되지 않는 인터럽트 신호에 대한 메모리 영역도 초기화된다. 이렇게 되면 상기 메모리는 사용하지 않아도 될 영역까지도 상기 발생하지 않는 인터럽트 신호 처리를 위해서 할당되어야 하므로 메모리의 낭비를 초래한다. 또한, 새로운 하드웨어 장치가 상기 임베디드 시스템에 추가되는 경우에는 상기 인터럽트 벡터 테이블의 ISR 개수를 다시 정의해야 되는 비효율적인 측면이 존재한다.
따라서 본 발명의 목적은 임베디드 시스템에서 제한된 메모리 자원을 효과적으로 사용할 수 있도록 동적으로 메모리를 구현하기 위한 장치 및 방법을 제공함에 있다.
본 발명의 다른 목적은 동적으로 할당된 메모리를 이용하여 보다 효율적으로 인터럽트를 처리하기 위한 장치 및 방법을 제공함에 있다.
상기 목적을 달성하기 위한 본 발명의 방법은; 임베디드 시스템에서 인터럽트를 처리하기 위한 방법에 있어서, 발생 가능한 모든 인터럽트 신호 중 필요한 일부 또는 전부의 인터럽트 신호를 선택하는 과정과, 메모리를 동적으로 할당하는 과정과, 상기 선택한 신호를 상기 동적으로 할당된 메모리에 기록하는 과정과, 상기 메모리에 기록된 각각의 인터럽트 신호와 그에 상응하는 인터럽트 서비스 루틴(ISR) 함수를 일대일 맵핑하는 과정을 포함함을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 장치는; 임베디드 시스템에서 인터럽트를 처리하기 위한 장치에 있어서, 인터럽트 신호가 동적으로 할당된 주소 영역에 저장되는 메모리와, 상기 메모리에 동적으로 할당된 인터럽트를 처리하는 CPU를 포함함을 특징으로 한다.
이하, 본 발명에 따른 바람직한 실시예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩트리지 않도록 생략될 것이라는 것을 유의하여야 한다.
설명에 앞서,본 발명은 임베디드 시스템(embedded system)이 필요한 인터럽트(interrrupt) 신호만을 처리하기 위해서 동적(dynamic)으로 메모리 구조를 초기화하여 제한된 메모리 자원을 보다 효율적으로 활용하는 장치 및 방법을 제안한다. 또한, 상기와 같이 동적으로 메모리를 구현하면 새로운 하드웨어 추가시에 보다 효과적으로 인터럽트 서비스 루틴(Interrupt Service Routine, 이하 'ISR'이라 칭하기로 한다)을 수행하는 장치 및 방법을 제안한다.
한편, 후술될 연결 리스트(linked list)는 필요할 때마다 메모리를 할당해서 데이터를 추가해주면 되기 때문에 배열보다 효율적으로 메모리를 관리 할 수 있을 뿐만 아니라 메모리가 다하지 않는 한 무한정으로 데이터를 저장할 수 있다는 장점이 있다.
도 2는 본 발명의 실시예에 따른 인터럽트를 처리하기 위한 장치 구성을 도시한 블록도이다.
먼저, 인터럽트 신호 정의부(202)는 상기 임베디드 시스템의 임의의 하드웨어 장치에서 발생되는 모든 인터럽트 신호를 감지하여 상기 임베디드 시스템에서 필요로 하는 인터럽트 신호만을 추출하여 선택한다. 여기서 상기 인터럽트 신호 정의부(202)에 지시된 select factor는 상기 필요로 하는 인터럽트 신호 추출을 의미한다. 예컨대, 임의의 하드웨어 장치 A가 모두 7개의 인터럽트 신호를 발생시킨다고 가정하자. 상기 하드웨어 장치 A가 러시아에서 사용될 경우에는 상기 7개의 인터럽트 신호중 첫번째와 두번째 인터럽트 신호만이 필요하고 중국에서는 세번째와 네번째의 인터럽트 신호만이 필요하다고 가정할때, 상기 러시아에서는 상기 첫번째, 두번째 인터럽트 신호만을 추출하여 선택하고 중국에서는 상기 세번째, 네번째 인터럽트 신호만을 추출하여 선택하는 것이다. 즉, 동일한 하드웨어 장치 A가 어느곳에서 어떻게 쓰이느냐에 따라서 발생되는 인터럽트 종류 및 개수가 다를 수가 있다. 이러한 경우 상기 시스템은 필요한 인터럽트 신호만을 입력하고 상기 인터럽트를 처리하는 ISR만 저장하면 된다.
다음으로 인터럽트 번호 스캔부(204)는 상기 인터럽트 신호 정의부(202)가 선택한 일부 또는 전부의 인터럽트 신호를 감지한다. 상기 인터럽트 번호 스캔부(204)는 중앙 처리 장치(Central Processing Unit, 이하 'CPU'라 칭하기로 한다)내에 포함되어 있다. 따라서, 이후 상기 인터럽트 신호가 정의된 하드웨어 장치가 상기 임베디드 시스템에 장착될 시에 상기 CPU는 메모리 초기화부(208)를 제어하여 상기 메모리의 일정 영역에 머리(head, 이하 '헤드'라 칭하기로 한다)와 꼬리(tail, 이하 '테일'로 칭하기로 한다)만을 가지는 연결 리스트(linked list) 구조로 인터럽트 벡터 테이블(interrupt vector table)을 초기화한다. 상기 인터럽트 벡터 테이블은 임의의 인터럽트 발생시 해당 인터럽트를 수행하기 위한 ISR 번호가 저장되는 구조라고 할 수 있다.
이렇게 초기화된 인터럽트 벡터 테이블, 즉 헤드와 테일간의 동적 메모리 공간에 인터럽트 번호 입력부(206)는 상기 필요한 인터럽트 번호를 입력한다. 즉, 상기 입력의 경우, 헤드와 테일간에 메모리 영역을 할당하여 상기 인터럽트 번호를 입력한다. 이후 함수 초기화부(210)는 상기 동적 메모리안의 상기 입력된 번호에 대해서만 함수 초기화를 수행하고 필요하지 인터럽트 번호에 해당하는 함수는 초기화하지 않는다. 다음으로 ISR 할당부(212)는 상기 동적 메모리안의 인터럽트 번호 입력에 대해서 각 입력된 번호별로 해당 ISR을 맵핑(mapping)한다. 일 예로, 상기 인터럽트 번호 입력부(206)가 키보드 인터럽트 발생을 인터럽트 번호 1로 입력하면 상기 인터럽트 처리를 위해 ISR0로 맵핑시킬 수가 있다.
다음으로 ISR 수행부(214)는 임의의 하드웨어 장치에서 인터럽트 신호가 발생하면 인터럽트 번호 스캔부(204)에서 감지한 번호가 있는지를 확인후에 상기 해당 인터럽트 신호가 동적 메모리에 저장되어 있을 경우 해당 ISR로 분기(jump)하여 ISR을 수행한다. 상기 도 2에서 AND 연산기(216)는 입력된 인터럽트 번호와 상기 CPU가 수행할 ISR을 AND 연산함으로써 상기 시스템에 허용된 인터럽트 신호를 처리하도록 한다. 예컨대, 상기 ISR 수행부(214)는 인터럽트 신호 1, 3, 6 중에 하나가 발생할 수 있는 상황이 AND 연산기(216)의 PEND 노드(node)에 입력되고 시스템에서 처리하도록 설정된 인터럽트 신호 1, 6이 MASK 노드로 입력되면 상기 인터럽트 신호 1, 6이 발생할 경우에만 시스템이 인터럽트 처리를 수행하고 인터럽트 신호 3이 발생할 경우 에러(error) 처리를 한다.
이하, 도시될 도면들을 참조하여 상기 도 2의 각 블록 구성을 상세하게 설명하기로 한다.
도 3은 본 발명의 실시예에 따른 인터럽트 신호 정의부(202 또는 304)에서 인터럽트 신호를 선택하는 것을 도시한 도면이다.
먼저, 임의의 하드웨어(302)가 발생하는 인터럽트 신호가 총 7개이다. 상기 7개의 신호 중 인터럽트 1, 2, 5, 7만을 사용한다고 가정하면 인터럽트 신호 정의부(304)는 상기 총 7개의 인터럽트 신호 중 상기 1, 2, 5, 7의 인터럽트 신호만을 하드웨어로부터 추출하여 선택한다. 이후 상기 선택된 인터럽트 신호들은 CPU(306)의 인터럽트 번호 스캔부(204)가 감지하여 인터럽트 번호 입력부(206)로 전송한다. 이후에 상기 선택된 인터럽트 신호가 발생시에 동적 메모리의 인터럽트 벡터 테이블의 해당 ISR로 분기하여 인터럽트를 처리한다.
다음으로, 도 4는 메모리 초기화부(208)가 연결 리스트(linked list) 구조로 메모리를 초기화한 형태를 도시한 도면이다.
도 4는 본 발명의 실시예에 따른 헤드와 테일 구조로만 초기화된 동적 메모리 구조를 도시한 도면이다.
상기 도 4를 참조하면, 상기 동적 메모리 구조는 프로그래밍적으로, 일 예, C 언어 혹은 C++ 언어의 자기 참조 구조체 및 연결 리스트 구조를 사용하여 헤드(402)와 테일(404)만으로 초기화된다. 이하 상기 동적 메모리 구조가 상기 C 언어로 정의되는 일 예의 경우이다.
typedef struct_table{
unsigned int vector_number;
struct_table *next;
}table;
table *head_table, *tail_table;
상기 자기 참조 구조체 및 연결 리스트(linked list)를 이용한 프로그래밍 예제를 참조하면, *head_table 은 동적 메모리의 시작을 알리는 것이며 *tail_table은 동적 메모리의 종료를 알리는 것이다.
다음으로, 도 5를 참조하여 상기 동적 메모리가 헤드와 테일로 초기화 된 후 인터럽트 신호 번호를 입력하여 상기 헤드와 테일 사이에 데이터를 저장하는 영역인 노드들이 삽입된 형태를 설명하기로 한다.
도 5는 본 발명의 실시예에 따른 인터럽트 번호가 입력된 동적 메모리 구조를 도시한 도면이다.
상기 도 5를 참조하면, 상기 동적 메모리는 헤드(502)와 테일(512) 사이에 상기 선택된 인터럽트 신호 1(504), 2(506), 5(508), 7(510)의 주소 영역이 상기 인터럽트 번호 입력부(206)에 의해 삽입된 구조이다. 상기 노드는 데이터가 저장되는 공간을 의미하며 상기 도 5의 504, 506, 508, 510을 노드(node)라고 한다. 이하 상기 인터럽트 번호가 입력된 동적 메모리 구조가 상기 C 언어로 정의되는 경우 사용되는 함수의 일 예이다.
insert_table(unsigned int vector_number);
상기 프로그램 구문은 정수값의 인자 vector_number를 받아서 자기 참조 구조체의 vector number에 저장하고 인터럽트 벡터 테이블의 리스트(list)가 된다. 따라서, 상기 insert_table 함수를 사용하여 상기 인터럽트 신호 1, 2, 5, 7을 상기 헤드(502)와 테일(512) 사이의 주소 영역을 차지하도록 하는 프로그램 구현은 다음과 같은 구문이 포함될 수 있으며 하기 표현되는 함수는 프로그램 작성자에 의해 자유로이 정의될 수 있다.
insert_table(1);
insert_table(2);
insert_table(5);
insert_table(7);
다음으로, 도 6을 참조하여 상기 헤드와 인터럽트 번호 노드와 테일로 이루어진 동적 메모리가 초기화 함수로 맵핑되는 도면을 설명하기로 한다.
도 6은 본 발명의 실시예에 따른 각 노드들이 초기화 함수로 맵핑되는 동적 메모리 구조를 도시한 도면이다.
상기 도 6을 참조하면, 상기 인터럽트 신호 입력을 종료한 상기 동적 메모리의 함수 초기화부(210)는 각 노드들에 대해 초기화 함수와 맵핑한다. 상기 초기화 함수라 함은 프로그래머(programmer)에 의해 자유로이 정의되는 함수이며 시스템 설계시 디펄트(default)로 정의된 함수이다. 예컨대, 상기 CPU가 이미지 로딩을 요청하는 인터럽트 신호 감지시 시스템 설계시 미리 정의된 초기화 함수를 로딩하는 것으로 일 예로, 상기 각 노드들에는 널(null)값으로 초기화 될 수가 있다. 상기 각 노드들은 모두 동일한 초기화 함수와 맵핑된다.
도 7은 본 발명의 실시예에 따른 각 노드들이 해당 ISR로 맵핑되는 동적 메모리 구조를 도시한 도면이다.
상기 도 7을 참조하면, 상기 초기화 함수로의 맵핑이 종료되면 ISR 할당부(212)는 각 노드들을 해당 ISR별로 맵핑한다. 즉, 상기 ISR 할당부(212)는 인터럽트 신호 1(704)을 해당 인터럽트 벡터 테이블과 맵핑된 ISR0로, 인터럽트 신호 2(706)는 해당 인터럽트 벡터 테이블과 맵핑된 ISR1으로, 인터럽트 신호 5(708)는 해당 인터럽트 벡터 테이블과 맵핑된 ISR2로, 인터럽트 신호 7(710)은 해당 인터럽트 벡터 테이블과 맵핑된 ISR3으로 각각 맵핑한다. 이렇게 맵핑된 각각의 인터럽트 신호들을 ISR 수행부(214)는 임의의 인터럽트 신호가 발생시에 상기 인터럽트 번호 스캔부(204)에서 감지한 신호들과 맵핑되는지를 판단한 후에 맵핑되는 것이 확인되면 해당 ISR의 인터럽트 벡터 테이블로 분기하여 상기 ISR을 수행한다.
한편 본 발명의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
상술한 바와 같이 본 발명은 임베디드 시스템에서 연결 리스트를 사용하여 동적 할당 메모리를 구현함으로써 정의되는 인터럽트 신호에 대해서만 메모리를 할당하여 보다 효율적으로 제한된 메모리를 사용할 수 있는 장점이 있다.
도 1은 일반적인 인터럽트를 처리하기 위한 CPU와 메인 메모리간의 수행 흐름을 개략적으로 도시한 도면
도 2는 본 발명의 실시예에 따른 인터럽트를 처리하기 위한 장치 구성을 도시한 블록도
도 3은 본 발명의 실시예에 따른 인터럽트 신호 정의부(202 또는 304)에서 인터럽트 신호를 선택하는 것을 도시한 도면
도 4는 본 발명의 실시예에 따른 헤드와 테일 구조로만 초기화된 동적 메모리 구조를 도시한 도면
도 5는 본 발명의 실시예에 따른 인터럽트 번호가 입력된 동적 메모리 구조를 도시한 도면
도 6은 본 발명의 실시예에 따른 각 노드들이 초기화 함수로 맵핑되는 동적 메모리 구조를 도시한 도면
도 7은 본 발명의 실시예에 따른 각 노드들이 해당 ISR로 맵핑되는 동적 메모리 구조를 도시한 도면

Claims (9)

  1. 임베디드 시스템에서 인터럽트를 처리하기 위한 방법에 있어서,
    발생 가능한 모든 인터럽트 신호 중 필요한 일부 또는 전부의 인터럽트 신호를 선택하는 과정과,
    메모리를 동적으로 할당하는 과정과,
    상기 선택한 신호를 상기 동적으로 할당된 메모리에 기록하는 과정과,
    상기 메모리에 기록된 각각의 인터럽트 신호와 그에 상응하는 인터럽트 서비스 루틴(ISR) 함수를 일대일 맵핑하는 과정을 포함함을 특징으로 하는 상기 방법.
  2. 제 1항에 있어서, 상기 메모리를 동적으로 할당하는 과정은;
    헤드와 테일 주소 영역으로 메모리를 초기화하는 과정과,
    상기 선택된 인터럽트 신호에 상응하게 새로운 데이터 저장 주소 영역을 상기 헤드와 테일 사이의 주소 영역에 할당하는 과정을 포함함을 특징으로 하는 상기 방법.
  3. 제 2항에 있어서,
    상기 각각의 데이터 저장 주소 영역은 다음 데이터 주소 영역을 참조함을 특징으로 하는 상기 방법.
  4. 제 1항에 있어서,
    소정의 인터럽트 신호 발생시 상기 발생된 인터럽트 신호가 상기 선택된 인터럽트 신호인지를 판단하는 과정을 더 포함함을 특징으로 하는 상기 방법.
  5. 임베디드 시스템에서 인터럽트를 처리하기 위한 장치에 있어서,
    인터럽트 신호가 동적으로 할당된 주소 영역에 저장되는 메모리와,
    상기 메모리에 동적으로 할당된 인터럽트를 처리하는 CPU를 포함함을 특징으로 하는 상기 장치.
  6. 제 5항에 있어서,
    상기 메모리는 헤드와 테일 주소 영역으로 초기화하고, 발생 가능한 모든 인터럽트 신호들 중 선택된 하나 이상의 인터럽트 신호에 상응한 데이터 저장 주소 영역을 상기 헤드와 테일 사이의 주소 영역에 할당함을 특징으로 하는 상기 장치.
  7. 제 6항에 있어서,
    상기 각각의 데이터 저장 주소 영역은 다음 데이터 주소 영역을 참조함을 특징으로 하는 상기 장치.
  8. 제 5항에 있어서,
    상기 CPU는 상기 메모리에 저장된 각각의 인터럽트 신호와 그에 상응하는 인터럽트 서비스 루틴(ISR)을 일대일 맵핑하여 상기 인터럽트 신호 발생시 상기 일대일 맵핑된 해당 인터럽트 서비스 루틴(ISR)을 수행하도록 제어함을 특징으로 하는 상기 장치.
  9. 제 5항에 있어서,
    상기 CPU는 임의의 인터럽트 신호 발생시 상기 발생된 인터럽트 신호가 시스템에서 허용한 인터럽트 신호인지를 판단함을 특징으로 하는 상기 장치.
KR1020030078135A 2003-11-05 2003-11-05 임베디드 시스템에서 동적 할당 메모리를 사용하여인터럽트를 처리하기 위한 장치 및 방법 KR20050043299A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030078135A KR20050043299A (ko) 2003-11-05 2003-11-05 임베디드 시스템에서 동적 할당 메모리를 사용하여인터럽트를 처리하기 위한 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030078135A KR20050043299A (ko) 2003-11-05 2003-11-05 임베디드 시스템에서 동적 할당 메모리를 사용하여인터럽트를 처리하기 위한 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20050043299A true KR20050043299A (ko) 2005-05-11

Family

ID=37244053

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030078135A KR20050043299A (ko) 2003-11-05 2003-11-05 임베디드 시스템에서 동적 할당 메모리를 사용하여인터럽트를 처리하기 위한 장치 및 방법

Country Status (1)

Country Link
KR (1) KR20050043299A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101341414B1 (ko) * 2009-12-18 2013-12-13 한국전자통신연구원 임베디드 운영체제 커널의 인터럽트 처리 모드 결정 방법
KR20200064702A (ko) 2018-11-29 2020-06-08 한국전자통신연구원 하드웨어 기반의 임베디드 시스템의 주소 공간 레이아웃 랜덤화 방법 및 이를 위한 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101341414B1 (ko) * 2009-12-18 2013-12-13 한국전자통신연구원 임베디드 운영체제 커널의 인터럽트 처리 모드 결정 방법
KR20200064702A (ko) 2018-11-29 2020-06-08 한국전자통신연구원 하드웨어 기반의 임베디드 시스템의 주소 공간 레이아웃 랜덤화 방법 및 이를 위한 장치

Similar Documents

Publication Publication Date Title
US6948034B2 (en) Method for use of stack
US7877091B2 (en) Method and system for executing a container managed application on a processing device
US10489204B2 (en) Flexible in-order and out-of-order resource allocation
US9043806B2 (en) Information processing device and task switching method
CN108021449B (zh) 一种协程实现方法、终端设备及存储介质
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
US11347563B2 (en) Computing system and method for operating computing system
US11231852B2 (en) Efficient sharing of non-volatile memory
CN115421787A (zh) 指令执行方法、装置、设备、系统、程序产品及介质
US6226725B1 (en) Method and system in a data processing system for the dedication of memory storage locations
CN117194055B (zh) Gpu显存申请及释放的方法、装置及存储介质
CN112506676B (zh) 进程间的数据传输方法、计算机设备和存储介质
US20180180674A1 (en) Embedded firmware content tracing
CN100349121C (zh) 嵌入式并行计算系统以及嵌入式并行计算方法
CN110245027B (zh) 一种进程间通信的方法和设备
KR20050043299A (ko) 임베디드 시스템에서 동적 할당 메모리를 사용하여인터럽트를 처리하기 위한 장치 및 방법
US6675238B1 (en) Each of a plurality of descriptors having a completion indicator and being stored in a cache memory of an input/output processor
EP2277109B1 (en) Operating system fast run command
JP2018120307A (ja) アクセラレータ処理管理装置、ホスト装置、アクセラレータ処理実行システム、方法およびプログラム
CN111966472A (zh) 一种工业实时操作系统的进程调度方法及系统
CN112488293B (zh) 运行深度学习网络的方法及装置
CN112041817A (zh) 用于管理借助于加速器装置的硬件加速的请求的方法和节点
US20230088939A1 (en) Processing system that increases the capacity of a very fast memory
WO2023030173A1 (zh) 一种管理动态库的方法及相应装置
US20230195651A1 (en) Host device performing near data processing function and accelerator system including the same

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination