KR100615450B1 - 임베디드 시스템의 툴체인 구성 및 실행 방법, 그리고 이를이용한 이동 단말 장치 - Google Patents

임베디드 시스템의 툴체인 구성 및 실행 방법, 그리고 이를이용한 이동 단말 장치 Download PDF

Info

Publication number
KR100615450B1
KR100615450B1 KR1020050027522A KR20050027522A KR100615450B1 KR 100615450 B1 KR100615450 B1 KR 100615450B1 KR 1020050027522 A KR1020050027522 A KR 1020050027522A KR 20050027522 A KR20050027522 A KR 20050027522A KR 100615450 B1 KR100615450 B1 KR 100615450B1
Authority
KR
South Korea
Prior art keywords
embedded system
host computer
mobile terminal
communication interface
file system
Prior art date
Application number
KR1020050027522A
Other languages
English (en)
Other versions
KR20060066578A (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 한국전자통신연구원
Publication of KR20060066578A publication Critical patent/KR20060066578A/ko
Application granted granted Critical
Publication of KR100615450B1 publication Critical patent/KR100615450B1/ko

Links

Images

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 임베디드 시스템의 툴체인 구성 및 실행 방법, 그리고 이를 이용한 이동 단말 장치에 관한 것이다.
본 발명에서는 임베디드 시스템의 플래시 메모리에 저장된 부트로더 파일 및 커널 파일의 실행에 따라 커널 자동 부팅이 수행되고, 상기 임베디드 시스템의 요청에 따라 호스트 컴퓨터로부터 툴체인이 포함된 루트 파일 시스템이 임베디드 시스템에 마운트된다. 개발자 장치로부터의 컴파일 요청에 따라, 임베디드 시스템은 호스트 컴퓨터의 루트 파일 시스템의 툴체인 영역에 저장되어 있는 프로그램 소스를 읽어와서 컴파일시키고, 콘솔 터미널(콘솔 장치)의 임베디드 시스템의 커널 프롬프트 라인에서 이미 컴파일된 실행 파일을 실행시키고 그 결과를 콘솔 장치 화면을 통하여 표시하여 확인할 수 있도록 한다.
따라서, 호스트 컴퓨터와 다른 프로세서를 사용하는 임베디드 시스템용 프로그램을 호스트 컴퓨터에서 컴파일하지 않고 직접 임베디드 시스템에서 컴파일함으로써, 컴파일 및 실행오류를 최소화시킬 수 있다.
이동 단말 장치, 임베디드시스템, 툴체인, 컴파일, 루트파일시스템

Description

임베디드 시스템의 툴체인 구성 및 실행 방법, 그리고 이를 이용한 이동 단말 장치{TOOL-CHAIN CONFIGURATION AND OPERATION METHOD FOR THE EMBEDDED SYSTEM}
도 1은 본 발명의 실시 예에 따른 임베디드 시스템의 소프트웨어 개발을 위한 장치들의 네트워크 연결도이다.
도 2는 도 1에 도시된 각 장치들의 구조도이다.
도 3은 본 발명의 실시 예에 따른 호스트 컴퓨터에서 이동 단말 장치용 툴체인을 생성하는 과정을 나타낸 흐름도이다.
도 4는 본 발명의 실시 예에 따라 툴체인을 이동 단말 장치에 마운트시키고 실행시키는 과정을 나타낸 흐름도이다.
본 발명은 임베디드(embedded) 시스템에 관한 것으로, 더욱 상세하게 말하자면 임베디드 시스템의 툴체인(tool-chain) 구성 및 실행 방법, 그리고 이를 이용한 이동 단말 장치에 관한 것이다.
일반적으로, 임베디드 시스템(Embedded System)이란 미리 정해진 특정 기능 을 수행하기 위해 컴퓨터의 하드웨어와 소프트웨어가 조합된 전자 제어 시스템을 말하며, 필요에 따라서는 일부 기계가 포함될 수 있다. 즉, 우리 생활에서 쓰이는 각종 전자 기기, 가전제품, 제어장치 등은 단순히 회로로만 구성된 것이 아니라 마이크로컨트롤러(또는 마이크로 프로세서)가 내장되어 있고, 이 마이크로컨트롤러를 구동하여 특정한 기능을 수행하도록 프로그램이 내장되어 있는 시스템을 가리킨다. 쉽게 주위에서 볼 수 있는 임베디드 시스템으로는 예를 들면, DVD 플레이어, 셋탑박스, 이동 단말 장치, MP3 플레이어, 캠코더, 디지털 카메라, 냉장고, 세탁기와 같은 가전기기가 있다. 뿐만 아니라, 승강기, 항공기, 의료기기, 자동차, 공장제어, 통신 장비(교환기, 라우터 등)도 임베디드 시스템이다.
초기의 임베디드 시스템은 그 구성이 매우 단순하였으며, 4비트/8비트 컨트롤러에 제한된 동작을 하도록 하는 소프트웨어가 탑재된 시스템이 대부분이었다. 그러나, 요즘은 32비트 마이크로프로세서와 디지털 신호 처리기(DSP: Digital Signal Processor)가 일반적으로 사용됨에 따라 사용영역이 넓어지고 그에 따른 고성능의 소프트웨어도 함께 발달하게 되었다.
이러한 임베디드 시스템의 응용 분야가 다양해지면서, 예전에는 단순했던 임베디드 소프트웨어가 점점 더 복잡하고 다양한 기능을 처리하게 되었으며, 임베디드 시스템 제조업자들은 임베디드 소프트웨어를 빨리 개발하여 프로젝트 기간을 단축하는데 반드시 필요한 임베디드 소프트웨어 개발 환경을 강력히 원하고 있다.
임베디드 시스템은 대개 한정된 자원을 갖고 있기 때문에 임베디드 소프트웨어 개발 환경은 대개 호스트와 타겟으로 구성되며, 타겟에는 최소한의 개발 도구만 있고, 대부분의 도구는 자원이 풍부한 호스트에 존재한다. 임베디드 소프트웨어 개발 환경은 자원이 한정된 타겟에서 실행될 프로그램을 편리하고 빨리 개발할 수 있게 해야 한다.
일반적으로, 임베디드 시스템의 소프트웨어 개발시 호스트 컴퓨터에서 크로스 툴체인(cross tool chain)을 이용하여 생성된 프로그램 바이너리 코드를 해당 임베디드 시스템의 플래시 메모리에 기록한 다음, 이후 상기 코드를 메인 메모리에 로딩시켜 실행한다.
그런데, 호스트 컴퓨터와 임베디드 시스템의 프로세서가 다른 경우에 위에 기술된 바와 같이 임베디드 시스템용 프로그램을 호스트 컴퓨터에서 크로스 컴파일하고 임베디드 시스템의 파일 기록 매체인 플래시 메모리에 저장한 후 실행시키면, 툴체인의 설비 및 라이브러리를 참조하지 않고 호스트 컴퓨터용 컴파일러 설비 및 라이브러리를 참조하게 되는 경우가 종종 발생하여, 크로스 컴파일시 오류가 발생될 수 있다.
그러므로 본 발명이 이루고자 하는 기술적 과제는 임베디드 시스템의 소프트웨어 개발시 임베디드 시스템 상에서 툴체인을 이용하여 직접 개발된 프로그램을 컴파일할 수 있도록 하여, 컴파일 및 실행 오류를 최소화하고자 하는데 있다.
특히, 호스트 컴퓨터와 다른 프로세서를 사용하는 임베디드 시스템의 프로그램을 호스트 컴퓨터의 임베디드 시스템을 위한 루트 네트워크 파일 시스템에 반영하여, 상기 프로그램을 임베디드 시스템의 메모리에 저장하지 않아도 임베디드 시 스템이 상기 프로그램을 실행할 수 있도록 하는데 있다.
이러한 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 임베디드 시스템의 툴체인 구성 및 실행 방법은, 로컬 네트워크를 통하여 호스트 컴퓨터, 콘솔 장치, 그리고 개발자 장치와 연결되어 있는 임베디드 시스템에서 툴체인을 구성하고 실행시키는 방법에서, a) 상기 임베디드 시스템에 저장된 부트로더 파일 및 커널 파일의 실행에 따라 커널 자동 부팅이 수행되는 단계; b) 상기 임베디드 시스템의 요청에 따라 상기 호스트 컴퓨터로부터 툴체인이 포함된 루트 파일 시스템(이하, 제1 루트 파일 시스템이라고 명명함)이 상기 임베디드 시스템에 마운트되는 단계; c) 상기 개발자 장치로부터의 컴파일 요청에 따라 상기 임베디드 시스템에 마운트된 루트 파일 시스템(이하, 제2 루트 파일 시스템이라고 명명함)의 툴체인이, 개발자 장치로부터 제공되어 상기 호스트 컴퓨터의 제1 루트 파일 시스템의 툴체인에 저장되어 있는 프로그램 소스를 읽어와서 컴파일시키는 단계; 및 d) 상기 임베디드 시스템이 상기 컴파일 결과를 콘솔 장치로 제공하여 개발자가 확인할 수 있도록 하는 단계를 포함한다.
또한 본 발명의 다른 특징에 따른 이동 단말 장치는, 로컬 네트워크를 통하여 호스트 컴퓨터, 콘솔 장치, 그리고 개발자 장치와 연결되어 있는 이동 단말 장치에서, 상기 호스트 컴퓨터와의 데이터 송수신을 수행하는 제1 인터페이스; 상기 콘솔 장치와의 데이터 송수신을 수행하는 제2 인터페이스; 상기 호스트 컴퓨터로부터 제공받은 부트로더 파일, 커널 파일 이미지 파일이 저장되어 있는 플래시 메모 리; 상기 플래시 메모리에 저장된 각 파일들이 로딩되어 구동되는 메인 메모리; 상기 부트로더 파일 및 커널 파일의 구동에 따라 자동 커널 부팅이 이루어지면, 상기 호스트 컴퓨터로부터 툴체인이 포함된 루트 파일 시스템을 제공받아 루트에 마운트시키는 중앙 처리 장치를 포함하고, 상기 개발자 장치로부터 전달되는 명령에 따라 상기 루트에 마운트된 루트 파일 시스템의 툴체인이, 개발자 장치로부터 제공되어 상기 호스트 컴퓨터의 루트 파일 시스템의 툴체인에 저장되어 있는 프로그램 소스를 읽어와서 컴파일시킨다.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 가장 바람직한 실시 예를 첨부된 도면을 참조로 하여 상세히 설명한다. 이하의 실시 예는 임베디드 시스템으로 임베디드 이동 단말 장치를 예로 하여 본 발명에 따른 툴체인 구성 및 실행 방법을 설명하지만, 본 발명에 따른 임베디드 시스템은 이동 단말 장치에 한정되지 않는다.
본 발명의 실시 예에서는 소프트웨어 개발시, 개발 또는 수정된 프로그램을 호스트 컴퓨터가 아니라 임베디드 시스템 즉, 임베디드 이동 단말 장치에서 컴파일한다. 그리고, 컴파일 과정에 따라 생성된 프로그램 바이너리 코드를 이동 단말 장치의 플래시 메모리에 기록하지 않고 루트 네트워크 파일 시스템에 직접 반영하여 이동 단말 장치에서 실행시킨다.
이에 따라 임베디드 시스템인 이동 단말 장치의 소프트웨어 개발 단계에서 호스트 컴퓨터와 임베디드 시스템인 이동 단말 장치의 프로세서가 다른 경우에, 프로그램 컴파일시 호스트 컴퓨터용 컴파일러 설비 및 라이브러리를 참조하는 것을 차단시켜, 컴파일 및 실행 오류를 방지할 수 있다. 또한 최적화된 프로그램 바이너리 코드만을 이동 단말 장치의 플래시 메모리에 기록할 수 있으므로, 불필요한 플래시 메모리로의 코드 기록 횟수를 감소시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 이동 단말 장치의 소프트웨어 개발을 위한 네트워크 구성도를 나타낸 도이며, 도 2는 각 장치들의 구조도이다.
첨부한 도 1에 도시되어 있듯이, 본 발명의 실시 예에서 임베디드 이동 단말 장치의 소프트웨어 개발을 위하여, 이동 단말 장치(100), 호스트 컴퓨터(200), 콘솔 장치(300), 이동 단말 소프트웨어 개발자 장치(400)가 로컬 네트워크로 연결된다. 구체적으로, 이동 단말 장치(100)와 호스트 컴퓨터(200)는 JTAG(joint test action group) 통신 인터페이스를 통하여 피어-투-피어(peer-to-peer)로 연결되고, 또한 네트워크 인터페이스를 통하여 연결된다. 이동 단말 장치(100)와 콘솔 장치(300)는 시리얼 통신 인터페이스(130)를 통하여 피어-투-피어로 연결된다.
여기서, 타겟 디바이스인 이동 단말 장치(100)는 도 2에 도시되어 있듯이, 중앙 처리 장치(110), 메인 메모리(120), 플래시 메모리(130), 시리얼 통신 인터페이스(140), JTAG 통신 인터페이스(150), 네트워크 통신 인터페이스(160), 사용자 인터페이스를 위한 입출력 장치 통신 인터페이스(170)를 포함하는 형태로 이루어진다. 여기서 플래시 메모리(130)는 부트로더 이미지, 커널 이미지 저장을 위한 영역을 포함한다.
또한 도 2에 도시되어 있듯이, 호스트 컴퓨터(200)도 타겟 디바이스와 동일한 하드웨어 환경을 구비하여, 중앙 처리 장치(210), 메인 메모리(220), 플래시 메 모리(230), 하드디스크(240), 병렬 통신 인터페이스(250), 시리얼 통신 인터페이스(260), 네트워크 통신 인터페이스(270), 입출력 장치 통신 인터페이스(280)로 이루어진다. 그리고 호스트 컴퓨터(200)는 이동 단말용 루트 파일 시스템(RF1)을 포함한다.
또한 콘솔 장치(300)도 중앙 처리 장치(310), 메인 메모리(320), 플래시 메모리(330), 하드디스크(340), 시리얼 통신 인터페이스(350), 네트워크 통신 인터페이스(360), 입출력 장치 통신 인터페이스(370)로 이루어진다.
다음에는 이러한 구조를 토대로 하여 본 발명의 실시 예에 따른 임베디드 이동 단말 장치용 툴체인을 구성하고 이를 실행시켜 프로그램을 컴파일시키는 방법에 대하여 설명한다.
임베디드 이동 단말 장치의 소프트웨어 개발 환경을 구성하기 위하여, 먼저, 이동 단말 장치(100), 호스트 컴퓨터(200), 콘솔 장치(300)의 하드웨어를 도 2에 도시된 바와 같이 구성하고, 이동 단말 소프트웨어 개발자 장치(400)의 하드웨어를 더미 터미널 또는 호스트 컴퓨터 수준의 장치로 구성한다.
이동 단말 장치(100)와 콘솔 장치(300)는 시리얼 통신 인터페이스를 통하여 연결되고, 이동 단말 장치(100)와 호스트 컴퓨터(220) 및, 호스트 컴퓨터(200)와 이동 단말 소프트웨어 개발자 장치(400)가 로컬 네트워크로 각각 연결된다.
이와 같이 각 장치간의 네트워크 연결이 이루어진 후에, 다음과 같이 호스트 컴퓨터(200)로부터 이동 단말 장치(100)로의 이미지 파일 기록 과정이 수행된다.
이동 단말 장치의 실행 환경을 구성하기 위하여, 이동 단말 장치(100)의 플 래시 메모리(130)에 부트로더 이미지, 커널 이미지 저장을 위한 영역을 구성한다. 도 2에 도시되어 있듯이, 이후 호스트 컴퓨터(200)로부터 생성되는 커널 파일, 부트로더 파일이 이미지 형태(131,132)로 이동 단말 장치(100)의 플래시 메모리(130)의 해당 영역에 저장된다. 이러한 이미지 파일 기록 과정은 본 발명의 기술 분야에 공지된 기술임으로 상세한 설명을 생략한다.
이와 같이 각 장치의 하드웨어 구성이 완료되고 네트워크 연결이 이루어지면 크로스 개발 환경을 구축한다. 크로스 개발 환경이란 호스트에 타겟 디바이스용 리눅스를 개발하기 위한 모든 환경을 말한다.
먼저, 해당 중앙 처리 장치에 맞는 툴체인 환경을 구축해야 한다. 툴 체인이란 타겟 디바이스의 소프트웨어 개발을 진행하기 위해 필요한 호스트 시스템의 크로스 컴파일 환경을 말한다. 이러한 툴 체인은 각종 소스들을 컴파일하고 빌드해 실행 바이너리를 생성하는데 필요한 각종 유틸리티 및 라이브러리의 모음으로, binutils(어셈블러, 링커, 그리고 라이브러리 관련 실행 파일들 모음), 커널(Kernel), gcc 컴파일러, glibc(라이브러리와 헤더 파일) 등을 포함하며, 이외에도 gdb와 같은 디버거를 더 포함할 수도 있다.
도 3은 본 발명의 실시 예에 따라 호스트 컴퓨터에서 이동 단말 장치용 툴체인을 생성하는 과정이 도시되어 있다.
호스트 컴퓨터(200)의 중앙 처리 장치(210)는 이동 단말 장치용 툴체인을 생성하기 위하여, 먼저 binutils 소스 컴파일 환경 옵션을 설정한다. binutils는 바이너리 유틸 패키지로서 여러 가지 프로그램이 포함되어 있으며, 주로 실행 파일을 최종적으로 만들고 이에 대한 정보를 제공하는 유틸리티이다. 이러한 binutils를 생성하기 위한 binutils 소스를 컴파일하기 위한 환경 옵션을 설정한 후, 상기 binutils 소스를 컴파일한 결과를 복사할 루트 파일 시스템(RF1) 상에 분산 네트워크 툴체인 디렉토리의 설치 위치를 지정한다. 그리고, 상기 설정된 옵션에 따라 binutils 소스를 컴파일하여 상기 지정된 위치에 설치시킨다(S100).
다음, 이동단말 장치용 툴체인 생성을 위한 부트스트랩 gcc 소스 컴파일 환경 옵션을 지정한다. gcc 소스는 컴파일러인 gcc를 생성하기 위한 소스이다. gcc 컴파일러를 맨 처음 컴파일할 때 필요한 환경이 제대로 갖춰져 있지 않기 때문에 부트스트랩 gcc 컴파일 단계가 요구된다. 즉, 타겟 디바이스와 관련 있는 각종 헤더 파일과 glibc 라이브러리가 없는 상황에서 gcc 크로스 컴파일러를 컴파일할 수 없으므로, 헤더 파일과 라이브러리를 준비할 수 있는 기능만 탑재한 부트스트랩 gcc 컴파일러를 생성한다.
따라서, 호스트 컴퓨터(200)의 중앙 처리 장치(210)는 부트스트랩 gcc 컴파일러 생성을 위한 부트스트랩 gcc 소스 컴파일 환경에 대한 옵션을 설정한 다음, 루트 파일 시스템(RF1) 상에 상기 부트스트랩 gcc 소스를 컴파일한 결과를 복사하기 위한 분산 네트워크 툴체인 디렉토리의 설치 위치를 지정한다. 그리고, 상기 설정된 옵션에 따라 부트스트랩 gcc 소스를 컴파일하여 상기 지정된 위치에 설치시킨다(S110).
또한 호스트 컴퓨터(200)의 중앙 처리 장치(210)는 이동 단말 장치용 gcc 컴파일러를 생성하기 위한 소스로 구성된 gcc 라이브러리 패키지 소스 컴파일 환경 옵션을 지정하고, 루트 파일 시스템(RF1) 상에 gcc 라이브러리 패키지 소스를 컴파일한 결과를 복사할 분산 네트워크 툴체인 디렉토리의 설치 위치를 지정한다. 그리고, 상기 설정된 옵션에 따라 gcc 라이브러리 패키지 소스를 컴파일하여 상기 지정된 위치에 설치시킨다(S120).
또한 호스트 컴퓨터(200)의 중앙 처리 장치(210)는 gcc 컴파일러를 생성하기 위한 소스로 구성된 gcc 소스 컴파일 환경 옵션을 지정하고, 루트 파일 시스템(RF1) 상에 gcc 소스를 컴파일한 결과를 복사할 분산 네트워크 툴체인 디렉토리의 설치 위치를 지정한다. 그리고, 상기 설정된 옵션에 따라 gcc 소스를 컴파일하여 상기 지정된 위치에 설치시킨다(S130). 이러한 분산 네트워크 툴체인 디렉토리가 설치된 루트 파일 시스템이 이동 단말용 루트 파일 시스템(RF1)으로 기능하게 된다.
다음에는 호스트 컴퓨터에서 생성된 이동 단말 장치용 툴체인을 상기 이동 단말 장치에 마운트시키고 실행시키는 과정에 대하여 설명한다.
도 4에 본 발명의 실시 예에 따라 툴체인을 이동 단말 장치에 마운트시키고 실행시키는 과정이 순차적으로 도시되어 있다.
이동 단말 장치(100)와 콘솔 장치(300)가 시리얼 통신 인터페이스를 통하여 연결되고(S200), 이동 단말 장치(100)와 호스트 컴퓨터(220) 및, 호스트 컴퓨터(200)와 이동 단말 소프트웨어 개발자 장치(400)가 로컬 네트워크로 각각 연결된 상태에서(S210), 이동 단말 장치(100)의 커널 부팅 및 루트 파일 시스템 마운트 절차를 수행한다. 이 경우, 각 장치간의 네트워크 연결이 이루어진 후에, 호스트 컴 퓨터(200)로부터 이동 단말 장치(100)로의 파일 기록 과정이 수행되어, 이동 단말 장치(100)의 플래시 메모리(130)에 부트로더 파일, 커널 파일이 각각 저장되어 있다.
이동 단말 장치(100)의 커널 부팅 및 파일 시스템 마운트 절차를 수행하기 위하여, 이동 단말 장치(100)의 전원을 차단한 후 재공급 하여 이동 단말 장치(100)를 커널 자동 부팅 모드로 동작시킨다(S230). 즉, 플래시 메모리(130)에 저장되어 있던 부트로더 이미지(132)가 메인 메모리(120)에 로딩되면서 실행되고, 부트로더는 이동 단말 장치의 하드웨어를 초기화시키며, 플래시 메모리(130)에 저장된 커널 이미지(131)를 메인 메모리(120)로 로딩시킨 다음, 실행 권한을 커널로 인계한다.
호스트 컴퓨터(200)는 이러한 이동 단말 장치(100)의 커널 자동 부팅 과정 중에 루트 파일 시스템(RF1)이 이동 단말 장치(100)의 루트에 마운트되도록 파일 시스템 테이블 환경 파일을 구성한다
커널 자동 부팅 모드가 수행되면 커널 이미지(132)는 호스트 컴퓨터(200)로 툴체인이 포함된 루트 파일 시스템의 마운트를 요청한다. 이에 따라, 호스트 컴퓨터(200)는 루트 파일 시스템(RF1)의 디렉토리를 엑스포트(export)시켜서, 툴체인이 포함된 루트 파일 시스템(RF1)이 이동 단말 장치(100)의 루트에 마운트되도록 한다(S340∼S350).
이동 단말 장치(100)에 마운트된 루트 파일 시스템도 네트워크 파일 시스템으로 기능하게 되며, 이를 툴체인이 포함된 루트 파일 시스템(RF2)으로 명명할 수 있다. 마운트된 루트 파일 시스템(RF2)과 호스트 컴퓨터에 존재하는 임베디스 시스템을 위한 루트 파일 시스템(RF1)은 동일한 파일 시스템으로 다루어지기 때문에, 마운트된 루트 파일 시스템(RF2)에 변경을 가하면 호스트 컴퓨터에 존재하는 임베디드 시스템을 위한 루트 파일 시스템(RF1)에도 직접 변경이 반영된다. 따라서 이동 단말 장치(100)의 메인 메모리(120)와 중앙 처리 장치(110)의 상호 협조하에서 이동 단말 장치(100)에 마운트된 루트 파일 시스템(RF2)에 포함된 툴체인으로 이동단말 장치용 프로그램을 컴파일 할 수 있게 된다.
이후 개발자는 이동 단말 소프트웨어 개발자 장치(400)를 통하여 호스트 컴퓨터(200)에 원격으로 접속하여, 개발된 이동 단말 장치용 프로그램 소스를 루트 파일 시스템(RF1)의 툴체인 영역의 서브 디렉토리에 복사한다. 이와 같이 루트 파일 시스템(RF1)의 툴체인 영역의 소정 서브 디렉토리에 상기 프로그램 소스가 복사되어, 이동 단말 장치(100)에 마운트된 루트 파일 시스템(RF2)의 툴체인에 반영될 수 있다(S270).
다음, 개발자는 콘솔 장치(300)를 통하여 이동 단말 장치(100)로 마운트되어 있는 루트 파일 시스템(RF2)의 툴체인으로 하여금 상기 프로그램 소스를 컴파일하도록 명령어를 입력한다(S280).
콘솔 장치(300)를 통하여 입력된 컴파일 명령어는 시리얼 인터페이스(350,140)를 통하여 이동 단말 장치(100)로 제공되며(S290), 이동 단말 장치(100)의 중앙 처리 장치(110)는 마운트된 루트 파일 시스템(RF2)의 툴체인 영역을 메인 메모리(120)로 로딩시켜 실행시키고, 실행에 따라 루트 파일 시스템(RF2)의 툴체인 은 호스트 컴퓨터(200)의 루트 파일 시스템(RF1)의 툴체인에 저장되어 있는 프로그램 소스를 읽어와서 컴파일한다(S300).
이와 같이 이동 단말 장치용 프로그램이 이동 단말 장치에 마운트된 툴체인을 통하여 컴파일되면, 중앙 처리 장치(110)는 상기 프로그램 소스의 컴파일 실행 결과를 콘솔 장치(300)로 전달하고, 개발자는 컴파일 완료에 따라 해당 프로그램 실행을 지시한다(S310). 이에 따라 콘솔 장치(300)로부터 제공되는 프로그램 실행 명령에 따라 이동 단말 장치(100)의 중앙 처리 장치(110)가 컴파일된 프로그램을 이동 단말 장치 상에서 실행시키고, 그 실행 결과를 콘솔 장치(300)로 전달한다(S320∼S330). 그러므로 개발자는 콘솔 장치(300)를 통하여 프로그램 실행 상태를 모니터링할 수 있다.
위에 기술된 방법은 컴퓨터가 읽을 수 있는 기록 매체에 저장되는 프로그램 형태로 구현될 수 있다. 기록 매체로는 컴퓨터에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치가 포함될 수 있으며, 예를 들어, CD-ROM, 자기 테이프, 플로피 디스크 등이 있으며, 또한 캐리어 웨이브(예컨대 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다.
비록, 본 발명이 가장 실제적이며 바람직한 실시 예를 참조하여 설명되었지만, 본 발명은 상기 개시된 실시 예에 한정되지 않으며, 후술되는 특허청구범위 내에 속하는 다양한 변형 및 등가물들도 포함한다.
이상 위에 기술된 바와 같은 본 발명에 따르면, 호스트 컴퓨터와 다른 프로 세서를 사용하는 임베디드 시스템 프로그램을 호스트 컴퓨터에서 컴파일 하지 않고 직접 임베디드 시스템에서 컴파일함으로써, 컴파일 및 실행 오류를 최소화시킬 수 있다.
또한 분산 네트워크 파일 시스템 기술을 이용하여 소프트웨어 개발 단계에서 수정된 프로그램 바이너리 코드를 이동 단말 즉, 임베디드 시스템의 플래시 메모리에 기록하지 않고 루트 파일 시스템에 반영하여, 이후 로컬 네트워크를 통하여 접속된 임베디드 시스템에서 프로그램 바이너리 코드를 실행할 수 있도록 함으로써, 임베디드 시스템 소프트웨어 개발 완료 단계에서 최적화된 프로그램 바이너리 코드 파일만을 임베디드 시스템의 플래시 메모리에 기록할 수 있다.
그에 따라, 소프트웨어 개발시마다 임베디드 시스템의 플래시 메모리에 기록하는 횟수를 감소시킬 수 있다. 또한 플래시 메모리로의 불필요한 정보 기록 횟수의 감소에 따라 플래시 메모리의 수명을 보다 연장시킬 수 있다.

Claims (8)

  1. 로컬 네트워크를 통하여 호스트 컴퓨터, 콘솔 장치, 그리고 개발자 장치와 연결되어 있는 임베디드 시스템에서 툴체인을 구성하고 실행시키는 방법에서,
    a) 상기 임베디드 시스템에 저장된 부트로더 파일 및 커널 파일의 실행에 따라 커널 자동 부팅이 수행되는 단계;
    b) 상기 임베디드 시스템의 요청에 따라 상기 호스트 컴퓨터로부터 툴체인이 포함된 루트 파일 시스템(이하, 제1 루트 파일 시스템이라고 명명함)이 상기 임베디드 시스템에 마운트되는 단계;
    c) 상기 개발자 장치로부터의 컴파일 요청에 따라 상기 임베디드 시스템에 마운트된 루트 파일 시스템(이하, 제2 루트 파일 시스템이라고 명명함)의 툴체인이, 개발자 장치로부터 제공되어 상기 호스트 컴퓨터의 제1 루트 파일 시스템의 툴체인에 저장되어 있는 프로그램 소스를 읽어와서 컴파일시키는 단계; 및
    d) 상기 임베디드 시스템이 상기 컴파일 결과를 콘솔 장치로 제공하여 개발자가 확인할 수 있도록 하는 단계
    를 포함하는 임베디드 시스템의 툴체인 구성 및 실행 방법.
  2. 제1항에 있어서
    상기 콘솔 장치를 통하여 개발자 장치로부터 제공되는 실행 명령에 따라 상기 임베디드 시스템이 컴파일된 프로그램 소스를 실행시키는 단계; 및
    상기 임베디드 시스템이 프로그램 실행 결과를 상기 콘솔 장치로 제공하여 개발자가 확인하도록 하는 단계
    를 더 포함하는 임베디드 시스템의 툴체인 구성 및 실행 방법.
  3. 제1항 또는 제2항에 있어서
    상기 호스트 컴퓨터에서 임베디드 시스템용 툴체인 생성을 위하여 binutils 소스 컴파일 환경 옵션을 설정하고, 상기 binutils 소스를 컴파일한 결과를 복사할 제1 루트 파일 시스템 상에 툴체인 디렉토리의 설치 위치를 지정하는 단계;
    부트스트랩 gcc 소스 컴파일 환경 옵션을 지정하고, 상기 제1 루트 파일 시스템 상에 상기 부트스트랩 gcc 소스를 컴파일한 결과를 복사하기 위한 툴체인 디렉토리의 설치 위치를 지정하는 단계;
    gcc 라이브러리 패키지 소스 컴파일 환경 옵션을 지정하고, 상기 제1 루트 파일 시스템 상에 gcc 라이브러리 패키지 소스를 컴파일한 결과를 복사할 툴체인 디렉토리의 설치 위치를 지정하는 단계; 및
    gcc 소스 컴파일 환경 옵션을 지정하고, 상기 제1 루트 파일 시스템 상에 gcc 소스를 컴파일한 결과를 복사할 툴체인 디렉토리의 설치 위치를 지정하는 단계
    를 더 포함하고,
    상기 툴체인 디렉토리들의 설치에 따라 상기 제1 루트 파일 시스템이 이동 단말 장치용 툴체인을 포함하는 루트 파일 시스템으로 기능하는 임베디드 시스템의 툴체인 구성 및 실행 방법.
  4. 제1항 또는 제2항에 있어서
    상기 임베디드 시스템의 하드웨어를 메인 메모리, 플래쉬 메모리, 시리얼 통신 인터페이스, JTAG 통신 인터페이스, 네트워크 통신 인터페이스, 입출력 장치 통신 인터페이스로 구성하는 단계;
    상기 호스트 컴퓨터의 하드웨어를 메인 메모리, 플래쉬 메모리, 하드디스크, 네트워크 통신 인터페이스, 시리얼 통신 인터페이스, 병렬 통신 인터페이스, 입출력 장치 통신 인터페이스로 구성하는 단계; 및
    상기 콘솔 장치의 하드웨어를 메인 메모리, 플래쉬 메모리, 하드디스크, 네트워크 통신 인터페이스, 시리얼 통신 인터페이스, 입출력 장치 통신 인터페이스로 구성하는 단계
    를 더 포함하는 임베디드 시스템의 툴체인 구성 및 실행 방법.
  5. 제1항 또는 제2항에 있어서
    상기 임베디드 시스템은 이동 단말 장치인 임베디드 시스템의 툴체인 구성 및 실행 방법.
  6. 로컬 네트워크를 통하여 호스트 컴퓨터, 콘솔 장치, 그리고 개발자 장치와 연결되어 있는 이동 단말 장치에서,
    상기 호스트 컴퓨터와의 데이터 송수신을 수행하는 제1 인터페이스;
    상기 콘솔 장치와의 데이터 송수신을 수행하는 제2 인터페이스;
    상기 호스트 컴퓨터로부터 제공받은 부트로더 파일, 커널 파일의 이미지 파일이 저장되어 있는 플래시 메모리;
    상기 플래시 메모리에 저장된 각 파일들이 로딩되어 구동되는 메인 메모리; 및
    상기 부트로더 파일 및 커널 파일의 구동에 따라 자동 커널 부팅이 이루어지면, 상기 호스트 컴퓨터로부터 툴체인이 포함된 루트 파일 시스템을 제공받아 루트에 마운트시키는 중앙 처리 장치
    를 포함하고,
    상기 개발자 장치로부터 전달되는 명령에 따라 상기 루트에 마운트된 루트 파일 시스템의 툴체인이, 개발자 장치로부터 제공되어 상기 호스트 컴퓨터의 루트 파일 시스템의 툴체인에 저장되어 있는 프로그램 소스를 읽어와서 컴파일시키는 이동 단말 장치.
  7. 제6항에 있어서
    상기 중앙 처리 장치는 상기 프로그램 소스의 컴파일 결과를 상기 제2 인터페이스를 통하여 상기 콘솔 장치로 제공하는 이동 단말 장치.
  8. 제6항 또는 제7항에 있어서
    상기 제1 통신 인터페이스는 JTAG 통신 인터페이스이고, 상기 제2 통신 인터 페이스는 시리얼 인터페이스이며, 상기 이동 단말 장치는 제1 및 제2 통신 인터페이스를 통하여 상기 호스트 컴퓨터 및 콘솔 장치와 피어-투-피어(peer-to-peer)로 연결되는 이동 단말 장치.
