KR100866211B1 - 프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법 - Google Patents

프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법 Download PDF

Info

Publication number
KR100866211B1
KR100866211B1 KR1020070000809A KR20070000809A KR100866211B1 KR 100866211 B1 KR100866211 B1 KR 100866211B1 KR 1020070000809 A KR1020070000809 A KR 1020070000809A KR 20070000809 A KR20070000809 A KR 20070000809A KR 100866211 B1 KR100866211 B1 KR 100866211B1
Authority
KR
South Korea
Prior art keywords
code
binary
existing
present
memory address
Prior art date
Application number
KR1020070000809A
Other languages
English (en)
Other versions
KR20080064065A (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 KR1020070000809A priority Critical patent/KR100866211B1/ko
Publication of KR20080064065A publication Critical patent/KR20080064065A/ko
Application granted granted Critical
Publication of KR100866211B1 publication Critical patent/KR100866211B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/123Software or firmware update, e.g. device firmware management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Abstract

본 발명은 타겟 바이너리가 생성된 이후에 소스 코드가 변경되더라도 타겟 바이너리를 다시 빌드하지 않아도 타켓 바이너리를 변경할 수 있도록 한다. 이를 위해 본 발명은 동적 링킹(dynamic linking) 방식으로 명명되는 알고리즘을 채용한다. 원래의 소스 프로그램 상에서 일부 코드가 변경되는 경우, 본 발명의 실시예에 따라, 변경된 코드의 파일을 컴파일하여 오브젝트 파일을 생성한다. 본 발명의 실시예는 이 새로운 오브젝트 파일을 타겟 바이너리에 포함시키지 않고, 별도의 바이너리로서 미리 정해진 주소의 메모리에 저장한다. 그리고, 기존의 타겟 바이너리에서 변경된 코드가 대응하는 기존 코드는 브랜치 코드로 오버라이트된다. 이 브랜치 코드는 새로운 오브젝트 파일의 바이너리를 호출한다. 즉, 브랜치 코드는 기존 타겟 바이너리의 레지스터들 및 스택들을 모두 보존하면서, 새로운 오브젝트 파일의 바이너리가 저장된 메모리 주소로 브랜치하는 역할을 한다.
타겟 바이너리, 오브젝트 파일

Description

프로그램 개발 장치 및 방법과 이를 이용한 프로그램 업데이트 방법{Apparatus and method for developing programs and a method of updating programs}
도 1은 프로그램의 일부 코드가 변경된 경우에 타겟 바이너리 파일의 생성을 모식적으로 나타낸 도면,
도 2는 본 발명의 개념을 설명하기 위한 도면,
도 3은 본 발명의 일 실시예에 따른 프로그램 개발 장치의 블록 구성도를 나타낸 도면,
도 4는 본 발명의 일 실시예에 따른 코드 빌드 유닛의 동작을 나타낸 플로우챠드,
도 5는 본 발명의 일 실시예에 따른 동적 링크 유닛의 동작을 나타낸 플로우챠드,
도 6는 프로그램의 일부 코드가 변경된 경우에 본 발명의 일 실시예에 따른 동적 링킹 방법을 모식적으로 나타낸 도면,
도 7은 본 발명의 일 실시예에 따른 OTA를 통한 업데이트 과정을 나타낸 플로우챠드.
본 발명은 프로그램 개발 장치 및 방법 및 이를 이용한 프로그램 업데이트 방법에 관한 것이다.
방대하고 또한 다양한 신호 처리가 요구되는 측정 장치나 통신 장치 등의 전자 기기는 일반적으로 고성능의 프로세서가 탑재되어 있다. 이와 같은 프로세서 상에서 실행되는 프로그램도 역시 복잡하고 크기가 커지는 경향이 있다. 이들 전자 기기에 기록되어 있는 프로그램은 버그를 포함하기도 하고, 기능의 추가나 개선을 요구받는 일이 많다. 이를 위해, 프로그램 개발자들은 자주 전자 기기에서 실행될 프로그램의 일부를 수정하고 수정된 프로그램에 대하여 테스트를 수행한다.
그런데, 기존에는 목적(Target) 프로그램의 코드를 수정하거나 새로운 코드를 작성하게 되면 테스트를 위하여 전체 타겟 바이너리를 빌드하고 해당 전자 기기에 다운로드한 후에 테스트가 실시되었다. 즉, 코드의 변경이 작더라도 변경된 코드에 대한 테스트 결과를 얻기 위해서는 타겟 바이너리를 빌드하고 해당 전자 기기에 다운로드해야 한다.
이러한 타겟 바이너리를 빌드하는 절차에는 수정되지 않은 많은 프로그램 코드들의 의존성을 검사하는 과정, 오브젝트 파일들을 링크하는 과정 등이 포함되므로 긴 시간이 소요된다. 컴파일 과정은 변경된 코드의 파일에 대해서만 수행되지만, 변경된 파일의 의존성 검사에도 시간이 소요되며, 특히 전체 오브젝트 파일들 을 링크하는 부분이 가장 많은 지연시간을 차지하고 있다.
도 1은 프로그램의 일부 코드가 변경된 경우에 타겟 바이너리 파일의 생성을 모식적으로 나타낸 도면이다.
도 1을 참조하면, 어떤 프로그램의 일부 코드, 즉, 어떤 소스 프로그램(10)이 변경된 경우, 변경된 소스 프로그램(10)만이 컴파일된다. 그러나, 소스 프로그램(10)이 컴파일된 결과인 오브젝트 파일은 다른 많은 오브젝트 파일들과 링크되어 타겟 바이너리(20)가 생성된다.
기존의 방식은 코드를 수정한 경우 이미 만들어져 있는 Target Binary 파일을 삭제하고 변경된 코드의 파일을 컴파일하여 오브젝트 파일을 생성하고 이미 생성되어 있던 오브젝트 파일들과 링크하여 타겟 바이너리를 생성한다. 이 과정에서 수천개의 오브젝트 파일들이 심볼 링크 과정과 재배치 과정을 거치기 때문에 오랜 시간이 소요되게 된다. 즉, 하나의 소스 코드를 수정하여도 매번 수천개의 오브젝트 파일들을 링크하여 타겟 바이너리를 생성하고 해당 전자 기기에 다운로드하는 시간이 소요된다.
한편, 양산된 전자 기기를 업데이트 하기 위하여 기존에는 변경된 바이너리 전체를 OTA를 통하여 업데이트 하는 방식을 사용하고 있다. 하지만 이 방법은 전체 바이너리를 전송하여야 하기 때문에 시간적 / 비용적 손실이 크다고 할 수 있다.
본 발명은 이미 Target Binary가 수천개의 오브젝트 파일들의 링크 과정을 거쳐 생성되었으므로 소스코드가 수정될 때마다 매번 Target Binary를 생성하지 않도록 한다.
본 발명은 타겟 바이너리를 다운로드하는데 소요되는 시간을 절약할 수 있도록 한다.
또한, 본 발명은 양산이 완료된 전자 기기의 프로그램 업데이트를 용이하게 하도록 한다.
이하 본 발명의 바람직한 실시 예들을 첨부한 도면을 참조하여 상세히 설명한다. 또한 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.
이를 위해 본 발명에 따른 전자 기기에 인스톨되는 프로그램을 개발하는 장치는 기존의 코드를 대체하기 위해 새로 작성된 코드를 독립적으로 컴파일 및 링크하여 바이너리를 생성하는 코드 빌드 유닛과, 상기 생성된 바이너리를 미리 정해진 메모리 주소에 저장하는 파일 바이너리 로딩 유닛과, 대체될 상기 기존의 코드를 상기 미리 정해진 메모리 주소로 브랜치할 수 있도록 하는 브랜치 코드로 오버라이트하는 동적 링크 유닛을 포함한다.
이하 본 발명의 바람직한 실시 예들을 첨부한 도면을 참조하여 상세히 설명한다. 또한 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.
먼저, 프로그램은 생성하는 과정은 프로그램 코드를 적절한 에디터를 이용하여 작성(type out)하는 과정, 소스 프로그램 코드를 컴파일하여 오브젝트 파일을 생성하는 과정, 오브젝트 파일들을 결합(combine)하여 실행가능한 (executable) 타겟 바이너리를 생성하는 과정을 포함한다.
본 발명은 타겟 바이너리가 생성된 이후에 소스 코드가 변경되더라도 타겟 바이너리 전체를 다시 생성하지 않아도 타켓 바이너리가 변경된 동작을 할 수 있도록 한다.
이를 위해 본 발명은 동적 링킹(dynamic linking) 방식으로 명명되는 알고리즘을 채용한다. 원래의 소스 프로그램 상에서 일부 코드가 변경되는 경우, 본 발명의 실시예에 따라, 변경된 코드의 파일을 컴파일하여 오브젝트 파일을 생성한다. 본 발명의 실시예는 이 새로운 오브젝트 파일을 타겟 바이너리에 포함시키지 않고, 별도의 바이너리로서 미리 정해진 주소의 메모리에 저장한다. 그리고, 기존의 타겟 바이너리에서 변경된 코드가 대응하는 기존 코드는 브랜치 코드로 오버라이트된다. 이 브랜치 코드는 새로운 오브젝트 파일의 바이너리를 호출한다. 즉, 브랜치 코드는 기존 타겟 바이너리의 레지스터들 및 스택들을 모두 보존하면서, 새로운 오브젝트 파일의 바이너리가 저장된 메모리 주소로 브랜치하는 역할을 한다.
이러한 본 발명의 개념을 도 2를 참조하여 설명한다. 참조부호 1~6은 프로그램의 실행 순서를 나타낸다.
도 2를 참조하면, 본 발명의 실시예에 따라 타겟 바이너리를 변경하지 않고, 변경된 코드에 대응하는 기존 코드는 브랜치 코드로 오버라이트되어 있다.
소정 전자 기기의 프로세서는 참조부호 1에 의해 지시된 방향으로 프로그램을 실행하는 중에 참조부호 2에 의해 지시된 브랜치 코드를 만난다. 프로세서는 브랜치 코드에 의해 참조부호 3에 의해 지시된 메모리의 주소로 브랜치한 후 참조부호 4에 의해 지시된 방향으로 프로그램을 실행한다. 참조부호 3에 의해 지시된 메모리 주소에는 변경된 코드가 컴파일되어 생성된 오브젝트 파일의 바이너리가 저장되어 있다. 이 때, 변경된 코드는 기존의 코드와 동일하게 링크레지스터(LR) 또는 스택에 저장된 리턴어드레스를 사용하여 기존의 타겟 바이너리로 리턴하도록 프로그램되어 있다. 그러므로, 프로세서는 새로운 코드의 프로그램을 실행한 후 기존의 타겟 바이너리로 리턴한다.
이와 같이, 본 발명은 기존의 타겟 바이너리를 변경하지 않고 프로그램 코드를 변경할 수 있기 때문에 테스트에 소요되는 시간 및 자원을 줄일 수 있다.
한편, 상기 설명한 본 발명의 실시예는 프로그램을 탑재한 전자 기기에도 적용할 수 있다. 예컨대, 전자 기기에 수정된 부분의 바이너리 및 동적 링크 바이너리에 대한 정보를 제공한다. 이후 전자 기기에서 부팅시, 전자 기기는 동작 링크 바이너리에 대한 정보에 기초하여 변경된 바이너리 코드들에 대해 동적 링킹을 수행하는 것이다.
그에 따라, 전자 기기가 양산된 후에도 수정된 부분의 바이너리만을 전자 기기에 제공함으로써 프로그램의 업데이트를 달성할 수 있게 된다.
도 3은 본 발명의 일 실시예에 따른 프로그램 개발 장치의 블록 구성도를 나타낸 도면이다.
도 3을 참조하면, 프로그램 개발 장치는 코드 빌드 유닛(110), 바이너리 로딩 유닛(120), 파일 시스템(130), 동적 링크 유닛(140) 및 메모리(150)를 포함한다.
코드 빌드 유닛(110)은 수정된 소스 코드들을 독립적으로 컴파일 및 링크하여 바이너리를 생성한다. 코드 빌드 유닛(110)의 상세한 동작은 도 4를 참조하여 설명한다.
도 4는 본 발명의 일 실시예에 따른 코드 빌드 유닛의 동작을 나타낸 플로우챠드이다.
도 4를 참조하면, 코드 빌드 유닛(110)은 단계 310에서 새로운 코드를 컴파일하여 오브젝트 코드들을 생성한다. 이어서 코드 빌드 유닛(110)은 단계 320에서 기존 바이너리의 심볼 테이블 파일 중에서 기존 코드에 대해 정의된 심볼을 제거한다. 그런 다음, 코드 빌드 유닛(110)은 단계 330에서 생성한 오브젝트 코드를 기존 바이너리의 심볼 테이블 파일과 링크한다. 이 때, 코드 빌드 유닛(110)은 수정된 코드의 바이너리가 메모리 상에 로드될 주소에 맞춰서 심볼 재배치를 수행한다.
바이너리 로딩 유닛(120)은 생성된 바이너리를 파일 시스템(130)에 저장한다. 이와 같이, 본 발명은 수정된 코드들의 바이너리를 기존의 타겟 바이너리에 포함시키지 않고 파일 시스템(130)에 저장한 후, 이후 부팅시 특정 메모리 주소에 로드한다.
동적 링크 유닛(140)은 파일 시스템(130)에 저장된 바이너리를 메모리(150)에 로드하여 브랜치 코드를 통해 기존의 코드들을 로드한 바이너리로 대체한다. 동 적 링크 유닛(140)의 상세한 동작은 도 5를 참조하여 설명한다.
도 5는 본 발명의 일 실시예에 따른 동적 링크 유닛의 동작을 나타낸 플로우챠드이다.
도 5를 참조하면, 동적 링크 유닛(140)은 단계 210에서 수정되어야 하는 기존의 코드들을 백업한다. 이어서, 동적 링크 유닛(140)은 단계 220에서 해당 코드들에 대응한 영역이 리드/라이트 가능한 상태가 되도록 상기 영역에 대응한 MMU(Memory Management Unit)를 세팅한다. 동적 링크 유닛(140)은 단계 230에서 변경될 기존의 코드들을 브랜치 코드로 오버라이트한 후 단계 240에서 오버라이트된 영역이 판독만 되는(readonly) 상태가 되도록 MMU를 세팅한다.
이 경우, 기존 타겟 바이너리에서 수정되어야 할 부분에 새로운 코드를 직접 오버라이트하지 않는 몇 가지의 이유가 있다. 첫번째 이유는 새로운 코드들을 기존의 코드들의 위치에 각각 오버라이트되기 위해서는 오브젝트 파일별로 링크하거나 심볼들을 재배치해야 하기 때문이다. 두번째 이유는 기존의 코드들의 길이가 새로운 코드들과 다를 수 있기 때문이다.
본 발명에 따라 수정되어야 할 부분을 오버라이트하는 브랜치 코드는 다음과 같이 작성될 수 있다.
 PUSH {r0,r1,r2}     MOV r1,sp     ADD r1,r1,#8     LDR r0,=nAddr     STR r0,[r1]     POP {r0,r1,pc} nAddr     DCD [Address of New Code]
이 브랜치 코드는 기존의 코드가 호출 되는 경우 레지스터와 스택을 모두 변 경하지 않고 새로운 주소로 브랜치하는 역할을 한다. 브랜치 코드로부터 리턴할 주소는 레지스터에 저장된다. 프로세서가 기존의 코드를 리드할 때, 오버라이트된 브랜치 코드가 기존의 코드 대신에 실행된다. 브랜치 코드는 기존의 레지스터들과 스택들을 변형하지 않고 새로운 코드로의 분기를 가능하게 한다. 또한, 리턴할 주소가 레지스터에 저장되었기 때문에 프로세서는 기존 코드를 호출했던 지점으로 리턴할 수 있다. 인자(argument)와 리턴값이 적절하게 사용되기 위해서는 기존 코드와 새로운 코드는 같은 프로토타입(Prototype)을 가져야 한다.
이후, 동적 링크 유닛(140)은 기존의 코드를 복구할 수 있다. 구체적으로, 동적 링크 유닛(140)은 브랜치 코드로 오버라이트된 부분에 대응한 MMU를 리드/라이트 가능한 상태가 되도록 세팅한 후, 백업되었된 기존의 코드를 원래의 자리에 라이트함으로써 복원한다. 기존 코드의 복원 후, 동적 링크 유닛(140)은 상기 MMU를 대응 코드 영역이 독출만 가능한(Readonly) 상태가 되도록 세팅한다.
도 6는 프로그램의 일부 코드가 변경된 경우에 본 발명의 일 실시예에 따른 동적 링킹 방법을 모식적으로 나타낸 도면이다.
도 6을 참조하면, 새로운 코드의 바이너리는 타겟 바이너리에 포함되지 않고, 특정 메모리 주소에 로드된다. 이후, 프로그램의 실행 시, 새로운 코드는 브랜치 코드에 의해 링크되어 기존 타겟 바이너리에 연결되어 수행될 수 있다.
한편, 본 발명의 다른 실시예에 따라, 동적 링킹 방법을 양산된 전자 기기에 적용하는 경우 전체 바이너리가 아닌 수정된 바이너리가 작성되어 OTA(Over The Air)를 통하여 전송하는 방법을 사용할 수 있다.
도 7은 본 발명의 일 실시예에 따른 OTA를 통한 업데이트 과정을 나타낸 플로우챠드이다.
도 7을 참조하면, 어떤 프로그램의 일부 코드, 즉, 어떤 소스 프로그램이 변경된 경우, 서버(402)는 단계 410에서 변경된 소스 프로그램만이 컴파일되어 동적 링킹 바이너리를 생성하고 이 동적 링킹 바이너리는 OTA를 통해 단말(404)에 제공한다. 단말(404)은 단계 420에서 OTA를 통해 수신한 동적 링킹 바이너리를 비휘발성 메모리에 저장하고 단계 430에서 동적 링킹에 관련한 정보를 저장한다. 이 후, 단말(404)는 단계 440에서 부팅할 경우, 단계 450에서 동적 링킹에 관련한 정보를 참조하여 동적 링킹 알고리즘을 사용한다.
이를 좀 더 구체적으로 설명하면, 본 발명의 실시예에 따라, OTA를 통해 동적 링킹 바이너리가 전자 기기에 수신되면, 이 동적 링킹 바이너리는 휘발성 메모리 예컨대, SDRAM에 먼저 저장되므로, 동적 링킹 바이너리가 비휘발성 메모리 예컨대, NAND에 추가적으로 저장되도록 한다. 이러한 저장은 동적 링킹 바이너리를 다운로드할 때 또는 전자 기기의 파워 오프 시 수행될 수 있다.
이어서, 전자 기기는 적용된 동적 링크에 대한 정보를 별도로 비휘발성 메모리에 저장한다. 이후, 전자 기기는 부팅시, 새로운 바이너리를 비휘발성 메모리로부터 휘발성 메모리로 로드할 수 있다. 또는 전자 기기는 업데이트될 기존의 바이너리 부분에 대응하는 MMU를 리드/라이트 가능하도록 세팅하고, 비휘발성 메모리에 저장된 새로운 바이너리를 페이지 폴트(page fault) 방식을 이용하여 페이지 단위로 휘발서 메모리에 로드할 수 있다.
이와 같이, 본 발명의 상기한 실시예에 따르면, 양산된 전자 기기가 OTA를 통해 전체 바이너리가 아닌 수정 바이너리만을 다운로드하여 업데이트를 수행할 수 있다.
한편 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 실시예는 어떠한 프로그램 개발에도 적용될 수 있음은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며 후술하는 특허청구 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
전술한 바와 같이, 본 발명은 기존의 방식에서 수정된 코드를 테스트할 때 해당 전자 기기에 전체 바이너리를 다운로드하는데 소요되는 자원 및 시간을 단축할 수 있다. 또한, 양산된 전자 기기에서 일부 수정된 바이너리를 업데이트 해야 할 필요가 있는 경우, OTA를 통하여 모든 바이너리를 업데이트 하는 기존의 방식을 개선하여, 수정된 부분의 바이너리만으로 업데이트가 가능하도록 하여 바이너리 업데이트에 소요되는 시간 및 비용을 절약할 수 있다.

Claims (7)

  1. 전자 기기에 인스톨되는 프로그램을 개발하는 장치에 있어서,
    기존의 코드를 대체하기 위해 새로 작성된 코드를 독립적으로 컴파일 및 링크하여 바이너리를 생성하는 코드 빌드 유닛과,
    상기 생성된 바이너리를 미리 정해진 메모리 주소에 저장하는 파일 바이너리 로딩 유닛과,
    대체될 상기 기존의 코드를 상기 미리 정해진 메모리 주소로 브랜치할 수 있도록 하는 브랜치 코드로 오버라이트하는 동적 링크 유닛을 포함하는 것을 특징으로 하는 프로그램 개발 장치.
  2. 제1항에 있어서, 상기 동적 링크 유닛은 상기 기존의 코드를 백업하고, 상기 기존의 코드에 대응한 영역이 리드/라이트 가능한 상태가 되도록 MMU(Memory Management Unit)를 세팅한 후 오버라이트 동작을 수행함을 특징으로 하는 프로그램 개발 장치.
  3. 제1항에 있어서, 상기 코드 빌드 유닛은 상기 바이너리를 생성한 후 기존 바이너리의 심볼 테이블 파일 중에서 상기 기존의 코드에 대해 정의된 심볼을 제거하고, 상기 생성한 바이너리를 기존 바이너리의 심볼 테이블 파일과 링크함을 특징으로 하는 프로그램 개발 장치.
  4. 전자 기기에 인스톨되는 프로그램을 개발하는 방법에 있어서,
    기존의 코드를 대체하기 위해 새로 작성된 코드를 독립적으로 컴파일 및 링크하여 바이너리를 생성하는 단계와,
    상기 생성된 바이너리를 미리 정해진 메모리 주소로 로드하는 단계와,
    대체될 상기 기존의 코드를 상기 미리 정해진 메모리 주소로 브랜치할 수 있도록 하는 브랜치 코드로 오버라이트하는 단계를 포함하는 것을 특징으로 하는 프로그램 개발 방법.
  5. 제4항에 있어서, 상기 오버라이트 단계는 상기 기존의 코드를 백업하는 단계와,
    상기 기존의 코드에 대응한 영역이 리드/라이트 및 리드온리 가능한 상태가 되도록 MMU(Memory Management Unit)를 세팅한 후 오버라이트 및 복원 동작을 수행하는 단계를 포함함을 특징으로 하는 프로그램 개발 방법.
  6. 제4항에 있어서, 상기 코드 빌드 유닛은 상기 바이너리를 생성한 후 기존 바이너리의 심볼 테이블 파일 중에서 상기 기존의 코드에 대해 정의된 심볼을 제거하는 단계와,
    상기 생성한 바이너리를 기존 바이너리의 심볼 테이블 파일과 링크하는 단계를 포함함을 특징으로 하는 프로그램 개발 방법.
  7. 전자 기기에 인스톨된 프로그램을 업데이트하는 방법에 있어서,
    기존의 코드를 대체하기 위해 새로 작성된 코드를 독립적으로 컴파일 및 링크함으로써 생성된 바이너리를 수신하는 단계와,
    상기 생성된 바이너리를 미리 정해진 메모리 주소에 저장하는 단계와,
    부팅 시, 대체될 상기 기존의 코드를 상기 미리 정해진 메모리 주소로 브랜치할 수 있도록 하는 브랜치 코드로 오버라이트하는 단계를 포함하는 것을 특징으로 하는 프로그램 업데이트 방법.
KR1020070000809A 2007-01-03 2007-01-03 프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법 KR100866211B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070000809A KR100866211B1 (ko) 2007-01-03 2007-01-03 프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070000809A KR100866211B1 (ko) 2007-01-03 2007-01-03 프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법

Publications (2)

Publication Number Publication Date
KR20080064065A KR20080064065A (ko) 2008-07-08
KR100866211B1 true KR100866211B1 (ko) 2008-10-30

Family

ID=39815521

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070000809A KR100866211B1 (ko) 2007-01-03 2007-01-03 프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법

Country Status (1)

Country Link
KR (1) KR100866211B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184615A1 (en) 2001-04-25 2002-12-05 Sumner William Earl System and method for selectively and automatically modifying the source code of a computer program
US20040034814A1 (en) 2000-10-31 2004-02-19 Thompson Carol L. Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions
KR20050010640A (ko) * 2003-07-22 2005-01-28 재단법인서울대학교산학협력재단 응용 프로그램의 동적링크 방법
JP2005182102A (ja) 2003-12-16 2005-07-07 Nec Corp ビルドシステム及び方法並びにビルド用プログラム、ビルドサーバ
JP2006107025A (ja) 2004-10-04 2006-04-20 Nec Corp ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体
WO2006040505A1 (en) 2004-10-12 2006-04-20 Picsel (Research) Limited Platform-independent dynamic linking

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040034814A1 (en) 2000-10-31 2004-02-19 Thompson Carol L. Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions
US20020184615A1 (en) 2001-04-25 2002-12-05 Sumner William Earl System and method for selectively and automatically modifying the source code of a computer program
KR20050010640A (ko) * 2003-07-22 2005-01-28 재단법인서울대학교산학협력재단 응용 프로그램의 동적링크 방법
JP2005182102A (ja) 2003-12-16 2005-07-07 Nec Corp ビルドシステム及び方法並びにビルド用プログラム、ビルドサーバ
JP2006107025A (ja) 2004-10-04 2006-04-20 Nec Corp ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体
WO2006040505A1 (en) 2004-10-12 2006-04-20 Picsel (Research) Limited Platform-independent dynamic linking

Also Published As

Publication number Publication date
KR20080064065A (ko) 2008-07-08

Similar Documents

Publication Publication Date Title
US6795963B1 (en) Method and system for optimizing systems with enhanced debugging information
US6442660B1 (en) Dynamic system relocation based on availability of system memory
US5581697A (en) Method and apparatus for run-time error checking using dynamic patching
US9477461B1 (en) Systems and methods for generating and applying operating system live updates
JP4006337B2 (ja) 共有ライブラリを使用して実行可能ファイルの実行を修正する方法
US20030212983A1 (en) Method and system for modifying executable code to add additional functionality
JPH08179940A (ja) コンピュータ・アプリケーション・プログラムをデバッグする方法およびコンピュータ・システム
CN110088736B (zh) 自调试方法和系统
JP2007521529A (ja) コンポーネントベースのソフトウェア・プロダクトの保守
US8381198B2 (en) Systems, methods and computer program products for safety checking executable application programs in a module
US20060190933A1 (en) Method and apparatus for quickly developing an embedded operating system through utilizing an automated building framework
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
JP2008502968A (ja) 中間オブジェクト指向言語を備えるソフトウェアをポータブル・デバイスにロードするための方法
US6550058B1 (en) Stack clearing device and method
CN102364433B (zh) 在ARM处理器上实现Wine构建工具移植的方法
CN115617687B (zh) 程序插桩方法、装置、设备和存储介质
CN112882718A (zh) 编译处理方法、装置、设备及存储介质
WO2022140336A1 (en) System and methods for live debugging of transformed binaries
US20080127118A1 (en) Method and system for dynamic patching of software
WO2022156277A1 (zh) 一种应用程序安装方法、装置、计算设备及可读存储介质
CN111400256B (zh) 一种应用程序调用资源文件的方法及装置
CN114490103A (zh) 一种操作系统接口调用方法、装置以及电子设备
KR100866211B1 (ko) 프로그램 개발 장치 및 방법과 이를 이용한 프로그램업데이트 방법
JP2009015428A (ja) プログラム更新方法、情報処理装置、プログラムおよび記録媒体
WO2022194173A1 (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
LAPS Lapse due to unpaid annual fee