KR101036675B1 - A method to use global variables for pre-efi initialization modules in efi-based firmware - Google Patents

A method to use global variables for pre-efi initialization modules in efi-based firmware Download PDF

Info

Publication number
KR101036675B1
KR101036675B1 KR1020097000765A KR20097000765A KR101036675B1 KR 101036675 B1 KR101036675 B1 KR 101036675B1 KR 1020097000765 A KR1020097000765 A KR 1020097000765A KR 20097000765 A KR20097000765 A KR 20097000765A KR 101036675 B1 KR101036675 B1 KR 101036675B1
Authority
KR
South Korea
Prior art keywords
driver image
data
section
ram
nonvolatile memory
Prior art date
Application number
KR1020097000765A
Other languages
Korean (ko)
Other versions
KR20090035521A (en
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/en
Application granted granted Critical
Publication of KR101036675B1 publication Critical patent/KR101036675B1/en

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
    • 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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Abstract

프리 EFI 초기화(PEI)에서 전역 변수 읽기/쓰기 동작을 가능하게 하는 방법이 개시된다. 본 방법은 드라이버 이미지를 생성하는 것을 포함한다. 이 드라이버 이미지는 적어도 코드 섹션(즉, 텍스트 섹션), 데이터 섹션, 재배치 섹션을 포함한다. 이 드라이버 이미지에 대한 제1 라운드 조정은 모든 어드레스 데이터 항목을 절대 불휘발성 메모리 어드레스를 가지고 조정하도록 수행된다. 이 드라이버 이미지에 대한 제2 라운드 조정은 이 데이터 섹션을 가리키는 제1 라운드 조정에서 조정된 모든 어드레스 데이터 항목을 절대 RAM으로서의 캐시 어드레스(Cache-As-Random Access Memory)를 가지고 조정하도록 수행된다. 이 조정된 이미지는 불휘발성 메모리 장치에 기록된다. 이 불휘발성 메모리 장치 부팅 시 이 기록된 드라이버 이미지의 데이터 섹션은 RAM으로서의 캐시(CAR)에 복사되고 이 텍스트 섹션의 실행 코드를 실행함으로써 정적 변수 및 전역 변수가 CAR로부터의 읽기/쓰기 액세스를 가질 수 있다.A method for enabling global variable read / write operations in pre-EFI initialization (PEI) is disclosed. The method includes generating a driver image. This driver image contains at least a code section (that is, a text section), a data section, and a relocation section. A first round adjustment to this driver image is performed to adjust all address data items with absolute nonvolatile memory addresses. The second round adjustment for this driver image is performed to adjust all address data items adjusted in the first round adjustment pointing to this data section with a cache-as-random access memory as absolute RAM. This adjusted image is written to the nonvolatile memory device. At boot time of this nonvolatile memory device, the data section of this recorded driver image is copied to a cache as RAM (CAR) and by executing the executable code of this text section, static and global variables can have read / write access from the CAR. have.

프리 EFI, 전역 변수, 정적 변수, 드라이버 이미지, 라운드 조정 Free EFI, Global Variables, Static Variables, Driver Images, Round Adjustments

Description

EFI 기반 펌웨어에서의 프리 EFI 초기화 모듈의 전역 변수 사용법{A METHOD TO USE GLOBAL VARIABLES FOR PRE-EFI INITIALIZATION MODULES IN EFI-BASED FIRMWARE}A METHOD TO USE GLOBAL VARIABLES FOR PRE-EFI INITIALIZATION MODULES IN EFI-BASED FIRMWARE}

본 발명은 일반적으로 펌웨어에 관한 것이다. 특히, 본 발명은 EFI용 플랫폼 이노베이션 프레임워크(Platform Innovation Framework)의 프리 EFI(pre-Extensible Firmware Interface) 초기화 단계 동안의 전역 변수 사용법에 관한 것이다.The present invention relates generally to firmware. In particular, the present invention relates to global variable usage during the pre-Extensible Firmware Interface (EFI) initialization phase of the Platform Innovation Framework for EFI.

캘리포니아주 산타클라라시 소재의 Intel® 코포레이션이 개발한 EFI(Extensible Firmware Interface)용 플랫폼 이노베이션 프레임워크는 C로 구현되며, 파워온부터 운영체제에 제어권을 넘길 때까지 플랫폼을 초기화하는데 필요한 전체 범위의 동작을 수행하기 위해 설계된 로버스트 아키텍쳐 인터페이스(robust architectural interfaces) 세트이다. EFI용 플랫폼 이노베이션 프레임워크(이하 "프레임워크"라 함)는 두 개의 주요 단계, 즉 프리 EFI 초기화(PEI) 단계와 드라이버 실행 환경(Driver Execution Environment; DXE) 단계로 나뉘어진다. PEI 단계는 메모리 디스커버리(memory discovery)를 지원하기 위한 최소한의 프로세서, 칩셋, 및 플랫폼 구성을 수행한다. DXE 단계는 플랫폼, 프로세서 및 칩셋 장치의 초 기화를 완료함으로써 PEI 단계를 진행시킨다.The Platform Innovation Framework for Extensible Firmware Interface (EFI), developed by Intel® Corporation in Santa Clara, Calif., Is implemented in C. It is a set of robust architectural interfaces designed to perform. The Platform Innovation Framework for EFI (hereinafter referred to as the "Framework") is divided into two main phases: the Free EFI Initialization (PEI) phase and the Driver Execution Environment (DXE) phase. The PEI phase performs minimal processor, chipset, and platform configuration to support memory discovery. The DXE phase advances the PEI phase by completing the initialization of the platform, processor and chipset devices.

PEI 단계에서는 사용할 수 있는 메모리가 없다. 사용할 수 있는 메모리는 없지만 프로세서 캐시가 RAM(Random access memory)로서 동작하도록 임시적으로 초기화할 수 있으며, 따라서 스택과 힙(heap)을 이 캐시에 저장할 수 있다. 이에 따라 PEI 단계에서 고급 프로그래밍 언어를 실행하여 모듈을 컴파일할 수 있다.In the PEI phase there is no memory available. There is no memory available, but you can temporarily initialize the processor cache to act as random access memory (RAM), thus storing the stack and heap in this cache. This allows the module to be compiled by running a high-level programming language in the PEI phase.

상기 프레임워크의 알려진 제한점은 PEI 단계의 모듈이 전역 변수를 읽기 전용 변수로 사용한다는점, 즉, 전역 변수가 변경될 수 없다는 점이다. PEI 단계에서는 메모리가 이용될 수 없기 때문에 모든 데이터 세그먼트 및 코드 세그먼트는 재배치 없이 플래시에 배치된다.A known limitation of the framework is that modules in the PEI phase use global variables as read-only variables, that is, they cannot be changed. In the PEI phase, since no memory is available, all data segments and code segments are placed in flash without relocation.

플래시의 데이터가 다른 종래의 메모리 장치에 배치된 데이터만큼 쉽게 변경되지 않는다는 것은 잘 알려진 사실이다. PEI 코드가 플래시의 데이터 섹션의 전역 변수에의 쓰기 액세스를 발동할 있지만 이 전역 변수는 변경될 수 없다. 이 제한점 때문에 PEI 모듈은 몇 가지 결점이 있다. 첫째, 함수 간에 모듈 전역 변수를 공유하는 능력이 제한된다. 함수 간에 공유되어야 할 필요가 있는 모든 변수는 스택이나 힙을 통해서 앞뒤로 전달되어야 한다. 이로 인해 코드 크기가 크게 증가할 수 있다. 또한, PEI 코드가 플래시에서 실행되기 때문에 압축을 행할 수가 없다. 둘째, 부팅 성능이 감소된다. 코드 필요성이 증가하면 압축을 풀고 실행하는데 더 많은 프로세서 주기가 필요하다. 게다가, 이 단계에서는 프로세서 캐시가 작동될 수 없으므로, 특히 플래시로부터의 빈번한 전역 변수 액세스에 대해서 실행 효율이 저하된다. 셋째, 펌웨어 개발자가 자신의 코드를 자유롭게 개발하고 테스트하지 못하게 된다.It is well known that data in flash is not changed as easily as data disposed in other conventional memory devices. Although the PEI code can trigger write access to global variables in the data section of Flash, these global variables cannot be changed. Because of this limitation, the PEI module has several drawbacks. First, the ability to share module global variables between functions is limited. All variables that need to be shared between functions must be passed back and forth across the stack or heap. This can significantly increase code size. In addition, compression is not possible because the PEI code is executed in Flash. Second, boot performance is reduced. As the need for code increases, more processor cycles are required to decompress and execute. In addition, the processor cache can not be activated at this stage, which reduces execution efficiency, especially for frequent global variable accesses from flash. Third, firmware developers cannot freely develop and test their own code.

따라서 EFI 기반 펌웨어용 프리 EFI 초기화(PEI) 환경에서 전역 변수 지원을 가능하게 하는 방법이 필요하다. 또한 PEI 단계 동안 전역 변수 변경을 가능하게 하는 방법도 필요하다.Therefore, there is a need for a method that enables global variable support in a pre-EFI initialization (PEI) environment for EFI-based firmware. There is also a need for a way to enable global variable changes during the PEI phase.

본 명세서에 포함되어 본 명세서의 일부를 구성하고 있는 첨부 도면은 본 발명의 실시예를 설명하고, 상세한 설명과 함께, 본 발명의 원리를 설명하고 당업자가 본 발명을 구성하고 사용할 수 있도록 해준다. 도면에서 동일한 참조부호는 일반적으로 동일하거나 기능적으로 유사하거나 구조적으로 유사한 구성요소를 가리킨다. 해당 참조부호에서 가장 왼쪽 숫자는 구성요소가 처음 나타나는 도면을 가리킨다.The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the invention, and together with the description, explain the principles of the invention and enable those skilled in the art to make and use the invention. Like reference numerals in the drawings generally refer to like, functionally similar, or structurally similar components. The leftmost digit in that reference indicates the drawing in which the component first appears.

도 1은 본 발명의 실시예에 따른 예시적인 PE32(Portable Executable 32) 이미지를 나타낸 도.1 illustrates an exemplary Portable Executable 32 (PE32) image in accordance with an embodiment of the present invention.

도 2는 본 발명의 실시예에 따른, 프리 EFI 초기화(PEI) 단계 동안 전역 변수의 읽기/쓰기 액세스를 가능하게 하기 위해 PE32 이미지를 변경하는 예시적인 방법을 설명하는 흐름도.2 is a flow diagram illustrating an exemplary method of modifying a PE32 image to enable read / write access of a global variable during a pre EFI initialization (PEI) step, in accordance with an embodiment of the invention.

도 3은 본 발명의 실시예에 따른, 프리 EFI 초기화 단계 동안 전역 변수의 읽기/쓰기 액세스를 가능하게 하기 위한 예시적인 PE32 이미지 변경을 나타낸 블록도.3 is a block diagram illustrating an exemplary PE32 image change to enable read / write access of a global variable during a pre EFI initialization phase, in accordance with an embodiment of the invention.

도 4는 본 발명의 실시예에 따른 예시적인 제1 라운드 조정법(round fixing method) 을 설명하는 흐름도.4 is a flow chart illustrating an exemplary first round fixing method in accordance with an embodiment of the present invention.

도 5는 본 발명의 실시예에 따른 예시적인 제2 라운드 조정법을 설명하는 흐름도.5 is a flow chart illustrating an exemplary second round adjustment method in accordance with an embodiment of the present invention.

본 발명을 특정 응용에 대한 예시적인 실시예를 참조하여 설명하지만 본 발명이 이에 한정되지 않는다는 것을 알아야 한다. 당업자라면 본 발명의 범위 내에서 그리고 본 발명의 실시예가 상당한 효용이 있는 추가적인 분야에서 여러 가지 변경, 응용, 및 실시예들을 추가할 수 있음을 잘 알 것이다.While the invention has been described with reference to exemplary embodiments for particular applications, it should be understood that the invention is not so limited. Those skilled in the art will appreciate that various modifications, applications, and embodiments can be added within the scope of the present invention and in additional fields where the embodiments of the present invention have significant utility.

본 명세서에서 본 발명의 "일 실시예"나 "특정 실시예", 또는 "다른 실시예"라는 말은 실시예와 관련하여 설명된 특정 특성이나 구조, 특징이 본 발명의 실시예들 중 적어도 하나에 포함된다는 것을 의미한다. 따라서 본 명세서의 여러 곳에서 나오는 "일 실시예에서" 또는 "특정 실시예에서"라는 구문은 모두 반드시 동일 실시예를 말하는 것은 아니다.As used herein, the phrase "one embodiment", "specific embodiment", or "other embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is at least one of the embodiments of the present invention. It is included in the. Thus, the phrases "in one embodiment" or "in a specific embodiment" in various places in the specification are not necessarily all referring to the same embodiment.

본 발명의 실시예는 프리 EFI 초기화 단계에 전역 변수 변경(즉, 읽기/쓰기 액세스)을 할 수 있게 하는 방법에 관한 것이다. 이것은 프로세서 캐시의 일부를 "RAM으로서의 캐시"(Cache As RAM; CAR)로 알려진 사용 모델로 이용하여 달성된다. 드라이버 이미지의 데이터 섹션을 플래시 장치에서 CAR의 영역으로 재배치함으로써 전역 변수가 마치 RAM에 있는 것같이 자유롭게 변경될 수 있다.Embodiments of the present invention are directed to a method for enabling global variable changes (ie, read / write access) during a free EFI initialization step. This is accomplished by using part of the processor cache in a usage model known as "Cache As RAM" (CAR). By relocating the data section of the driver image from the flash device to the area of the CAR, global variables can be freely changed as if they were in RAM.

본 발명의 실시예는 EFI 기반 펌웨어의 프리 EFI 초기화(PEI) 단계 동안 플래시 장치에서 구현되고 있는 것으로 설명된다. EFI 기반 펌웨어의 PEI 단계는 PE32(Portable Executable 32) 이미지 포맷을 사용한다. 당업자라면 본 발명이 플래시 장치, EFI 기반 펌웨어, 또는 PE32 이미지 포맷에 한정되지 않는다는 것을 알 것이다. 또한 본 발명은 전역 변수가 읽기 전용 액세스로 제한되는 다른 이미지 포맷이 필요한 다른 소프트웨어/펌웨어 환경을 이용하는 다른 불휘발성 저장 장치에서도 구현될 수 있다.Embodiments of the invention are described as being implemented in a flash device during a pre-EFI initialization (PEI) phase of EFI-based firmware. The PEI phase of EFI-based firmware uses the PE32 (Portable Executable 32) image format. Those skilled in the art will appreciate that the present invention is not limited to flash devices, EFI based firmware, or PE32 image formats. The invention may also be implemented in other nonvolatile storage devices utilizing other software / firmware environments that require different image formats where global variables are limited to read only access.

EFI 기반 펌웨어는 표준 PE32(Portable Executable 32) 이미지 포맷을 지원한다. PE32 이미지 포맷은 섹션 별로 코드, 데이터, 및 예컨대 재배치 정보와 같은 다른 정보를 구성한다. 섹션들은 연속적으로 밀접하게 배치된다. 로더가 상기 이미지를 로드하면 메모리의 이미지 레이아웃은 그것의 파일 이미지와 거의 같다. 예외적으로 섹션들 간의 정렬 요구로 인한 메모리 이미지 레이아웃에 버블이 있을 수 있다. 통상적으로 섹션이 우선 연결 베이스(preferred linking base)에 로드되지 않으면 이 로더는 메모리 이미지를 조정할 것이다.EFI-based firmware supports the standard Portable Executable 32 (PE32) image format. The PE32 image format organizes code, data, and other information, such as relocation information, section by section. The sections are arranged closely in succession. When the loader loads the image, the image layout of the memory is about the same as its file image. In exceptional cases there may be bubbles in the memory image layout due to the need for alignment between sections. Normally, if the section is not loaded into the preferred linking base, this loader will handle the memory image.

도 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)이 연속적으로 밀접하게 배치되도록 하는 것이다.1 illustrates an exemplary Portable Executable 32 (PE32) image 100 in accordance with an embodiment of the present invention. PE32 image 100, also referred to herein as execution driver module 100, includes a .text section 102, a .data section 104, and a .reloc section 106. In one embodiment, the .text section 102 may also be referred to as the .code section 102. In a particular embodiment, the execution driver module 100 is not limited to the .text section 102, the .data section 104, the .relocation section 106. In embodiments the executable driver module 100 may include more sections, such as, for example, .rdata section, .rsrc section, and the like. As described above, the alignment requirement between the sections is such that the sections 102, 104, 106 are arranged in close succession.

.텍스트 섹션(102)은 실행 드라이버 모듈(100)용 실행 코드를 포함한다. .데이터 섹션(104)은 .텍스트 섹션(102)의 실행 동안 사용될 데이터를 포함한다. .재배치 섹션(106)은 절대 플래시 어드레스로 갱신될 모든 어드레스 데이터 항목에 대한 정보를 제공한다.The text section 102 contains the executable code for the executable driver module 100. The .data section 104 contains data to be used during execution of the .text section 102. The relocation section 106 provides information about all address data items to be updated to absolute flash addresses.

PE32 이미지가 올바르게 시작(launch)하려면 섹션(102, 104, 106)은 연속한 가상 또는 물리 메모리 공간에 배치되어야 한다. 페이징이 가능하면 섹션(102, 104, 106)은 연속적인 가상 메모리 공간에 있어야 한다. 페이징이 필요하지 않으면 섹션(102, 104, 106)은 연속적인 물리 메모리 공간에 있어야 한다. EFI 펌웨어의 경우에는 페이징이 항상 불가능하다. 따라서 섹션(102, 104, 106)은 연속적인 물리 메모리 공간에 배치된다. 이는 실행 드라이버 모듈(100)의 섹션(102, 104, 106)이 불연속적인 메모리 범위로 분리되는 것을 방지한다. 실행 모듈이 다른 베이스에 로드되는 경우에는 실행 드라이버 모듈(100)의 모든 섹션(102, 104, 106)은 함께 그 새로운 베이스에 재배치된다. 코드 섹션("텍스트 섹션"이라고도 함)을 베이스에 재배치하고 데이터 섹션을 다른 불연속적인 새로운 베이스에 재배치하는 것은 허용되지 않는다.Sections 102, 104, and 106 must be placed in contiguous virtual or physical memory space for the PE32 image to launch correctly. Sections 102, 104 and 106 should be in contiguous virtual memory space if paging is possible. Sections 102, 104 and 106 should be in contiguous physical memory space unless paging is required. Paging is not always possible with EFI firmware. Thus sections 102, 104, 106 are disposed in contiguous physical memory space. This prevents sections 102, 104, 106 of the execution driver module 100 from being separated into discrete memory ranges. When an executable module is loaded into another base, all sections 102, 104, 106 of the executable driver module 100 are relocated together to that new base. Relocation of code sections (also called "text sections") to the base and relocation of data sections to other discrete new bases are not allowed.

PEI 단계에서 전역 변수를 변경할 수 있게 하는 목표를 달성하기 위해 실행 드라이버 모듈(100)의 PE32 섹션(102, 104, 106)은 서로 다른 메모리 범위로 분리되어야 한다. 예컨대, 정적 및/또는 전역 변수가 저장된 .데이터 섹션(104)이 CAR에 재배치되어야 하는 반면에 .텍스트 섹션(102)는 플래시 공간에 유지되어야 한 다. 플래시 및 CAR에 대한 공간 범위는 서로 다르고 불연속적이다.The PE32 sections 102, 104, and 106 of the execution driver module 100 must be separated into different memory ranges to achieve the goal of being able to change global variables in the PEI phase. For example, the .text section 104 where static and / or global variables are stored must be relocated to the CAR while the .text section 102 must be maintained in flash space. The spatial ranges for the flash and the CAR are different and discontinuous.

.데이터 섹션(104)을 CAR로 옮기는 반면에 플래시에 .텍스트 섹션(102)와 .재배치 섹션(106)을 유지하고 있을 때 실행 드라이버 모듈(100)의 적절한 실행을 보장하기 위해서는, 코드가 플래시에 있으면 조정이나 재배치 없이 적소에 실행되어야 하기 때문에 그 코드가 플래시에 기록되기 전에, 먼저 구축 툴을 이용하여 .텍스트 섹션(102) 및 .데이터 섹션(104)을 패치한다. 따라서, 본 발명은 그 재배치 정보를 이용하여 특정 플래시 베이스에 그 이미지를 조정하는 제1 라운드 조정이 필요하다. 제1 라운드 조정에 의해서 모든 코드가 플래시에서 직접 실행될 수 있고, 모든 데이터 액세스가 그 플래시에서 마찬가지로 발생하여 그 전역 변수로의 쓰기 액세스를 차단한다. 실행 드라이버 모듈(100)에서 모든 전역 변수로의 쓰기 액세스를 가능하게 하기 위해서는, .데이터 섹션(104)이 코드 실행 전에 플래시로부터 CAR로 복사될 것이기 때문에 .데이터 섹션(104)에 액세스하는 모든 코드와 .데이터 섹션(104)에서의 필드를 가리키는 모든 관련 데이터가 CAR로부터 .데이터 섹션(104)를 작동시키기 위해 갱신되게끔 제2 라운드 조정이 필요하다.To ensure proper execution of the execution driver module 100 when the .data section 104 is moved to the CAR while retaining the .text section 102 and the .relocation section 106 in the flash, the code is placed in the flash. The build tool first uses the build tool to patch the .text section 102 and the .data section 104 before the code is written to Flash because it must be executed in place without adjustment or relocation. Thus, the present invention requires a first round adjustment that uses the relocation information to adjust the image to a particular flash base. The first round adjustment allows all code to be executed directly in flash, and all data accesses occur in that flash as well, blocking write access to the global variables. In order to enable write access to all global variables in the execution driver module 100, all code accessing the .data section 104 and the .data section 104 will be copied from flash to the CAR before code execution. A second round adjustment is needed so that all relevant data pointing to the fields in the .data section 104 are updated to operate the .data section 104 from the CAR.

도 2는 본 발명의 실시예에 따른, 프리 EFI 초기화(PEI) 단계 동안 전역 변수의 읽기/쓰기 액세스를 가능하게 하도록 PE32 이미지를 변경하는 예시적인 방법을 설명하는 흐름도(200)이다. 본 발명은 흐름도(200)와 관련하여 여기서 설명한 실시예에 한정되지 않는다. 오히려 당업자라면 본 발명의 교시에 따라 다른 여러 가지 기능적 흐름도가 본 발명의 범위 내에 있음을 잘 알 것이다. 프로세스는 블록(202)에서 시작해서 바로 블록(204)으로 진행한다.2 is a flow diagram 200 illustrating an exemplary method of modifying a PE32 image to enable read / write access of a global variable during a pre EFI initialization (PEI) step, in accordance with an embodiment of the invention. The invention is not limited to the embodiment described herein in connection with the flowchart 200. Rather, those skilled in the art will appreciate that many other functional flow diagrams are within the scope of the present invention in accordance with the teachings of the present invention. The process starts at block 202 and proceeds directly to block 204.

블록(204)에서 실행 드라이버 모듈(100)이 생성된다. 실행 드라이버 모듈(100)은 플래시 장치에서 실행될 때 전역 변수의 읽기 액세스만을 가능하게 하는 전역 변수를 포함한다. 그 다음, 프로세스는 블록(206)으로 진행한다.In block 204 the execution driver module 100 is generated. Execution driver module 100 includes global variables that allow only read access of global variables when executed in a flash device. The process then proceeds to block 206.

블록(206)에서 실행 드라이버 모듈(100)의 제1 라운드 조정이 수행된다. 도 4를 참조로 이하에 더 설명되는 제1 라운드 조정은 절대 플래시 어드레스를 가지고 모든 어드레스 데이터 항목을 조정한다. 그 다음, 프로세스는 블록(208)로 진행한다.In block 206 a first round adjustment of the execution driver module 100 is performed. The first round adjustment, described further below with reference to FIG. 4, adjusts all address data items with absolute flash addresses. The process then proceeds to block 208.

블록(208)에서 실행 드라이버 모듈(100)의 제2 라운드 조정이 수행된다. 도 5를 참조로 이하에 더 설명되는 제2 라운드 조정은 실행 드라이버 모듈(100)의 .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 모든 어드레스 데이터 항목에 대한 두 번째 조정을 수행한다. 제2 라운드 조정은 절대 CAR 어드레스를 가지고 이들 데이터 어드레스를 갱신한다. 제2 라운드 조정 동안 .텍스트 섹션(102) 및 .데이터 섹션(104)은 절대 CAR 어드레스를 가진 데이터 어드레스를 반영하기 위해 갱신될 수 있다. 제2 라운드 조정이 완료되면, 최종 EFI 펌웨어 이미지(최종 실행 드라이버 모듈)가 플래시에 기록(burning)될 준비가 된다. 최종 EFI 펌웨어 이미지가 필수 절대 CAR 어드레스를 포함하고 있어서 전역 변수는 CAR로부터의 읽기/쓰기 액세스를 가질 수 있게 된다. 그 다음, 프로세스는 블록(210)으로 진행한다.In block 208 a second round adjustment of the execution driver module 100 is performed. The second round adjustment, described further below with reference to FIG. 5, performs a second adjustment for all address data items adjusted in the first round adjustment that points to the .data section 104 of the execution driver module 100. The second round adjustment updates these data addresses with an absolute CAR address. During the second round adjustment, the .text section 102 and the .data section 104 may be updated to reflect the data address with the absolute CAR address. Once the second round adjustment is complete, the final EFI firmware image (final execution driver module) is ready for burning to flash. The final EFI firmware image contains the required absolute CAR address so that global variables can have read / write access from the CAR. The process then proceeds to block 210.

블록(210)에서 최종 EFI 펌웨어 이미지(최종 실행 드라이버 모듈)은 플래시에 기록된다. 그 다음, 프로세스는 블록(212)으로 진행한다.In block 210 the final EFI firmware image (final execution driver module) is written to flash. The process then proceeds to block 212.

플래시가 부팅되면 펌웨어 로더가 플래시에서 CAR로 .데이터 섹션(104)을 복사한 다음에 실행을 위해 이미지 엔트리 포인트에 제어권을 넘길 것이다. 이는 .데이터 섹션(104)가 CAR에서 저장되고 작동되는 동안에 실행 드라이버 모듈(100)이 플래시에서 정상적으로 실행될 수 있게 한다. PEI 단계 동안 정적 변수 및 전역 변수는 이제 자유롭게 액세스될 수 있다. 즉, 전역 변수는 이제 CAR에서 읽기/쓰기 액세스를 가지게 된다.Once the flash has booted, the firmware loader will copy the .data section 104 from flash to the CAR and then transfer control to the image entry point for execution. This allows the execution driver module 100 to execute normally in flash while the .data section 104 is stored and operated in the CAR. Static and global variables can now be freely accessed during the PEI phase. In other words, global variables now have read / write access to the CAR.

도 3은 본 발명의 실시예에 따른, 프리 EFI 초기화(PEI) 단계 동안 전역 변수의 읽기/쓰기 액세스를 가능하게 하도록 하는 PE32 이미지(실행 드라이버 모듈)(100)의 예시적인 변경을 설명하는 블록도이다. 도 3에는 플래시(302), 플래시(302'), 및 CAR(304)(위에 나타낸 프로세서 캐시의 일 부분임)가 도시되어 있다.3 is a block diagram illustrating an exemplary modification of a PE32 image (executable driver module) 100 to enable read / write access of a global variable during a pre-EFI initialization (PEI) phase, in accordance with an embodiment of the invention. to be. 3 shows flash 302, flash 302 ′, and CAR 304 (which is part of the processor cache shown above).

플래시(302)는 .텍스트 섹션(102), .데이터 섹션(104), 및 .재배치 섹션(106)을 포함하는 실행 드라이버 모듈(100)을 포함한다. 제1 라운드 조정은 플래시(302)의 .텍스트 섹션(102) 및 .데이터 섹션(104)에 나타나 있다. .재배치 섹션(106)에 기초하여 모든 어드레스 데이터 항목은 제1 라운드 조정에서 절대 플래시 어드레스를 가지고 조정된다. 제2 라운드 조정은 플래시(302')에 나타나 있다. 제2 라운드 조정에서 .데이터 섹션(104)의 필드를 가리키는 모든 관련 데이터는 절대 CAR 어드레스를 가지고 조정될 것이다.Flash 302 includes an executable driver module 100 that includes a .text section 102, a .data section 104, and a .relocation section 106. The first round adjustment is shown in the .text section 102 and the .data section 104 of the flash 302. Based on the relocation section 106, all address data items are adjusted with absolute flash addresses in the first round adjustment. The second round adjustment is shown in flash 302 '. In the second round adjustment all relevant data pointing to the fields of the .data section 104 will be adjusted with an absolute CAR address.

도 4는 본 발명의 실시예에 따른 예시적인 제1 라운드 조정 방법을 설명하는 흐름도(400)이다. 본 발명은 흐름도(400)에 관련하여 여기서 설명한 실시예에 한정되지 않는다. 오히려 당업자라면 본 발명의 교시에 따라 다른 여러 가지 기능적 흐름도가 본 발명의 범위 내에 있음을 잘 알 것이다. 프로세스는 블록(402)에서 시작해서 바로 블록(404)으로 진행한다.4 is a flowchart 400 illustrating an exemplary first round adjustment method in accordance with an embodiment of the present invention. The invention is not limited to the embodiment described herein in connection with flow diagram 400. Rather, those skilled in the art will appreciate that many other functional flow diagrams are within the scope of the present invention in accordance with the teachings of the present invention. The process begins at block 402 and proceeds directly to block 404.

PE32 이미지에 있어서 .재배치 섹션(106)은 로딩 후 조정되어야 하는 실행 드라이버 모듈(100)에 모든 포인트를 기록한다. 일반적으로 .재배치 섹션(106)은 상대 가상 어드레스(RVA) 정보를 제공한다. RVA는 이미지가 메모리로 로드된 베이스 어드레스로부터의 오프셋이다. 이 RVA에 따라서 제1 라운드 조정 동안 패치될 모든 어드레스는 실행 드라이버 모듈(100)에서 확인된다. 패치될 각 어드레스는 로딩을 위해 특정 플래시 베이스를 추가함으로써 갱신될 것이다.In the PE32 image, the redeployment section 106 writes all points to the executable driver module 100 that must be adjusted after loading. In general, the relocation section 106 provides relative virtual address (RVA) information. RVA is the offset from the base address at which the image was loaded into memory. All addresses to be patched during the first round adjustment according to this RVA are verified in the execution driver module 100. Each address to be patched will be updated by adding a specific flash base for loading.

블록(404)에서 .재배치 섹션(106)의 포인트가 분석(parse)될 것이다. 그 다음, 프로세스는 블록(406)으로 진행한다.In block 404 the points of the .relocation section 106 will be parsed. The process then proceeds to block 406.

블록(406)에서 블록(404)에서 식별된 포인트에 있는 어드레스 데이터가 절대 플래시 어드레스를 가지고 갱신된다. 그 다음, 프로세스는 판정 블록(408)으로 진행한다.In block 406 the address data at the point identified in block 404 is updated with an absolute flash address. The process then proceeds to decision block 408.

판정 블록(408)에서는 .재배치 섹션(106)에 조정되어야 하는 포인트가 더 있는지를 판정한다. .재배치 섹션(106)에 조정되어야 하는 더 많은 포인트가 있다면 프로세스는 블록(404)으로 되돌아가서 다음 포인트를 분석한다.The decision block 408 determines whether there are more points in the .relocation section 106 that need to be adjusted. If there are more points in the redeployment section 106 that need to be adjusted, the process returns to block 404 to analyze the next point.

판정 블록(408)으로 되돌아와서 .재배치 섹션(106)에 분석되어야 하는 포인트가 더 이상 없는 것으로 판정되면 프로세스는 제1 라운드 조정이 종료되는 블록(410)으로 진행한다.Returning to decision block 408 and determining that there are no more points to be analyzed in the relocation section 106, the process proceeds to block 410 where the first round adjustment ends.

제1 라운드 조정은 또한 도 3의 플래시(302)에 나타나 있다. 도 3의 플래 시(302)에서는 .재배치 섹션(106)에 표본 포인트, .데이터 섹션(104)에 데이터 위치(B) 및 절대 플래시 어드레스(Ma, Mb), 및 .텍스트 섹션(102)에 데이터 코드 위치(A, C) 및 절대 플래시 어드레스(Mc)가 나타나 있다. Ma는 코드 위치(A)의 절대 플래시 어드레스이다. Mb는 데이터 위치(B)의 절대 플래시 어드레스이다. Mc는 코드 위치(C)의 절대 플래시 어드레스이다.The first round adjustment is also shown in flash 302 of FIG. 3. In the flash 302 of FIG. 3, the sample point is located in the .reposition section 106, the data position B and the absolute flash address (Ma, Mb) are in the .data section 104, and the data is in the .text section 102. The code locations A and C and the absolute flash address Mc are shown. Ma is the absolute flash address of the code position A. Mb is the absolute flash address of the data position B. Mc is the absolute flash address of the code position (C).

표본 포인트(Ra, Rb, Rc)는 .재배치 섹션(106)에 강조되어 나타나 있다. Ra는 (.텍스트 섹션(102)에 위치한) 코드 위치(A)를 가리키는 재배치 정보를 포함한다. 위치(A)에 있는 어드레스 데이터는 .데이터 섹션(104)에 있는 절대 플래시 어드레스(Ma)를 가지고 갱신된다. Rb는 (.텍스트 섹션(104)에 위치한) 코드 위치(B)를 가리키는 재배치 정보를 포함한다. 위치(B)에 있는 어드레스 데이터는 .데이터 섹션(104)에 있는 절대 플래시 어드레스(Mb)를 가지고 갱신된다. 마지막으로 Rc는 (.텍스트 섹션(102)에 위치한) 코드 위치(C)를 가리키는 재배치 정보를 포함한다. 위치(C)에 있는 어드레스 데이터는 .텍스트 섹션(102)에 있는 절대 플래시 어드레스(Mc)를 가지고 갱신된다.Sample points (Ra, Rb, Rc) are highlighted in the relocation section 106. Ra includes relocation information that points to code location A (located in text section 102). The address data at position A is updated with the absolute flash address Ma at .data section 104. Rb contains relocation information that points to code location B (located in text section 104). The address data at position B is updated with the absolute flash address Mb in the .data section 104. Finally, Rc contains relocation information that points to the code location C (located in the text section 102). The address data at position C is updated with the absolute flash address Mc in .text section 102.

플래시(302')는 제2 라운드 조정 방법을 나타낸다. 플래시(302')는 표본 포인트(Ra, Rb, Rc)를 강조하는 .재배치 섹션(106), .데이터 섹션(104'), 및 .텍스트 섹션(102')을 보여준다. .데이터 섹션(104')은 데이터 위치(B)와 절대 CAR 어드레스(Mb', Ma')를 포함한다. .텍스트 섹션(102')은 위치(A, C)와 절대 플래시 어드레스(Mc)를 포함한다. 플래시(302)의 .텍스트 섹션(102)은 Ma'의 어드레스 변화를 수용하도록 플래시(302')(.데이터 섹션(102'))에서 변경됨에 유의한다.Flash 302 'represents the second round adjustment method. Flash 302 'shows .. relocation section 106, .data section 104', and .text section 102 ', highlighting sample points Ra, Rb, Rc. The data section 104 'contains the data location B and the absolute CAR addresses Mb', Ma '. The text section 102 'contains the positions A and C and the absolute flash address Mc. Note that the .text section 102 of the flash 302 is changed in the flash 302 '(.data section 102') to accommodate Ma's address change.

예컨대 플래시(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)은 플래시에서 실행될 것이다.For example, if an address such as Mb or Ma of flash 302 is found in .data section 104, this indicates that the code in .text section 102 is accessing a static or global variable. Since the .data section 104 'of the flash 302' will be copied to the CAR 304, these addresses Mb, Ma are absolute CAR as shown in the .data section 104 'of the flash 302'. It must be updated to reflect the addresses Mb 'and Ma'. Therefore, another patch is needed by adding a gap between the specific flash base and the CAR base. Mc in the .data section 104 of the flash 302 or other address located outside the .data section 104 'of the flash 302' (e.g., in the .text section 102 and the .text section 102 '). Such addresses remain in flash, so no further patching is required. In other words, the .text section 102 will be executed in Flash.

제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 단계에서 전역 변수에 대한 읽기 및 쓰기 액세스를 가질 수 있다.Looking at the address adjusted in the first round adjustment, it is very easy to determine whether the address is in the .data section 104 or not. All accesses to the address of the flash in the .data section 104 will be redirected to the CAR 304 in the .data section 104 '. After redirecting the address of the flash of .data section 104 to obtain .data section 104 ', .data section 104' is copied from flash 302 'to CAR 304. In this case, the execution driver module 100 may execute normally when the .data section 104 'is stored in the CAR area 304 and operated. This significantly improves boot performance since all static variable and global variable access occurs in CAR 304 instead of flash after relocation. Thus, by applying an additional patch to the address pointing to the .data section 104 after the first round adjustment, it is possible to separate the .data section from the overall image layout and relocate it to another specific address. By placing the .data section 104 'in the CAR 304, the execution driver module 100 can have read and write access to global variables in the PEI phase.

플래시(302')에 나타낸 바와 같이 위치(B)에 있는 이전에 조정된 어드레스(Mb)는 절대 CAR 어드레스(Mb')를 가지고 갱신되고 위치(A)에 있는 이전에 조정된 어드레스 데이터(Ma)는 절대 CAR 어드레스(Ma')를 가지고 갱신된다. 위치(C)에 있는 조정된 어드레스 데이터(Mc)는 .텍스트 섹션(102)에 있고 이 .텍스트 섹션은 플래시에 그대로 남아 있기 때문에 위치(C)에 있는 조정된 어드레스 데이터(Mc)는 갱신되지 않을 것이다.As shown in flash 302 ', the previously adjusted address Mb at position B is updated with the absolute CAR address Mb' and the previously adjusted address data Ma at position A. Is updated with an absolute CAR address Ma '. The adjusted address data Mc in position C is not updated because the adjusted address data Mc in position C is in the .text section 102 and this .text section remains in the flash. will be.

CAR(304)는 .데이터 섹션(104')가 복사되는 프로세서 캐시의 일부분이다. 전술한 바와 같이 펌웨어가 플래시 공간으로 기록된 후에 펌웨어 로더는 .데이터 섹션(104')을 플래시로부터 CAR로 복사할 것이다. .데이터 섹션(104')이 CAR(304)로 이동하면 PEI 정적 변수 및 전역 변수는 CAR(304)를 통해 읽기/쓰기 액세스를 가질 수가 있다.CAR 304 is part of the processor cache to which the .data section 104 'is copied. After the firmware has been written to the flash space as described above, the firmware loader will copy the .data section 104 'from flash to the CAR. Once the .data section 104 'is moved to the CAR 304, the PEI static and global variables can have read / write access through the CAR 304.

도 5는 본 발명의 실시예에 따른 예시적인 제2 라운드 조정 방법을 설명하는 흐름도(500)이다. 본 발명은 흐름도(500)에 관련하여 여기서 설명한 실시예에 한정되지 않는다. 오히려 당업자라면 본 발명의 교시에 따라 다른 여러 가지 기능적 흐름도가 본 발명의 범위 내에 있음을 잘 알 것이다. 프로세스는 블록(502)에서 시작해서 바로 블록(504)으로 진행한다.5 is a flowchart 500 illustrating an exemplary second round adjustment method in accordance with an embodiment of the present invention. The present invention is not limited to the embodiment described herein with respect to flowchart 500. Rather, those skilled in the art will appreciate that many other functional flow diagrams are within the scope of the present invention in accordance with the teachings of the present invention. The process begins at block 502 and proceeds directly to block 504.

판정 블록(504)에서 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 .데이터 섹션(104)을 가리키는지를 판정한다. .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 있으면 그 어드레스 데이터 항목은 블록(506)에서 선택되고 프로세스는 블록(508)으로 진행한다. .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 없으면 프로세스는 블록(512)으로 진행하여 종료한다.In decision block 504 it is determined whether the address data item adjusted in the first round adjustment points to the .data section 104. If there is an adjusted address data item in the first round adjustment pointing to the data section 104, the address data item is selected at block 506 and the process proceeds to block 508. If there is no address data item adjusted in the first round adjustment that points to the .data section 104, the process proceeds to block 512 and ends.

블록(508)에서는 블록(506)에서 선택된 어드레스 데이터 항목이 절대 CAR 어드레스를 가지고 갱신된다. 그 다음, 프로세스는 판정 블록(510)으로 진행한다.In block 508 the address data item selected in block 506 is updated with an absolute CAR address. The process then proceeds to decision block 510.

판정 블록(510)에서는 .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 더 있는지를 판정한다. .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 더 많은 어드레스 데이터 항목이 있으면 프로세스는 조정될 다음 어드레스 데이터 항목을 선택하기 위해 블록(506)으로 되돌아간다.The decision block 510 determines whether there are more address data items adjusted in the first round adjustment that point to the .data section 104. If there are more address data items adjusted in the first round adjustment that point to the .data section 104, the process returns to block 506 to select the next address data item to be adjusted.

판정 블록(510)으로 되돌아가서 .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 더이상 없으면 프로세스는 블록(512)으로 진행하여 종료한다.Returning to decision block 510 and if there are no more address data items adjusted in the first round adjustment pointing to .data section 104, the process proceeds to block 512 and ends.

본 발명의 실시예는 하드웨어, 소프트웨어, 또는 이들의 조합을 이용하여 구현될 수 있으며, 하나 또는 그 이상의 컴퓨터 시스템이나 기타 다른 처리 시스템에서 구현될 수 있다. 여기서 설명한 기술은 임의의 컴퓨팅, 소비자 전자장치나 처리 환경에서 활용 가능성을 찾을 수 있다. 이 기술은 이동식 또는 고정식 컴퓨터, 개인 휴대 정보 단말기, 셋탑박스, 셀룰러 전화와 페이저, 소비자 전자 장치(DVD(Digital Video Disc) 플레이어, 개인용 비디오 녹화기, 개인용 비디오 플레이어, 위성 수신기, 스테레오 수신기, 케이블 TV 수신기 포함), 및 프로세서, 저장 매체(휘발성 메모리 및 불휘발성 메모리 및/또는 저장 소자 포함), 적어도 하나의 입력 장치와 하나 또는 그 이상의 출력 장치를 포함할 수 있는 다른 전자 장치 등과 같은 프로그램가능한 기계에서 실행되는 프로그램으로 구현될 수 있다. 프로그램 코드는 설명된 기능을 수행하고 출력 정보를 생성하기 위해 입력 장치를 이용하여 입력된 데이터에 적용된다. 출력 정보는 하나 또는 그 이상의 출력 장치에 입력될 수 있다. 당업자라면 본 발명이 멀티프로세서 시스템, 미니 컴퓨터, 메인 프레임 컴퓨터, 독립형 소비자 전자 장치 등을 포함하여 여러 가지 시스템 구성으로 실시될 수 있다는 것을 잘 알 수 있다. 본 발명은 또한 태스크나 그 일부가 통신망을 통해서 연결된 원격 처리 장치에 의해 수행될 수 있는 분산 컴퓨팅 환경에서도 실시될 수 있다.Embodiments of the invention may be implemented using hardware, software, or a combination thereof, and may be implemented in one or more computer systems or other processing systems. The techniques described herein may find utility in any computing, consumer electronics or processing environment. This technology includes mobile or stationary computers, personal digital assistants, set-top boxes, cellular phones and pagers, consumer electronics (Digital Video Disc) players, personal video recorders, personal video players, satellite receivers, stereo receivers, cable TV receivers. And, on a programmable machine, such as a processor, a storage medium (including volatile memory and nonvolatile memory and / or storage elements), other electronic devices that may include at least one input device and one or more output devices, and the like. Can be implemented as a program. Program code is applied to data entered using an input device to perform the functions described and to generate output information. Output information may be input to one or more output devices. Those skilled in the art will appreciate that the present invention may be practiced in a variety of system configurations, including multiprocessor systems, minicomputers, mainframe computers, standalone consumer electronic devices, and the like. The invention may also be practiced in distributed computing environments where tasks or portions thereof may be performed by remote processing devices that are linked through a communications network.

각 프로그램은 처리 시스템과 통신을 하기 위해 고급 절차식 또는 객체 지향형 프로그래밍 언어에서 구현될 수 있다. 그러나 필요하면 어셈블리어나 기계어로 구현될 수 있다. 어떤 경우든 이러한 언어는 컴파일되거나 기계번역된다.Each program may be implemented in a high level procedural or object oriented programming language to communicate with a processing system. However, it can be implemented in assembly or machine language if necessary. In any case, these languages are compiled or machine translated.

프로그래밍 명령어는 이 명령어로 프로그래밍된 범용 또는 전용 처리 시스템이 여기서 설명한 동작을 수행하도록 하는데 사용될 수 있다. 또는, 이 동작은 이 동작을 실행하기 위한 하드와이어드 로직(hardwired logic)을 포함하는 특정 하드웨어 컴포넌트나 프로그래밍된 컴퓨터 컴포넌트와 주문 하드웨어 컴포넌트의 조합 에 의해 수행될 수 있다. 여기서 설명된 방법들은 이 방법들을 수행하는 처리 시스템이나 기타 다른 전자 장치를 프로그래밍하는데 사용될 수 있는 명령어가 저장된 기계 액세스가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로 제공될 수 있다. 여기서 사용된 "기계 액세스가능 매체"라는 용어는 기계에 의한 실행을 위한 명령어 계열을 저장 또는 인코딩할 수 있고 기계가 여기서 설명된 방법들 중 임의의 방법을 수행하게 하는 임의의 매체를 포함할 수 있다. 따라서 "기계 액세스가능 매체"라는 용어는 고체 메모리, 광학 및 자기 디스크, 및 데이터 신호를 인코딩하는 반송파를 포함하지만 이에 한정되지는 않는다. 게다가 본 기술에서는 소프트웨어는 어떤 형태로든지(예컨대 프로그램, 프로시저, 프로세스, 애플리케이션, 모듈, 로직 등) 어떤 동작을 취하거나 어떤 결과를 유발하는 것이 통상적이다. 이러한 표현은 단지 프로세서가 동작을 수행하거나 결과를 발생시키는 처리 시스템에 의한 소프트웨어의 실행을 기술하는 약식 방법일 뿐이다.Programming instructions may be used to cause a general purpose or dedicated processing system programmed with these instructions to perform the operations described herein. Alternatively, this operation may be performed by a specific hardware component or a combination of programmed computer components and custom hardware components that include hardwired logic to perform the operation. The methods described herein may be provided as a computer program product that may include a machine accessible medium having instructions stored thereon that can be used to program a processing system or other electronic device that performs these methods. The term "machine accessible medium" as used herein may include any medium that can store or encode a family of instructions for execution by a machine and cause the machine to perform any of the methods described herein. . Thus, the term "machine accessible medium" includes, but is not limited to, solid state memory, optical and magnetic disks, and a carrier encoding data signals. Moreover, in the present technology, it is common for software to take any action or cause any result in any form (eg, program, procedure, process, application, module, logic, etc.). This representation is merely a shorthand way of describing the execution of the software by the processing system in which the processor performs an action or produces a result.

지금까지 본 발명의 여러 가지 실시예에 대해서 설명하였지만, 이들 실시예들은 단지 예시적인 것이며 한정적인 것이 아님을 알아야 한다. 당업자라면 청구범위에 기재된 본 발명의 본질과 범위로부터 벗어남이 없이 실시예들을 형태 및 세부 사항에 있어 여러 가지로 변경할 수 있음을 알아야 한다. 따라서 본 발명의 범위는 전술한 예시적인 실시예에 의해 한정되는 것이 아니라 하기의 청구범위와 그 등가물에 따라서 정해져야 한다.While various embodiments of the present invention have been described so far, it should be understood that these embodiments are exemplary only and not limiting. Those skilled in the art should appreciate that various modifications may be made in form and detail of the embodiments without departing from the spirit and scope of the invention as set forth in the claims. Therefore, the scope of the present invention should not be limited by the above-described exemplary embodiments, but should be defined in accordance with the following claims and their equivalents.

Claims (26)

프리 EFI 초기화(PEI)에서 전역 변수 읽기/쓰기 동작을 가능하게 하는 방법으로서,As a method of enabling global variable read / write operations in pre-EFI initialization (PEI), 상기 방법은 컴퓨터에 의해 수행되며, 상기 방법은,The method is performed by a computer, the method comprising: 코드 섹션, 데이터 섹션, 및 재배치 섹션을 포함하는 드라이버 이미지를 생성하는 단계;Generating a driver image comprising a code section, a data section, and a relocation section; 상기 드라이버 이미지 내의 어드레스 데이터 항목들을, 불휘발성 메모리의 절대(absolute) 어드레스들을 가지고 조정(fixing)하기 위해 상기 드라이버 이미지에 대해 제1 라운드 조정(round fixing)을 수행하는 단계;Performing a first round fixing on the driver image to fix address data items in the driver image with absolute addresses of a nonvolatile memory; 상기 제1 라운드 조정에서 조정되고 상기 데이터 섹션을 가리키는 어드레스 데이터 항목들을, RAM으로서의 캐시(Cache-As-Random Access Memory; Cache-As-RAM; CAR)의 절대 어드레스들을 가지고 조정하기 위해 상기 드라이버 이미지에 대해 제2 라운드 조정을 수행하는 단계; 및Address data items adjusted in the first round adjustment and pointing to the data section may be added to the driver image to adjust with absolute addresses of a Cache-As-Random Access Memory (Cache-As-RAM; CAR). Performing a second round adjustment on the second; And 상기 조정된 드라이버 이미지를 불휘발성 메모리 장치에 기록(burning)하는 단계Burning the adjusted driver image to a nonvolatile memory device 를 포함하며,Including; 상기 불휘발성 메모리 장치를 부팅할 때, 상기 기록된 드라이버 이미지의 상기 데이터 섹션이 상기 RAM으로서의 캐시(Cache-As-RAM; CAR)에 복사되고, 상기 코드 섹션에서의 실행 코드(executable code)의 실행에 의해 정적 및 전역 변수들이 상기 RAM으로서의 캐시(Cache-As-RAM; CAR)로부터 읽기/쓰기 액세스되는 방법.When booting the nonvolatile memory device, the data section of the written driver image is copied to a Cache-As-RAM (CAR) as the RAM and execution of executable code in the code section. Static and global variables are read / write accessed from a Cache-As-RAM (CAR). 제1항에 있어서,The method of claim 1, 상기 드라이버 이미지는 PE32(Portable Executable 32) 이미지를 포함하는 방법.Wherein the driver image comprises a Portable Executable 32 (PE32) image. 제1항에 있어서,The method of claim 1, 상기 드라이버 이미지는 상기 불휘발성 메모리에서 실행되는 방법.The driver image is executed in the nonvolatile memory. 제1항에 있어서,The method of claim 1, 상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 방법.And the nonvolatile memory comprises a flash memory device. 제1항에 있어서,The method of claim 1, 제1 라운드 조정을 수행하는 단계는,Performing the first round adjustment, 상기 재배치 섹션의 각 포인트를 분석하는(parsing) 단계; 및Parsing each point of the relocation section; And 상기 재배치 섹션의 각 포인트와 관련된 각 어드레스 데이터 항목을 상기 불휘발성 메모리의 절대 어드레스를 가지고 갱신하는 단계Updating each address data item associated with each point in the relocation section with an absolute address of the nonvolatile memory. 를 포함하는 방법.How to include. 제1항에 있어서,The method of claim 1, 제2 라운드 조정을 수행하는 단계는,Performing the second round adjustment, 상기 제1 라운드 조정에서 조정된 상기 어드레스 데이터 항목들이 상기 데이터 섹션을 가리키는지를 판정하는 단계; 및Determining whether the address data items adjusted in the first round adjustment point to the data section; And 상기 제1 라운드 조정에서 조정된 상기 어드레스 데이터 항목들이 상기 데이터 섹션을 가리키면, 상기 조정된 어드레스 데이터 항목들을, 상기 RAM으로서의 캐시(Cache-As-RAM; CAR)의 절대 어드레스들을 가지고 갱신하는 단계If the address data items adjusted in the first round adjustment point to the data section, updating the adjusted address data items with the absolute addresses of a Cache-As-RAM (CAR) as the RAM; 를 포함하는 방법.How to include. 프리 EFI 초기화(PEI) 단계에서 전역 변수들을 사용하기 위한 방법으로서,As a method for using global variables in the pre-EFI initialization (PEI) phase, 상기 방법은 컴퓨터에 의해 수행되며, 상기 방법은,The method is performed by a computer, the method comprising: 드라이버 이미지의 코드 부분 및 재배치 부분으로부터 데이터 부분을 분리하는 단계;Separating the data portion from the code portion and the relocation portion of the driver image; RAM(Random Access Memory)으로 사용되는 프로세서 캐시의 영역에 상기 데이터 부분을 복사하는 단계; 및Copying the data portion to an area of a processor cache used as random access memory (RAM); And 상기 드라이버 이미지를 실행하기 위해 상기 드라이버 이미지의 이미지 엔트리 포인트로 제어권을 넘기는 단계Transferring control to an image entry point of the driver image to execute the driver image 를 포함하고,Including, 상기 전역 변수들이 RAM으로 사용되는 상기 프로세서 캐시로부터 액세스되는 방법.The global variables are accessed from the processor cache used as RAM. 제7항에 있어서,The method of claim 7, wherein 상기 드라이버 이미지의 상기 코드 부분 및 상기 재배치 부분으로부터 상기 데이터 부분을 분리하는 단계 이전에, 상기 코드 부분을 패치하기 위해 제1 라운드 조정 및 제2 라운드 조정을 수행하고 상기 패치된 코드를 불휘발성 메모리에 기록하는 단계를 포함하는 방법.Prior to separating the data portion from the code portion and the relocation portion of the driver image, perform a first round adjustment and a second round adjustment to patch the code portion and transfer the patched code to a nonvolatile memory. Recording. 제8항에 있어서,The method of claim 8, 상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 방법.And the nonvolatile memory comprises a flash memory device. 제8항에 있어서,The method of claim 8, 제1 라운드 조정을 수행하는 단계는 상기 재배치 부분을 이용하여 상기 불휘발성 메모리의 특정된 베이스 어드레스에서 상기 드라이버 이미지를 조정하는 단계를 포함하는 방법.Performing a first round adjustment comprises adjusting the driver image at a specified base address of the nonvolatile memory using the relocation portion. 제8항에 있어서,The method of claim 8, 제2 라운드 조정을 수행하는 단계는 상기 불휘발성 메모리에서의 상기 드라이버 이미지의 상기 코드 부분을 실행하는 동안 RAM으로 사용되는 상기 프로세서 캐시에서 상기 데이터를 동작시키기 위해 상기 데이터 부분에 액세스하는 상기 코드 부분의 코드와 상기 데이터 부분을 가리키는 관련 데이터를 갱신하는 단계를 포함하는 방법.Performing a second round adjustment of the code portion accessing the data portion to operate the data in the processor cache used as RAM while executing the code portion of the driver image in the nonvolatile memory. Updating code and associated data pointing to the data portion. 프리 EFI 초기화(PEI) 단계 동안 전역 변수들의 사용을 가능하게 하는 시스템으로서,A system that enables the use of global variables during the pre-EFI initialization (PEI) phase, 코드 부분, 데이터 부분, 및 재배치 부분을 포함하는 실행 드라이버 이미지(executable driver imager);An executable driver imager including a code portion, a data portion, and a relocation portion; 상기 실행 드라이버 이미지를 저장하고 실행하기 위한 불휘발성 메모리; 및A nonvolatile memory for storing and executing the executable driver image; And 프로세서 캐시Processor cache 를 포함하며,Including; 상기 코드 부분은 실행 코드를 포함하고, 상기 데이터 부분은 상기 실행 코드에 의해 사용될 데이터를 포함하고, 상기 재배치 부분은 상기 실행 드라이버 이미지의 제1 라운드 조정 동안 불휘발성 메모리의 절대 어드레스를 가지고 갱신될 어드레스 데이터 항목들에 대한 정보를 포함하고,The code portion includes executable code, the data portion includes data to be used by the executable code, and the relocation portion is an address to be updated with the absolute address of the nonvolatile memory during the first round adjustment of the executable driver image. Contains information about data items, 상기 프로세서 캐시의 영역은 RAM으로서의 캐시(Cache-As-Random Access Memory; Cache-As-RAM; CAR)로 이용되고, 상기 실행 드라이버 이미지의 상기 데이터 부분은 상기 실행 드라이버 이미지의 실행 동안 정적 및 전역 변수들이 상기 RAM으로서의 캐시(Cache-As-RAM; CAR)에서 동작할 수 있게 하기 위해 상기 실행 드라이버 이미지의 상기 제1 라운드 조정 및 제2 라운드 조정 후에 상기 RAM으로서의 캐시(Cache-As-RAM; CAR)에 복사되는 시스템.The area of the processor cache is used as a Cache-As-Random Access Memory (Cache-As-RAM; CAR), where the data portion of the executable driver image is a static and global variable during execution of the executable driver image. Cache-As-RAM (CAR) after the first round adjustment and the second round adjustment of the execution driver image to enable them to operate in the Cache-As-RAM (CAR). System copied to. 제12항에 있어서,The method of claim 12, 상기 실행 드라이버 이미지의 상기 제1 라운드 조정 및 상기 제2 라운드 조정 후에 상기 실행 드라이버 이미지를 실행하기 전에 상기 불휘발성 메모리에 상기 실행 드라이버 이미지를 기록하는 시스템.And write the executable driver image to the nonvolatile memory before executing the executable driver image after the first round adjustment and the second round adjustment of the executable driver image. 제12항에 있어서,The method of claim 12, 상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 시스템.The nonvolatile memory includes a flash memory device. 제12항에 있어서,The method of claim 12, 상기 실행 드라이버 이미지의 상기 제2 라운드 조정은 상기 불휘발성 메모리에서 상기 드라이버 이미지의 상기 코드 부분을 실행하는 동안 상기 RAM으로서의 캐시(Cache-As-RAM; CAR)에서 상기 데이터를 동작시키기 위해 상기 데이터 부분에 액세스하는 상기 코드 부분의 코드와 상기 데이터 부분을 가리키는 관련 데이터를 갱신하는 시스템.The second round adjustment of the execution driver image causes the data portion to operate the data in a Cache-As-RAM (CAR) as the RAM while executing the code portion of the driver image in the nonvolatile memory. And update the code of the code portion to access the associated data pointing to the data portion. 복수의 컴퓨터 액세스가능 명령어를 저장한 컴퓨터 판독가능 저장 매체로서,A computer readable storage medium having stored thereon a plurality of computer accessible instructions, 상기 명령어들이 프로세서에 의해 실행될 때에, 상기 명령어들은, 상기 컴퓨터로 하여금,When the instructions are executed by a processor, the instructions cause the computer to: 코드 섹션, 데이터 섹션, 및 재배치 섹션을 포함하는 드라이버 이미지를 생성하는 단계;Generating a driver image comprising a code section, a data section, and a relocation section; 상기 드라이버 이미지 내의 어드레스 데이터 항목들을, 불휘발성 메모리의 절대 어드레스들을 가지고 조정하기 위해 상기 드라이버 이미지에 대해 제1 라운드 조정을 수행하는 단계;Performing a first round adjustment to the driver image to adjust address data items in the driver image with absolute addresses of a nonvolatile memory; 상기 제1 라운드 조정에서 조정되고 상기 데이터 섹션을 가리키는 어드레스 데이터 항목들을, RAM으로서의 캐시(Cache-As-Random Access Memory; Cache-As-RAM; CAR)의 절대 어드레스들을 가지고 조정하기 위해 상기 드라이버 이미지에 대해 제2 라운드 조정을 수행하는 단계; 및Address data items adjusted in the first round adjustment and pointing to the data section may be added to the driver image to adjust with absolute addresses of a Cache-As-Random Access Memory (Cache-As-RAM; CAR). Performing a second round adjustment on the second; And 상기 조정된 드라이버 이미지를 불휘발성 메모리 장치에 기록하는 단계Writing the adjusted driver image to a nonvolatile memory device 를 포함하는 방법을 수행하게 하고,To perform a method comprising a, 상기 불휘발성 메모리 장치를 부팅할 때, 상기 기록된 드라이버 이미지의 상기 데이터 섹션이 상기 RAM으로서의 캐시(Cache-As-RAM; CAR)에 복사되고, 상기 코드 섹션에서의 실행 코드의 실행중에 정적 및 전역 변수들이 상기 RAM으로서의 캐시(Cache-As-RAM; CAR)로부터 읽기/쓰기 액세스되는 컴퓨터 판독가능 저장 매체.When booting the nonvolatile memory device, the data section of the written driver image is copied to a Cache-As-RAM (CAR) as the RAM and is static and global during execution of executable code in the code section. A computer readable storage medium in which variables are read / write accessed from a Cache-As-RAM (CAR) as RAM. 제16항에 있어서,The method of claim 16, 상기 드라이버 이미지는 PE32(Portable Executable 32) 이미지를 포함하는 컴퓨터 판독가능 저장 매체.And the driver image comprises a Portable Executable 32 (PE32) image. 제16항에 있어서,The method of claim 16, 상기 드라이버 이미지는 상기 불휘발성 메모리에서 실행되는 컴퓨터 판독가능 저장 매체.And the driver image is executed in the nonvolatile memory. 제16항에 있어서,The method of claim 16, 상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 컴퓨터 판독가능 저장 매체.And the nonvolatile memory comprises a flash memory device. 제16항에 있어서,The method of claim 16, 제1 라운드 조정을 수행하는 단계에 대한 명령어들은,The instructions for performing the first round adjustment are: 상기 재배치 섹션의 각 포인트를 분석하는 단계; 및Analyzing each point of the relocation section; And 상기 재배치 섹션의 각 포인트와 관련된 각 어드레스 데이터 항목을 상기 불휘발성 메모리의 절대 어드레스를 가지고 갱신하는 단계Updating each address data item associated with each point in the relocation section with an absolute address of the nonvolatile memory. 에 대한 명령어들을 포함하는 컴퓨터 판독가능 저장 매체.Computer-readable storage medium containing instructions for. 제16항에 있어서,The method of claim 16, 제2 라운드 조정을 수행하는 단계에 대한 명령어들은,The instructions for performing the second round adjustment are: 상기 제1 라운드 조정에서 조정된 상기 어드레스 데이터 항목들이 상기 데이터 섹션을 가리키는지를 판정하는 단계; 및Determining whether the address data items adjusted in the first round adjustment point to the data section; And 상기 제1 라운드 조정에서 조정된 상기 어드레스 데이터 항목들이 상기 데이터 섹션을 가리키면, 상기 조정된 어드레스 데이터 항목들을, 상기 RAM으로서의 캐시(Cache-As-RAM; CAR)의 절대 어드레스들을 가지고 갱신하는 단계If the address data items adjusted in the first round adjustment point to the data section, updating the adjusted address data items with the absolute addresses of a Cache-As-RAM (CAR) as the RAM; 에 대한 명령어들을 포함하는 컴퓨터 판독가능 저장 매체.Computer-readable storage medium containing instructions for. 복수의 컴퓨터 액세스가능 명령어를 저장한 컴퓨터 판독가능 저장 매체로서,A computer readable storage medium having stored thereon a plurality of computer accessible instructions, 상기 명령어들이 프로세서에 의해 실행될 때에, 상기 명령어들은, 상기 컴퓨터로 하여금,When the instructions are executed by a processor, the instructions cause the computer to: 드라이버 이미지의 코드 부분 및 재배치 부분으로부터 데이터 부분을 분리하는 단계;Separating the data portion from the code portion and the relocation portion of the driver image; RAM(Random Access Memory)으로 사용되는 프로세서 캐시의 영역에 상기 데이터 부분을 복사하는 단계; 및Copying the data portion to an area of a processor cache used as random access memory (RAM); And 상기 드라이버 이미지를 실행하기 위해 상기 드라이버 이미지의 이미지 엔트리 포인트로 제어권을 넘기는 단계Transferring control to an image entry point of the driver image to execute the driver image 를 포함하는 방법을 수행하게 하고,To perform a method comprising a, RAM으로 사용되는 상기 프로세서 캐시로부터 전역 변수들이 액세스되는 컴퓨터 판독가능 저장 매체.A computer readable storage medium in which global variables are accessed from the processor cache used as RAM. 제22항에 있어서,The method of claim 22, 상기 드라이버 이미지의 상기 코드 부분 및 상기 재배치 부분으로부터 상기 데이터 부분을 분리하는 단계에 대한 명령어들 이전에, 상기 코드 부분을 패치하기 위해 제1 라운드 조정 및 제2 라운드 조정을 수행하고 상기 패치된 코드를 불휘발성 메모리에 기록하는 단계에 대한 명령어들을 포함하는 컴퓨터 판독가능 저장 매체.Prior to instructions for separating the data portion from the code portion and the relocation portion of the driver image, perform a first round adjustment and a second round adjustment to patch the code portion and apply the patched code. A computer readable storage medium comprising instructions for writing to a nonvolatile memory. 제23항에 있어서,24. The method of claim 23, 상기 불휘발성 메모리는 플래시 메모리 장치를 포함하는 컴퓨터 판독가능 저장 매체.And the nonvolatile memory comprises a flash memory device. 제23항에 있어서,24. The method of claim 23, 제1 라운드 조정을 수행하는 단계에 대한 명령어들은 상기 재배치 부분을 이용하여 상기 불휘발성 메모리의 특정된 베이스 어드레스에서 상기 드라이버 이미지를 조정하는 단계에 대한 명령어들을 포함하는 컴퓨터 판독가능 저장 매체.The instructions for performing a first round adjustment include instructions for adjusting the driver image at a specified base address of the nonvolatile memory using the relocation portion. 제23항에 있어서,24. The method of claim 23, 제2 라운드 조정을 수행하는 단계에 대한 명령어들은 상기 불휘발성 메모리에서의 상기 드라이버 이미지의 상기 코드 부분을 실행하는 동안 RAM으로 사용되는 상기 프로세서 캐시에서 상기 데이터를 동작시키기 위해 상기 데이터 부분에 액세스하는 상기 코드 부분의 코드와 상기 데이터 부분을 가리키는 관련 데이터를 갱신하는 단계에 대한 명령어들을 포함하는 컴퓨터 판독가능 저장 매체.Instructions for performing a second round adjustment include accessing the data portion to operate the data in the processor cache that is used as a RAM while executing the code portion of the driver image in the nonvolatile memory. And instructions for updating the code of the code portion and related data pointing to the data portion.
KR1020097000765A 2006-07-18 2006-07-18 A method to use global variables for pre-efi initialization modules in efi-based firmware KR101036675B1 (en)

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 KR20090035521A (en) 2009-04-09
KR101036675B1 true KR101036675B1 (en) 2011-05-24

Family

ID=38996845

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097000765A KR101036675B1 (en) 2006-07-18 2006-07-18 A method to use global variables for pre-efi initialization modules in efi-based firmware

Country Status (5)

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

Families Citing this family (7)

* 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 (en) * 2008-06-02 2013-07-17 松下电器产业株式会社 Method and system for tracking correlation information of document
CN105446842B (en) * 2015-12-03 2019-01-04 南京南瑞继保电气有限公司 A kind of ADI DSP code in-service monitoring method
CN105630559B (en) * 2015-12-25 2018-12-28 广州视源电子科技股份有限公司 Board firmware burning method and its system
CN105426223B (en) * 2015-12-25 2019-01-04 百度在线网络技术(北京)有限公司 Using loading method and device
CN107450953B (en) * 2017-08-01 2020-08-04 合肥联宝信息技术有限公司 Method and device for updating BIOS
CN110990072A (en) * 2019-11-08 2020-04-10 杭州智控网络有限公司 Price tag screen multi-drive dynamic loading method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298440B1 (en) * 1994-04-22 2001-10-02 Microsoft Corporation Method and system for providing multiple entry point code resources
US20040103272A1 (en) 2002-11-27 2004-05-27 Zimmer Vincent J. Using a processor cache as RAM during platform initialization
US20050015582A1 (en) 2003-05-26 2005-01-20 Sony Corporation Program and information processing method

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59125421A (en) * 1983-01-04 1984-07-19 Nec Corp Initialization system of computer applied equipment
DE69031936T2 (en) * 1989-11-17 1998-06-10 Digital Equipment Corp System and method for storing firmware in an address-independent format
JPH1153249A (en) * 1997-08-07 1999-02-26 Sharp Corp Memory managing method
JP2001195258A (en) * 2000-01-12 2001-07-19 Mitsutoyo Corp Computer built-in system
KR100658918B1 (en) * 2004-03-29 2006-12-15 주식회사 팬택앤큐리텔 Apparatus and method for initialization of system global variables using block input/output command
US7730472B2 (en) * 2004-09-24 2010-06-01 Hewlett-Packard Development Company, L.P. Dynamic linking of modules in a pre-operating system environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298440B1 (en) * 1994-04-22 2001-10-02 Microsoft Corporation Method and system for providing multiple entry point code resources
US20040103272A1 (en) 2002-11-27 2004-05-27 Zimmer Vincent J. Using a processor cache as RAM during platform initialization
US20050015582A1 (en) 2003-05-26 2005-01-20 Sony Corporation Program and information processing method

Also Published As

Publication number Publication date
JP2009544085A (en) 2009-12-10
CN101484878B (en) 2012-11-28
EP2047364A4 (en) 2009-08-05
JP4961019B2 (en) 2012-06-27
EP2047364A1 (en) 2009-04-15
CN101484878A (en) 2009-07-15
KR20090035521A (en) 2009-04-09
WO2008014635A1 (en) 2008-02-07

Similar Documents

Publication Publication Date Title
EP3267308B1 (en) Application loading method and device
KR101036675B1 (en) A method to use global variables for pre-efi initialization modules in efi-based firmware
US6876996B2 (en) Method and apparatus for using a shared library mechanism to facilitate sharing of metadata
CN101026826B (en) System and method for providing monolithic image for use in a wireless device
US10846101B2 (en) Method and system for starting up application
US11042383B2 (en) System and method for boot speed optimization using non-volatile dual in-line memory modules
US20070132774A1 (en) System and method for a patch minimization tool
US8762967B2 (en) Program compiler, program installer, and program install method
US10296353B2 (en) Protecting basic input/output (BIOS) code
US20070011674A1 (en) Computer system and method for selectively installing one operating system among a plurality of operating systems
JPH0816541A (en) Method fnd apparatus making use of throughput of peripheral equipmemt
US20070271432A1 (en) Facilitating use of storage access keys to access storage
US20100050174A1 (en) Heap organization for a multitasking virtual machine
WO2008054074A1 (en) Terminal device having function of interfacing compilation libraries in heterogeneous languages, method of calling api, and method of creating compile function
CN102364433A (en) Method for realizing Wine construction tool transplanting on ARM (Advanced RISC Machines) processor
KR20190020677A (en) Preemptive decompression scheduling for NAND storage devices
US20060230190A1 (en) Method and apparatus for executing application in system having NAND flash memory
KR100478463B1 (en) Dynamic Linking Method for Application Program
CN110489425B (en) Data access method, device, equipment and storage medium
KR100848284B1 (en) Method and Loader for Providing Software Streaming
US11748117B2 (en) Operating system partitioning of different users for single-user applications
KR100884926B1 (en) Method for utilizing legacy shared libraries on VM-less embedded systems
US20080307446A1 (en) Interoperable Managed and Unmanaged Code in a Document Environment
US20060288338A1 (en) Offset threaded code

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