KR1020050027522A 2004-12-13 2005-04-01 임베디드 시스템의 툴체인 구성 및 실행 방법, 그리고 이를이용한 이동 단말 장치 KR100615450B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20040104853 2004-12-13
KR1020040104853 2004-12-13

Publications (2)

Publication Number Publication Date
KR20060066578A KR20060066578A (ko) 2006-06-16
KR100615450B1 true KR100615450B1 (ko) 2006-08-28

Family

ID=37161379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050027522A KR100615450B1 (ko) 2004-12-13 2005-04-01 임베디드 시스템의 툴체인 구성 및 실행 방법, 그리고 이를이용한 이동 단말 장치

Country Status (1)

Country Link
KR (1) KR100615450B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100853941B1 (ko) * 2006-12-27 2008-08-25 (주)아이디스 멀티미디어 저장장치와 데이터 복구방법
CN101441592A (zh) 2007-11-20 2009-05-27 鸿富锦精密工业(深圳)有限公司 嵌入式系统的测试系统及方法
KR102156371B1 (ko) * 2013-11-27 2020-09-15 한국전자통신연구원 네이티브 빌드 기반의 임베디드 소프트웨어 개발 환경을 지원하기 위한 임베디드 소프트웨어 개발 도구 제공 방법 및 장치
CN114168151B (zh) * 2021-12-10 2024-10-11 北京字节跳动网络技术有限公司 基于容器的程序编译方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10161885A (ja) 1996-11-26 1998-06-19 Hewlett Packard Co <Hp> 遠隔コンパイル方法およびシステム
KR20010112690A (ko) * 2000-06-12 2001-12-21 이형원 컴퓨터 프로그램 개발 자원을 네트워크 상에서 연동하는방법
KR100422069B1 (ko) 2001-07-25 2004-03-12 한국전자통신연구원 무선통신을 이용한 교차 개발 장치 및 그 방법
KR20040101031A (ko) * 2003-05-22 2004-12-02 니폰 덴키 가라스 가부시키가이샤 플라즈마 디스플레이 패널용 유전체 재료
KR20040101946A (ko) * 2003-05-27 2004-12-03 삼성전자주식회사 비자성 니켈분말 제조 방법
KR20040103556A (ko) * 2003-05-29 2004-12-09 삼성전자주식회사 반도체 소자 제조에 사용되는 증착 장치
KR20050013661A (ko) * 2005-01-17 2005-02-04 김준범 TCP/IP Socket 통신을 이용한 ARM 컴파일러 전용, 분산 컴파일 시스템

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10161885A (ja) 1996-11-26 1998-06-19 Hewlett Packard Co <Hp> 遠隔コンパイル方法およびシステム
KR20010112690A (ko) * 2000-06-12 2001-12-21 이형원 컴퓨터 프로그램 개발 자원을 네트워크 상에서 연동하는방법
KR100422069B1 (ko) 2001-07-25 2004-03-12 한국전자통신연구원 무선통신을 이용한 교차 개발 장치 및 그 방법
KR20040101031A (ko) * 2003-05-22 2004-12-02 니폰 덴키 가라스 가부시키가이샤 플라즈마 디스플레이 패널용 유전체 재료
KR20040101946A (ko) * 2003-05-27 2004-12-03 삼성전자주식회사 비자성 니켈분말 제조 방법
KR20040103556A (ko) * 2003-05-29 2004-12-09 삼성전자주식회사 반도체 소자 제조에 사용되는 증착 장치
KR20050013661A (ko) * 2005-01-17 2005-02-04 김준범 TCP/IP Socket 통신을 이용한 ARM 컴파일러 전용, 분산 컴파일 시스템

Also Published As

Publication number Publication date
KR20060066578A (ko) 2006-06-16

Similar Documents

Publication Publication Date Title
US9111033B2 (en) Compiling source code for debugging with user preferred snapshot locations
US7340726B1 (en) Systems and methods for performing static analysis on source code
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
CN100555218C (zh) 用于改善片上仿真系统中高级语言的仿真速度的装置和方法
US8266588B2 (en) Creating projects in a rational application developer workspace
US8910126B2 (en) Compiling source code for debugging with variable value restoration based on debugging user activity
US20070011494A1 (en) System and method for building software package for embedded system
Hayden et al. State transfer for clear and efficient runtime updates
US9146713B2 (en) Tool composition for supporting openCL application software development for embedded system and method thereof
JPH11232138A (ja) エミュレーション方法
KR20060047639A (ko) 가상 환경으로부터 하드웨어로의 직접적인 액세스를제공하는 컴퓨터 판독가능 매체
CN102402427A (zh) 一种Java应用程序的更新方法及装置
US10789192B2 (en) System and method for programming data transfer within a microcontroller
US20020078434A1 (en) Run-time modules for dynamically adjusting computer operation
KR20190090810A (ko) 셀프 디버깅
KR100615450B1 (ko) 임베디드 시스템의 툴체인 구성 및 실행 방법, 그리고 이를이용한 이동 단말 장치
CN115629971A (zh) 一种应用的开发系统和开发方法
CN112527365A (zh) 应用程序更新方法、非易失存储器、存储介质及家用电器
KR100656928B1 (ko) 임베디드 시스템의 툴체인 실행 방법
TWI515656B (zh) 程式安裝方法及裝置
KR100665134B1 (ko) 임베디드 시스템의 루트 파일 시스템 구성 및 실행 방법,그리고 이를 이용한 이동 단말 장치
JP2008135008A (ja) プログラムモジュール検証方式
KR100658564B1 (ko) 임베디드 시스템의 소프트웨어 개발 및 실행 방법, 그리고이를 이용한 이동 단말 장치
KR20240139310A (ko) 임베디드 시스템의 소프트웨어 개발 및 실행 방법, 그리고이를 이용한 이동 단말 장치
Lawall et al. Tarantula: Killing driver bugs before they hatch

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20091228

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee