KR100842577B1 - 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그운용 방법 - Google Patents

소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그운용 방법 Download PDF

Info

Publication number
KR100842577B1
KR100842577B1 KR1020060109635A KR20060109635A KR100842577B1 KR 100842577 B1 KR100842577 B1 KR 100842577B1 KR 1020060109635 A KR1020060109635 A KR 1020060109635A KR 20060109635 A KR20060109635 A KR 20060109635A KR 100842577 B1 KR100842577 B1 KR 100842577B1
Authority
KR
South Korea
Prior art keywords
executable code
download
host system
ram
data
Prior art date
Application number
KR1020060109635A
Other languages
English (en)
Other versions
KR20080041491A (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 KR1020060109635A priority Critical patent/KR100842577B1/ko
Publication of KR20080041491A publication Critical patent/KR20080041491A/ko
Application granted granted Critical
Publication of KR100842577B1 publication Critical patent/KR100842577B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Abstract

본 발명은 임베디드 시스템에서 소프트웨어를 실행하기 위한 장치 및 방법에 대한 것으로, 특히 외부 플래시 메모리(Flash Memory)를 사용하지 않는 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그 운용 방법에 대한 것이다.
본 발명에 따른 시스템은 외부의 호스트 시스템과 통신하는 임베디드 시스템에 있어서, 초기 생성된 실행 코드가 저장되는 롬과, 상기 호스트 시스템으로부터 다운로드 받은 다른 실행 코드가 저장되는 램과, 상기 롬과 상기 램이 읽혀지는 어드레스 위치를 선택적으로 변경하는 뱅크 선택기와, 상기 호스트 시스템과 통신하기 위한 적어도 하나의 외부 인터페이스와, 상기 호스트 시스템으로부터 상기 다른 실행 코드의 전송이 있는 경우 상기 다른 실행 코드를 상기 램에 저장하는 다운로드 인터페이스 로직과, 상기 호스트 시스템으로부터 수신된 특정 패턴 데이터를 근거로 다운로드 모드의 실행 여부를 판단하고 상기 다운로드 모드로 판단된 경우 상기 다른 실행 코드의 전송이 완료된 후 상기 다른 실행 코드를 실행하는 중앙처리장치를 포함한다.
따라서 본 발명에 의하면 임베디드 시스템에서 소프트웨어를 실행하기 위하여, 플래시 메모리를 사용하지 않고, 내부 메모리를 사용하여 소프트웨어의 유연성을 유지할 수 있다. 그리고 임베디드 시스템의 하드웨어 사이즈를 줄임으로써 제품 단가를 낮출 수 있다.
Figure R1020060109635
임베디드 시스템, 호스트 시스템, 소프트웨어 실행, 소프트웨어 다운로드

Description

소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그 운용 방법{EMBEDDED SYSTEM WITH A FUNCTION OF SOFTWARE DOWNLOAD AND MANAGEMENT METHOD THEREOF}
도 1은 본 발명의 실시 예에 따른 임베디드 시스템과 호스트 시스템의 연결을 나타낸 도면,
도 2는 본 발명의 실시 예에 따른 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템의 구성을 나타낸 블록도,
도 3은 도 2의 뱅크 선택기의 선택에 따른 메모리 맵의 상태를 나타낸 상태도,
도 4는 본 발명의 실시 예에 따른 임베디드 시스템에서 소프트웨어를 다운로드 받아 실행하는 과정을 나타낸 순서도,
도 5는 호스트 시스템으로부터 코드를 다운로드 받지않는 경우, 임베디드 시스템(Target)과 호스트 시스템(Host)간의 데이터 흐름을 나타낸 흐름도,
도 6은 본 발명의 일 실시 예에 따라 호스트 시스템으로부터 코드를 다운로드 받는 경우, 임베디드 시스템(Target)과 호스트 시스템(Host)간의 제1 데이터 흐름을 나타낸 흐름도,
도 7은 본 발명의 다른 실시 예에 따라 호스트 시스템으로부터 프로그램을 다운받는 경우, 임베디드 시스템(Target)과 호스트 시스템(Host)간의 제2 데이터 흐름을 나타낸 흐름도.
본 발명은 임베디드 시스템에서 소프트웨어를 실행하기 위한 장치 및 방법에 대한 것으로, 특히 외부 플래시 메모리(Flash Memory)를 사용하지 않는 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그 운용 방법에 대한 것이다.
일반적으로, 임베디드 시스템(Embedded System)은 미리 정해진 특정 기능을 실행하기 위해 컴퓨터의 하드웨어와 소프트웨어가 조합된 전자 제어 시스템을 말하며, 필요에 따라서는 일부 기계가 포함될 수 있다. 즉, 상기 임베디드 시스템은 단순히 회로로만 구성된 것이 아니라 마이크로컨트롤러(또는 마이크로 프로세서)가 내장되어 있고, 이 마이크로컨트롤러를 구동하여 특정한 기능을 실행하도록 하는 프로그램이 내장되어 있는 시스템이다. 그리고 상기 임베디드 시스템으로 예를 들면, DVD(Digital Versatile Disc) 플레이어, 셋탑박스, 이동 단말, MP3(MPEG Audio Layer-3) 플레이어, 캠코더, 디지털 카메라, 냉장고와 같은 가전기기와, 승강기, 항공기, 의료기기, 자동차, 공장제어, 통신장비(교환기, 라우터)등이 있다.
초기의 임베디드 시스템은 구성이 매우 단순하였으며, 4비트/8비트 컨트롤러에 제한된 동작을 실행하도록 하는 소프트웨어가 저장된 시스템이 대부분이었다. 그러나, 요즘은 32비트 마이크로프로세서와 디지털 신호 처리기(DSP : Digital Signal Processor)가 일반적으로 사용됨에 따라 사용영역이 넓어지고 그에 따라 임베디드 시스템에 탑재되는 소프트웨어의 성능도 함께 발달되고 있다.
이러한 임베디드 시스템의 응용 분야가 다양해지면서, 예전에는 단순했던 임베디드 시스템이 매우 복잡해지고, 집적화, 융합화되고 있는 추세이다. 즉, 서로 다른 기능을 담당하는 이종의 임베디드 시스템들이 하나의 호스트 시스템의 플랫폼에 연결되어 복합적인 시스템을 이루는 것이다. 각 임베디드 시스템은 각기 온전한 소프트웨어를 가지고 고유의 기능을 실행하며, 호스트 시스템은 여러 임베디드 시스템을 조화롭게 제어하는 기능을 한다.
이러한 임베디드 시스템의 소프트웨어 실행은 크로스 툴체인(Cross Tool Chain)(x86기반의 컴퓨터에서 임베디드 시스템용 실행파일을 생성해내는 도구의 모음)을 이용하여 생성된 프로그램 바이너리 코드(이하 실행 코드)를 해당 임베디드 시스템의 외부 플래시 메모리에 기록한 다음, 이후 상기 실행 코드를 외부 플래시 메모리에서 실행하거나, 또는 메인 메모리에 로딩시켜 실행한다.
그리고 임베디드 시스템을 개발할 경우 소프트웨어는 대부분 외부 플래시 메모리에 저장하는 방법을 사용하고 있다. 따라서 개발하고자 하는 임베디드 시스템을 SoC(System on Chip) 기술을 이용하여 하나의 칩으로 만든다 하더라도 소프트웨어의 저장을 위한 플래시 메모리 칩이 외부에 있기 때문에 상기 임베디드 시스템은 최소 두 개 이상의 칩으로 구성된다. 이는 임베디드 시스템의 면적 증가와 비용 증가를 발생시킨다. 이를 개선하기 위해 플래시 메모리의 원칩화 공정을 하는 경우, 비용면에서 문제점이 발생된다. 또한 임베디드 시스템의 개발 과정에서 외부 플래 시 메모리를 이용하여 소프트웨어를 실행하고, 임베디드 시스템의 출시 직전에 마스크 롬(Mask Rom) 형태로 원칩화하여 소프트웨어를 실행하는 경우, 마스크 롬에 저장된 소프트웨어는 임베디드 시스템의 출시 후 수정 또는 변경이 불가능하기 때문에 출시 전 소프트웨어를 검증해야만 한다. 이로 인해 칩의 제작 기간이 길어짐에 따라 타임 투 마켓(Time-To-Market)을 달성하기 힘들다는 문제점이 발생된다.
본 발명은 외부 플래시 메모리를 사용하지 않는 임베디드 시스템 및 그 운용 방법을 제공한다.
또한 본 발명은 외부 플래시 메모리를 이용하지 않으면서 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그 운용 방법을 제공한다.
본 발명에 따른 시스템은 외부의 호스트 시스템과 통신하는 임베디드 시스템에 있어서, 초기 생성된 실행 코드가 저장되는 롬과, 상기 호스트 시스템으로부터 다운로드 받은 다른 실행 코드가 저장되는 램과, 상기 롬과 상기 램이 읽혀지는 어드레스 위치를 선택적으로 변경하는 뱅크 선택기와, 상기 호스트 시스템과 통신하기 위한 적어도 하나의 외부 인터페이스와, 상기 호스트 시스템으로부터 상기 다른 실행 코드의 전송이 있는 경우 상기 다른 실행 코드를 상기 램에 저장하는 다운로드 인터페이스 로직과, 상기 호스트 시스템으로부터 수신된 특정 패턴 데이터를 근거로 다운로드 모드의 실행 여부를 판단하고 상기 다운로드 모드로 판단된 경우 상기 다른 실행 코드의 전송이 완료된 후 상기 다른 실행 코드를 실행하는 중앙처리장치를 포함한다.
본 발명에 따른 방법은 외부의 호스트 시스템과 통신하며 초기 생성된 실행 코드가 저장된 롬이 구비된 임베디드 시스템의 운용 방법에 있어서, 상기 호스트 시스템으로부터 외부 인터페이스를 통해 입력된 특정 패턴의 데이터가 다운로드 모드 데이터인지 판단하는 과정과, 상기 판단 결과 다운로드 모드 데이터인 경우, 상기 외부 인터페이스를 통해 상기 호스트 시스템으로부터 다른 실행 코드를 다운로드 받는 과정과, 상기 다운로드 받는 과정에서, 상기 다운로드 받는 상기 다른 실행 코드를 특정 프로토콜에 따라 램에 저장하는 과정과, 상기 다른 실행 코드를 읽어올 수 있도록 상기 롬에서 상기 램으로 메모리 뱅크를 변경하는 과정을 포함한다.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 상세히 설명한다. 또한 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략한다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 이용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 한다.
도 1은 본 발명의 실시 예에 따른 임베디드 시스템과 호스트 시스템의 연결을 나타낸 도면이다.
먼저 본 발명의 실시 예에 따라 특정 패턴 데이터는 코드를 다운로드하기 위한 다운로드 모드 및 마스크 롬에 저장된 코드를 실행하기 위한 일반적인 모드임을 알려주는 데이터이다.
도 1에서 임베디드 시스템(100)은 호스트 시스템(200)으로부터 미리 정의된 특정 패턴의 데이터가 입력되면, 상기 특정 패턴 데이터가 다운로드 모드 데이터인지 판단한다. 상기 임베디드 시스템(100)은 호스트 시스템(200)에 상기 입력받은 특정 패턴 데이터의 수신여부 및 다운로드의 성공여부를 응답신호로 보내기도 한다. 그리고 상기 임베디드 시스템(100)은 상기 특정 패턴 데이터가 다운로드 모드이면, 인터페이스(I1)를 통해 호스트 시스템(200)으로부터 실행 코드를 다운로드 받는다.
상기 호스트 시스템(200)은 컴퓨터, 마이크로프로세서 등과 같이 상기 임베디드 시스템(100)을 제어하는 시스템이다.
이하, 도면을 참조하여 상기 임베디드 시스템(100)에서 소프트웨어를 실행하기 위한 장치 및 방법을 설명하기로 한다.
도 2는 본 발명의 실시 예에 따른 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템의 구성을 나타낸 블록도이다. 그리고 도 2는 임베디드 시스템을 원칩으로 구현한 것으로, 이는 본 발명에 따라 소프트웨어의 다운로드와 실행에 필요한 부분을 도시한 것으로, 본 발명의 요지와 무관한 다른 구성에 대한 설명은 생략하기로 한다.
본 발명의 실시 예에 따른 임베디드 시스템은 소프트웨어를 실행하기 위해 종래와 같이 외부 플래시 메모리를 사용하지 않고, 칩 내부에 데이터 램(105)과, 마스크 롬(107)과, 프로그램 램(109)을 포함한다. 상기 데이터 램(105)은 어드레스가 고정되어 있으나, 상기 마스크 롬(107)과, 프로그램 램(109)은 뱅크 선택기(Bank Changer)(103)에 의해 어드레스가 변환된다. 그리고 마스크 롬(107)에는 임베디드 시스템의 출시 시 크로스 툴체인(Cross Tool Chain)을 이용하여 생성된 실행 코드가 저장되고, 프로그램 램(109)에는 상기 마스크 롬(107)에 저장된 실행 코드를 정정하거나, 추가 또는 업데이트해야 할 실행 코드가 호스트 시스템(200)으로부터 다운로드되어 저장된다.
도 2에서 다운로드 인터페이스 로직(111)은 호스트 시스템(200)으로부터 다운로드 모드 데이터를 전달받은 경우, 외부 인터페이스(113)를 통해 상기 마스크 롬(107)에 저장된 실행 코드를 정정하거나, 추가 또는 업데이트해야 할 실행 코드를 다운로드 받는다. 그리고 상기 다운로드 인터페이스 로직(111)은 상기 다운로드 받은 실행 코드가 실행될 수 있도록 뱅크 선택기(103)를 제어하고, CPU(101)을 초기화(Reset) 한다. 또한 상기 CPU(101)를 통해 상기 다운로드 인터페이스 로직(111)을 제어하여 뱅크 선택기(103)를 제어하고, CPU(101)을 초기화하는 것도 가능하다. 상기 뱅크 선택기(103)를 제어하는 방식은 아래 도 3에서 상세히 설명하기로 한다. 또한 상기 다운로드 인터페이스 로직(111)은 외부 인터페이스(113)가 복수 개일 경우, 하나의 인터페이스를 선택하는 멀티플렉스(Multiplex) 기능을 수행한다.
도 2에서 상기 외부 인터페이스(113)는 호스트 시스템(200)과 연결을 위한 칩 인터페이스로서, UART(Universal Asynchronous Receiver/Transmitter), I2C(Inter IC), SPI(Serial Peripheral Interface) 등과 같이 일반적으로 사용되는 인터페이스를 사용할 수 있다. 그리고 임베디드 시스템(100)은 호스트 시스템(200)과 연계하여 사용되는 것이 일반적이며, 다른 시스템으로의 이식성을 고려해야 하므로 대부분 하나 이상의 외부 인터페이스 블록으로 구현된다. 따라서 본 발명에서 제안하는 임베디드 시스템은 상기와 같이 하나 이상의 외부 인터페이스 블록으로 구현된 외부 인터페이스(113) 를 사용할 수 있다.
도 2에서 CPU(Central Processing Unit)(101)는 임베디드 시스템(100)의 전반적인 동작을 제어한다. 이에 따라 CPU(101)는 임베디드 시스템(100)이 부팅되면, 다운로드 인터페이스 로직(111)과 외부 인터페이스(113)를 초기화한다. 특히, CPU(101)는 호스트 시스템(200)으로부터 적어도 하나의 외부 인터페이스(113)를 통해 미리 정의된 특정 패턴의 데이터가 입력되면, 상기 특정 패턴 데이터가 다운로드 모드 데이터인지 판단한다. 상기 CPU(101)는 특정 패턴 데이터가 다운로드 모드 데이터인 경우, 상기 호스트 시스템(200)으로부터 실행 코드를 다운로드 받을 수 있도록 다운로드 인터페이스 로직(111)을 제어한다. 그리고 상기 인터페이스 로직(111)은 호스트 시스템(200)으로부터 특정 패턴 데이터 중 다운로드 모드 데이터를 전달받은 경우, 상기 다운로드 받은 실행 코드가 실행 될 수 있도록 뱅크 선택기(103)을 제어한다. 또한 상기 CPU(101)는 호스트 시스템(200)으로부터 특정 패턴 데이터 중 마스크 롬(107)에 저장된 실행 코드를 실행하기 위한 일반 모드의 데이터를 전달받은 경우, 마스크 롬(107)에 저장된 실행 코드가 실행 될 수 있도록 뱅 크 선택기(103)를 그대로 유지 한다.
도 2에서 상기 뱅크 선택기(103)는 상기 CPU(101) 또는 다운로드 인터페이스 로직(111)의 제어에 따라 상기 다운로드 받은 실행 코드가 실행될 수 있도록 제어되는 경우, 아래 도 3과 같이 상기 마스크 롬(107)과 프로그램 램(109)의 어드레스 위치를 변환하여 다운로드 받은 실행 코드가 저장된 프로그램 램(109)을 선택한다. 그러나, 상기 뱅크 선택기(103)는 호스트 시스템(200)으로부터 실행 코드를 다운로드 하지 않는 경우, CPU(101)의 제어에 따라 임베디드 시스템(100)에 초기 저장된 프로그램이 실행될 수 있도록 상기 마스크 롬(107)을 그대로 선택 유지 한다.
도 3은 도 2의 뱅크 선택기의 선택에 따른 메모리 맵(Memory Map)의 상태를 나타낸 상태도이다.
본 발명의 실시 예에 따라 메모리 맵의 초기 디폴트 값으로 제1 메모리 맵(301)에서 마스크 롬(107)의 어드레스는 로우 어드레스(Low Address)에 위치하고, 프로그램 램(109)의 어드레스는 하이 어드레스(High Address)에 위치한다. 그리고 CPU(101)가 초기화되는 경우, CPU(101)는 로우 어드레스에 위치한 프로그램부터 실행될 수 있도록 제어한다.
도 2에서 설명한 바와 같이 호스트 시스템(200)으로부터 실행 코드가 다운로드 되는 경우, 다운로드 인터페이스 로직(111)은 상기 다운로드되는 실행 코드를 프로그램 램(109)으로 전달한다. 그리고 상기 뱅크 선택기(103)는 CPU(101) 또는 다운로드 인터페이스 로직(111)의 제어에 따라, 상기 다운로드된 실행코드가 실행될 수 있도록 프로그램 램(109)을 선택한다. 이하 설명의 편의상 뱅크 선택기(103) 의 동작 제어는 다운로드 인터페이스 로직(111)에서 수행됨을 가정하기로 한다. 여기서 상기 뱅크 선택기(103)가 프로그램 램(109)을 선택하는 방식은 상기 초기 디폴트 상태의 제1 메모리 맵(301)에서 마스크 롬(107)과 프로그램 램(109)의 어드레스 위치를 서로 변환하여 프로그램 램(109)을 선택하도록 수행된다. 즉, 뱅크 선택기(103)는 제2 메모리 맵(303)에서 프로그램 램(109)은 로우 어드레스에 위치하고, 마스크 롬(107)은 하이 어드레스에 위치하도록 하여 프로그램 램(109)에 다운로드된 실행 코드가 실행될 수 있도록 프로그램 램(109)을 선택한다.
따라서 본 발명은 호스트 시스템(200)으로부터 임베디드 시스템(100)에 실행 코드가 다운로드 되는 경우, 상기 임베디드 시스템(100)에서 CPU(101) 초기화 후, 제2 메모리 맵의 로우 어드레스에 위치한 프로그램 램(109)에 다운로드된 실행 코드가 실행될 수 있다. 또한 본 발명은 호스트 시스템(200)으로부터 임베디드 시스템(100)에 실행 코드가 다운로드 되지 않는 경우, 상기 임베디드 시스템(100)에서 제1 메모리 맵(301)의 로우 어드레스에 위치한 마스크 롬(107)에 초기 저장된 실행 코드가 실행될 수 있다.
도 4는 본 발명의 실시 예에 따른 임베디드 시스템에서 소프트웨어를 실행하기 위한 방법을 나타낸 순서도이다.
도 4의 401 단계에서 CPU(101)는 임베디드 시스템의 부팅 시 다운로드 인터페이스 로직(111)과 외부 인터페이스(113)를 초기화한다. 그리고 403 단계에서 CPU(101)는 호스트 시스템(200)으로부터 적어도 하나의 외부 인터페이스(113)를 통해 미리 정의된 특정 패턴의 데이터가 입력되면, 상기 특정 패턴 데이터가 다운로 드 모드 데이터인지 판단한다. 상기 특정 패턴 데이터는 실행 코드를 다운로드하기 위한 다운로드 모드(Download Mede)임을 알려주는 다운로드 모드 데이터 또는 마스크 롬(107)에 저장된 실행 코드를 실행하기 위한 일반적인 일반 모드(Normal Mode)임을 알려주는 일반 모드 데이터(혹은 제어 데이터)로 구분된다. 상기 403 단계에서 CPU(101)는 다운로드 모드 데이터인지 판단한 결과, 다운로드 모드이면 407 단계로 진행하고, 그렇지 않으면 일반 모드의 동작을 수행하도록 405 단계로 진행한다. 상기 405 단계에서 뱅크 선택기(103)는 다운로드 인터페이스 로직(111)의 제어에 의해 마스크 롬(107)에 저장된 실행 코드가 실행될 수 있도록 상기 마스크 롬(107)을 선택 유지한다.
따라서 호스트 시스템(200)으로부터 임베디드 시스템(100)에 실행 코드가 다운로드 되지 않는 경우, 즉 일반 모드로 동작되는 경우 임베디드 시스템(100)에서 마스크 롬(107)에 초기 저장된 코드가 실행될 수 있다.
반면 도 4의 상기 403 단계에서 CPU(101)는 다운로드 모드인지 판단한 결과, 다운로드 모드 데이터로 판단된 경우 407 단계로 진행한 경우, 다운로드 인터페이스 로직(111)은 CPU(101)의 제어에 의해 특정 패턴의 데이터가 입력된 외부 인터페이스(113)를 다운로드용 인터페이스로 설정한다.
상기 409 단계에서 다운로드 인터페이스 로직(111)은 외부 인터페이스(113)로부터 다운로드받는 상기 코드를 미리 정의한 특정 프로토콜에 따라 프로그램 램(109)에 전달한다. 상기 특정 프로토콜은 특정 헤더와 데이터 형식으로, 프로그램 램에 저장할 시작 주소와, 실제 프로그램 램에 저장할 데이터와, 뱅크 선택 및 CPU 초기화 데이터, 그리고 다운로드 완료를 알리는 데이터(End Of Transfer)로 구분 할 수 있다.
그리고 411 단계에서 CPU(101)는 상기 다운로드가 완료되었는지 판단한다. 상기 411 단계에서 다운로드가 완료되지 않았으면 다시 상기 409 단계로 진행하여 다운로드를 계속하고, 다운로드가 완료되었으면 413 단계로 진행한다.
도 4의 413 단계에서 다운로드 인터페이스 로직(111)은 상기 프로그램 램(109)에 전달된 실행 코드가 실행될 수 있도록 상기 특정 프로토콜을 이용하여 뱅크 선택기(103)를 제어하고, CPU(101)를 초기화(Reset) 한다. 한편, 409 단계에서 프로그램 다운로드 완료를 알리는 데이터(End Of Transfer)가 상기 프로토콜을 이용하여 다운로드 인터페이스 로직(111)에 전송되는 경우, CPU(101)가 뱅크 선택기(103)의 선택 동작 및 다운로드 인터페이스 로직(111)을 통해 CPU(101)의 초기화를 제어할 수도 있다. 따라서 상기와 같은 과정에 따라 호스트 시스템(200)으로부터 임베디드 시스템(100)에 실행 코드가 다운로드 완료된 후, CPU(101)는 프로그램 램(109)에 다운로드된 프로그램을 실행할 수 있다.
한편, 임베디드 시스템(100)에서 마스크 롬(107)에 있는 실행 코드를 활용하면서 소프트웨어의 다른 기능을 추가하는 경우, 도 4의 413 단계와 415 단계를 실행하지 않고, 실행 코드의 다운로드 완료 후, 프로그램 램(109)으로 분기하도록 한다. 이 경우 소프트웨어 개발 시 기본 단위가 되는 함수들을 라이브러리로 마스크 롬(107)에 저장하고 프로그램 램(109)에 수정 및 업데이트가 예상되는 함수들을 다운로드하여 소프트웨어의 유연성을 높일 수 있다. 이로인해 프로그램 램(109)에 다 운로드 될 코드를 컴파일 할 때는 마스크 롬(107)의 심볼 테이블을 이용하여 마스크 롬(107)에 있는 함수 호출이 가능하다. 그리고 마스크 롬(107)에 저장된 함수 중에 성능 향상이나 문제점이 발견될 경우에는 심볼 테이블을 수정함으로써 새로이 정의하여 사용할 수 있다.
이하, 도면을 참조하여 호스트 시스템(200)으로부터 임베디드 시스템(100)에 실행 코드를 다운로드 받지 않는 경우와, 실행 코드를 다운로드 받는 경우에 따라 임베디드 시스템(Target)(100)과 호스트 시스템(Host)(200)간의 데이터 흐름을 설명하기로 한다.
도 5는 호스트 시스템으로부터 소프트웨어를 다운로드 받지않는 경우, 임베디드 시스템(Target)과 호스트 시스템(Host)간의 데이터 흐름을 나타낸 흐름도이다.
도 5의 501단계에서 호스트 시스템(100)으로부터 임베디드 시스템(100)에 특정 패턴 데이터로 일반 모드 데이터(혹은 제어 데이터)가 전달되면, 503 단계에서 임베디드 시스템(100)은 호스트 시스템(200)에 상기 일반 모드 데이터를 정상수신한 응답신호로 ACK(ACKnowledge)을 전송한다. 따라서 임베디드 시스템(100)은 마스크 롬(107)에 저장된 실행 코드를 변경없이 실행한다고 판단하고, 마스크 롬(107)에 저장된 실행 코드가 실행될 수 있도록 제어한다.
도 6은 본 발명의 일 실시 예에 따라 호스트 시스템으로부터 소프트웨어를 다운로드 받는 경우, 임베디드 시스템(Target)과 호스트 시스템(Host)간의 데이터 흐름을 나타낸 흐름도이다.
도 6의 601 단계에서 호스트 시스템(200)으로부터 임베디드 시스템(100)에 특정 패턴 데이터로 다운로드 모드 데이터가 전달되면, 603 단계에서 임베디드 시스템(100)은 호스트 시스템(200)에 상기 다운로드 모드 데이터를 정상수신한 응답신호로 ACK를 전송한다. 그리고 605 단계 내지 609 단계에서 임베디드 시스템(100)은 호스트 시스템(200)으로부터 미리 정의된 특정 프로토콜을 다운로드 받는다. 상기 특정 프로토콜은 실행 코드를 저장할 시작 주소(605)와, 첫 번째 데이터(607)부터 마지막 데이터(609)의 실행 코드 데이터를 다운로드 받는다. 이후 611 단계에서 임베디드 시스템(100)은 호스트 시스템(200)으로부터 상기 특정 프로토콜에 따라 뱅크 선택 및 CPU 초기화 데이터를 다운로드 받는다. 이 때, 다운로드 인터페이스 로직(111)은 뱅크 선택 및 CPU 초기화를 시행한다. 그리고 613 단계에서 임베디드 시스템(100)은 상기 다운로드가 완료되었음을 알리는 다운로드 성공 메시지(613)를 호스트 시스템(200)으로 전송한다.
따라서 도 6의 실시 예에서 임베디드 시스템(100)은 상기 특정 프로토콜을 해석하여 상기 해석된 프로토콜에 따라 프로그램 램(109)에 다운로드 받는 실행 코드를 전송하고, 상기 프로그램 램(109)에 저장된 실행 코드를 실행하기 위해 뱅크 선택 및 CPU(101)초기화를 실행하도록 제어한다.
도 7은 본 발명의 다른 실시 예에 따라 호스트 시스템으로부터 프로그램을 다운받는 경우, 임베디드 시스템(Target)과 호스트 시스템(Host)간의 데이터 흐름을 나타낸 흐름도이다.
도 7의 701 단계에서호스트 시스템(200)으로부터 임베디드 시스템(100)에 특 정 패턴 데이터로 다운로드 모드 데이터가 전달되면, 703 단계에서 임베디드 시스템(100)은 호스트 시스템(200)에 상기 다운로드 모드 데이터를 정상 수신한 응답신호로 ACK(703)을 전송한다. 그리고 705 단계 내지 709 단계에서 임베디드 시스템(100)은 호스트 시스템(200)으로부터 실행 코드를 저장할 시작 주소(705)와, 첫 번째 데이터(707)부터 마지막 데이터(709)의 실행 코드 데이터를 다운로드 받는다. 그리고 711 단계에서 임베디드 시스템(100)은 호스트 시스템(750)으로부터 코드 다운로드 완료 데이터(End of Transfer)를 전송받은 후, 713 단계에서 다운로드 성공 메시지(713)를 호스트 시스템(200)으로 전송한다.
따라서 도 7의 실시 예에서 임베디드 시스템(100)은 상기 다운로드 완료 데이터(End of Transfer)에 따라 상기 프로그램 램(109)에 다운로드 완료된 실행 코드를 실행하기 위해 다운로드 인터페이스 로직(111)을 제어하여 뱅크 선택 및 CPU(101)초기화가 일어나도록한다.
상기한 것처럼 본 발명은 임베디드 시스템(100)은 마스크 롬(107)에 초기 저장된 실행 코드를 실행할 수 있을 뿐만 아니라, 별도의 외부 플래시 메모리를 이용하지 않고도 마스크 롬(107)에 저장된 실행 코드를 정정하거나, 추가 또는 업데이트해야 할 실행 코드를 호스트 시스템(200)으로부터 다운로드하여 실행할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
이상 설명한 바와 같이 본 발명에 의하면 임베디드 시스템에서 소프트웨어를 실행하기 위하여, 플래시 메모리를 사용하지 않고, 내부 메모리를 사용하여 소프트웨어의 유연성을 유지할 수 있다. 그리고 임베디드 시스템의 하드웨어 사이즈를 줄임으로써 제품 단가를 낮출 수 있다.
또한 본 발명은 호스트 시스템으로부터 임베디드 시스템에 다운로드할 소프트웨어가 존재하여야 하지만, 최초 한번의 코드 다운로드 외에는 추가적인 컴퓨팅 파워의 부담이 없다.
또한 본 발명은 호스트 시스템의 성능을 고려하여 임베디드 시스템의 일부 소프트웨어 기능을 호스트 시스템에서 제공 받도록하는 등 소프트웨어의 파티셔닝이 자유롭게 보장될 수 있다.

Claims (11)

  1. 외부의 호스트 시스템과 통신하는 임베디드 시스템에 있어서,
    초기 생성된 실행 코드가 저장되는 롬과,
    상기 호스트 시스템으로부터 다운로드 받은 다른 실행 코드가 저장되는 램과,
    상기 롬과 상기 램이 읽혀지는 어드레스 위치를 선택적으로 변경하는 뱅크 선택기와,
    상기 호스트 시스템과 통신하기 위한 적어도 하나의 외부 인터페이스와,
    상기 호스트 시스템으로부터 상기 다른 실행 코드의 전송이 있는 경우 상기 다른 실행 코드를 상기 램에 저장하는 다운로드 인터페이스 로직과,
    상기 호스트 시스템으로부터 수신된 특정 패턴 데이터를 근거로 다운로드 모드의 실행 여부를 판단하고 상기 다운로드 모드로 판단된 경우 상기 다른 실행 코드의 전송이 완료된 후 상기 다른 실행 코드를 실행하는 중앙처리장치를 포함하는 임베디드 시스템.
  2. 제 1 항에 있어서,
    상기 특정 패턴 데이터가 일반 모드의 데이터인 경우 상기 중앙처리장치는 상기 롬에 저장된 실행 코드를 실행함을 특징으로 하는 임베디드 시스템.
  3. 제 1 항에 있어서,
    상기 다운로드 모드에서 상기 읽혀지는 어드레스 위치가 상기 램으로 변경되도록 상기 다운로드 인터페이스 로직이 상기 외부 인터페이스를 통해 상기 뱅크 선택기의 동작을 제어하도록 구성되는 임베디드 시스템.
  4. 제 1 항에 있어서,
    상기 다운로드 모드에서 상기 읽혀지는 어드레스 위치가 상기 램으로 변경되도록 상기 중앙처리장치가 상기 뱅크 선택기의 동작을 제어하도록 구성되는 임베디드 시스템.
  5. 제 3 항에 있어서,
    상기 다운로드 인터페이스 로직은 상기 외부 인터페이스를 통해 다운로드되는 상기 다른 실행 코드를 포함하는 데이터를 미리 정의한 특정 프로토콜에 따라 상기 램에 전달하며,
    상기 데이터는 상기 다른 실행 코드를 저장할 시작 주소와, 상기 뱅크 선택기의 뱅크 선택과 상기 중앙처리장치의 초기화를 위한 정보를 포함하는 임베디드 시스템.
  6. 제 4 항에 있어서,
    상기 다운로드 인터페이스 로직은 상기 외부 인터페이스를 통해 다운로드되는 상기 다른 실행 코드를 포함하는 데이터를 미리 정의한 특정 프로토콜에 따라 상기 램에 전달하며,
    상기 데이터는 상기 다른 실행 코드를 저장할 시작 주소와, 상기 다운로드의 완료를 알리는 정보(End of Transfer)를 포함하는 임베디드 시스템.
  7. 외부의 호스트 시스템과 통신하며 초기 생성된 실행 코드가 저장된 롬이 구비된 임베디드 시스템의 운용 방법에 있어서,
    상기 호스트 시스템으로부터 외부 인터페이스를 통해 입력된 특정 패턴의 데이터가 다운로드 모드 데이터인지 판단하는 과정과,
    상기 판단 결과 다운로드 모드 데이터인 경우, 상기 외부 인터페이스를 통해 상기 호스트 시스템으로부터 다른 실행 코드를 다운로드 받는 과정과,
    상기 다운로드 받는 과정에서, 상기 다운로드 받는 상기 다른 실행 코드를 특정 프로토콜에 따라 램에 저장하는 과정과,
    상기 다른 실행 코드를 읽어올 수 있도록 상기 롬에서 상기 램으로 메모리 뱅크를 변경하는 과정을 포함하는 임베디드 시스템의 운용 방법.
  8. 제 7 항에 있어서,
    상기 판단 결과 다운로드 모드 데이터가 아닌 경우, 상기 초기 생성된 실행 코드를 실행하는 과정을 더 포함하는 임베디드 시스템의 운용 방법.
  9. 제 7 항에 있어서,
    상기 메모리 뱅크의 변경이 있을 경우 상기 임베디드 시스템의 중앙처리장치를 초기화하는 과정을 포함하는 임베디드 시스템의 운용 방법.
  10. 제 9 항에 있어서,
    상기 다운로드 받은 과정은 상기 다른 실행 코드를 상기 램에 저장할 시작 주소와, 상기 메모리 뱅크의 변경 및 상기 초기화를 위한 정보를 다운로드 받는 과정을 포함하는 임베디드 시스템의 운용 방법.
  11. 제 7 항에 있어서,
    상기 다운로드 받은 과정은 상기 다른 실행 코드를 저장할 시작 주소와, 상기 다운로드의 완료를 알리는 정보(End of Transfer)를 다운로드 받는 과정을 포함 하는 임베디드 시스템의 운용 방법.
KR1020060109635A 2006-11-07 2006-11-07 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그운용 방법 KR100842577B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060109635A KR100842577B1 (ko) 2006-11-07 2006-11-07 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그운용 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060109635A KR100842577B1 (ko) 2006-11-07 2006-11-07 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그운용 방법

Publications (2)

Publication Number Publication Date
KR20080041491A KR20080041491A (ko) 2008-05-13
KR100842577B1 true KR100842577B1 (ko) 2008-07-01

Family

ID=39648644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060109635A KR100842577B1 (ko) 2006-11-07 2006-11-07 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그운용 방법

Country Status (1)

Country Link
KR (1) KR100842577B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319683A (ja) * 1994-05-30 1995-12-08 Nippon Telegr & Teleph Corp <Ntt> 運用中プログラム更新方式
KR20010011952A (ko) * 1999-07-31 2001-02-15 구자홍 모듈별 업데이트 장치 및 그 방법
KR20020056610A (ko) * 2000-12-29 2002-07-10 구자홍 휴대장치에서의 모듈 프로그램 구현 방법
KR20030068234A (ko) * 2002-02-14 2003-08-21 삼성전자주식회사 원격 다운로드를 위한 유니트의 메모리 구조 및 원격다운로드 방법
US20050108467A1 (en) 2003-11-19 2005-05-19 Scott Clifton E. System and method for operating dual bank read-while-write flash
KR20060122105A (ko) * 2005-05-25 2006-11-30 엘지전자 주식회사 실행코드 업데이트기능이 구비된 이동통신 단말기 및 그동작방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319683A (ja) * 1994-05-30 1995-12-08 Nippon Telegr & Teleph Corp <Ntt> 運用中プログラム更新方式
KR20010011952A (ko) * 1999-07-31 2001-02-15 구자홍 모듈별 업데이트 장치 및 그 방법
KR20020056610A (ko) * 2000-12-29 2002-07-10 구자홍 휴대장치에서의 모듈 프로그램 구현 방법
KR20030068234A (ko) * 2002-02-14 2003-08-21 삼성전자주식회사 원격 다운로드를 위한 유니트의 메모리 구조 및 원격다운로드 방법
US20050108467A1 (en) 2003-11-19 2005-05-19 Scott Clifton E. System and method for operating dual bank read-while-write flash
KR20060122105A (ko) * 2005-05-25 2006-11-30 엘지전자 주식회사 실행코드 업데이트기능이 구비된 이동통신 단말기 및 그동작방법

Also Published As

Publication number Publication date
KR20080041491A (ko) 2008-05-13

Similar Documents

Publication Publication Date Title
KR100642045B1 (ko) 호스트 프로세서로부터 멀티미디어 프로세서로 멀티미디어프로그램을 다운로드하는 시스템 및 방법
JPH066406A (ja) プロトコル実現装置および方法
CN107704285B (zh) 现场可编程门阵列多版本配置芯片、系统和方法
JP2004005637A (ja) インシステムプログラミングのための方法および構成
JP7122969B2 (ja) マイクロコントローラのデータ転送をプログラミングするシステムおよび方法
JP6998991B2 (ja) 情報処理用方法及び装置
JP3824580B2 (ja) 移動通信携帯端末及びダウンロードプログラムファイル管理用プログラム
KR20060070112A (ko) Usb otg를 이용한 프로그래밍/업데이트 방법
US20090006835A1 (en) Electronic device and control method thereof
EP2360581A1 (en) Method, system and device for execution of a software application
KR100842577B1 (ko) 소프트웨어 다운로드 기능을 갖춘 임베디드 시스템과 그운용 방법
KR100606806B1 (ko) 이동통신 단말기의 소프트웨어 업그레이드 방법
WO2020077487A1 (zh) 优化和运行安卓应用程序的方法以及相关装置
WO2002093390A1 (fr) Processeur de donnees et procede pour mettre a jour une table de donnees
CN106922189B (zh) 设备代理装置及其控制方法
JP2003036251A (ja) 信号処理装置
KR101470168B1 (ko) 제어기 내 cpu의 리프로그래밍 방법
KR100658564B1 (ko) 임베디드 시스템의 소프트웨어 개발 및 실행 방법, 그리고이를 이용한 이동 단말 장치
KR100665134B1 (ko) 임베디드 시스템의 루트 파일 시스템 구성 및 실행 방법,그리고 이를 이용한 이동 단말 장치
JP5251353B2 (ja) 情報処理装置
CN106445571B (zh) 主机板及开机的方法
CN106354683B (zh) 微控制装置及应用于微控制装置的输入/输出系统
KR100629464B1 (ko) 다중 마이크로프로세서 이동통신 단말기에 펌웨어의다운로드 속도를 향상하기 위한 병렬 다운로드 방법
KR100595198B1 (ko) 이동통신 단말기에서의 에러 처리방법 및 장치
WO2016078222A1 (zh) 引导程序传输方法、嵌入式系统及引导程序传输系统

Legal Events

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

Payment date: 20130530

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150528

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160530

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170529

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180530

Year of fee payment: 11