KR20020032256A - 통합 임베디드 시스템 및 이의 구현 방법 - Google Patents
통합 임베디드 시스템 및 이의 구현 방법 Download PDFInfo
- Publication number
- KR20020032256A KR20020032256A KR1020000063325A KR20000063325A KR20020032256A KR 20020032256 A KR20020032256 A KR 20020032256A KR 1020000063325 A KR1020000063325 A KR 1020000063325A KR 20000063325 A KR20000063325 A KR 20000063325A KR 20020032256 A KR20020032256 A KR 20020032256A
- Authority
- KR
- South Korea
- Prior art keywords
- program
- target
- microcontroller
- personal computer
- target board
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 통합 임베디드 시스템 및 이의 구현 방법에 관한 것으로, 본 발명은 통합개발환경을 구축하고, 프로그램 설계자가 입력한 프로그램을 기계어 코드로 변환하여 전송하는 개인용 컴퓨터와; 개인용 컴퓨터에서 전송되는 프로그램을 수신하여 저장하고, 프로그램을 실행하는 타겟 보드; 및 개인용 컴퓨터와 타겟 보드를 연결하며, 개인용 컴퓨터와 타겟 보드간의 데이터를 송수신하는 전용 통신 케이블을 포함한다. 따라서, 초보자들에게 별도의 전문적인 지식과 시간적 노력의 요구 없이 단지 필요한 함수를 호출하여 용이하게 원하는 프로그램을 작성할 수 있는 효과가 있다.
Description
본 발명은 통합 임베디드 시스템 및 이의 구현 방법에 관한 것으로, 보다 상세하게는 개인용 컴퓨터(이하, 'PC'로 약칭함)에서 간이형 크로스 컴파일러(Cross Compiler)로 프로그램을 개발하고 플래시메모리 (Flash Memory)를 내장 또는 외장한 마이크로컨트롤러를 사용하여 ISP(In System Programming) 기능을 구현하여 프로그램 이식(쓰기) 작업을 간단하게 수행하여 설계자가 원하는 작업을 수행할 수 있도록 하는 통합 임베디드 시스템 및 이의 구현 방법에 관한 것이다.
일반적으로, 임베디드 시스템(Embedded System)이란 미리 정해진 특정 기능을 수행하기 위해 컴퓨터의 하드웨어와 소프트웨어가 조합된 전자 제어 시스템을 말하며, 필요에 따라서는 일부 기계가 포함될 수 있다. 즉, 우리 생활에서 쓰이는 각종 전자 기기, 가전제품, 제어장치 등은 단순히 회로로만 구성된 것이 아니라 마이크로컨트롤러(또는 마이크로프로세서)가 내장되어 있고, 이 마이크로컨트롤러를 구동하여 특정한 기능을 수행하도록 프로그램이 내장되어 있는 시스템을 가리킨다. 예를 들면, 종래의 세탁기는 세탁과 탈수의 기능만 갖는 단순한 기기였지만 요즘 시판되는 세탁기는 옷감 종류부터 세탁할 옷의 양, 물의 온도 등을 고려하여 세탁할 수 있도록 되어 있다. 이와 같이, 종래의 시스템으로는 수행하기 힘든 작업을 마이크로컨트롤러와 그에 따른 제어 프로그램이 내장된 임베디드 시스템을 이용하여 간단하게 수행할 수 있다. 이전에 하드웨어로만 구성되었던 시스템들도 기능의 다양화와 개발의 유연성을 증가시키고자 마이크로컨트롤러를 이용하는 것이 추세이다.
초기의 임베디드 시스템은 그 구성이 매우 단순하였으며, 4비트/8비트 컨트롤러에 제한된 동작을 하도록 하는 소프트웨어가 탑재된 시스템이 대부분이었다. 그러나, 요즘은 32비트 마이크로프로세서와 디지털 신호 처리기(DSP: Digital Signal Processor)가 일반적으로 사용됨에 따라 사용영역이 넓어지고 그에 따른 고성능의 소프트웨어도 함께 발달하게 되었다. 또한, 이러한 대형 시스템을 제어하기 위한 임베디드 운영체제(OS)도 등장하게 되었다.
이하, 사용자가 원하는 동작을 수행하는 임베디드 시스템을 구현하기 위한 종래의 임베디드 시스템에 대한 일반적인 프로그래밍 방법 및 이의 실행방법에 대해 설명한다. 임베디드 시스템 개발 방법은 일반적인 PC용 응용 프로그램을 작성하는 것과는 다소 차이가 있다.
먼저, 설계자는 크로스 컴파일러(Cross Compiler)를 구입하여 자신이 원하는 개발 환경에 맞도록 크로스 컴파일러를 셋업해야 한다. 이 때, 크로스 컴파일러의 셋업은 자신이 사용하고자 하는 마이크로컨트롤러의 구조와 구현 방법에 대한 정확한 이해가 선행되어야 한다. 초보자인 경우 CPU 하드웨어에 대한 이해와 컴파일러와 어셈블러 등의 환경 설정 등에 많은 시간을 할애해야 하는 어려움이 따른다. 만약 컴파일러 대신 어셈블러를 사용하는 경우라면 더욱 하드웨어에 의존한 프로그램을 해야 함으로 선행 지식이 많이 필요하다. 다음에, 설계자는 원하는 작업을 수행하기 위한 프로그램을 작성하고, 컴파일시 문법적인 오류가 발생하면 다시 프로그램을 코딩하는 디버깅 단계를 수행한다. 디버깅은 어떤 제품을 개발해 놓고 설계자가 정의한 기능을 완전히 수행하지 못할 때 설계자가 의도한 동작을 수행할 수 있도록 프로그램을 고치는 과정을 말한다. 임의의 프로그램을 작성할 때 작성자의 의도와는 다르게 작동될 수 있으므로 디버깅 단계를 통해 설계자가 원하는 동작을 구현하는 것이 바람직하다. 요즘에는 디버깅을 쉽고 빠르게 수행할 수 있는 디버깅 장비[예컨대, 모니터 프로그램(Monitor Program), 롬에뮬레이터(ROM Emulator), 인서킷 에뮬레이터(ICE: In Circuit Emulator) 등]들이 다수 있기 때문에 이 중 적합한 장비를 선별하여 사용하는 것도 하나의 방법이 될 수 있다. 디버깅 단계를 거친 후에는 작성한 프로그램을 목적 코드로 번역하여 타겟 보드(Target Board : 프로그램이 실제로 실행 될 하드웨어를 말한다.)의 RAM 또는 ROM에 입력한 후 프로그램을 실행시켜 원하는 동작을 하는지 테스트한다. 테스트 결과, 타겟 보드가 원하는 동작을 하지 않은 경우에는 상기의 디버깅 단계를 반복 수행하여 설계자가 원하는 동작을 할 때까지 프로그램을 재코딩 한다. 마지막으로 디버깅 단계를 거쳐서 최종 완성된 프로그램을 타겟 보드의 ROM에 이식한다. 목적 프로그램의 ROM化 에는 일반적으로 롬라이터(ROM Writer)라는 별도의 장비를 이용한다.
디버깅을 보다 효율적으로 수행하기 위한 장비들은 상기한 바와 같이 모니터 프로그램, 롬에뮬레이터, 인서킷 에뮬레이터 등이 있다.
모니터 프로그램은 장비 형태는 아니고 타겟 보드에서 실행되는 간이형 디버깅 툴 프로그램이다. PC에서 만들어진 실행 코드가 HEX 또는 BIN 형태로 변환되면이것을 통신용 프로그램을 이용하여 시리얼 포트를 통해 타겟 보드에 전송하고 타겟 보드의 모니터 프로그램이 이것을 받아 RAM 영역에 실행 코드를 입력한다. 즉, 별도의 장비 없이 프로그램이 타겟 보드에 이식되며, RAM 영역으로 분기하여 프로그램을 수행한다. 수행 결과는 다시 시리얼 통신으로 PC에 전송되거나 특정 메모리 번지의 내용을 확인할 수도 있다. 롬 에뮬레이터는 타겟 보드의 ROM 자리에 대신 위치하여 ROM 역할을 수행하는 것으로 프로그램 이식 이외의 부가 기능을 갖기 어렵다. 반면에 인서킷 에뮬레이터는 CPU 자리에 대신 위치하여 CPU의 역할을 수행하는 것으로 고가의 개발 장비이다. 프로그램의 다운 로딩은 물론 변수 값을 볼 수 있고 브레이크 포인트 설정, 스텝 실행 등이 가능하다.
PC에서 작성된 원시 프로그램을 목적 프로그램으로 변환하는 방식에는 인터프리터(Interpreter) 방식과 컴파일러(Compiler) 방식 등이 있다.
인터프리터 방식은 목적 코드를 바이너리 레벨(즉, 기계어)이 아니라 중간 단계의 결과 코드로 변환한 후, 이를 타겟 보드에 전송하여 메모리에 입력하고 하나씩 해석하여 실행하는 방식이다. 이 방식은 마이컴의 구조를 정확히 이해하지 않더라도 다수의 함수들을 미리 정의하여 설계자가 프로그래밍할 때 정의된 함수를 단지 호출하여 원하는 프로그램을 작성할 수 있다. 이와 같은 인터프리터 방식을 사용하는 제품으로는 미국의 PARALLAX 사의 BASIC STAMP 시리즈와 우리나라의 컴파일테크놀러지 사의 PIC BASIC 등이 있다. 반면에 컴파일러 방식은 목적 코드를 바이너리 레벨의 기계어 코드로 변환하는 방식으로, 타겟 보드에 별도의 내장 프로그램이 필요 없고 바이너리 레벨의 기계어 코드로 변환되기 때문에 실행 속도가 빠르다는 장점이 있다.
그러나, 이와 같은 방식을 사용하는 종래의 임베디드 시스템 개발은 여러 가지 문제점을 내재하고 있다. 첫째, 프로그램 개발이 종료되면 HEX(또는 BIN) 파일을 롬라이터 장비를 통하여 메모리에 입력하여야 하는데, 이 때 타겟 보드에서 ROM 또는 마이크로컨트롤러를 제거한 후 라이팅 한 후 다시 타겟 보드에 설치하여야 하는 불편함이 있다. 둘째, 인터프리터 방식을 이용한 임베디드 시스템은 사용법은 간단하지만 실행 프로그램이 바이너리 코드가 아니므로 명령어를 읽고 해석 및 실행하는데 많은 시간이 소요된다. 또한, 새로운 명령어가 추가되면 인터프리터에도 새로운 명령어에 대한 코드를 추가하여야 하는 문제가 있다. 셋째, 컴파일러 방식을 이용한 임베디드 시스템은 초보자들에게 상당량의 마이크로컨트롤러의 하드웨어와 컴파일러의 소프트웨어에 관한 지식을 요구함으로써 진입 장벽이 있게 되고 초기 개발 시간이 길어 질 수 있는 문제점이 있다.
따라서, 본 발명은 상기한 바와 같은 종래의 제반 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 제1 목적은 초보자도 임베디드 시스템을 간단히 구현할 수 있도록 별도의 환경 설정이 불필요한 전용 크로스 컴파일러가 내장된 윈도우즈 통합개발환경으로 프로그램을 편집하고 컴파일한 후 기계어 코드를 타겟 보드에 전송하는 통합 임베디드 시스템 및 이의 구현 방법을 제공하는 데 있다.
본 발명의 제2 목적은 타겟 보드에 플래시메모리를 사용하여 메모리의 착탈이 필요 없이 전송 받은 기계어 코드를 영구히 기억시키는 ISP 기능을 구현함으로써, 별도의 롬라이터 장비 없이 프로그램을 보존할 수 있고 PC와 분리된 후에도 휴대할 수 있는 통합 임베디드 시스템 및 이의 구현 방법을 제공하는 데 있다.
본 발명의 제3 목적은 컴파일러 방식을 채택하여 프로그래밍에 필요한 함수, 특히 하드웨어와 관련된 부분을 라이브러리 형태로 다수 구현하여 제공함으로써, 마이크로컨트롤러 내부 구조를 모르는 설계자라 하더라도 단지 필요한 함수를 호출하여 원하는 프로그램을 작성할 수 있는 통합 임베디드 시스템 및 이의 구현 방법을 제공하는 데 있다.
도 1은 본 발명에 따른 소규모 프로젝트용 통합 임베디드 시스템의 외부 연결 상태를 보여주는 외관도이고,
도 2는 본 발명에 따른 소규모 프로젝트용 통합 임베디드 시스템의 내부 구성을 보여주는 블록도이고,
도 2a는 본 발명에 적용할 수 있는 통합개발환경의 일 실시예를 나타내는 화면 예시도이고,
도 3은 도 2에 도시된 컴파일러의 내부 구조를 보여주는 블록도이고,
도 4는 본 발명에 따른 통합 임베디드 시스템의 구현 방법을 설명하는 흐름도이고,
도 4a는 본 발명에 따른 타겟 보드의 일 실시예를 나타내는 구성도이다.
♣도면의 주요 부분에 대한 부호의 설명 ♣
110: 사용자 인터페이스 120: 에디터
130: 컴파일러 140: 다운로더
150,210: 통신부 220: 마이크로컨트롤러
230: 전원 공급부 240: 플래시메모리
250: 외부 인터페이스 260: 외부 사용자 추가회로
이와 같은 목적을 달성하기 위한 본 발명은 미리 정해진 특정 기능을 수행하기 위한 하드웨어와 소프트웨어를 조합하여 원하는 작업을 수행하는 임베디드 시스템에 있어서, 통합개발환경을 구축하고, 프로그램 설계자가 입력한 프로그램을 기계어 코드로 변환하여 전송하는 개인용 컴퓨터와; 개인용 컴퓨터에서 전송되는 프로그램을 수신하여 저장하고, 프로그램을 실행하는 타겟 보드; 및 개인용 컴퓨터와 타겟 보드를 연결하며, 개인용 컴퓨터와 타겟 보드간의 데이터를 송수신하는 전용통신 케이블을 포함하는 것을 특징으로 한다.
또한, 본 발명은 미리 정해진 특정 기능을 수행하기 위한 하드웨어와 소프트웨어를 조합하여 원하는 작업을 수행하는 임베디드 시스템의 구현 방법에 있어서, 프로그램을 개발하기 위한 통합개발환경을 실행하는 단계와; 통합개발환경을 이용하여 원시 프로그램을 작성하고, 작성된 원시 프로그램의 오류를 검사하는 단계와; 오류가 발생하면 원시 프로그램을 재코딩하는 디버깅 단계와; 오류가 발생하지 않으면, 작성된 원시 프로그램의 의미 검사를 수행하고 이에 해당하는 중간 코드를 생성하고 중간 코드와 의미적으로 동등한 기계어 코드를 생성하는 단계; 및 목적 프로그램을 생성하고, 목적 프로그램을 다운로딩하여 타겟 보드로 전송하는 단계를 포함하는 것을 특징으로 한다.
이하, 본 발명에 따른 통합 임베디드 시스템 및 이의 구현 방법에 대한 바람직한 실시 예를 첨부된 도면에 의거하여 상세하게 설명하면 다음과 같다.
도 1은 본 발명에 따른 소규모 프로젝트용 통합 임베디드 시스템의 외부 연결 상태를 보여주는 외관도로서, 본 발명의 임베디스 시스템은 PC(100), 타겟 보드(200) 및 전용 통신 케이블(300)로 구성되어 있으며, PC(100)는 프로그램을 작성하는 설계자가 사용하는 일반 개인용 컴퓨터로서, 프로그램에 필요한 기본 도구(예컨대, 키보드 또는 마우스를 포함하는 사용자 인터페이스, 모니터, 하드웨어 등)를 제공한다. 타겟 보드(200)는 프로그램이 직접 실행되는 곳으로 마이크로컨트롤러와 메모리 또는 여러 가지 주변 장치들을 포함하는 제어용 보드이다. 전용 통신케이블(300)은 PC(100)와 타겟 보드(200)간을 연결하기 위한 케이블로서, PC(100)와 타겟 보드(200)간의 데이터 송수신을 기본으로 하고 약간의 제어신호를 포함할 수도 있다.
도 2는 본 발명에 따른 소규모 프로젝트용 통합 임베디드 시스템의 내부 구성을 보여주는 블록도로서, PC(100)는 내부적으로 사용자 인터페이스(110), 에디터 (120), 컴파일러(130), 다운로더(140) 및 통신부(150)를 포함하고, 타겟 보드(200)는 내부적으로 통신부(210), 마이크로컨트롤러(220), 전원 공급부(230), 플래시메모리(240) 및 외부 인터페이스(250)를 포함하며, 외부 사용자 추가회로(400)가 외부 인터페이스(250)와 상호 연결되어 있다.
사용자 인터페이스(110)는 프로그램을 작성하기 위한 입력 수단으로서, 본 발명에서는 키보드 또는 마우스 등을 가리킨다.
에디터(120)는 사용자 인터페이스(110)에 연결되어 있으며, 각종 개발 도구들이 하나의 환경으로 연동되어 프로그램 개발을 용이하게 실현하기 위한 통합개발환경(IDE: Integrated Development Environment)을 구축하는 기능을 수행한다. 통합개발환경은 설계자의 목적에 맞게 구축하는 목적성, 전체적인 레이아웃 또는 네비게이션의 일관성, 설계자가 용이하게 사용하는 편리성, 설계자의 컴퓨터 환경을 고려하는 유연성 등을 고려하여 설계되어야 한다. 본 발명에 적용할 수 있는 통합개발환경의 일 실시예를 나타내는 화면 예시도는 도 2a에 도시되어 있다. 도 2a를 참조하여 설명하면, 본 통합개발환경은 프로그램의 작성, 저장, 편집, 인쇄, 수정작업 등을 수행하기 위한 메뉴바(예컨대, File, Edit, Run, Option, Help)와 이들 메뉴바 중 자주 사용하는 메뉴를 실행하기 위한 단축아이콘 모음과 프로그램의 입력을 디스플레이 하는 에디터 창 및 작성된 프로그램의 에러를 디스플레이 하는 에러메시지 창 등으로 구성되어 있다. 또한, 각각의 메뉴에는 세부 메뉴를 구성하는 서브 메뉴들의 집합으로 구성된다. 도 2a에 도시된 통합개발환경은 개발자의 선택에 의해 자유롭게 변경 및 추가할 수 있다는 것은 본 기술분야의 당업자에게 자명한 사항이다.
컴파일러(130)는 에디터(120)에 연결되어 있으며, 에디터(120)를 통해 프로그램 설계자가 작성한 원시 프로그램을 HEX(또는 BIN) 형태의 기계어로 번역하는 기능을 수행한다. 컴파일러(130)는 번역된 기계어를 타겟에서 수행될 수 있도록 실행 가능한 형태의 프로그램으로 변환해 주고, 해당 프로그램을 할당(allocation), 연결(linking), 재배치(relocation) 및 적재(loading)하는 기능을 또한 포함한다. 본 발명에 따른 컴파일러의 세부 구성에 대한 일 실시예는 도 2b를 참조하여 상세하게 후술한다.
다운로더(140)는 컴파일러(130)에 연결되어 있으며, 목적 프로그램인 HEX(또는 BIN) 파일을 읽어서 통신부(150)를 통하여 타겟 보드(200) 쪽에 전송하는 기능을 수행한다.
통신부(150)는 다운로더(140)에 연결되어 있으며, 타겟 보드(200)의 통신부 (210)와도 상호 연결되어 있다. 통신부(150)는 데이터 송수신과 약간의 제어신호를 포함한 통신 수단으로 PC(100)의 경우 프린터 포트나 COM 포트 등을 말한다. 여기서는 케이블의 간소화를 위하여 시리얼 통신 방식을 사용한다. 통신부(150)에는 시리얼 단자인 RXD, TXD 핀이 달려 있다. 시리얼 통신이란 데이터를 전용 통신 케이블(300)을 통해 한번에 한 비트씩 보내고 받는 방식으로, PC(100)의 시리얼 포트와 타겟 보드를 연결하면 서로 통신을 할 수가 있다. 데이터를 보내는 일과 받는 일, 이 두 가지가 모두 SBUF(serial buffer) 레지스터를 통해 이루어진다. SBUF 레지스터 하나를 가지고 전송과 수신을 다 하는데, 물리적으로는 전송 레지스터, 수신 레지스터가 각각 하나씩 있다. SBUF에 한 바이트를 쓰면(write) 데이터가 전송 레지스터에 쓰여져서 TXD핀을 통해 전송되고, RXD핀을 통해 들어오는 데이터는 일단 수신 레지스터에 저장되어 SBUF를 읽으면(read) 수신 레지스터에 저장되어 있던 내용이 판독되는 것이다.
타겟 보드(200)의 통신부(210)는 PC(100)의 통신부(150)와 전용 통신 케이블 (300)을 통해 상호 연결되어 시리얼 통신을 수행하며, 이 둘은 모두 같은 기능을 수행한다. 다만, 통신부(210)가 수신할 때는 통신부(150)가 전송하고, 통신부(210)가 전송할 때는 통신부(150)가 수신한다는 차이점이 있을 뿐이다.
마이크로컨트롤러(220)는 통신부(210)와 상호 연결되어 있으며, 통신부(210)를 통하여 들어오는 기계어 데이터를 수신하거나 필요한 데이터를 송신하는 역할을 한다. 마이크로컨트롤러(220)에는 연산회로, 제어회로, 레지스터를 내포해 명령을 해독하고, 타겟 보드(200)의 각 구성부가 자신의 역할을 원활하게 수행하도록 제어하는 핵심적인 역할을 한다. 또한, 마이크로컨트롤러(220)에는 동작을 개시하기 위한 전원을 인가하는 전원 공급부(230)가 연결되어 있다.
플래시메모리(240)는 마이크로컨트롤러(220)와 상호 연결되어 있으며, 마이크로컨트롤러(220)에서 수행할 명령어들이 저장되어 있다. 플래시메모리(240)(때로 '플래시 롬'으로도 불린다)는 전원 공급 없이도 내용이 보존되는 비휘발성 메모리로서 블록단위로 내용을 지울 수도 있고, 다시 프로그램 할 수도 있다. 플래시메모리(240)는 EEPROM(또는 E2PROM)의 변형 중 하나인데, 바이트 레벨에서 지울 수도 있고 수정할 수도 있는 EEPROM과는 다르다. 플래시메모리(240)는 데이터를 전기적으로 지웠다가 다시 쓸 수 있다는 장점 때문에 디지털 휴대전화, 디지털 카메라, 랜스위치, 노트북 컴퓨터의 PC 카드, 디지털 셋톱 박스, 내장 컨트롤러 등과 같은다양한 장치들에 사용된다. 마이크로컨트롤러(220)의 종류에 따라서 플래시메모리 (240)가 마이크로컨트롤러(220) 내부에 내장되어 있는 형태도 있다. 플래시메모리 (240)에는 부트 로더(260)가 내장되어 있으며, 부트 로더(260)는 리셋 후 가장 먼저 실행되는 프로그램으로 시스템을 초기화하고 PC와 시리얼 포트 등을 통해 통신할 준비를 한다. PC에서 전송되는 프로그램이 있으면 해당 프로그램을 받아서 플래시메모리(240)에 저장시킨 후 해당 번지로 분기하여 다운로딩된 프로그램이 실행되도록 한다. 만약, 리셋 후 PC에서 아무런 반응이 없으면 전송할 프로그램이 없는 것이므로 정해진 번지로 점프하여 기 저장된 프로그램을 실행한다.
외부 인터페이스(250)는 마이크로컨트롤러(220) 및 외부 사용자 추가회로 (400)와 상호 연결되어 있으며, 마이크로컨트롤러(220)와 외부 사용자 추가회로 (400) 사이에서 통로 역할을 수행한다. 외부 인터페이스(250)는 일반적으로 I/O 포트라고 불리우는 입출력 포트와 타이머, 인터럽트, A/D입력 등의 신호선들을 포함한다. 외부 사용자 추가 회로(400)는 스위치, LED와 LCD등의 디스플레이 장치, 센서, 모터 등을 연결하는 것으로 필요한 전력, 전압, 전류 등을 변환해주는 회로를 포함한다.
도 3은 도 2의 컴파일러의 내부 구조를 보여주는 블록도로서, 본 발명의 컴파일러는 어휘 분석부(310), 구문 분석부(320), 중간 코드 생성부(330)를 포함하는 전단부(A)와 코드 최적화부(340), 목적 코드 생성부(350)를 포함하는 후단부(B)로 이루어져 있다.
어휘 분석기(310)는 원시 프로그램을 읽어 들여 일련의 토큰(token)을 생성하는 기능을 수행한다. 여기에서, 토큰은 문법적으로 의미를 갖는 최소의 단위로서, 프로그램은 토큰의 열로 구성된다. 구문 분석부(320)는 파서(parser)라고도 불리우며, 어휘 분석기(310)에서 전송되는 토큰들을 받아 원시 프로그램에 대한 오류를 검사하는 기능을 수행한다. 중간 코드 생성부(330)는 구문 분석부(320)의 출력인 구문 트리를 수신하여 의미 검사(Semantic Checking)를 수행하고 이에 해당하는 중간 코드를 생성한다.
코드 최적화부(340)는 같은 의미를 유지하면서 코드를 보다 더 효율적으로 생성하는 기능을 수행하며, 이러한 코드 최적화부(340)는 설계자의 선택에 의해 생략할 수 있다. 코드 최적화에 의해 코드 실행 시 기억 공간 또는 실행 시간을 절약할 수 있다. 목적 코드 생성기(350)는 중간 코드를 수신하여 그와 의미적으로 동등한 목적 기계어에 대한 코드를 생성하는 기능을 수행한다. 여기에서, 목적 코드 생성부(350)가 목적 코드를 생성하기 위해서는 중간 코드의 의미와 일치하는 기계 명령어들을 효과적으로 선택하고, 고속의 계산이 가능한 소수의 레지스터들을 효율적으로 사용하여 실행 속도를 개선하고, 각 변수에 대한 기억 장소를 할당하는 작업이 선행되는 것이 바람직하다.
상술한 바와 같은 본 발명에 따른 통합 임베디드 시스템 및 이의 구현 방법에 대한 동작 상태를 첨부된 도면에 의거하여 설명하면 다음과 같다.
도 4는 본 발명에 따른 통합 임베디드 시스템의 구현 방법을 설명하는 흐름도이고, 도 4a는 본 발명에 따른 타겟 보드의 일 실시예를 나타내는 구성도이다. 본 발명의 동작을 설명함에 있어서, LED를 점멸시키기 위해 구현된 타겟 보드를 예를 들어 설명한다. 타겟 보드에는 +5V가 연결되어 있고, TX 단자 및 RX 단자는 PC에 연결하고, LED는 포트 0에 '1'(즉, +5V)을 출력하면 켜지고 '0'(즉, 0V)를 출력하면 꺼지도록 회로를 구성하였다고 가정한다.
먼저, 프로그램 설계자는 자신이 개발하고자 하는 프로그램에 적합한 통합개발환경을 실행한다(S405). 통합개발환경의 일 예시도는 도 2a에 도시되어 있으며, 이를 원용하거나 이와 다르게 구축할 수 있다. 통합개발환경이 구축되면 프로그램 설계자는 임베디드 시스템 개발 프로그램을 가동시키고 에디터 창이 디스플레이 되면 개발하고자 하는 프로그램을 작성한다(S410). 상기한 타겟 보드의 동작을 구현하기 위한 프로그램의 일 예는 다음과 같다.
main( )
{
repeat(forever) // {}안의 일을 무한 반복하라는 제어문
{
P0 = 1; // 포트 0에 '1'을 출력
delay(1000) //시간지연함수, 1000ms를 의미, 라이브러리에
// 구현된 함수
P0 = 0; // 포트 0에 '1'을 출력
delay(1000)
}
}
원시 프로그램이 작성되면, 컴파일러는 원시 프로그램을 읽어 들여 일련의 토큰(token)을 생성하고, 생성된 토큰을 바탕으로 원시 프로그램에 대한 구문을 분석하여 오류를 검사한다(S415). 검사 결과를 바탕으로 오류가 발생하였는지를 판단 (S420)하여 오류가 발생하면 원시 프로그램을 다시 코딩하는 디버깅 단계(S425)를 수행한 후, 상기 단계(S410 또는 S415)로 진행하여 오류를 검사한다. 오류가 발생하지 않으면, 컴파일러는 의미 검사를 수행하고 이에 해당하는 중간 코드를 생성하고 중간 코드와 의미적으로 동등한 기계어 코드(HEX 또는 BIN 형식)를 생성한다 (S430). 다음에, 다운로더는 생성된 목적 프로그램을 통신부를 통해 타겟 보드로 바이너리 형태의 목적 프로그램을 전송한다(S435). 이때 타겟 보드에는 전원이 투입되어 있어야 하며 부트 로더가 동작하고 있어야 한다. 만약, PC에서 전송되는 프로그램이 있으면 부트 로더는 해당 프로그램을 받아서 플래시메모리에 저장시킨 후 해당 번지로 분기하여 다운로딩된 프로그램을 실행하고, 시스템 리셋 후 PC에서 아무런 반응이 없으면 전송할 프로그램이 없는 것이므로 정해진 번지로 점프하여 기 저장된 프로그램을 실행한다. 이를 위해 다운 로더와 부트 로더 사이에는 사전에 정해진 통신 프로토콜이 있어야 한다.
타겟 보드에 전송된 목적 프로그램은 부트 로더에 의해 플래시메모리에 저장한다(S440). 부트 로더는 목적 프로그램이 플래시메모리에 모두 저장되었는지를 판단(S445)하여 아직 저장이 완료되지 않았으면 상기 단계(S440)로 진행하여 남은 목적 프로그램을 저장하고, 저장이 완료되면 부트 로더는 시스템을 초기화한 후 저장된 목적 프로그램을 실행한다(S450).
프로그램 설계자는 목적 프로그램의 실행 결과를 토대로 목적 프로그램에 수정할 사항이 있는가를 판단(S455)하여 수정 사항이 있으면 상기 단계(S410)로 진행하여 이후의 단계들을 반복 수행하여 정확한 데이터를 입력하고, 수정 사항이 없으면 프로그램 설계자가 원하는 목적 프로그램이 완성된 것이므로 타겟 보드를 PC와 분리하여 휴대한다. 타겟 보드에 저장된 목적 프로그램은 플래시메모리에 저장되어 있기 때문에 영구적으로 보존할 수 있다.
이상의 설명은 하나의 실시예를 설명한 것에 불과하고, 본 발명은 상술한 실시예에 한정되지 않으며 첨부한 특허청구범위 내에서 다양하게 변경 가능한 것이다. 예를 들어 본 발명의 실시예에 구체적으로 나타난 각 구성 요소의 형상 및 구조는 변형하여 실시할 수 있는 것이다.
이상에서 설명한 바와 같이 본 발명에 따른 통합 임베디드 시스템 및 이의 구현 방법에 의하면, 초보자들이 하드웨어에 관한 별도의 전문적인 지식과 시간적 노력의 요구 없이 간단한 문법을 사용하는 상위 레벨 언어로 프로그램을 작성하고 하드웨어 의존적인 부분은 라이브러리로 제공되는 함수를 호출하여 용이하게 원하는 기능을 구현할 수 있는 효과가 있다.
컴파일러 방식의 번역기를 사용하여 기계어 코드를 생성함으로써 실행 속도가 인터프리터 방식 보다 현저하게 빠르며 함수 추가 등 업그레이드가 쉬운 효과가 있다.
플래시메모리에 해당 프로그램을 영구적으로 보전하여 개인용 컴퓨터와 분리하여 휴대할 수 있을 뿐 아니라 고가의 개발 장비를 사용할 필요가 없으며 메모리를 분리, 장착할 필요가 없는 효과가 있다.
Claims (8)
- 미리 정해진 특정 기능을 수행하기 위한 하드웨어와 소프트웨어를 조합하여 원하는 작업을 수행하는 임베디드 시스템에 있어서,통합개발환경을 구축하고, 프로그램 설계자가 입력한 프로그램을 기계어 코드로 변환하여 전송하는 개인용 컴퓨터;상기 개인용 컴퓨터에서 전송되는 프로그램을 수신하여 저장하고, 상기 프로그램을 실행하는 타겟 보드; 및상기 개인용 컴퓨터와 상기 타겟 보드를 연결하며, 상기 개인용 컴퓨터와 상기 타겟 보드간의 데이터를 송수신하는 전용 통신 케이블을 포함하는 것을 특징으로 하는 통합 임베디드 시스템.
- 제1항에 있어서, 상기 개인용 컴퓨터는프로그램을 작성하기 위한 사용자 인터페이스;상기 사용자 인터페이스에 연결되어 있으며, 개발 도구들을 하나의 환경으로 구축하여 프로그램 개발을 용이하게 실현하기 위해 각 개발 도구간을 연동하는 통합개발환경을 구축하는 에디터;상기 에디터에 연결되어 있으며, 상기 에디터를 통해 프로그램 설계자가 작성한 원시 프로그램을 HEX(또는 BIN) 형태의 기계어로 번역하는 컴파일러; 및상기 컴파일러에 연결되어 있으며, 목적 프로그램인 HEX(또는 BIN) 파일을읽어서 내부 버퍼에 저장하고, 통신부를 통하여 상기 타겟 보드에 전송하는 다운로더를 포함하는 것을 특징으로 하는 통합 임베디드 시스템.
- 제1항 또는 제2항에 있어서, 상기 타겟 보드는상기 개인용 컴퓨터와 통신하기 위한 통신부 및 동작을 개시하기 위한 전원공부에 연결되어 있으며, 상기 통신부를 통하여 입력되는 기계어 데이터를 수신하거나 필요한 데이터를 상기 개인용 컴퓨터로 송신하고, 연산회로, 제어회로 및 레지스터를 구비하여 명령을 해독하고, 각 구성부가 자신의 역할을 원활하게 수행하도록 제어하는 마이크로컨트롤러;상기 마이크로컨트롤러와 상호 연결되어 있으며, 상기 마이크로컨트롤러에서 수행할 명령어들을 저장하고, 상기 마이크로컨트롤러에서 전송되는 상기 목적 프로그램을 저장하는 플래시메모리; 및상기 마이크로컨트롤러에 연결되어 있으며, 상기 마이크로컨트롤러로부터 전송되는 HEX(또는 BIN) 파일 형태의 데이터를 상기 플래시메모리에 저장하고, 상기 마이크로컨트롤러를 초기화하고 특정한 번지로 점프하도록 설계된 부트 로더; 및상기 마이크로컨트롤러와 상호 연결되어 있으며, 상기 마이크로컨트롤러와 외부 기기와의 인터페이싱을 수행하는 외부 인터페이스를 포함하는 것을 특징으로 하는 통합 임베디드 시스템.
- 제3항에 있어서,상기 외부 인터페이스와 상호 연결되어 있으며, 외부 인터페이스 장치를 포함하여 상기 외부 인터페이스와 상기 외부 인터페이스 장치가 연동할 수 있도록 필요한 전력, 전압 및 전류 등으로 변환하는 외부 사용자 추가회로를 더 포함하는 것을 특징으로 하는 통합 임베디드 시스템.
- 제3항에 있어서, 상기 부트 로더는상기 플래시메모리에 내장되고, 상기 마이크로컨트롤러를 통해 상기 개인용 컴퓨터에서 전송되는 상기 목적 프로그램이 있으면 상기 목적 프로그램을 수신하여 상기 플래시메모리에 저장시킨 후 해당 번지로 분기하여 다운로딩된 상기 목적 프로그램을 실행하고, 리셋 후 상기 개인용 컴퓨터에서 상기 목적 프로그램이 전송되지 않으면 기 설정된 번지로 점프하여 기 저장된 프로그램을 실행하는 것을 특징으로 하는 통합 임베디드 시스템.
- 미리 정해진 특정 기능을 수행하기 위한 하드웨어와 소프트웨어를 조합하여 원하는 작업을 수행하는 임베디드 시스템의 구현 방법에 있어서,프로그램을 개발하기 위한 통합개발환경을 실행하는 단계;상기 통합개발환경을 이용하여 원시 프로그램을 작성하고, 작성된 상기 원시 프로그램의 오류를 검사하는 단계;오류가 발생하면 상기 원시 프로그램을 재코딩하는 디버깅 단계;오류가 발생하지 않으면, 작성된 상기 원시 프로그램의 의미 검사를 수행하고 이에 해당하는 중간 코드를 생성하고 중간 코드와 의미적으로 동등한 기계어 코드를 생성하는 단계; 및목적 프로그램을 생성하고, 상기 목적 프로그램을 다운로딩하여 타겟 보드로 전송하는 단계를 포함하는 것을 특징으로 하는 통합 임베디드 시스템의 구현 방법.
- 제6항에 있어서,전송되는 상기 목적 프로그램을 저장하는 단계;저장이 완료되면, 상기 목적 프로그램을 실행하는 단계;수정할 내용이 있으면, 상기 원시 프로그램을 재코딩하여 상기 목적 프로그램을 재실행하는 단계를 더 포함하는 것을 특징으로 하는 통합 임베디드 시스템의 구현 방법.
- 제7항에 있어서, 상기 목적 프로그램을 실행하는 단계는상기 마이크로컨트롤러를 통해 상기 개인용 컴퓨터에서 전송되는 상기 목적 프로그램이 있으면 상기 목적 프로그램을 수신하여 상기 플래시메모리에 저장시킨 후 해당 번지로 분기하여 다운로딩된 상기 목적 프로그램을 실행하고, 리셋 후 상기 개인용 컴퓨터에서 상기 목적 프로그램이 전송되지 않으면 기 설정된 번지로 점프하여 기 저장된 프로그램을 실행하는 것을 특징으로 하는 통합 임베디드 시스템의 구현 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020000063325A KR20020032256A (ko) | 2000-10-26 | 2000-10-26 | 통합 임베디드 시스템 및 이의 구현 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020000063325A KR20020032256A (ko) | 2000-10-26 | 2000-10-26 | 통합 임베디드 시스템 및 이의 구현 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20020032256A true KR20020032256A (ko) | 2002-05-03 |
Family
ID=19695672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020000063325A KR20020032256A (ko) | 2000-10-26 | 2000-10-26 | 통합 임베디드 시스템 및 이의 구현 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20020032256A (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100451162B1 (ko) * | 2002-03-13 | 2004-10-02 | 엘지전자 주식회사 | 피씨를 이용한 임베디드 시스템의 원격 메모리 제어 방법 |
KR100669242B1 (ko) * | 2004-12-15 | 2007-01-15 | 한국전자통신연구원 | 크로스 개발 환경에서의 임베디드 소프트웨어 최적화 및분석을 위한 장치 및 방법 |
KR100817920B1 (ko) * | 2005-12-23 | 2008-03-31 | 엠텍비젼 주식회사 | 임베디드 시스템, 정점 프로세싱 장치 및 디코더 |
KR101235330B1 (ko) * | 2009-12-21 | 2013-02-19 | 한국전자통신연구원 | 임베디드 소프트웨어 개발 도구 통합 관리 장치 및 방법 |
KR101692766B1 (ko) * | 2015-10-05 | 2017-01-04 | 젝스컴퍼니 주식회사 | 임베디드 개발 시스템 |
KR101710305B1 (ko) | 2016-06-01 | 2017-02-27 | 구자철 | 사용자 중심의 기능 가변식 컴파일링 시스템 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19980050246U (ko) * | 1996-12-30 | 1998-10-07 | 정장호 | 플래쉬 rom 퓨징장치 |
KR19980063193A (ko) * | 1996-12-31 | 1998-10-07 | 정장호 | Cpu보드에서 롬 다운 로딩 장치 및 방법 |
JPH1153221A (ja) * | 1997-08-08 | 1999-02-26 | Matsushita Electric Ind Co Ltd | 情報処理方法および情報処理装置 |
KR19990046408A (ko) * | 1999-03-05 | 1999-07-05 | 양세양 | 복합내장형시스템을위한신속프로토타이핑장치및그것을이용한신속프로토타이핑방법 |
KR19990056081A (ko) * | 1997-12-29 | 1999-07-15 | 윤종용 | 실시간 오퍼레이팅 시스템에서 디버깅동작을 위한 다운로드장치 및 방법 |
KR19990085492A (ko) * | 1998-05-19 | 1999-12-06 | 김영환 | 에이치디엘씨 통신로를 이용한 타겟 보드의 디버깅 장치 |
US6016563A (en) * | 1997-12-30 | 2000-01-18 | Fleisher; Evgeny G. | Method and apparatus for testing a logic design of a programmable logic device |
KR200191430Y1 (ko) * | 2000-02-28 | 2000-08-16 | 손문탁 | 착탈식 구조로 라이터와 인서킷 에뮬레이터가 통합된인서킷디버거의 구조 |
-
2000
- 2000-10-26 KR KR1020000063325A patent/KR20020032256A/ko not_active Application Discontinuation
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19980050246U (ko) * | 1996-12-30 | 1998-10-07 | 정장호 | 플래쉬 rom 퓨징장치 |
KR19980063193A (ko) * | 1996-12-31 | 1998-10-07 | 정장호 | Cpu보드에서 롬 다운 로딩 장치 및 방법 |
JPH1153221A (ja) * | 1997-08-08 | 1999-02-26 | Matsushita Electric Ind Co Ltd | 情報処理方法および情報処理装置 |
KR19990056081A (ko) * | 1997-12-29 | 1999-07-15 | 윤종용 | 실시간 오퍼레이팅 시스템에서 디버깅동작을 위한 다운로드장치 및 방법 |
US6016563A (en) * | 1997-12-30 | 2000-01-18 | Fleisher; Evgeny G. | Method and apparatus for testing a logic design of a programmable logic device |
KR19990085492A (ko) * | 1998-05-19 | 1999-12-06 | 김영환 | 에이치디엘씨 통신로를 이용한 타겟 보드의 디버깅 장치 |
KR19990046408A (ko) * | 1999-03-05 | 1999-07-05 | 양세양 | 복합내장형시스템을위한신속프로토타이핑장치및그것을이용한신속프로토타이핑방법 |
KR200191430Y1 (ko) * | 2000-02-28 | 2000-08-16 | 손문탁 | 착탈식 구조로 라이터와 인서킷 에뮬레이터가 통합된인서킷디버거의 구조 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100451162B1 (ko) * | 2002-03-13 | 2004-10-02 | 엘지전자 주식회사 | 피씨를 이용한 임베디드 시스템의 원격 메모리 제어 방법 |
KR100669242B1 (ko) * | 2004-12-15 | 2007-01-15 | 한국전자통신연구원 | 크로스 개발 환경에서의 임베디드 소프트웨어 최적화 및분석을 위한 장치 및 방법 |
KR100817920B1 (ko) * | 2005-12-23 | 2008-03-31 | 엠텍비젼 주식회사 | 임베디드 시스템, 정점 프로세싱 장치 및 디코더 |
KR101235330B1 (ko) * | 2009-12-21 | 2013-02-19 | 한국전자통신연구원 | 임베디드 소프트웨어 개발 도구 통합 관리 장치 및 방법 |
KR101692766B1 (ko) * | 2015-10-05 | 2017-01-04 | 젝스컴퍼니 주식회사 | 임베디드 개발 시스템 |
KR101710305B1 (ko) | 2016-06-01 | 2017-02-27 | 구자철 | 사용자 중심의 기능 가변식 컴파일링 시스템 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8117587B1 (en) | Microcontroller-resident software development environment supporting application-level asynchronous event handling, interactive debugging and pin variables for embedded systems | |
EP1004072B1 (en) | Embedded graphical programming system | |
JP4050764B2 (ja) | コンパイルシステム | |
US8473971B2 (en) | Type inference and type-directed late binding | |
CN101667134B (zh) | 一种构建编译系统的方法及编译系统构建装置 | |
CN100492387C (zh) | 基于Keil C51的软件保护开发的方法和系统 | |
US10789192B2 (en) | System and method for programming data transfer within a microcontroller | |
KR20020032256A (ko) | 통합 임베디드 시스템 및 이의 구현 방법 | |
CN106843973B (zh) | 一种移植嵌入式系统并在sd卡启动的方法 | |
CN117813586A (zh) | 对具有未保存的源代码更改的正在运行的应用进行热重载 | |
JP2002189507A (ja) | コントローラ | |
US11921614B2 (en) | System and method for developing, testing and debugging software for microcontrollers | |
KR100565295B1 (ko) | 이동 통신 단말기의 자바 에뮬레이션 방법 | |
KR101548960B1 (ko) | 가상 플랫폼을 이용한 프로그램 작성과 디버깅 방법 및 장치 | |
KR101019688B1 (ko) | 고레벨 언어 기반 임베디드 시스템 | |
CN112764379B (zh) | 一种基于dsp系统的iap控制方法 | |
Parson et al. | A {Tcl-Based}{Self-Configuring} Embedded System Debugger | |
Ahola | Host Adapter Firmware Implementation with CircuitPython | |
Oualline | Bare Metal C: Embedded Programming for the Real World | |
Clark | Powering intelligent instruments with Lua scripting | |
Giometti | Linux Device Driver Development Cookbook: Develop Custom Drivers for Your Embedded Linux Applications | |
Dunbar et al. | Arduino Compilation | |
CN118113369A (zh) | 一种基于微芯片的嵌入式操作系统的配置与调试方法 | |
Llorente | Code Generation from JGrafchart to ATMEL AVR | |
Installation | Practical Beagle Board Programming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |