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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
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용 플랫폼 이노베이션 프레임워크(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)
.텍스트 섹션(102)은 실행 드라이버 모듈(100)용 실행 코드를 포함한다. .데이터 섹션(104)은 .텍스트 섹션(102)의 실행 동안 사용될 데이터를 포함한다. .재배치 섹션(106)은 절대 플래시 어드레스로 갱신될 모든 어드레스 데이터 항목에 대한 정보를 제공한다.The
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에 대한 공간 범위는 서로 다르고 불연속적이다.The
.데이터 섹션(104)을 CAR로 옮기는 반면에 플래시에 .텍스트 섹션(102)와 .재배치 섹션(106)을 유지하고 있을 때 실행 드라이버 모듈(100)의 적절한 실행을 보장하기 위해서는, 코드가 플래시에 있으면 조정이나 재배치 없이 적소에 실행되어야 하기 때문에 그 코드가 플래시에 기록되기 전에, 먼저 구축 툴을 이용하여 .텍스트 섹션(102) 및 .데이터 섹션(104)을 패치한다. 따라서, 본 발명은 그 재배치 정보를 이용하여 특정 플래시 베이스에 그 이미지를 조정하는 제1 라운드 조정이 필요하다. 제1 라운드 조정에 의해서 모든 코드가 플래시에서 직접 실행될 수 있고, 모든 데이터 액세스가 그 플래시에서 마찬가지로 발생하여 그 전역 변수로의 쓰기 액세스를 차단한다. 실행 드라이버 모듈(100)에서 모든 전역 변수로의 쓰기 액세스를 가능하게 하기 위해서는, .데이터 섹션(104)이 코드 실행 전에 플래시로부터 CAR로 복사될 것이기 때문에 .데이터 섹션(104)에 액세스하는 모든 코드와 .데이터 섹션(104)에서의 필드를 가리키는 모든 관련 데이터가 CAR로부터 .데이터 섹션(104)를 작동시키기 위해 갱신되게끔 제2 라운드 조정이 필요하다.To ensure proper execution of the
도 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
블록(204)에서 실행 드라이버 모듈(100)이 생성된다. 실행 드라이버 모듈(100)은 플래시 장치에서 실행될 때 전역 변수의 읽기 액세스만을 가능하게 하는 전역 변수를 포함한다. 그 다음, 프로세스는 블록(206)으로 진행한다.In
블록(206)에서 실행 드라이버 모듈(100)의 제1 라운드 조정이 수행된다. 도 4를 참조로 이하에 더 설명되는 제1 라운드 조정은 절대 플래시 어드레스를 가지고 모든 어드레스 데이터 항목을 조정한다. 그 다음, 프로세스는 블록(208)로 진행한다.In block 206 a first round adjustment of the
블록(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
블록(210)에서 최종 EFI 펌웨어 이미지(최종 실행 드라이버 모듈)은 플래시에 기록된다. 그 다음, 프로세스는 블록(212)으로 진행한다.In
플래시가 부팅되면 펌웨어 로더가 플래시에서 CAR로 .데이터 섹션(104)을 복사한 다음에 실행을 위해 이미지 엔트리 포인트에 제어권을 넘길 것이다. 이는 .데이터 섹션(104)가 CAR에서 저장되고 작동되는 동안에 실행 드라이버 모듈(100)이 플래시에서 정상적으로 실행될 수 있게 한다. PEI 단계 동안 정적 변수 및 전역 변수는 이제 자유롭게 액세스될 수 있다. 즉, 전역 변수는 이제 CAR에서 읽기/쓰기 액세스를 가지게 된다.Once the flash has booted, the firmware loader will copy the .
도 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
플래시(302)는 .텍스트 섹션(102), .데이터 섹션(104), 및 .재배치 섹션(106)을 포함하는 실행 드라이버 모듈(100)을 포함한다. 제1 라운드 조정은 플래시(302)의 .텍스트 섹션(102) 및 .데이터 섹션(104)에 나타나 있다. .재배치 섹션(106)에 기초하여 모든 어드레스 데이터 항목은 제1 라운드 조정에서 절대 플래시 어드레스를 가지고 조정된다. 제2 라운드 조정은 플래시(302')에 나타나 있다. 제2 라운드 조정에서 .데이터 섹션(104)의 필드를 가리키는 모든 관련 데이터는 절대 CAR 어드레스를 가지고 조정될 것이다.
도 4는 본 발명의 실시예에 따른 예시적인 제1 라운드 조정 방법을 설명하는 흐름도(400)이다. 본 발명은 흐름도(400)에 관련하여 여기서 설명한 실시예에 한정되지 않는다. 오히려 당업자라면 본 발명의 교시에 따라 다른 여러 가지 기능적 흐름도가 본 발명의 범위 내에 있음을 잘 알 것이다. 프로세스는 블록(402)에서 시작해서 바로 블록(404)으로 진행한다.4 is a
PE32 이미지에 있어서 .재배치 섹션(106)은 로딩 후 조정되어야 하는 실행 드라이버 모듈(100)에 모든 포인트를 기록한다. 일반적으로 .재배치 섹션(106)은 상대 가상 어드레스(RVA) 정보를 제공한다. RVA는 이미지가 메모리로 로드된 베이스 어드레스로부터의 오프셋이다. 이 RVA에 따라서 제1 라운드 조정 동안 패치될 모든 어드레스는 실행 드라이버 모듈(100)에서 확인된다. 패치될 각 어드레스는 로딩을 위해 특정 플래시 베이스를 추가함으로써 갱신될 것이다.In the PE32 image, the
블록(404)에서 .재배치 섹션(106)의 포인트가 분석(parse)될 것이다. 그 다음, 프로세스는 블록(406)으로 진행한다.In
블록(406)에서 블록(404)에서 식별된 포인트에 있는 어드레스 데이터가 절대 플래시 어드레스를 가지고 갱신된다. 그 다음, 프로세스는 판정 블록(408)으로 진행한다.In
판정 블록(408)에서는 .재배치 섹션(106)에 조정되어야 하는 포인트가 더 있는지를 판정한다. .재배치 섹션(106)에 조정되어야 하는 더 많은 포인트가 있다면 프로세스는 블록(404)으로 되돌아가서 다음 포인트를 분석한다.The
판정 블록(408)으로 되돌아와서 .재배치 섹션(106)에 분석되어야 하는 포인트가 더 이상 없는 것으로 판정되면 프로세스는 제1 라운드 조정이 종료되는 블록(410)으로 진행한다.Returning to decision block 408 and determining that there are no more points to be analyzed in the
제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
표본 포인트(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
플래시(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 ..
예컨대 플래시(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
제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 .
플래시(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 .
CAR(304)는 .데이터 섹션(104')가 복사되는 프로세서 캐시의 일부분이다. 전술한 바와 같이 펌웨어가 플래시 공간으로 기록된 후에 펌웨어 로더는 .데이터 섹션(104')을 플래시로부터 CAR로 복사할 것이다. .데이터 섹션(104')이 CAR(304)로 이동하면 PEI 정적 변수 및 전역 변수는 CAR(304)를 통해 읽기/쓰기 액세스를 가질 수가 있다.
도 5는 본 발명의 실시예에 따른 예시적인 제2 라운드 조정 방법을 설명하는 흐름도(500)이다. 본 발명은 흐름도(500)에 관련하여 여기서 설명한 실시예에 한정되지 않는다. 오히려 당업자라면 본 발명의 교시에 따라 다른 여러 가지 기능적 흐름도가 본 발명의 범위 내에 있음을 잘 알 것이다. 프로세스는 블록(502)에서 시작해서 바로 블록(504)으로 진행한다.5 is a
판정 블록(504)에서 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 .데이터 섹션(104)을 가리키는지를 판정한다. .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 있으면 그 어드레스 데이터 항목은 블록(506)에서 선택되고 프로세스는 블록(508)으로 진행한다. .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 없으면 프로세스는 블록(512)으로 진행하여 종료한다.In
블록(508)에서는 블록(506)에서 선택된 어드레스 데이터 항목이 절대 CAR 어드레스를 가지고 갱신된다. 그 다음, 프로세스는 판정 블록(510)으로 진행한다.In
판정 블록(510)에서는 .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 어드레스 데이터 항목이 더 있는지를 판정한다. .데이터 섹션(104)을 가리키는 제1 라운드 조정에서 조정된 더 많은 어드레스 데이터 항목이 있으면 프로세스는 조정될 다음 어드레스 데이터 항목을 선택하기 위해 블록(506)으로 되돌아간다.The
판정 블록(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 .
본 발명의 실시예는 하드웨어, 소프트웨어, 또는 이들의 조합을 이용하여 구현될 수 있으며, 하나 또는 그 이상의 컴퓨터 시스템이나 기타 다른 처리 시스템에서 구현될 수 있다. 여기서 설명한 기술은 임의의 컴퓨팅, 소비자 전자장치나 처리 환경에서 활용 가능성을 찾을 수 있다. 이 기술은 이동식 또는 고정식 컴퓨터, 개인 휴대 정보 단말기, 셋탑박스, 셀룰러 전화와 페이저, 소비자 전자 장치(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)
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)
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)
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)
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 |
-
2006
- 2006-07-18 WO PCT/CN2006/001746 patent/WO2008014635A1/en active Application Filing
- 2006-07-18 KR KR1020097000765A patent/KR101036675B1/en not_active IP Right Cessation
- 2006-07-18 JP JP2009519776A patent/JP4961019B2/en not_active Expired - Fee Related
- 2006-07-18 EP EP06761481A patent/EP2047364A4/en not_active Withdrawn
- 2006-07-18 CN CN2006800553499A patent/CN101484878B/en not_active Expired - Fee Related
Patent Citations (3)
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 |