KR20090035521A - Efi 기반 펌웨어에서의 프리 efi 초기화 모듈의 전역변수 사용법 - Google Patents

Efi 기반 펌웨어에서의 프리 efi 초기화 모듈의 전역변수 사용법 Download PDF

Info

Publication number
KR20090035521A
KR20090035521A KR1020097000765A KR20097000765A KR20090035521A KR 20090035521 A KR20090035521 A KR 20090035521A KR 1020097000765 A KR1020097000765 A KR 1020097000765A KR 20097000765 A KR20097000765 A KR 20097000765A KR 20090035521 A KR20090035521 A KR 20090035521A
Authority
KR
South Korea
Prior art keywords
driver image
data
section
code
nonvolatile memory
Prior art date
Application number
KR1020097000765A
Other languages
English (en)
Other versions
KR101036675B1 (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 KR20090035521A publication Critical patent/KR20090035521A/ko
Application granted granted Critical
Publication of KR101036675B1 publication Critical patent/KR101036675B1/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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Read Only Memory (AREA)

Abstract

프리 EFI 초기화(PEI)에서 전역 변수 읽기/쓰기 동작을 가능하게 하는 방법이 개시된다. 본 방법은 드라이버 이미지를 생성하는 것을 포함한다. 이 드라이버 이미지는 적어도 코드 섹션(즉, 텍스트 섹션), 데이터 섹션, 재배치 섹션을 포함한다. 이 드라이버 이미지에 대한 제1 라운드 조정은 모든 어드레스 데이터 항목을 절대 불휘발성 메모리 어드레스를 가지고 조정하도록 수행된다. 이 드라이버 이미지에 대한 제2 라운드 조정은 이 데이터 섹션을 가리키는 제1 라운드 조정에서 조정된 모든 어드레스 데이터 항목을 절대 RAM으로서의 캐시 어드레스(Cache-As-Random Access Memory)를 가지고 조정하도록 수행된다. 이 조정된 이미지는 불휘발성 메모리 장치에 기록된다. 이 불휘발성 메모리 장치 부팅 시 이 기록된 드라이버 이미지의 데이터 섹션은 RAM으로서의 캐시(CAR)에 복사되고 이 텍스트 섹션의 실행 코드를 실행함으로써 정적 변수 및 전역 변수가 CAR로부터의 읽기/쓰기 액세스를 가질 수 있다.
프리 EFI, 전역 변수, 정적 변수, 드라이버 이미지, 라운드 조정

Description

EFI 기반 펌웨어에서의 프리 EFI 초기화 모듈의 전역 변수 사용법{A METHOD TO USE GLOBAL VARIABLES FOR PRE-EFI INITIALIZATION MODULES IN EFI-BASED FIRMWARE}
본 발명은 일반적으로 펌웨어에 관한 것이다. 특히, 본 발명은 EFI용 플랫폼 이노베이션 프레임워크(Platform Innovation Framework)의 프리 EFI(pre-Extensible Firmware Interface) 초기화 단계 동안의 전역 변수 사용법에 관한 것이다.
캘리포니아주 산타클라라시 소재의 Intel® 코포레이션이 개발한 EFI(Extensible Firmware Interface)용 플랫폼 이노베이션 프레임워크는 C로 구현되며, 파워온부터 운영체제에 제어권을 넘길 때까지 플랫폼을 초기화하는데 필요한 전체 범위의 동작을 수행하기 위해 설계된 로버스트 아키텍쳐 인터페이스(robust architectural interfaces) 세트이다. EFI용 플랫폼 이노베이션 프레임워크(이하 "프레임워크"라 함)는 두 개의 주요 단계, 즉 프리 EFI 초기화(PEI) 단계와 드라이버 실행 환경(Driver Execution Environment; DXE) 단계로 나뉘어진다. PEI 단계는 메모리 디스커버리(memory discovery)를 지원하기 위한 최소한의 프로세서, 칩셋, 및 플랫폼 구성을 수행한다. DXE 단계는 플랫폼, 프로세서 및 칩셋 장치의 초 기화를 완료함으로써 PEI 단계를 진행시킨다.
PEI 단계에서는 사용할 수 있는 메모리가 없다. 사용할 수 있는 메모리는 없지만 프로세서 캐시가 RAM(Random access memory)로서 동작하도록 임시적으로 초기화할 수 있으며, 따라서 스택과 힙(heap)을 이 캐시에 저장할 수 있다. 이에 따라 PEI 단계에서 고급 프로그래밍 언어를 실행하여 모듈을 컴파일할 수 있다.
상기 프레임워크의 알려진 제한점은 PEI 단계의 모듈이 전역 변수를 읽기 전용 변수로 사용한다는점, 즉, 전역 변수가 변경될 수 없다는 점이다. PEI 단계에서는 메모리가 이용될 수 없기 때문에 모든 데이터 세그먼트 및 코드 세그먼트는 재배치 없이 플래시에 배치된다.
플래시의 데이터가 다른 종래의 메모리 장치에 배치된 데이터만큼 쉽게 변경되지 않는다는 것은 잘 알려진 사실이다. PEI 코드가 플래시의 데이터 섹션의 전역 변수에의 쓰기 액세스를 발동할 있지만 이 전역 변수는 변경될 수 없다. 이 제한점 때문에 PEI 모듈은 몇 가지 결점이 있다. 첫째, 함수 간에 모듈 전역 변수를 공유하는 능력이 제한된다. 함수 간에 공유되어야 할 필요가 있는 모든 변수는 스택이나 힙을 통해서 앞뒤로 전달되어야 한다. 이로 인해 코드 크기가 크게 증가할 수 있다. 또한, PEI 코드가 플래시에서 실행되기 때문에 압축을 행할 수가 없다. 둘째, 부팅 성능이 감소된다. 코드 필요성이 증가하면 압축을 풀고 실행하는데 더 많은 프로세서 주기가 필요하다. 게다가, 이 단계에서는 프로세서 캐시가 작동될 수 없으므로, 특히 플래시로부터의 빈번한 전역 변수 액세스에 대해서 실행 효율이 저하된다. 셋째, 펌웨어 개발자가 자신의 코드를 자유롭게 개발하고 테스트하지 못하게 된다.
따라서 EFI 기반 펌웨어용 프리 EFI 초기화(PEI) 환경에서 전역 변수 지원을 가능하게 하는 방법이 필요하다. 또한 PEI 단계 동안 전역 변수 변경을 가능하게 하는 방법도 필요하다.
본 명세서에 포함되어 본 명세서의 일부를 구성하고 있는 첨부 도면은 본 발명의 실시예를 설명하고, 상세한 설명과 함께, 본 발명의 원리를 설명하고 당업자가 본 발명을 구성하고 사용할 수 있도록 해준다. 도면에서 동일한 참조부호는 일반적으로 동일하거나 기능적으로 유사하거나 구조적으로 유사한 구성요소를 가리킨다. 해당 참조부호에서 가장 왼쪽 숫자는 구성요소가 처음 나타나는 도면을 가리킨다.
도 1은 본 발명의 실시예에 따른 예시적인 PE32(Portable Executable 32) 이미지를 나타낸 도.
도 2는 본 발명의 실시예에 따른, 프리 EFI 초기화(PEI) 단계 동안 전역 변수의 읽기/쓰기 액세스를 가능하게 하기 위해 PE32 이미지를 변경하는 예시적인 방법을 설명하는 흐름도.
도 3은 본 발명의 실시예에 따른, 프리 EFI 초기화 단계 동안 전역 변수의 읽기/쓰기 액세스를 가능하게 하기 위한 예시적인 PE32 이미지 변경을 나타낸 블록도.
도 4는 본 발명의 실시예에 따른 예시적인 제1 라운드 조정법(round fixing method) 을 설명하는 흐름도.
도 5는 본 발명의 실시예에 따른 예시적인 제2 라운드 조정법을 설명하는 흐름도.
본 발명을 특정 응용에 대한 예시적인 실시예를 참조하여 설명하지만 본 발명이 이에 한정되지 않는다는 것을 알아야 한다. 당업자라면 본 발명의 범위 내에서 그리고 본 발명의 실시예가 상당한 효용이 있는 추가적인 분야에서 여러 가지 변경, 응용, 및 실시예들을 추가할 수 있음을 잘 알 것이다.
본 명세서에서 본 발명의 "일 실시예"나 "특정 실시예", 또는 "다른 실시예"라는 말은 실시예와 관련하여 설명된 특정 특성이나 구조, 특징이 본 발명의 실시예들 중 적어도 하나에 포함된다는 것을 의미한다. 따라서 본 명세서의 여러 곳에서 나오는 "일 실시예에서" 또는 "특정 실시예에서"라는 구문은 모두 반드시 동일 실시예를 말하는 것은 아니다.
본 발명의 실시예는 프리 EFI 초기화 단계에 전역 변수 변경(즉, 읽기/쓰기 액세스)을 할 수 있게 하는 방법에 관한 것이다. 이것은 프로세서 캐시의 일부를 "RAM으로서의 캐시"(Cache As RAM; CAR)로 알려진 사용 모델로 이용하여 달성된다. 드라이버 이미지의 데이터 섹션을 플래시 장치에서 CAR의 영역으로 재배치함으로써 전역 변수가 마치 RAM에 있는 것같이 자유롭게 변경될 수 있다.
본 발명의 실시예는 EFI 기반 펌웨어의 프리 EFI 초기화(PEI) 단계 동안 플래시 장치에서 구현되고 있는 것으로 설명된다. EFI 기반 펌웨어의 PEI 단계는 PE32(Portable Executable 32) 이미지 포맷을 사용한다. 당업자라면 본 발명이 플래시 장치, EFI 기반 펌웨어, 또는 PE32 이미지 포맷에 한정되지 않는다는 것을 알 것이다. 또한 본 발명은 전역 변수가 읽기 전용 액세스로 제한되는 다른 이미지 포맷이 필요한 다른 소프트웨어/펌웨어 환경을 이용하는 다른 불휘발성 저장 장치에서도 구현될 수 있다.
EFI 기반 펌웨어는 표준 PE32(Portable Executable 32) 이미지 포맷을 지원한다. PE32 이미지 포맷은 섹션 별로 코드, 데이터, 및 예컨대 재배치 정보와 같은 다른 정보를 구성한다. 섹션들은 연속적으로 밀접하게 배치된다. 로더가 상기 이미지를 로드하면 메모리의 이미지 레이아웃은 그것의 파일 이미지와 거의 같다. 예외적으로 섹션들 간의 정렬 요구로 인한 메모리 이미지 레이아웃에 버블이 있을 수 있다. 통상적으로 섹션이 우선 연결 베이스(preferred linking base)에 로드되지 않으면 이 로더는 메모리 이미지를 조정할 것이다.
도 1은 본 발명의 실시예에 따른 예시적인 PE32(Portable Executable 32) 이미지(100)를 도시한 도면이다. 여기서 실행 드라이버 모듈(100)이라고도 하는 PE32 이미지(100)는 .텍스트 섹션(102), .데이터 섹션(104), 및 .재배치(.reloc) 섹션(106)을 포함한다. 일 실시예에서 .텍스트 섹션(102)은 .코드 섹션(102)이라고도 할 수 있다. 특정 실시예에서 실행 드라이버 모듈(100)은 .텍스트 섹션(102), .데이터 섹션(104), .재배치 섹션(106)에 한정되지 않는다. 실시예들에서 실행 드라이버 모듈(100)은 예컨대 .rdata 섹션, .rsrc 섹션 등과 같은 더 많은 섹션을 포함할 수도 있다. 전술한 바와 같이 섹션들 간의 정렬 요구는 섹션 들(102, 104, 106)이 연속적으로 밀접하게 배치되도록 하는 것이다.
.텍스트 섹션(102)은 실행 드라이버 모듈(100)용 실행 코드를 포함한다. .데이터 섹션(104)은 .텍스트 섹션(102)의 실행 동안 사용될 데이터를 포함한다. .재배치 섹션(106)은 절대 플래시 어드레스로 갱신될 모든 어드레스 데이터 항목에 대한 정보를 제공한다.
PE32 이미지가 올바르게 시작(launch)하려면 섹션(102, 104, 106)은 연속한 가상 또는 물리 메모리 공간에 배치되어야 한다. 페이징이 가능하면 섹션(102, 104, 106)은 연속적인 가상 메모리 공간에 있어야 한다. 페이징이 필요하지 않으면 섹션(102, 104, 106)은 연속적인 물리 메모리 공간에 있어야 한다. EFI 펌웨어의 경우에는 페이징이 항상 불가능하다. 따라서 섹션(102, 104, 106)은 연속적인 물리 메모리 공간에 배치된다. 이는 실행 드라이버 모듈(100)의 섹션(102, 104, 106)이 불연속적인 메모리 범위로 분리되는 것을 방지한다. 실행 모듈이 다른 베이스에 로드되는 경우에는 실행 드라이버 모듈(100)의 모든 섹션(102, 104, 106)은 함께 그 새로운 베이스에 재배치된다. 코드 섹션("텍스트 섹션"이라고도 함)을 베이스에 재배치하고 데이터 섹션을 다른 불연속적인 새로운 베이스에 재배치하는 것은 허용되지 않는다.
PEI 단계에서 전역 변수를 변경할 수 있게 하는 목표를 달성하기 위해 실행 드라이버 모듈(100)의 PE32 섹션(102, 104, 106)은 서로 다른 메모리 범위로 분리되어야 한다. 예컨대, 정적 및/또는 전역 변수가 저장된 .데이터 섹션(104)이 CAR에 재배치되어야 하는 반면에 .텍스트 섹션(102)는 플래시 공간에 유지되어야 한 다. 플래시 및 CAR에 대한 공간 범위는 서로 다르고 불연속적이다.
.데이터 섹션(104)을 CAR로 옮기는 반면에 플래시에 .텍스트 섹션(102)와 .재배치 섹션(106)을 유지하고 있을 때 실행 드라이버 모듈(100)의 적절한 실행을 보장하기 위해서는, 코드가 플래시에 있으면 조정이나 재배치 없이 적소에 실행되어야 하기 때문에 그 코드가 플래시에 기록되기 전에, 먼저 구축 툴을 이용하여 .텍스트 섹션(102) 및 .데이터 섹션(104)을 패치한다. 따라서, 본 발명은 그 재배치 정보를 이용하여 특정 플래시 베이스에 그 이미지를 조정하는 제1 라운드 조정이 필요하다. 제1 라운드 조정에 의해서 모든 코드가 플래시에서 직접 실행될 수 있고, 모든 데이터 액세스가 그 플래시에서 마찬가지로 발생하여 그 전역 변수로의 쓰기 액세스를 차단한다. 실행 드라이버 모듈(100)에서 모든 전역 변수로의 쓰기 액세스를 가능하게 하기 위해서는, .데이터 섹션(104)이 코드 실행 전에 플래시로부터 CAR로 복사될 것이기 때문에 .데이터 섹션(104)에 액세스하는 모든 코드와 .데이터 섹션(104)에서의 필드를 가리키는 모든 관련 데이터가 CAR로부터 .데이터 섹션(104)를 작동시키기 위해 갱신되게끔 제2 라운드 조정이 필요하다.
도 2는 본 발명의 실시예에 따른, 프리 EFI 초기화(PEI) 단계 동안 전역 변수의 읽기/쓰기 액세스를 가능하게 하도록 PE32 이미지를 변경하는 예시적인 방법을 설명하는 흐름도(200)이다. 본 발명은 흐름도(200)와 관련하여 여기서 설명한 실시예에 한정되지 않는다. 오히려 당업자라면 본 발명의 교시에 따라 다른 여러 가지 기능적 흐름도가 본 발명의 범위 내에 있음을 잘 알 것이다. 프로세스는 블록(202)에서 시작해서 바로 블록(204)으로 진행한다.
블록(204)에서 실행 드라이버 모듈(100)이 생성된다. 실행 드라이버 모듈(100)은 플래시 장치에서 실행될 때 전역 변수의 읽기 액세스만을 가능하게 하는 전역 변수를 포함한다. 그 다음, 프로세스는 블록(206)으로 진행한다.
블록(206)에서 실행 드라이버 모듈(100)의 제1 라운드 조정이 수행된다. 도 4를 참조로 이하에 더 설명되는 제1 라운드 조정은 절대 플래시 어드레스를 가지고 모든 어드레스 데이터 항목을 조정한다. 그 다음, 프로세스는 블록(208)로 진행한다.
블록(208)에서 실행 드라이버 모듈(100)의 제2 라운드 조정이 수행된다. 도 5를 참조로 이하에 더 설명되는 제2 라운드 조정은 실행 드라이버 모듈(100)의 .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 모든 어드레스 데이터 항목에 대한 두 번째 조정을 수행한다. 제2 라운드 조정은 절대 CAR 어드레스를 가지고 이들 데이터 어드레스를 갱신한다. 제2 라운드 조정 동안 .텍스트 섹션(102) 및 .데이터 섹션(104)은 절대 CAR 어드레스를 가진 데이터 어드레스를 반영하기 위해 갱신될 수 있다. 제2 라운드 조정이 완료되면, 최종 EFI 펌웨어 이미지(최종 실행 드라이버 모듈)가 플래시에 기록(burning)될 준비가 된다. 최종 EFI 펌웨어 이미지가 필수 절대 CAR 어드레스를 포함하고 있어서 전역 변수는 CAR로부터의 읽기/쓰기 액세스를 가질 수 있게 된다. 그 다음, 프로세스는 블록(210)으로 진행한다.
블록(210)에서 최종 EFI 펌웨어 이미지(최종 실행 드라이버 모듈)은 플래시에 기록된다. 그 다음, 프로세스는 블록(212)으로 진행한다.
플래시가 부팅되면 펌웨어 로더가 플래시에서 CAR로 .데이터 섹션(104)을 복사한 다음에 실행을 위해 이미지 엔트리 포인트에 제어권을 넘길 것이다. 이는 .데이터 섹션(104)가 CAR에서 저장되고 작동되는 동안에 실행 드라이버 모듈(100)이 플래시에서 정상적으로 실행될 수 있게 한다. PEI 단계 동안 정적 변수 및 전역 변수는 이제 자유롭게 액세스될 수 있다. 즉, 전역 변수는 이제 CAR에서 읽기/쓰기 액세스를 가지게 된다.
도 3은 본 발명의 실시예에 따른, 프리 EFI 초기화(PEI) 단계 동안 전역 변수의 읽기/쓰기 액세스를 가능하게 하도록 하는 PE32 이미지(실행 드라이버 모듈)(100)의 예시적인 변경을 설명하는 블록도이다. 도 3에는 플래시(302), 플래시(302'), 및 CAR(304)(위에 나타낸 프로세서 캐시의 일 부분임)가 도시되어 있다.
플래시(302)는 .텍스트 섹션(102), .데이터 섹션(104), 및 .재배치 섹션(106)을 포함하는 실행 드라이버 모듈(100)을 포함한다. 제1 라운드 조정은 플래시(302)의 .텍스트 섹션(102) 및 .데이터 섹션(104)에 나타나 있다. .재배치 섹션(106)에 기초하여 모든 어드레스 데이터 항목은 제1 라운드 조정에서 절대 플래시 어드레스를 가지고 조정된다. 제2 라운드 조정은 플래시(302')에 나타나 있다. 제2 라운드 조정에서 .데이터 섹션(104)의 필드를 가리키는 모든 관련 데이터는 절대 CAR 어드레스를 가지고 조정될 것이다.
도 4는 본 발명의 실시예에 따른 예시적인 제1 라운드 조정 방법을 설명하는 흐름도(400)이다. 본 발명은 흐름도(400)에 관련하여 여기서 설명한 실시예에 한정되지 않는다. 오히려 당업자라면 본 발명의 교시에 따라 다른 여러 가지 기능적 흐름도가 본 발명의 범위 내에 있음을 잘 알 것이다. 프로세스는 블록(402)에서 시작해서 바로 블록(404)으로 진행한다.
PE32 이미지에 있어서 .재배치 섹션(106)은 로딩 후 조정되어야 하는 실행 드라이버 모듈(100)에 모든 포인트를 기록한다. 일반적으로 .재배치 섹션(106)은 상대 가상 어드레스(RVA) 정보를 제공한다. RVA는 이미지가 메모리로 로드된 베이스 어드레스로부터의 오프셋이다. 이 RVA에 따라서 제1 라운드 조정 동안 패치될 모든 어드레스는 실행 드라이버 모듈(100)에서 확인된다. 패치될 각 어드레스는 로딩을 위해 특정 플래시 베이스를 추가함으로써 갱신될 것이다.
블록(404)에서 .재배치 섹션(106)의 포인트가 분석(parse)될 것이다. 그 다음, 프로세스는 블록(406)으로 진행한다.
블록(406)에서 블록(404)에서 식별된 포인트에 있는 어드레스 데이터가 절대 플래시 어드레스를 가지고 갱신된다. 그 다음, 프로세스는 판정 블록(408)으로 진행한다.
판정 블록(408)에서는 .재배치 섹션(106)에 조정되어야 하는 포인트가 더 있는지를 판정한다. .재배치 섹션(106)에 조정되어야 하는 더 많은 포인트가 있다면 프로세스는 블록(404)으로 되돌아가서 다음 포인트를 분석한다.
판정 블록(408)으로 되돌아와서 .재배치 섹션(106)에 분석되어야 하는 포인트가 더 이상 없는 것으로 판정되면 프로세스는 제1 라운드 조정이 종료되는 블록(410)으로 진행한다.
제1 라운드 조정은 또한 도 3의 플래시(302)에 나타나 있다. 도 3의 플래 시(302)에서는 .재배치 섹션(106)에 표본 포인트, .데이터 섹션(104)에 데이터 위치(B) 및 절대 플래시 어드레스(Ma, Mb), 및 .텍스트 섹션(102)에 데이터 코드 위치(A, C) 및 절대 플래시 어드레스(Mc)가 나타나 있다. Ma는 코드 위치(A)의 절대 플래시 어드레스이다. Mb는 데이터 위치(B)의 절대 플래시 어드레스이다. Mc는 코드 위치(C)의 절대 플래시 어드레스이다.
표본 포인트(Ra, Rb, Rc)는 .재배치 섹션(106)에 강조되어 나타나 있다. Ra는 (.텍스트 섹션(102)에 위치한) 코드 위치(A)를 가리키는 재배치 정보를 포함한다. 위치(A)에 있는 어드레스 데이터는 .데이터 섹션(104)에 있는 절대 플래시 어드레스(Ma)를 가지고 갱신된다. Rb는 (.텍스트 섹션(104)에 위치한) 코드 위치(B)를 가리키는 재배치 정보를 포함한다. 위치(B)에 있는 어드레스 데이터는 .데이터 섹션(104)에 있는 절대 플래시 어드레스(Mb)를 가지고 갱신된다. 마지막으로 Rc는 (.텍스트 섹션(102)에 위치한) 코드 위치(C)를 가리키는 재배치 정보를 포함한다. 위치(C)에 있는 어드레스 데이터는 .텍스트 섹션(102)에 있는 절대 플래시 어드레스(Mc)를 가지고 갱신된다.
플래시(302')는 제2 라운드 조정 방법을 나타낸다. 플래시(302')는 표본 포인트(Ra, Rb, Rc)를 강조하는 .재배치 섹션(106), .데이터 섹션(104'), 및 .텍스트 섹션(102')을 보여준다. .데이터 섹션(104')은 데이터 위치(B)와 절대 CAR 어드레스(Mb', Ma')를 포함한다. .텍스트 섹션(102')은 위치(A, C)와 절대 플래시 어드레스(Mc)를 포함한다. 플래시(302)의 .텍스트 섹션(102)은 Ma'의 어드레스 변화를 수용하도록 플래시(302')(.데이터 섹션(102'))에서 변경됨에 유의한다.
예컨대 플래시(302)의 Mb나 Ma 등과 같은 어드레스가 .데이터 섹션(104)에서 발견되면 이는 .텍스트 섹션(102)의 코드가 정적 변수나 전역 변수에 액세스하고 있음을 나타낸다. 플래시(302')의 .데이터 섹션(104')이 CAR(304)에 복사될 것이기 때문에 이들 어드레스(Mb, Ma)는 플래시(302')의 .데이터 섹션(104')에 나타낸 바와 같이 절대 CAR 어드레스(Mb', Ma')를 반영하기 위해 갱신되어야 한다. 따라서 특정 플래시 베이스와 CAR 베이스 사이에 간극을 추가함으로써 또 다른 패치가 필요하다. 플래시(302)의 .데이터 섹션(104)이나 플래시(302')의 .데이터 섹션(104')의 외부에 위치한 다른 어드레스(예컨대 .텍스트 섹션(102)과 .텍스트 섹션(102')에 있는 Mc와 같은 것)에서는 이들 어드레스가 플래시에 그대로 남기 때문에 더 이상의 패치가 필요 없다. 즉, .텍스트 섹션(102)은 플래시에서 실행될 것이다.
제1 라운드 조정에서 조정된 어드레스를 보면 어드레스가 .데이터 섹션(104)에 있는지 아닌지를 판정하는 것이 매우 쉽다. .데이터 섹션(104)의 플래시의 어드레스에의 모든 액세스는 .데이터 섹션(104')의 CAR(304)으로 리디렉션될(redirect) 것이다. .데이터 섹션(104')를 얻기 위해 .데이터 섹션(104)의 플래시의 어드레스를 리디렉션한 후 .데이터 섹션(104')은 플래시(302')로부터 CAR(304)로 복사된다. 이때, 실행 드라이버 모듈(100)은 .데이터 섹션(104')이 CAR 영역(304)에서 저장되고 작동되면 정상적으로 실행할 수 있다. 이는 재배치 후 모든 정적 변수 및 전역 변수 액세스가 플래시 대신에 CAR(304)에서 일어나기 때문에 부팅 성능을 상당히 개선시킨다. 따라서, 제1 라운드 조정 후 .데이터 섹 션(104)을 가리키는 어드레스에 추가적인 패치를 적용함으로써 전체 이미지 레이아웃에서 .데이터 섹션을 분리하고 이것을 다른 특정 어드레스에 재배치하는 것이 가능하다. .데이터 섹션(104')을 CAR(304)에 배치함으로써 실행 드라이버 모듈(100)은 PEI 단계에서 전역 변수에 대한 읽기 및 쓰기 액세스를 가질 수 있다.
플래시(302')에 나타낸 바와 같이 위치(B)에 있는 이전에 조정된 어드레스(Mb)는 절대 CAR 어드레스(Mb')를 가지고 갱신되고 위치(A)에 있는 이전에 조정된 어드레스 데이터(Ma)는 절대 CAR 어드레스(Ma')를 가지고 갱신된다. 위치(C)에 있는 조정된 어드레스 데이터(Mc)는 .텍스트 섹션(102)에 있고 이 .텍스트 섹션은 플래시에 그대로 남아 있기 때문에 위치(C)에 있는 조정된 어드레스 데이터(Mc)는 갱신되지 않을 것이다.
CAR(304)는 .데이터 섹션(104')가 복사되는 프로세서 캐시의 일부분이다. 전술한 바와 같이 펌웨어가 플래시 공간으로 기록된 후에 펌웨어 로더는 .데이터 섹션(104')을 플래시로부터 CAR로 복사할 것이다. .데이터 섹션(104')이 CAR(304)로 이동하면 PEI 정적 변수 및 전역 변수는 CAR(304)를 통해 읽기/쓰기 액세스를 가질 수가 있다.
도 5는 본 발명의 실시예에 따른 예시적인 제2 라운드 조정 방법을 설명하는 흐름도(500)이다. 본 발명은 흐름도(500)에 관련하여 여기서 설명한 실시예에 한정되지 않는다. 오히려 당업자라면 본 발명의 교시에 따라 다른 여러 가지 기능적 흐름도가 본 발명의 범위 내에 있음을 잘 알 것이다. 프로세스는 블록(502)에서 시작해서 바로 블록(504)으로 진행한다.
판정 블록(504)에서 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 .데이터 섹션(104)을 가리키는지를 판정한다. .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 있으면 그 어드레스 데이터 항목은 블록(506)에서 선택되고 프로세스는 블록(508)으로 진행한다. .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 없으면 프로세스는 블록(512)으로 진행하여 종료한다.
블록(508)에서는 블록(506)에서 선택된 어드레스 데이터 항목이 절대 CAR 어드레스를 가지고 갱신된다. 그 다음, 프로세스는 판정 블록(510)으로 진행한다.
판정 블록(510)에서는 .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 더 있는지를 판정한다. .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 더 많은 어드레스 데이터 항목이 있으면 프로세스는 조정될 다음 어드레스 데이터 항목을 선택하기 위해 블록(506)으로 되돌아간다.
판정 블록(510)으로 되돌아가서 .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 더이상 없으면 프로세스는 블록(512)으로 진행하여 종료한다.
본 발명의 실시예는 하드웨어, 소프트웨어, 또는 이들의 조합을 이용하여 구현될 수 있으며, 하나 또는 그 이상의 컴퓨터 시스템이나 기타 다른 처리 시스템에서 구현될 수 있다. 여기서 설명한 기술은 임의의 컴퓨팅, 소비자 전자장치나 처리 환경에서 활용 가능성을 찾을 수 있다. 이 기술은 이동식 또는 고정식 컴퓨터, 개인 휴대 정보 단말기, 셋탑박스, 셀룰러 전화와 페이저, 소비자 전자 장치(DVD(Digital Video Disc) 플레이어, 개인용 비디오 녹화기, 개인용 비디오 플레이어, 위성 수신기, 스테레오 수신기, 케이블 TV 수신기 포함), 및 프로세서, 저장 매체(휘발성 메모리 및 불휘발성 메모리 및/또는 저장 소자 포함), 적어도 하나의 입력 장치와 하나 또는 그 이상의 출력 장치를 포함할 수 있는 다른 전자 장치 등과 같은 프로그램가능한 기계에서 실행되는 프로그램으로 구현될 수 있다. 프로그램 코드는 설명된 기능을 수행하고 출력 정보를 생성하기 위해 입력 장치를 이용하여 입력된 데이터에 적용된다. 출력 정보는 하나 또는 그 이상의 출력 장치에 입력될 수 있다. 당업자라면 본 발명이 멀티프로세서 시스템, 미니 컴퓨터, 메인 프레임 컴퓨터, 독립형 소비자 전자 장치 등을 포함하여 여러 가지 시스템 구성으로 실시될 수 있다는 것을 잘 알 수 있다. 본 발명은 또한 태스크나 그 일부가 통신망을 통해서 연결된 원격 처리 장치에 의해 수행될 수 있는 분산 컴퓨팅 환경에서도 실시될 수 있다.
각 프로그램은 처리 시스템과 통신을 하기 위해 고급 절차식 또는 객체 지향형 프로그래밍 언어에서 구현될 수 있다. 그러나 필요하면 어셈블리어나 기계어로 구현될 수 있다. 어떤 경우든 이러한 언어는 컴파일되거나 기계번역된다.
프로그래밍 명령어는 이 명령어로 프로그래밍된 범용 또는 전용 처리 시스템이 여기서 설명한 동작을 수행하도록 하는데 사용될 수 있다. 또는, 이 동작은 이 동작을 실행하기 위한 하드와이어드 로직(hardwired logic)을 포함하는 특정 하드웨어 컴포넌트나 프로그래밍된 컴퓨터 컴포넌트와 주문 하드웨어 컴포넌트의 조합 에 의해 수행될 수 있다. 여기서 설명된 방법들은 이 방법들을 수행하는 처리 시스템이나 기타 다른 전자 장치를 프로그래밍하는데 사용될 수 있는 명령어가 저장된 기계 액세스가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로 제공될 수 있다. 여기서 사용된 "기계 액세스가능 매체"라는 용어는 기계에 의한 실행을 위한 명령어 계열을 저장 또는 인코딩할 수 있고 기계가 여기서 설명된 방법들 중 임의의 방법을 수행하게 하는 임의의 매체를 포함할 수 있다. 따라서 "기계 액세스가능 매체"라는 용어는 고체 메모리, 광학 및 자기 디스크, 및 데이터 신호를 인코딩하는 반송파를 포함하지만 이에 한정되지는 않는다. 게다가 본 기술에서는 소프트웨어는 어떤 형태로든지(예컨대 프로그램, 프로시저, 프로세스, 애플리케이션, 모듈, 로직 등) 어떤 동작을 취하거나 어떤 결과를 유발하는 것이 통상적이다. 이러한 표현은 단지 프로세서가 동작을 수행하거나 결과를 발생시키는 처리 시스템에 의한 소프트웨어의 실행을 기술하는 약식 방법일 뿐이다.
지금까지 본 발명의 여러 가지 실시예에 대해서 설명하였지만, 이들 실시예들은 단지 예시적인 것이며 한정적인 것이 아님을 알아야 한다. 당업자라면 청구범위에 기재된 본 발명의 본질과 범위로부터 벗어남이 없이 실시예들을 형태 및 세부 사항에 있어 여러 가지로 변경할 수 있음을 알아야 한다. 따라서 본 발명의 범위는 전술한 예시적인 실시예에 의해 한정되는 것이 아니라 하기의 청구범위와 그 등가물에 따라서 정해져야 한다.

Claims (26)

  1. 프리 EFI 초기화(PEI)에서 전역 변수 읽기/쓰기 동작을 가능하게 하는 방법으로서,
    코드 섹션, 데이터 섹션, 및 재배치 섹션을 포함하는 드라이버 이미지를 생성하는 단계;
    모든 어드레스 데이터 항목들을, 절대(absolute) 불휘발성 메모리 어드레스들을 가지고 조정(fixing)하기 위해 상기 드라이버 이미지에 대해 제1 라운드 조정(round fixing)을 수행하는 단계;
    상기 데이터 섹션을 가리키는 상기 제1 라운드 조정에서 조정된 모든 어드레스 데이터 항목들을, 절대 RAM으로서의 캐시(Cache-As-Random Access Memory: CAR) 어드레스들을 가지고 조정하기 위해 상기 드라이버 이미지에 대해 제2 라운드 조정을 수행하는 단계; 및
    상기 조정된 드라이버 이미지를 불휘발성 메모리 장치에 기록(burning)하는 단계
    를 포함하며,
    상기 불휘발성 메모리 장치를 부팅할 때 상기 기록된 드라이버 이미지의 상기 데이터 섹션이 CAR에 복사되고, 상기 코드 섹션에서의 실행 코드의 실행에 의해 정적 및 전역 변수들이 상기 CAR로부터 읽기/쓰기 액세스되는 방법.
  2. 제1항에 있어서,
    상기 드라이버 이미지는 PE32(Portable Executable 32) 이미지를 포함하는 방법.
  3. 제1항에 있어서,
    상기 드라이버 이미지는 상기 불휘발성 메모리에서 실행되는 방법.
  4. 제1항에 있어서,
    상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 방법.
  5. 제1항에 있어서,
    제1 라운드 조정을 수행하는 단계는,
    상기 재배치 섹션의 각 포인트를 분석하는 단계; 및
    상기 재배치 섹션의 각 포인트와 관련된 각 어드레스 데이터 항목을 상기 절대 불휘발성 어드레스를 가지고 갱신하는 단계
    를 포함하는 방법.
  6. 제1항에 있어서,
    제2 라운드 조정을 수행하는 단계는,
    상기 제1 라운드 조정에서 조정된 상기 어드레스 데이터 항목들이 상기 데이 터 섹션을 가리키는지를 판정하는 단계; 및
    상기 제1 라운드 조정에서 조정된 상기 어드레스 데이터 항목들이 상기 데이터 섹션을 가리키면, 상기 조정된 어드레스 데이터 항목들을, 상기 절대 CAR 어드레스들을 가지고 갱신하는 단계
    를 포함하는 방법.
  7. 프리 EFI 단계에서 전역 변수들을 사용하기 위한 방법으로서,
    드라이버 이미지의 코드 부분 및 재배치 부분으로부터 데이터 부분을 분리하는 단계;
    RAM(Random Access Memory)으로 사용되는 프로세서 캐시의 영역에 상기 데이터 부분을 복사하는 단계; 및
    상기 드라이버 이미지를 실행하기 위해 상기 드라이버 이미지의 이미지 엔트리 포인트로 제어권을 넘기는 단계
    를 포함하고,
    상기 전역 변수들이 RAM으로 사용되는 상기 프로세서 캐시로부터 액세스되는 방법.
  8. 제7항에 있어서,
    상기 드라이버 이미지의 상기 코드 부분 및 상기 재배치 부분으로부터 상기 데이터 부분을 분리하는 단계 이전에, 상기 코드 부분을 패치하기 위해 제1 라운드 조정 및 제2 라운드 조정을 수행하고 상기 패치된 코드를 불휘발성 메모리에 기록하는 단계를 포함하는 방법.
  9. 제8항에 있어서,
    상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 방법.
  10. 제8항에 있어서,
    제1 라운드 조정을 수행하는 단계는 상기 재배치 부분을 이용하여 특정 불휘발성 메모리 베이스에서 상기 드라이버 이미지를 조정하는 단계를 포함하는 방법.
  11. 제8항에 있어서,
    제2 라운드 조정을 수행하는 단계는 상기 불휘발성 메모리에서의 상기 드라이버 이미지의 상기 코드 부분을 실행하는 동안 상기 데이터 부분에 액세스하는 상기 코드 부분의 모든 코드와 상기 데이터 부분을 가리키는 모든 관련 데이터를 갱신하여 RAM으로 사용되는 상기 프로세서 캐시에서 상기 데이터를 동작시키는 단계를 포함하는 방법.
  12. 프리 EFI 초기화(PEI) 단계 동안 전역 변수들의 사용을 가능하게 하는 메커니즘으로서,
    실행 코드를 포함하는 코드 부분, 상기 실행 코드에 의해 사용될 데이터를 포함하는 데이터 부분, 및 실행 드라이버 이미지의 제1 라운드 조정 동안 절대 불휘발성 메모리 어드레스를 가지고 갱신될 모든 어드레스 데이터 항목들에 대한 정보를 포함하는 재배치 부분을 포함하는 실행 드라이버 이미지;
    상기 실행 드라이버 이미지를 저장하고 실행하기 위한 불휘발성 메모리; 및
    프로세서 캐시
    를 포함하며,
    상기 프로세서 캐시의 영역은 CAR로 이용되고, 상기 실행 드라이버 이미지의 상기 데이터 부분은 상기 실행 드라이버 이미지의 실행 동안 정적 및 전역 변수들이 상기 CAR에서 작동할 수 있게 하기 위해 상기 실행 드라이버 이미지의 제1 라운드 조정 및 제2 라운드 조정 후에 상기 CAR에 복사되는 메커니즘.
  13. 제12항에 있어서,
    상기 실행 드라이버 이미지의 상기 제1 라운드 조정 및 상기 제2 라운드 조정 후에 상기 실행 드라이버 이미지를 실행하기 전에 상기 불휘발성 메모리에 상기 실행 드라이버 이미지를 기록하는 메커니즘.
  14. 제12항에 있어서,
    상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 메커니즘.
  15. 제12항에 있어서,
    상기 실행 드라이버 이미지의 상기 제2 라운드 조정은 상기 불휘발성 메모리에서 상기 드라이버 이미지의 상기 코드 부분을 실행하는 동안 상기 데이터 부분에 액세스하는 상기 코드 부분의 모든 코드와 상기 데이터 부분을 가리키는 모든 관련 데이터를 갱신하여 상기 CAR에서 상기 데이터를 동작시키는 메커니즘.
  16. 복수의 기계 액세스가능 명령어를 가진 저장 매체를 포함하는 물품으로서,
    상기 명령어들이 프로세서에 의해 실행될 때에, 상기 명령어들은,
    코드 섹션, 데이터 섹션, 및 재배치 섹션을 포함하는 드라이버 이미지를 생성하는 단계;
    모든 어드레스 데이터 항목들을, 절대 불휘발성 메모리 어드레스들을 가지고 조정하기 위해 상기 드라이버 이미지에 대해 제1 라운드 조정을 수행하는 단계;
    상기 데이터 섹션을 가리키는 상기 제1 라운드 조정에서 조정된 모든 어드레스 데이터 항목들을, 절대 CAR 어드레스들을 가지고 조정하기 위해 상기 드라이버 이미지에 대해 제2 라운드 조정을 수행하는 단계; 및
    상기 조정된 드라이버 이미지를 불휘발성 메모리 장치에 기록하는 단계
    를 제공하며,
    상기 불휘발성 메모리 장치를 부팅할 때 상기 기록된 드라이버 이미지의 상기 데이터 섹션이 CAR에 복사되고, 상기 코드 섹션에서의 실행 코드의 실행에 의해 정적 및 전역 변수들이 상기 CAR로부터 읽기/쓰기 액세스되는 물품.
  17. 제16항에 있어서,
    상기 드라이버 이미지는 PE32(Portable Executable 32) 이미지를 포함하는 물품.
  18. 제16항에 있어서,
    상기 드라이버 이미지는 상기 불휘발성 메모리에서 실행되는 물품.
  19. 제16항에 있어서,
    상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 물품.
  20. 제16항에 있어서,
    제1 라운드 조정을 수행하는 단계에 대한 명령어들은,
    상기 재배치 섹션의 각 포인트를 분석하는 단계; 및
    상기 재배치 섹션의 각 포인트와 관련된 각 어드레스 데이터 항목을 상기 절대 불휘발성 어드레스를 가지고 갱신하는 단계
    에 대한 명령어들을 포함하는 물품.
  21. 제16항에 있어서,
    제2 라운드 조정을 수행하는 단계에 대한 명령어들은,
    상기 제1 라운드 조정에서 조정된 상기 어드레스 데이터 항목들이 상기 데이 터 섹션을 가리키는지를 판정하는 단계; 및
    상기 제1 라운드 조정에서 조정된 상기 어드레스 데이터 항목들이 상기 데이터 섹션을 가리키면, 상기 조정된 어드레스 데이터 항목들을, 상기 절대 CAR 어드레스들을 가지고 갱신하는 단계
    에 대한 명령어들을 포함하는 물품.
  22. 복수의 기계 액세스가능 명령어를 가진 저장 매체를 포함하는 물품으로서,
    상기 명령어들이 프로세서에 의해 실행될 때에, 상기 명령어들은,
    드라이버 이미지의 코드 부분 및 재배치 부분으로부터 데이터 부분을 분리하는 단계;
    RAM(Random Access Memory)으로 사용되는 프로세서 캐시의 영역에 상기 데이터 부분을 복사하는 단계; 및
    상기 드라이버 이미지를 실행하기 위해 상기 드라이버 이미지의 이미지 엔트리 포인트로 제어권을 넘기는 단계
    를 제공하고,
    RAM으로 사용되는 상기 프로세서 캐시로부터 전역 변수들이 액세스되는 물품.
  23. 제22항에 있어서,
    상기 드라이버 이미지의 상기 코드 부분 및 상기 재배치 부분으로부터 상기 데이터 부분을 분리하는 단계에 대한 명령어들 이전에, 상기 코드 부분을 패치하기 위해 제1 라운드 조정 및 제2 라운드 조정을 수행하고 상기 패치된 코드를 불휘발성 메모리에 기록하는 단계에 대한 명령어들을 포함하는 물품.
  24. 제23항에 있어서,
    상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 물품.
  25. 제23항에 있어서,
    제1 라운드 조정을 수행하는 단계에 대한 명령어들은 상기 재배치 부분을 이용하여 특정 불휘발성 메모리 베이스에서 상기 드라이버 이미지를 조정하는 단계에 대한 명령어들을 포함하는 물품.
  26. 제23항에 있어서,
    제2 라운드 조정을 수행하는 단계에 대한 명령어들은 상기 불휘발성 메모리에서의 상기 드라이버 이미지의 상기 코드 부분을 실행하는 동안 상기 데이터 부분에 액세스하는 상기 코드 부분의 모든 코드와 상기 데이터 부분을 가리키는 모든 관련 데이터를 갱신하여 RAM으로 사용되는 상기 프로세서 캐시에서 상기 데이터를 동작시키는 단계에 대한 명령어들을 포함하는 물품.
KR1020097000765A 2006-07-18 2006-07-18 Efi 기반 펌웨어에서의 프리 efi 초기화 모듈의 전역변수 사용법 KR101036675B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2006/001746 WO2008014635A1 (en) 2006-07-18 2006-07-18 A method to use global variables for pre-efi initialization modules in efi-based firmware

Publications (2)

Publication Number Publication Date
KR20090035521A true KR20090035521A (ko) 2009-04-09
KR101036675B1 KR101036675B1 (ko) 2011-05-24

Family

ID=38996845

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097000765A KR101036675B1 (ko) 2006-07-18 2006-07-18 Efi 기반 펌웨어에서의 프리 efi 초기화 모듈의 전역변수 사용법

Country Status (5)

Country Link
EP (1) EP2047364A4 (ko)
JP (1) JP4961019B2 (ko)
KR (1) KR101036675B1 (ko)
CN (1) CN101484878B (ko)
WO (1) WO2008014635A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170123337A (ko) * 2015-12-25 2017-11-07 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 애플리케이션 로딩 방법 및 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8463998B1 (en) 2002-12-13 2013-06-11 Open Text S.A. System and method for managing page variations in a page delivery cache
CN101599043B (zh) * 2008-06-02 2013-07-17 松下电器产业株式会社 追踪文档的关联信息的方法和***
CN105446842B (zh) * 2015-12-03 2019-01-04 南京南瑞继保电气有限公司 一种adi dsp代码在线监视方法
CN105630559B (zh) * 2015-12-25 2018-12-28 广州视源电子科技股份有限公司 板卡固件烧录方法及其***
CN107450953B (zh) * 2017-08-01 2020-08-04 合肥联宝信息技术有限公司 一种更新bios的方法及装置
CN110990072A (zh) * 2019-11-08 2020-04-10 杭州智控网络有限公司 价签屏幕多驱动动态加载方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59125421A (ja) * 1983-01-04 1984-07-19 Nec Corp 計算機応用機器の初期設定方式
EP0429252B1 (en) * 1989-11-17 1998-01-14 Digital Equipment Corporation System and method for storing firmware in relocatable format
US6298440B1 (en) * 1994-04-22 2001-10-02 Microsoft Corporation Method and system for providing multiple entry point code resources
JPH1153249A (ja) * 1997-08-07 1999-02-26 Sharp Corp メモリ管理方法
JP2001195258A (ja) * 2000-01-12 2001-07-19 Mitsutoyo Corp コンピュータ組み込みシステム
US20040103272A1 (en) 2002-11-27 2004-05-27 Zimmer Vincent J. Using a processor cache as RAM during platform initialization
JP2004348677A (ja) 2003-05-26 2004-12-09 Sony Corp プログラムおよび情報処理方法
KR100658918B1 (ko) * 2004-03-29 2006-12-15 주식회사 팬택앤큐리텔 블록 단위 입출력 명령어를 이용한 시스템 전역 변수초기화 장치 및 그 방법
US7730472B2 (en) * 2004-09-24 2010-06-01 Hewlett-Packard Development Company, L.P. Dynamic linking of modules in a pre-operating system environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170123337A (ko) * 2015-12-25 2017-11-07 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 애플리케이션 로딩 방법 및 장치

Also Published As

Publication number Publication date
EP2047364A4 (en) 2009-08-05
CN101484878A (zh) 2009-07-15
KR101036675B1 (ko) 2011-05-24
JP4961019B2 (ja) 2012-06-27
CN101484878B (zh) 2012-11-28
WO2008014635A1 (en) 2008-02-07
JP2009544085A (ja) 2009-12-10
EP2047364A1 (en) 2009-04-15

Similar Documents

Publication Publication Date Title
US9075636B2 (en) Optimizing subroutine calls based on architecture level of called subroutine
EP3267308B1 (en) Application loading method and device
KR101036675B1 (ko) Efi 기반 펌웨어에서의 프리 efi 초기화 모듈의 전역변수 사용법
US6876996B2 (en) Method and apparatus for using a shared library mechanism to facilitate sharing of metadata
CN101026826B (zh) 用于提供在无线装置中使用的整体映像的***和方法
US20070132774A1 (en) System and method for a patch minimization tool
US10296353B2 (en) Protecting basic input/output (BIOS) code
US20080005719A1 (en) Methods, systems, and computer program products for providing a program execution environment
US8762967B2 (en) Program compiler, program installer, and program install method
US20160321089A1 (en) Binary file generation
US7730472B2 (en) Dynamic linking of modules in a pre-operating system environment
JPH0816541A (ja) 周辺装置の処理能力を利用する方法及び装置
EP1857926B1 (en) Move data facility with user selectable storage access keys
KR101059633B1 (ko) 멀티태스킹 가상 머신을 위한 힙 구성
WO2008054074A1 (en) Terminal device having function of interfacing compilation libraries in heterogeneous languages, method of calling api, and method of creating compile function
CN102364433A (zh) 在ARM处理器上实现Wine构建工具移植的方法
US6782446B2 (en) Method to prevent corruption of page tables during flash EEPROM programming
US20220137987A1 (en) Updated shared library reloading without stopping the execution of an application
CN107391190B (zh) 一种程序模块动态装载方法
KR100478463B1 (ko) 응용 프로그램의 동적링크 방법
US20060230190A1 (en) Method and apparatus for executing application in system having NAND flash memory
KR100884926B1 (ko) 가상 메모리가 없는 임베디드 시스템에서의 기존 공유라이브러리 사용방법
US20060288338A1 (en) Offset threaded code
GB2438297A (en) Computer program for move data facility with user selectable storage access keys

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: 20140502

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee