KR20050016256A - Creating file systems within a file in a storage technology-abstracted manner - Google Patents

Creating file systems within a file in a storage technology-abstracted manner

Info

Publication number
KR20050016256A
KR20050016256A KR1020040107052A KR20040107052A KR20050016256A KR 20050016256 A KR20050016256 A KR 20050016256A KR 1020040107052 A KR1020040107052 A KR 1020040107052A KR 20040107052 A KR20040107052 A KR 20040107052A KR 20050016256 A KR20050016256 A KR 20050016256A
Authority
KR
South Korea
Prior art keywords
partition
file
partitions
image
data
Prior art date
Application number
KR1020040107052A
Other languages
Korean (ko)
Inventor
로저스앤드류
글래엄제프리
톤켈로위츠마크
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Priority to KR1020040107052A priority Critical patent/KR20050016256A/en
Publication of KR20050016256A publication Critical patent/KR20050016256A/en

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers

Abstract

PURPOSE: A system for generating a file system within a file through a storage technology-extracting method is provided to supply a mechanism for converting operating system image components into file system-based images, thereby easily conducting a device component update function while being applicable to an initial image. CONSTITUTION: Two basic components such as a disk image utility(230) and an image following processor(232) are provided. The disk image utility(230) takes sets of a technology(file,236) which is related to partitions/file systems desired by a user, a technology(file,238) which is related to a mapping of partition structures of packages(234), and packetized operating system components(or packages). The disk image utility(230) generates one output file(206) including various partitions(209-212). Contents of each package are stored in proper partitions, and executable codes are disposed in virtual address space-based addresses.

Description

저장 기술-추출 방식으로 파일 내에 파일 시스템 생성하기{CREATING FILE SYSTEMS WITHIN A FILE IN A STORAGE TECHNOLOGY-ABSTRACTED MANNER}CREATING FILE SYSTEMS WITHIN A FILE IN A STORAGE TECHNOLOGY-ABSTRACTED MANNER}

관련 출원의 상호-참조Cross-Reference to Related Applications

본 발명은, 2003년 12월 16일에 출원되었으며, 여기에서 그 전부를 참조하고 있는 미국 가명세출원 제 60/530,135호에 대해 우선권을 주장한다. The present invention claims priority to US Provisional Tax Application No. 60 / 530,135, filed December 16, 2003, which is incorporated herein by reference in its entirety.

본 발명은, 본 발명과 동시에 출원되었으며 그들 전부를 여기에서 참조하고 있는 다음의 미국 특허출원들과 관련이 있다. The present invention relates to the following US patent applications filed concurrently with the present invention and to which reference is hereby made in their entirety.

문서 번호 제 4271/307,649호의 "Applying Custom Software Image Updates To Non-Volatile Storage in a Failsafe Manner";"Applying Custom Software Image Updates To Non-Volatile Storage in a Failsafe Manner", document number 4271 / 307,649;

문서 번호 제 4281/307,650호의 "Determining the Maximal Set of Dependent Software Updates Valid for Installation";"Determining the Maximal Set of Dependent Software Updates Valid for Installation" of document number 4281 / 307,650;

문서 번호 제 4291/307,651호의 "Ensuring that a Software Update may be Installed or Run only on a Specific Device or Class of Devices"; 및"Ensuring that a Software Update may be Installed or Run only on a Specific Device or Class of Devices" of document number 4291 / 307,651; And

문서 번호 제 4301/307,652호의 "Self-Describing Software Image Update Components""Self-Describing Software Image Update Components" of document number 4301 / 307,652

발명의 분야Field of invention

본 발명은 대략적으로 내장 오퍼레이팅 시스템을 가진 컴퓨팅 장치에 관한 것으로서, 보다 구체적으로는, 컴퓨팅 장치들의 비휘발성 저장 공간을 구성하는 것에 관한 것이다. TECHNICAL FIELD The present invention relates generally to computing devices having embedded operating systems, and more particularly, to configuring nonvolatile storage space of computing devices.

배경background

PDA(personal digital assistants), 현대의 휴대폰, 및 핸드-헬드와 포켓-사이즈 컴퓨터와 같은 모바일 컴퓨팅 장치들이 중요한 그리고 일반화된 사용자 도구가 되고 있다. 일반적으로, 이들의 소비 전력은 감소하는 한편, 상당히 편리할 정도로 충분히 소형화되었으며, 그와 동시에 보다 강력한 애플리케이션들을 실행할 수 있게 되었다.Personal digital assistants (PDAs), modern cell phones, and mobile computing devices such as hand-held and pocket-sized computers have become important and generalized user tools. In general, their power consumption has been reduced, while being compact enough to be quite convenient, while at the same time enabling more powerful applications.

이러한 장치들의 제조 공정 동안, 내장 오퍼레이팅 시스템 이미지들은 통상적으로 모놀리식 이미지 파일(monolithic image file)로 구축되어 각 장치의 비휘발성 저장 공간(예를 들어, NAND 또는 NOR 플래시 메모리, 하드 디스크 등)에 저장된다. 따라서, 오퍼레이팅 시스템을 구성하는 다양한 파트들로부터 모놀리식 이미지 파일이 사전 구성되어야 한다. 또한, 때때로 이러한 장치를 업데이트해야 하거나 업데이트하는 것이 바람직하며, 이러한 업데이트는 오퍼레이팅 시스템에 대한 변경을 요한다. During the manufacturing process of these devices, the built-in operating system images are typically built into a monolithic image file, so that each device's nonvolatile storage space (e.g., NAND or NOR flash memory, hard disk, etc.) Stored. Thus, a monolithic image file must be preconfigured from the various parts that make up the operating system. In addition, it is sometimes desirable or desirable to update such a device, which update requires a change to the operating system.

그러나, 모놀리식 이미지를 다룰 경우, 어떠한 업데이트를 설치하기 위해서는, 임시 저장 공간 및 대역폭을 포함하여 다량의 리소스를 요하는, 전체 이미지(또는 어쩌면 그에 관한 소정의 서브세트)의 교체가 필요하다는 것을 위시한 다수의 단점들이 존재한다. 다양한 충돌과 종속 관계로 인해, 오퍼레이팅 시스템의 개개 컴포넌트들을 업데이트하는 것은 어려운 작업이기 때문에, 지금까지는 이러한 장치들을 업데이트하는데 모놀리식 교체가 사용되어 왔다. 또한, 이와 같은 임의의 컴포넌트화로 인해, 초기 이미지가 여전히 제조에 필요하다는 또 다른 문제를 초래하지만, 지금까지 초기 이미지들은 본질적으로 장치들에 전달된 비트들의 모놀리식 그룹들일 뿐이었다. However, when dealing with monolithic images, it may be necessary to install an update that requires replacement of the entire image (or maybe some subset thereof), which requires a large amount of resources, including temporary storage space and bandwidth. There are a number of disadvantages. Due to various conflicts and dependencies, updating the individual components of the operating system is a difficult task, so far monolithic replacements have been used to update these devices. In addition, any such componentization introduces another problem that the initial image is still required for manufacturing, but until now the initial images were essentially monolithic groups of bits delivered to the devices.

필요한 것은, 오퍼레이팅 시스템 이미지 컴포넌트들을, 초기 이미지로 사용하기에 적합하지만, 장치의 컴포넌트화된 업데이트를 용이하게 하도록 설계된 파일 시스템-기반의 제조 이미지로 변환하는 메커니즘이다. What is needed is a mechanism to convert operating system image components into a file system-based manufacturing image suitable for use as an initial image, but designed to facilitate componentized updating of the device.

간단하게, 본 발명은 대략적으로, 파티션 및 파일 시스템 레이아웃을 포함하는, 개개의 오퍼레이팅 시스템 컴포넌트 패키지들이 구축시에 설치되는 하나의 제조 이미지 파일을 생성하는 것에 관한 방법 및 시스템을 제공한다. 이 처리는, 본 시스템 및 방법이 기본 저장 공간의 타입(예를 들어, 플래시), 및/또는 기본 저장 공간이 이미지의 레이아웃에 부여할 수 있는 어떠한 요구사항들에 관여하지 않는 저장 기술-추출 방식으로 수행된다. 오히려, 개별적인 단계에서, 얻어진 이미지 파일은, 존재하는 저장 장치의 실제 타입에 대해 이미지 파일을 개별화하는 것을 포함하여, 후행 처리된다.For simplicity, the present invention provides a method and system for generating a single manufacturing image file, in which the individual operating system component packages are installed at build time, including a partition and file system layout. This processing is a storage technology-extraction scheme where the system and method are not concerned with the type of basic storage space (e.g. flash), and / or any requirements that the basic storage space may impose on the layout of the image. Is performed. Rather, in a separate step, the resulting image file is post-processed, including individualizing the image file with respect to the actual type of storage device present.

일 구현에서는, 각각이 파일 시스템에 대응되는 다양한 타입의 파티션들이 파일 내에 생성된다. (패키지들이라 하는) 오퍼레이팅 시스템 이미지 컴포넌트들의 집합은 파일 시스템-기반의 제조 이미지 파티션들로 변환된다. 그 파일로부터, 이미지 업데이트 기술이 장치상의 유사한 파티션 및 파일 시스템 모델을 나중에 이용할 수 있는 방식으로, 초기의 오퍼레이팅 시스템 이미지가, 제조 공정 동안, 장치상에 확립될 수 있다. In one implementation, various types of partitions are created in a file, each corresponding to a file system. The set of operating system image components (called packages) is converted into file system-based manufacturing image partitions. From that file, an initial operating system image can be established on the device during the manufacturing process, in such a way that the image update technique can later use similar partition and file system models on the device.

다양한 패키지들을 초기의 제조 이미지로 변환하기 위해, 이미지가 파티션 및 파일 시스템 레이아웃으로 배열되는 하나의 제조 이미지 파일이 생성된다. 그 다음, 이 파일은 제조시에 컨텐츠를 설치하는데 필요한 메타데이터를 부가하기 위해 필요에 따라 후행 처리된다.To convert the various packages into the initial manufacturing image, one manufacturing image file is created in which the images are arranged in partitions and file system layouts. This file is then post-processed as needed to add the metadata needed to install the content at the time of manufacture.

궁극적으로 가상 플래시에 기입될 파일을 구축하기 위해, 다양한 파티션들이 생성된다. 전체 플래시 중 일부는 장치 제조자에 의해 다양한 목적을 위해 유보될 수 있으며, 나머지 메모리는 오퍼레이팅 시스템 컴포넌트들 및 선택적인 사용자 저장 공간에 의한 사용을 위한 가상 메모리로서 이용될 수 있도록 남겨진다. 각각의 파티션은 소정 목적을 가지며 고유한 파일 시스템으로 간주될 수 있다. 예를 들어, 업데이트 로더용과 같은, 이진 파티션들, 및 커널(NK) 파티션용의 RAMIMAGE/ROMIMAGE 파티션이 존재할 수 있다. IMGFS 파티션은 오퍼레이팅 시스템 파일들을 포함할 수 있고, 사용자 저장 공간 파티션은 사용자 데이터 저장용으로 특정될 수 있다. 파티션들을 지시하기 위해 마스터 부트 레코드가 파일에 생성될 수 있다. 부가적인 데이터가 파일에 포함될 수도 있다.In order to ultimately build the file to be written to the virtual flash, various partitions are created. Some of the entire flash may be reserved for various purposes by the device manufacturer, while the remaining memory remains available as virtual memory for use by the operating system components and optional user storage space. Each partition has a purpose and can be considered a unique file system. For example, there may be binary partitions, such as for update loaders, and RAMIMAGE / ROMIMAGE partitions for kernel (NK) partitions. An IMGFS partition can contain operating system files and a user storage space partition can be specified for storing user data. A master boot record can be created in the file to point to the partitions. Additional data may be included in the file.

일 구현에서는, 디스크 이미지 유틸리티(disk image utility)가 파일을 생성하며, 파일이 소정 저장 매체에 기입될 수 있도록 하기 위해, 이미지 후행 처리기가 메타데이터를 부가한다. 디스크 이미지 유틸리티는 오퍼레이팅 시스템 패키지들을 취하고, 패키지들이 어떻게 그러한 파티션 구조로 매핑되어야 하는지에 대한 기술(description;파티션 매핑 파일)과 함께 파티션들이 어떻게 저장 공간에 레이아웃될 것인지에 대한 메모리 기술(메모리 구성 파일)에 기초해, 각 패키지의 컨텐츠가 적절한 파티션에 저장되어 있는 다양한 파티션들을 포함하는 출력 파일을 생성한다. 또한, 임의의 실행가능 코드가 적절한 가상 어드레스 공간-기반의 어드레스에 배치된다. 메모리 구성 파일은 비휘발성 저장 공간 및 시스템 RAM 양자에 대한 오퍼레이팅 시스템의 실행-시간 가상 어드레스 공간 메모리 맵(operating system run-time virtual address space memory map)을 제공한다. 파티션 매핑 파일은 고유하게 식별된 패키지들의 리스트를 포함하며 패키지를 특정 파티션에 매핑하는데 사용된다. In one implementation, a disk image utility creates a file, and the image post processor adds metadata to allow the file to be written to a given storage medium. The disk image utility takes the operating system packages and puts them into a memory description (memory configuration file) of how the partitions are laid out in storage along with a description of how the packages should be mapped to such a partition structure. Based on this, an output file is created that contains various partitions where the contents of each package are stored in the appropriate partition. In addition, any executable code is placed at the appropriate virtual address space-based address. The memory configuration file provides an operating system run-time virtual address space memory map for both nonvolatile storage space and system RAM. The partition mapping file contains a list of uniquely identified packages and is used to map packages to specific partitions.

후행 처리기는 출력 파일에 작용하여 특정 저장 기술에 의해 요구되는, 파티션 및 파일 시스템 레이아웃에 대한 임의의 변경들을 도입한다. 예를 들어, 상이한 플래시 파트들이 플래시의 섹터-레벨 정보를 관리하는 상이한 방법들을 핸들링하기 위해 조정이 필요할 수도 있다. The post processor works on the output file and introduces any changes to the partition and file system layout required by the particular storage technique. For example, different flash parts may need to be adjusted to handle different ways of managing sector-level information of the flash.

도면들을 참조하는 다음의 상세한 설명으로부터 다른 이점들을 명백히 알 수 있다. Other advantages will be apparent from the following detailed description with reference to the drawings.

상세한 설명details

예시적인 동작 환경Example Operating Environment

도 1은, 처리기(122), 메모리(124), 디스플레이(126), 및 (물리적인 또는 가상의 키보드이거나 양자를 나타낼 수 있는) 키보드(128)를 포함하는, 이와 같은 하나의 핸드헬드 컴퓨팅 장치(120)의 기능 컴포넌트들을 나타낸다. 오디오 입력을 수신하기 위해 마이크로폰(129)이 존재할 수 있다. 메모리(124)는 일반적으로 휘발성 메모리(예를 들어, RAM) 및 비휘발성 메모리(예를 들어, ROM, PCMCIA 카드 등) 모두를 포함한다. Microsoft Corporation의 Windows? 오퍼레이팅 시스템 또는 다른 오퍼레이팅 시스템과 같은, 오퍼레이팅 시스템(130)이 메모리(124)에 상주한다.1 illustrates one such handheld computing device, including a processor 122, a memory 124, a display 126, and a keyboard 128 (which may be a physical or virtual keyboard, or both). Represent functional components of 120. Microphone 129 may be present to receive audio input. Memory 124 generally includes both volatile memory (eg, RAM) and nonvolatile memory (eg, ROM, PCMCIA card, etc.). Microsoft Corporation Windows ? Operating system 130, such as an operating system or other operating system, resides in memory 124.

하나 이상의 애플리케이션 프로그램들(132)이 메모리(124)에 로드되며 오퍼레이팅 시스템(130)에서 실행된다. 애플리케이션들의 예로는 이메일 프로그램, 스케줄링 프로그램, PIM(personal information management) 프로그램, 워드 프로세싱 프로그램, 스프레드시트 프로그램, 인터넷 브라우저 프로그램 등을 들 수 있다. 또한, 핸드헬드 퍼스널 컴퓨터(120)는 메모리(124)에 로드된 통지 관리자(134)를 포함할 수 있는데, 이는 처리기(122)상에서 실행된다. 통지 관리자(134)는, 예를 들어, 애플리케이션 프로그램들(132)로부터의 통지 요청들을 핸들링한다. 또한, 후술하는 바와 같이, 핸드헬드 퍼스널 컴퓨터(120)는, 전화 거는 것을 포함할 수 있는, 핸드헬드 퍼스널 컴퓨터(120)를 네트워크에 접속하기에 적합한 네트워킹 소프트웨어(136;예를 들어, 하드웨어 드라이버 등) 및 네트워크 컴포넌트들(138;예를 들어, 라디오 및 안테나)을 포함한다. One or more application programs 132 are loaded into the memory 124 and run in the operating system 130. Examples of applications include email programs, scheduling programs, personal information management (PIM) programs, word processing programs, spreadsheet programs, Internet browser programs, and the like. The handheld personal computer 120 may also include a notification manager 134 loaded in the memory 124, which is executed on the processor 122. Notification manager 134 handles notification requests from, for example, application programs 132. In addition, as described below, the handheld personal computer 120 may include networking software suitable for connecting the handheld personal computer 120 to a network, which may include making a phone call (e.g., a hardware driver, or the like). And network components 138 (eg, radio and antenna).

핸드헬드 퍼스널 컴퓨터(120)는 하나 이상의 배터리들로 구현된 전원(140)을 가진다. 전원(140)은, AC 어댑터 또는 전원 도킹 크래들(powered docking cradle)과 같은, 내장 배터리들을 대체하거나 충전하는 외장 전원을 더 포함할 수 있다.Handheld personal computer 120 has a power source 140 implemented with one or more batteries. The power source 140 may further include an external power source that replaces or charges internal batteries, such as an AC adapter or a powered docking cradle.

도 1에 나타낸 예시적인 핸드헬드 퍼스널 컴퓨터(120)는 3가지 타입의 외부 통지 메커니즘들: 하나 이상의 LED들(142) 및 오디오 생성기(144)을 갖는 것으로 도시되어 있다. 이 장치들은, 활성화될 경우, 핸드헬드 퍼스널 컴퓨터 처리기(122) 및 다른 컴포넌트들이 배터리 전력을 보존하기 위해 차단된 경우라 하더라도 통지 메커니즘에 의해 지시된 구간 동안 ON 상태를 유지하도록, 전원(140)에 직접적으로 결합될 수 있다. LED(142)는, 사용자가 동작을 취할 때까지 무한정 ON 상태를 유지하는 것이 바람직하다. 오디오 생성기(144)의 현 버전들은 오늘날의 핸드헬드 퍼스널 컴퓨터 배터리들에 대해 너무 많은 전력을 사용하므로, 시스템의 나머지가 동작할 때나 활성화 이후의 한정된 일부 구간에서 턴오프되도록 구성된다. The exemplary handheld personal computer 120 shown in FIG. 1 is shown having three types of external notification mechanisms: one or more LEDs 142 and an audio generator 144. These devices, when activated, power the power supply 140 such that the handheld personal computer processor 122 and other components remain in the ON state for the period indicated by the notification mechanism even if they are shut off to conserve battery power. Can be combined directly. The LED 142 preferably remains in an ON state indefinitely until the user takes action. Current versions of the audio generator 144 use too much power for today's handheld personal computer batteries, so they are configured to turn off when the rest of the system is operating or in some limited period after activation.

기본적인 핸드헬드 퍼스널 컴퓨터를 도시하였지만, 모바일 전화기와 같은, 데이터 통신을 수신할 수 있으며 프로그램에 의한 사용을 위해 어떤 방식으로 데이터를 처리할 수 있는 가상의 임의 장치가 본 발명을 구현하기 위한 목적에 동일하게 사용될 수 있다는 것을 알 수 있다. Although a basic handheld personal computer is shown, virtually any device capable of receiving data communications, such as a mobile telephone, and processing the data in some way for use by a program is the same for the purpose of implementing the present invention. It can be seen that it can be used.

파일 내에 파일 시스템들 생성하기Creating file systems in a file

본 발명은 대략적으로, 초기 소프트웨어 또는 소프트웨어 업데이트를 내장 장치의 비휘발성 메모리, 예를 들어, 플래시 메모리에 기입하는 것을 포함하여, Microsoft Windows? CE .NET-기반의 휴대용 장치들과 같은, 소형 모바일 컴퓨팅 장치들에 저장되어 있는 소프트웨어를 설치하고 그리고/또는 업데이트하는 것에 관한 것이다. 그럼에도 불구하고, 본 발명은 범용 컴퓨팅에 대한 이점을 제공하므로, 다양한 타입의 메모리 및/또는 하드 디스크 드라이버와 같은 다른 타입의 저장 매체를 포함하여, 다른 컴퓨팅 장치들 및 다른 타입의 저장 공간에도 적용될 수 있다. 간략화를 위해, 다음부터 "플래시"라는 용어는, 그것이 임의의 저장 메커니즘과 동일한 것으로 이해될 수도 있지만, 장치의 업데이트 가능한 저장 공간을 나타내는데 사용될 수 있다. 또한, "이미지"라는 용어는 일반적으로, 기존 이미지의 일부만이 업데이트될 경우라 하더라도, 초기의 소프트웨어 설치 이미지 뿐만 아니라 이미지에 대한 후속적인 소프트웨어 업데이트의 개념을 포함하게 될 것이다.In general, the present invention includes writing initial software or software updates to non-volatile memory, such as flash memory, of an embedded device . And installing and / or updating software stored on small mobile computing devices, such as CE .NET-based portable devices. Nevertheless, the present invention provides advantages for general purpose computing, and therefore may be applied to other computing devices and other types of storage space, including other types of storage media such as various types of memory and / or hard disk drivers. have. For the sake of simplicity, the term "flash" will hereinafter be used to indicate an updateable storage space of a device, although it may be understood that it is the same as any storage mechanism. In addition, the term "image" will generally encompass the concept of subsequent software updates to the image as well as the initial software installation image, even if only a portion of the existing image is updated.

실행가능 코드 및 데이터 모두를 포함하는 이미지들이 저장 공간에 적용될 수 있다. 실행가능 코드는 설치시에 내장 장치의 가상 어드레스 공간 환경에 따라 개별화된다. 본 발명의 일 태양에 따르면, 범용적인 이미지 업데이트 기술은, 임의의 교차-컴포넌트 의존성(cross-component dependencies)을 유지하면서, 오퍼레이팅 시스템 이미지를 개별적으로 업데이트될 수 있는 업데이트 가능한 컴포넌트들로 분해한다. 알 수 있는 바와 같이, 초기 이미지는 장치에 대한 초기 설치 뿐만 아니라 그에 따른 후속 업데이트들을 용이하게 하는 방식으로 정렬된다. Images containing both executable code and data can be applied to the storage space. The executable code is individualized at installation time according to the virtual address space environment of the embedded device. According to one aspect of the invention, a universal image update technique decomposes an operating system image into updateable components that can be updated individually while maintaining any cross-component dependencies. As can be seen, the initial image is aligned in a manner that facilitates initial installation of the device as well as subsequent updates accordingly.

본 발명의 일 태양에 따르면, (패키지들이라고 하는) 오퍼레이팅 시스템 이미지 컴포넌트들을 파일 시스템-기반의 제조 이미지로 변환하는 시스템 및 방법이 제공된다. 이는, 파티션 및 파일 시스템 모델을 통해 출력 파일이 생성되는 방식으로 수행된다. 그 파일로부터, 이미지 업데이트 기술이 이후에 장치상의 유사한 파티션 및 파일 시스템 모델을 이용할 수 있게 하는 방식으로, 제조 공정 동안, 초기의 오퍼레이팅 시스템 이미지가 장치상에 확립될 수 있다. 이로 인해, 개개의 컴포넌트들에 대한, 전체 파티션들에 대한, 또는 필요하다면 이미지 전체에 대한, 안정적이며 오작동에 대해 안전한 업데이트가 용이해진다. According to one aspect of the present invention, a system and method are provided for converting operating system image components (called packages) into a file system-based manufacturing image. This is done in such a way that output files are generated through partition and file system models. From that file, during the manufacturing process, an initial operating system image can be established on the device in such a way that the image update technique can later use similar partition and file system models on the device. This facilitates a stable and malfunction-safe update of the individual components, the entire partitions or, if necessary, the entire image.

다양한 패키지들을 초기의 제조 이미지로 변환하기 위해, 파티션 및 파일 시스템 레이아웃으로 정렬된 이미지를 포함하는 하나의 제조 이미지 파일을 생성하는 것에 관한 일반적인 방법 및 시스템이 제공된다. 그 다음, 이 파일은 구축시에 설치하기 위한 컨텐츠를 준비하기 위해 후행 처리된다. 따라서, 개개의 오퍼레이팅 시스템 컴포넌트 패키지들이 기입되는 것은 이러한 제조 파일이다. 전반적인 파일 구성 처리는, 본 시스템 및 방법이 기본 저장 공간의 타입 및/또는 기본 저장 공간이 이미지의 레이아웃에 부여할 수 있는 어떠한 요구사항들에 관여하지 않는 저장(예를 들어, 플래시) 기술-추출 방식으로 수행된다. 오히려, 개별적인 단계에서, 얻어진 이미지 파일은, 존재하는 저장 장치의 실제 타입에 대해 이미지 파일을 개별화하는 것을 포함하여, 후행 처리됨으로써, 원하는 임의의 장치에 적용될 수 있다.In order to convert the various packages into an initial manufacturing image, a general method and system are provided for creating one manufacturing image file that includes an image arranged in a partition and file system layout. This file is then post-processed to prepare the content for installation at build time. Thus, it is this manufacturing file in which the individual operating system component packages are written. The overall file organization process is a storage (e.g. flash) technique-extraction where the system and method are not concerned with the type of basic storage space and / or any requirements that the basic storage space may impose on the layout of the image. Is done in a manner. Rather, in an individual step, the resulting image file can be applied to any desired device by post-processing, including individualizing the image file for the actual type of storage device present.

도 2는, 제조 이미지가, 후술하는 바와 같은 본 발명의 다양한 태양들에 의해 용이화된 방식으로 레이아웃될 장치의 저장 공간(예를 들어, 플래시)에 대한 일례를 제공한다. 도 2에서, 전체 플래시(202)의 일부(예를 들어, 총 64MB 중 32MB)는 장치 제조자에 의해 다양한 목적을 위해(예를 들어, 장치의 라디오와 관련된 코드를 위해) 유보된다. 나머지(예를 들어, 32MB)는 오퍼레이팅 시스템 및 (선택적으로) 사용자 저장에 의한 사용을 위해 가상 메모리(204)로서 이용될 수 있는 플래시 메모리이다. 후술하는 바와 같이, 파일은 유보된 섹션들을 고려할 것이다.2 provides an example of a storage space (eg, flash) of a device in which a manufacturing image is to be laid out in a manner facilitated by various aspects of the present invention as described below. In FIG. 2, a portion of the total flash 202 (eg, 32 MB out of 64 MB in total) is reserved for various purposes (eg, for code associated with the device's radio) by the device manufacturer. The remaining (eg, 32 MB) is flash memory that can be used as virtual memory 204 for use by the operating system and (optionally) user storage. As discussed below, the file will take into account reserved sections.

후술하는 바와 같은 본 발명의 일 태양에 따르면, 다양한 파티션들이 가상 플래시(204)에 기입될 파일인 파일(206)에 생성된다. 각각의 파티션은 소정 목적을 가지며 자신만의 파일 시스템을 포함한다(또는 포함하는 것으로 간주될 수 있다). 예를 들어, 도 2의 실시예에서는, 업데이트 로더용 파티션(209), 커널(NK) 파티션(210), 시스템 파티션(211) 및 (예를 들어, 사용자 데이터 저장용으로 포맷된) 사용자 저장 공간 파티션(212)이 존재한다. 후술하는 바와 같이, 파티션들을 지시하기 위해 파일 내에 MBR(master boot record;213)이 생성된다. 또한, 완결성을 위해 도 2에 나타낸 바와 같이, (새로운 장치들에 대해서는 선택적이지만, 이전의 장치들에 대한) 기존의 부트 로더(214), 및 IPL(initial program loader;215)과 같은, 부가적인 데이터가, 예를 들어, 데이터를 미리-배치하는 것에 의해, 파일(206)에 포함될 수 있다. 이미 알 수 있는 바와 같이, 이러한 부가 데이터의 일부 또는 전부는 다른 파티션들에 무관한 장치로 플래시될 수 있고, 그에 따라, 파일(206)은 나머지 가상 플래시로 플래시되겠지만, 이들 비트를 제조 파일(206)에 포함하는 것은 이러한 부가적 제조 단계를 제거한다. 도 2의 파티션들은 일정한 비율로 표시된 것이 아니며, 또한 전체 메모리 및/또는 이용 가능한 메모리의 양은 일례일 뿐이다.In accordance with one aspect of the present invention as described below, various partitions are created in file 206, which is a file to be written to virtual flash 204. Each partition has a purpose and includes (or can be considered to include) its own file system. For example, in the embodiment of Figure 2, the update loader partition 209, kernel (NK) partition 210, system partition 211 and user storage space (e.g., formatted for storing user data). Partition 212 is present. As described below, a master boot record (213) is created in the file to indicate the partitions. Also, for the sake of completeness, as shown in FIG. 2, additional booths, such as the existing boot loader 214 (optional for new devices, but for older devices), and an initial program loader (IPL) 215. Data can be included in file 206, for example, by pre-locating the data. As can be seen, some or all of this additional data may be flashed to a device independent of other partitions, such that file 206 will be flashed to the rest of the virtual flash, but these bits will be written to manufacturing file 206. ) Eliminates this additional manufacturing step. The partitions in FIG. 2 are not to scale, and the total amount of memory and / or available memory is only one example.

알 수 있는 바와 같이, 본 발명은 표준 파일 시스템 개념들을 하나의 파일 및 저장-추출 방식에 사용해 제조 이미지를 생성하는 능력을 제공한다. 그에 따라, 내장 및 다른 솔루션들이, 직접적인 방식으로 그리고 코어 프로시져에 거의/전혀 영향을 주지 않으면서, 이용 가능한 임의의 새로운 저장 기술들에 적용될 수 있다. 예를 들어, 후행 처리를 통해, 플래시 파일의 시스템 이미지가 하드-디스크 이미지가 되도록 수정될 수 있다.As can be seen, the present invention provides the ability to create manufacturing images using standard file system concepts in one file and store-extract scheme. As such, embedded and other solutions can be applied to any new storage technologies available in a direct manner and with little / no impact on the core procedure. For example, through post-processing, the system image of the flash file can be modified to be a hard-disk image.

또한, 구축시에 개개의 파일 내에 파일 시스템들을 생성할 수 있다는 것은, 복잡한 파티션화, 포매팅, 및 다른 파일 시스템 논리가 제조시의 환경에 구현될 필요가 없다는 것을 의미한다. 대신에, 이미지들이 현재의 저장 공간에 기입되는 표준 수단(예를 들어, 플래시 집단 프로그래머들, JTAG, 또는 바이트 스트림 카피들)은, 기본적인 이미지들이 실행시의 오퍼레이팅 시스템 이미지에 의해 이후에 사용될 수 있는 잠재적으로 복잡한 파티션 및 파일 시스템-기반 방식인 경우라 하더라도, 여전히 동작한다. In addition, being able to create file systems in individual files at build time means that complex partitioning, formatting, and other file system logic need not be implemented in a manufacturing environment. Instead, standard means by which images are written to the current storage space (e.g., flash population programmers, JTAG, or byte stream copies) can be used later by the operating system image at run time. Even in the case of potentially complex partition and file system-based schemes, they still work.

본 발명의 다양한 태양들을 실현하기 위해, (도 2를 참조하여 대략적으로 상술한) 예시적 일 구현에서는, 2개의 기본적인 컴포넌트들, 즉, 디스크 이미지 유틸리티(230) 및 이미지 후행 처리기(232)가 제공된다. 디스크 이미지 유틸리티(230)는, 사용자(예를 들어, 제조자)가 어떻게 파티션들/파일 시스템들을 저장 공간에 레이아웃하고 싶어하는지에 대한 기술(파일 236) 및 패키지들(234)이 어떻게 그러한 파티션 구조로 매핑되어야 하는지에 대한 기술(패키지-대-파티션 매핑 파일 및/또는 이미지 목록 파일이라고도 하는 파일 238)과 함께, 패키지화된 오퍼레이팅 시스템 컴포넌트들(또는 패키지들)의 집합을 취한다. 이 정보로부터, 디스크 이미지 유틸리티(230)는, 다양한 파티션들(209 내지 212)을 포함하는 하나의 출력 파일(206)을 생성하는데, 각 패키지의 컨텐츠들은 적절한 파티션에 저장되어 있으며, 적절한 가상 어드레스 공간-기반의 어드레스에는 실행가능 코드가 배치되어 있다.In order to realize various aspects of the present invention, in one exemplary implementation (roughly described above with reference to FIG. 2), two basic components are provided, namely disk image utility 230 and image post processor 232. do. The disk image utility 230 provides a description of how a user (eg, a manufacturer) wants to layout partitions / file systems in storage space (file 236) and how packages 234 can be incorporated into such partition structure. Takes a set of packaged operating system components (or packages), along with a description of what should be mapped (file 238, also known as a package-to-partition mapping file and / or an image listing file). From this information, disk image utility 230 generates one output file 206 containing various partitions 209-212, where the contents of each package are stored in the appropriate partition, and the appropriate virtual address space. Executable code is placed at the base address.

일단 이러한 출력 파일 상태에서, 후행 처리기(232)가 이 출력 파일에 작용하여, 특정한 저장 기술에 의해 요구되는 바와 같은, 파티션 및 파일 시스템 레이아웃에 대한 임의의 변경들을 도입한다. 예를 들어, 후행 처리기에 대해 대략적으로 후술하는 바와 같이, 상이한 플래시 파트들이 플래시의 섹터-레벨 정보를 관리하는 상이한 방법들을 핸들링하기 위해 조정이 필요할 수 있다. Once in this output file state, the post processor 232 acts on this output file to introduce any changes to the partition and file system layout as required by the particular storage technique. For example, as outlined below with respect to the post processor, different flash parts may need to be adjusted to handle different ways of managing sector-level information of the flash.

따라서, 도 2의 구현 예에서, 디스크 이미지 유틸리티(230)는 2개의 입력 파일들(236 및 238), 즉, 메모리 구성 파일(236;예를 들어, memory.cfg.xml) 및 패키지-대-파티션 매핑 파일(238;예를 들어, *.sk.xml, 여기서, *는 유효한 파일명을 나타낸다)에 의해 구동된다. 일반적으로, 파티션 매핑 파일(238)은, 각각의 특정 오퍼레이팅 시스템 컴포넌트(예를 들어, 패키지)를 메모리 구성 파일(236)에 표시된 특정 파티션에 매핑하는 정보를 포함한다.Thus, in the implementation example of FIG. 2, disk image utility 230 may include two input files 236 and 238, a memory configuration file 236 (eg, memory.cfg.xml) and a package-to- Driven by partition mapping file 238 (e.g., * .sk.xml, where * represents a valid file name). In general, partition mapping file 238 includes information that maps each particular operating system component (eg, a package) to a particular partition indicated in memory configuration file 236.

파티션들(209 내지 212)은 상이한 타입들일 수 있다(그리고 보통은 상이한 타입들이다). 예를 들어, 일 구현에서는, 압축된 업데이트 로더 파티션(209)과 같은 BINARY 파티션(BINARY 파티션은 단지 그것에 복사된 비트들을 가진다); NK 파티션(210)과 같은 하나 이상의 RAMIMAGE 또는 ROMIMAGE 파티션들; 시스템 파티션(211)과 같은 하나 이상의 IMGFS(Image Update File System) 파티션들; 및/또는 TFAT 또는 다른 파티션(212)과 같은 USERSTORE 파티션들이 존재할 수 있다. 임의적인 총 갯수의 파티션들 및/또는 파티션들의 타입들이 존재할 수 있지만, 현재의 일 구현은 메커니즘의 구성을 간단하게 유지하기 위해 총 갯수를 4개로, 예를 들어, 도 2에 나타낸 바와 같은, 업데이트 로더(BINARY), NK 파티션(RAMIMAGE 또는 ROMIMAGE), 시스템 파티션(IMFGS) 및 사용자 파티션(USERSTORE)으로 한정한다. 이와 같은 임의적 한정의 경우에도, 예를 들어, 3개의 이진 타입들과 하나의 IMGFS가 허용될 수 있는 4개 파티션들로 한정된 반복 타입이 존재할 수 있으며, 또한, 다른 타입의 파티션들이 가능할 수도 있다.Partitions 209-212 can be of different types (and are usually of different types). For example, in one implementation, a BINARY partition, such as a compressed update loader partition 209 (a BINARY partition only has bits copied to it); One or more RAMIMAGE or ROMIMAGE partitions, such as NK partition 210; One or more Image Update File System (IMGFS) partitions, such as system partition 211; And / or USERSTORE partitions such as TFAT or other partition 212. Although there may be an arbitrary total number of partitions and / or types of partitions, one current implementation may update the total number to four, for example, as shown in FIG. 2 to simplify the configuration of the mechanism. It is limited to a loader (BINARY), NK partition (RAMIMAGE or ROMIMAGE), system partition (IMFGS) and user partition (USERSTORE). Even in the case of such an arbitrary limitation, there may be a repeating type defined with, for example, three binary types and four partitions in which one IMGFS may be allowed, and other types of partitions may also be possible.

메모리 구성 파일(236)은 비휘발성 저장 공간 및 시스템 RAM 양자에 대한 오퍼레이팅 시스템의 실행-시간 가상 어드레스 공간 메모리 맵을 나타낸다. 이 데이터는, 정보가 저장될 수 있는 하나 이상의 파티션들을 특정하고 파티션에 저장될 데이터에 특성을 할당하는 것에 의해, 유틸리티의 사용자가 특정한 저장 공간 리소스들을 어떻게 사용하고 싶어하는지를 나타낸다.Memory configuration file 236 represents the operating system's run-time virtual address space memory map for both nonvolatile storage space and system RAM. This data indicates how the user of the utility wants to use specific storage space resources by specifying one or more partitions where information can be stored and assigning properties to the data to be stored in the partition.

일 구현에서, 메모리 구성 파일(236)은, 다음의 XSD에 대해 확인된 XML-포맷형 파일이다.In one implementation, the memory configuration file 236 is an XML-formatted file identified for the next XSD.

예시적인 메모리 구성은 다음과 같이 설정된다.An exemplary memory configuration is set as follows.

이 예에서 알 수 있는 바와 같이, 메모리 구성 파일의 하드웨어 섹션은 RAM 및 유보되어 있는 플래시 파트 각각의 위치에 대해서 뿐만 아니라 디스크 이미지 유틸리티에 의해 저장 공간으로 관리될 플래시 파트 각각에 대한 완전 기술(full description)을 제공한다. NOR 및 NAND 태그들은 일반적으로 (RAM과 같은)선형 또는 블록-기반의 저장 공간을 의미하는데 각각 사용된다. 각각의 저장 공간 파트에는 고유 식별자/이름이 제공된다. 파티션 섹션은, 특정한 저장 공간 파트들이 어떻게 파티션-기반 추출에 사용되어야 하는지를 나타낸다.As can be seen in this example, the hardware section of the memory configuration file contains a full description of each flash part to be managed as storage space by the disk image utility as well as the location of each of the RAM and reserved flash parts. ). NOR and NAND tags are generally used to mean linear or block-based storage space (such as RAM), respectively. Each storage space part is provided with a unique identifier / name. The partition section shows how certain storage space parts should be used for partition-based extraction.

ROMIMAGE는, 예를 들어, 저장 공간 파트로부터 실제로 실행하기 위해 (후술하는 바와 같이) 결정/재배치되어야만 하는 파티션의 컨텐츠를 의미하는데, (그 자리에서 실행(execute in place) 또는 XIP), 이는 선형-타입 저장 장치들의 특징이다. ROMIMAGE가 사용된다면, 디스크 이미지 유틸리티는, 임의의 그 자리에서의 실행 코드가 압축되지 않는다는 것을 보장하며, 또한, 모듈들의 개별적인 코드 섹션들이 물리적 공간에서 인접하다는 것, 즉, 그 자리에서의 실행 코드의 이와 같은 코드 섹션들이 유보된 영역을 확장하지 않는다는 것을 보장한다. RAMIMAGE 태그는, (적절한 때에 로더가 저장 공간으로부터 RAM으로 코드를 이동시킨다는 가정하에서) RAM을 다 써버리기 위해서는 컨텐츠들이 결정/재배치되어야 한다는 것을 지시한다. 이미지 저장 공간 이외에, 부가적인 파티션 타입들이 표시될 수 있는데, 상기 예에서는, USER-STORE가 데이터 저장 공간을 위한 파티션으로 정의되어 있다.ROMIMAGE means, for example, the contents of a partition that must be determined / relocated (as described below) to actually execute from the storage space part (execute in place or XIP), which is linear- It is a feature of type storage devices. If ROMIMAGE is used, the disk image utility ensures that the executable code in any place is not compressed, and that the individual code sections of the modules are contiguous in physical space, i.e. the execution code in place. It is guaranteed that such sections of code do not extend the reserved area. The RAMIMAGE tag indicates that the contents must be determined / relocated in order to run out of RAM (assuming the loader moves code from storage to RAM when appropriate). In addition to the image storage space, additional partition types may be indicated, in which the USER-STORE is defined as a partition for the data storage space.

파티션 매핑 파일(또는 SKU;238)은 고유하게 식별된 패키지들의 리스트를 포함하며, 패키지를 특정 파티션으로 매핑하는데 사용된다. 파티션 매핑 파일은 다음의 XSD에 대해 확인된 XML 파일이다.Partition mapping file (or SKU) 238 contains a list of uniquely identified packages and is used to map packages to specific partitions. The partition mapping file is an XML file identified for the following XSD.

예시적인 파티션 매핑(SKU) 파일(238)은 다음의 XML-포맷형 데이터처럼 보일 것이다.An example partition mapping (SKU) file 238 will look like the following XML-formatted data.

이러한 특정 예에서, 예시적인 패키지 파일("oem")은, 상기 메모리 구성 파일(236)에서, RAM에서와는 달리, 플래시 자체에서의 플레이스인 실행을 위해 코드가 결정/재배치되는 ROMIMAGE 파티션으로 정의되어 있는 "NK"라는 명칭의 파티션으로 매핑된다. 이 예로부터 알 수 있는 바와 같이, 이 특정 파티션은 하드웨어 섹션에서 지시된 하나의 NOR 플래시 파트상에 존재하는데, 이는 가상 어드레스 0x8000.0000에 위치하며 0x380.0000 바이트 길이이다. 또한 이 예에서 알 수 있는 바와 같이, "lang"이라 명명된 패키지는, IMGFS 파티션("IMGFS"라고 하는 파일 시스템 드라이버에 의해 관리되는 파티션) 내에 존재하는 "OS"라고 하는 제 2 파티션으로 매핑되며, 또한 하드웨어 섹션에서 특정된(그러나 이전의 NK 파티션과 중첩되지 않는) 하나의 NOR 파트상에 상주한다. In this particular example, an exemplary package file (“oem”) is defined in the memory configuration file 236 as a ROMIMAGE partition in which code is determined / relocated for place-in execution in the flash itself, unlike in RAM. It is mapped to a partition named "NK". As can be seen from this example, this particular partition resides on one NOR flash part indicated in the hardware section, which is located at virtual address 0x8000.0000 and is 0x380.0000 bytes long. As can also be seen in this example, a package named "lang" is mapped to a second partition called "OS" that resides within an IMGFS partition (a partition managed by a file system driver called "IMGFS"). It also resides on one NOR part specified in the hardware section (but not overlapping with the previous NK partition).

2개의 입력 파일들에 제공된 구성 정보에 기초해, 디스크 이미지 유틸리티(230)는 지시된 패키지의 컨텐츠들을 처리한다. 소정 패키지에 위치하는 각각의 실행가능 파일은 수정 또는 재배치 처리를 통해 고유한 가상 어드레스 공간 범위에 적절히 배치된다. 파티션 컨텐츠들이 RAM을 사용할 것인지 또는 플래시에서의 그 자리에서의 실행인지에 따라, 디스크 이미지 유틸리티(230)는, 실행가능 파일의 서브섹션들이 전반적인 가상 어드레스 공간에서 어디에 배치될 수 있는지에 대한 공지의 제한 사항들과 함께 어드레스 공간 정보를 사용해, 각각의 실행가능 파일을 처리하며 컨텐츠들을 중첩되지 않는 가상 어드레스 공간 범위에 배치한다. Based on the configuration information provided in the two input files, the disk image utility 230 processes the contents of the indicated package. Each executable file located in a given package is properly placed in a unique virtual address space range through a modification or relocation process. Depending on whether the partition contents will use RAM or execute in place in flash, the disk image utility 230 may have a known limitation on where subsections of the executable file can be placed in the overall virtual address space. The address space information along with the details are used to process each executable file and to place the contents into a non-overlapping virtual address space range.

도 3에 대략적으로 나타낸 바와 같이, 수정 처리(fix-up process)는 (예를 들어, 디스크 이미지 유틸리티(230)에 링크된 또는 디스크 이미지 유틸리티(230) 내의 그렇지 않으면 그와 관련된) ROMIMAGE(302)라는 컴포넌트에 의해 핸들링된다. 예시적 구현에서, ROMIMAGE(302)는 DLL(dynamic link library)인데, 이 또한 패키지 설치 처리 동안에 장치에 사용되어 장치에서의 설치시에 코드를 수정/재배치한다. 구축되는 동안, 얻어진 파일(206)은, 실행시에 장치에서 사용된 것과 동일한 파일 시스템 코드를 사용해, 파일을 구축 중인 데스크탑 컴퓨터상에 저장되어 있는 파일 내에 적절한 파티션으로 저장된다. 코드는 비호환 문제를 최소화하기 위해 장치에 대해서 구축 가능(build-able)할 뿐만 아니라 호스트 구축 시스템에 대해서도 구축 가능하다.As shown roughly in FIG. 3, a fix-up process may be performed by ROMIMAGE 302 (eg, linked to or otherwise associated with disk image utility 230). Is handled by a component called. In an example implementation, ROMIMAGE 302 is a dynamic link library (DLL), which is also used on the device during package installation processing to modify / relocate code upon installation on the device. During construction, the resulting file 206 is stored in the appropriate partition in the file stored on the desktop computer building the file, using the same file system code as used on the device at run time. Code can be built on a device as well as on a host build system to minimize incompatibilities.

파일을 구축하기 전에, 디스크 이미지 유틸리티(230)는 소정 사이즈, 예를 들어, 64MB 사이즈의 파일 생성을 요청한다. FSDMGR(304)이 유보된 섹션들을 구별하게 하여 이들이 원래대로 남겨지도록 하기 위해, FSDMGR(304)이 파일을 생성한 후, 디스크 이미지 유틸리티(230)가 메모리 구성 파일(236)을 처리한다. 나머지 메모리, 예를 들어, 32MB는 이제 FSDMGR(304)을 통해 이용 가능하다. 이 시점에서, 파일은 이미 필요한 파티션들을 갖도록 구축되어 있다.Before building the file, the disk image utility 230 requests the creation of a file of a predetermined size, for example a 64 MB size. After the FSDMGR 304 creates the file, the disk image utility 230 processes the memory configuration file 236 to cause the FSDMGR 304 to distinguish the reserved sections so that they remain intact. The remaining memory, for example 32 MB, is now available through FSDMGR 304. At this point, the file is already built with the necessary partitions.

상기한 예시적 메모리 구성 파일로부터 알 수 있는 바와 같이, BINARY 파티션이 바람직하다. 보다 구체적으로, 도 3은, 디스크 이미지 유틸리티(230)가 romimage.dll 함수들 및 파일 시스템 장치 드라이버 관리자(304;FSDMGR.DLL)와 함께 동작하여 파일(206)을 구축하는 방법의 일례를 나타낸다. 파일에 파티션들을 생성하기 위해, 디스크 이미지 유틸리티(230)는 FSDMGR(304)과 함께 동작하여 (지금까지는 존재하지 않았기 때문에) 마스터 부트 레코드를 생성한다. 수반되는 BINARY 파티션을 지시하는 데이터가 마스터 부트 레코드에 부가되는데, 다시 말해, 이 데이터가 파티션을 생성한다. 이 구현에서는, 사이즈가 특정되지 않았으므로, 이제, 남아 있는 플래시의 전 사이즈가 이와 같은 BINARY 파티션에 사용된다. As can be seen from the exemplary memory configuration file described above, a BINARY partition is preferred. More specifically, FIG. 3 shows an example of how disk image utility 230 works with romimage.dll functions and file system device driver manager 304 (FSDMGR.DLL) to build file 206. To create partitions in the file, disk image utility 230 works with FSDMGR 304 to create a master boot record (since it did not exist so far). Data indicating the accompanying BINARY partition is appended to the master boot record, that is, this data creates a partition. In this implementation, no size is specified, so all remaining flash size is now used for such a BINARY partition.

이 예에서, 디스크 이미지 유틸리티(230)는, ①로 표시된 화살표에 의해 도 3에 대략적으로 나타낸 바와 같이, ROMIMAGE(302)를 통해, FSDMGR(304)이 BINARY 파티션에 업데이트 로더를 기입할 것을 요청한다. 상기한 "Applying Custom Software Image Updates To Non-Volatile Storage in a Failsafe Manner"라는 명칭의 관련 특허출원에서 설명된 바와 같이, 업데이트 로더는 본질적으로, 장치가 업데이트될 경우 (보통의 오퍼레이팅 시스템 코드 대신에) 장치를 부팅하는 오퍼레이팅 시스템 코드의 특수 섹션이다. 업데이트 로더는 디스크 이미지 유틸리티 관점에서 비트들의 이진 블로브(binary blob of bots)이기 때문에, 파티션이 탑재되며 FSDMGR(304)은 rawfs.dll(306)을 사용해 이 이진 비트들을 BINARY 파티션(209)에(마스터 부트 레코드(213)에 수반되는 공간에) 기입한다. In this example, disk image utility 230 requests, via ROMIMAGE 302, FSDMGR 304 to write the update loader to the BINARY partition, as shown roughly in FIG. 3 by the arrow labeled ①. . As described in the related patent application entitled "Applying Custom Software Image Updates To Non-Volatile Storage in a Failsafe Manner" above, the update loader essentially consists of the device being updated (instead of the usual operating system code). A special section of operating system code that boots the device. Since the update loader is a binary blob of bots from the disk image utility perspective, the partition is mounted and the FSDMGR 304 uses rawfs.dll 306 to transfer these binary bits to the BINARY partition 209 ( In the space accompanying the master boot record 213).

기입되고 나면, FSDMGR(304)로의 호출에 의해, 기입된 실제 데이터량이 획득된다. 자동적인 사이징(sizing) 동작에서, 후속 파티션의 시작을 위한 새로운 오프셋은 이러한 실제 사이즈에 기초하며, 그에 의해, 업데이트 로더 파티션(209)은 파일에서 실질적으로 그것이 필요로 하는 공간량만을 소비한다.Once written, by the call to FSDMGR 304, the actual amount of data written is obtained. In an automatic sizing operation, the new offset for the start of the subsequent partition is based on this actual size, whereby the update loader partition 209 consumes only substantially the amount of space it needs in the file.

디스크 이미지 유틸리티(230)는 재호출되어 유사한 방식으로 (즉, 데이터를 마스터 부트 레코드(213)에 기입하는 것에 의해) 파일에 NK 파티션을 생성하며, 그 다음, NK 파티션은, 데이터를 NK 파티션에 기입하기 위한 요청으로 romimage.dll을 호출하는 것에 의해, 기입된다. romimage.dll에 의해 필요한 NK 파티션을 구축하기 위해 디스크 이미지 유틸리티(230)로부터 송신된 파라미터로는, 후술하는 바와 같이, 구축될 파일들의 리스트, 및 플래시 공간과 가상 어드레스 공간을 할당하기 위한 할당자들을 들 수 있다. romimage.dll(302)은 이 데이터를 한 세트의 비트들로 수정한 다음, 이들을 FSDMGR(304)에 제공하는데, FSDMGR(304)은, ②로 표시된 화살표에 의해 도 3에 나타낸 바와 같이, rawfs.dll(306)을 통해 NK 파티션을 기입한다. 물리적 수정들 뿐만 아니라 가상적 수정들이, 예를 들어, 임의의 그 자리에서의 실행 코드에 대해 필요할 수 있다.The disk image utility 230 is recalled to create an NK partition in the file in a similar manner (ie, by writing data to the master boot record 213), which then sends the data to the NK partition. It is written by calling romimage.dll in a request to write. The parameters sent from the disk image utility 230 to build the NK partition required by romimage.dll include a list of files to be built and allocators for allocating flash space and virtual address space, as described below. Can be mentioned. romimage.dll 302 modifies this data into a set of bits and then provides them to FSDMGR 304, which, as indicated in FIG. Write NK partition via dll 306. Virtual modifications as well as physical modifications may be needed, for example, for any in-place executable code.

역시, 사이즈가 특정되지 않았으므로, 리사이징될 때까지, 나머지 공간 전체가 이러한 NK 파티션으로 사용된다. 그러나, 이 예에서는, NK 파티션으로 기입된 정확한 사이즈에 기초해 파일의 끝에서부터 역으로 오프셋을 이동시키는 대신에, 도 3에 음영부로 표시된 바와 같이, NK 비트들에 수반되는 일정량의 부가적인 공간(버퍼)이 NK 파티션에 남겨질 수 있다. 이러한 자유 공간 버퍼는 메모리 XML 파일에 특정되며 기입된 실제 바이트량의 약간 앞쪽으로 오프셋을 실질적으로 이동시키며, 그에 의해, NK 파티션에 대한 장래의 업데이트들이 현재의 NK 파티션에 의해 소비된 공간보다 더 많은 공간을 소비할 수 있게 하는데, 다시 말해, 후속 업데이트들이 성장할 수 있게 한다.Again, because the size is not specified, the entire remaining space is used for this NK partition until resizing. However, in this example, instead of shifting the offset back from the end of the file based on the exact size written to the NK partition, as indicated by the shaded portion in FIG. 3, a certain amount of additional space involved in the NK bits ( Buffer) can be left in the NK partition. This free space buffer is specific to the memory XML file and substantially shifts the offset slightly ahead of the actual amount of bytes written, whereby future updates to the NK partition are more than the space consumed by the current NK partition. It allows space to be consumed, ie subsequent updates can grow.

③으로 표시된 화살표에 의해 도 3에 나타낸 바와 같이, 다음에는, romimage.dll을 통해, (다시 파일의 끝을 확장시키면서) IMGFS 파티션이 생성되어 기입된다. 이때, 이것은, FSDMGR(304)에 의해 인지되는 바와 같이, 이진 파티션이 아니라 IMGFS 파티션이다. 따라서, imgfs.dll(308)은 장치에서의 실행시에 특정 파티션을 핸들링하는 드라이버이기 때문에, 시스템 파티션을 기입하는데 사용된다. 또한, 임의의 물리적 수정들이 imgfs.dll(308)을 통해 추출됨으로써, 시스템 파티션에 대해, romimage 처리(302)는 특정된 바와 같은 가상 어드레스 수정들만을 수행한다. 그 다음, 후속 파티션에 대한 오프셋을 기입된 데이터량(현재 예에서는 자유 공간 버퍼가 존재하지 않지만, + 임의의 소정 자유 공간 버퍼)으로 이동시키기 위해, 상술한 바와 같이 자동 리사이징이 수행된다. As shown in Fig. 3 by the arrow indicated by 3, an IMGFS partition is created and written (extending the end of the file again) via romimage.dll. At this time, this is an IMGFS partition, not a binary partition, as recognized by FSDMGR 304. Thus, imgfs.dll 308 is used to write a system partition because it is a driver that handles a particular partition at run time on the device. In addition, any physical modifications are extracted via imgfs.dll 308, so that for the system partition, the romimage process 302 only performs virtual address modifications as specified. Then, automatic resizing is performed as described above, in order to shift the offset for the subsequent partition to the written data amount (in the present example, there is no free space buffer, but + any predetermined free space buffer).

후속 파티션은 USERSTORE인데, 임의 타입의 파티션일 수 있으며, 이 예에서는 타입 4의 파티션이다. USERSTORE 파티션은, 마스터 부트 레코드에 기입하는 것에 의해 생성되어 파일의 끝으로 확장된다. 그러나, 지금은 데이터가 기입되지 않으며, 그에 따라, 이 파티션은 탑재되지 않는다. 이후에 사용자가 이 파티션에 액세스하고자 할 경우, FSDMGR은 적절한 드라이버, 예를 들어, 이 파티션이 특정한 파일 시스템 포맷에 대응된다면 TFAT.dll(310)을 통해 그렇게 할 것이다. 따라서, 초기 파일을 구축하는데는 TFAT.dll(310)이 불필요하지만, 실행시에 사용자 파티션의 데이트를 액세스하는데 사용될 수 있는 드라이버의 일례로서 도 3에 (점선으로서) 도시되어 있다. The subsequent partition is USERSTORE, which can be any type of partition, in this example a partition of type 4. The USERSTORE partition is created by writing to the master boot record and extends to the end of the file. However, no data is written at this time, and thus this partition is not mounted. If the user later wishes to access this partition, the FSDMGR will do so via TFAT.dll 310 if the appropriate driver, for example, this partition corresponds to a particular file system format. Thus, although TFAT.dll 310 is not required to build the initial file, it is shown in FIG. 3 (as dashed line) as an example of a driver that can be used to access data in a user partition at run time.

본 발명의 동작에 대한 설명으로 돌아가 요약하면, 디스크 이미지 유틸리티(230)는, 플랫폼 메모리 구성 파일(236;예를 들어, memory.cfg.xml) 및 이미지 목록 파일(238;예를 들어, platform.sku.xml)을 입력으로 취하여 장치에 대한 완성된 ROM 이미지를 나타내는 데이터 파일(206)을 출력하는 데스크탑 유틸리티이다. 디스크 이미지 유틸리티(230)는 모듈 데이터 재배치를 담당하기 때문에, 장치측의 업데이트 애플리케이션과 코드를 공유할 수 있는 것이 하나의 설계 목표이다. Returning to the description of the operation of the present invention, in summary, the disk image utility 230 may include a platform memory configuration file 236 (eg, memory.cfg.xml) and an image listing file 238 (eg, platform. sku.xml) as input and a desktop utility that outputs a data file 206 representing the complete ROM image for the device. Since disk image utility 230 is responsible for relocating the module data, one design goal is to be able to share code with update applications on the device side.

다른 동작들 중에서, 디스크 이미지 유틸리티(230)는, 장치에 대한 메모리 레이아웃, 임의의 유보 영역들, 및 사전에 구축된 BIN/NB0 파일들(NB0 파일은 모든 .bin 파일들이 ROM에 표시되는 레이아웃이다)을 포함하는 하나 이상의 플래시 파티션들에 대한 위치와 사이즈를 정의하는 메모리 구성 파일(236)을 파싱(parsing)한다. 또한, 디스크 이미지 유틸리티(230)는 패키지-기반 파티션들 및 그들의 컨텐츠를 선언하는 이미지 목록 파일(238)을 파싱한다. Among other operations, disk image utility 230 is a memory layout for the device, any reserved areas, and pre-built BIN / NB0 files (NB0 file is a layout where all .bin files are displayed in ROM). Parse a memory configuration file 236 that defines the location and size for one or more flash partitions, including < RTI ID = 0.0 > The disk image utility 230 also parses an image listing file 238 that declares package-based partitions and their contents.

도 3에 대략적으로 나타낸 구현에서, 디스크 이미지 유틸리티(230)는, BINARY, RAMIMAGE, ROMIMAGE, IMGFS, 및 USERSTORE 파티션들을 포함하여, 다양한 타입의 파티션들을 구성할 수 있다. BINARY 파티션들은 임의의 데이터를 포함하는 사전에 구축된 NB0 파일들을 포함하지만, 패키지는 아니다. 이름에서 추측되는 바와 같이, RAMIMAGE 파티션들은 RAM에 배치되는 반면, ROMIMAGE 파티션들은 이들이 저장되어 있는 NOR 파트로부터의 그 자리에서의 실행에 배치된다. 이미지 FS 파티션은, 디스크 이미지 유틸리티(230)에 의해 지원되는 파티션 타입을 포함하며, 단순히 (FSDMGR(304)을 통해) 적당한 버전의 IMGFS.dll(308)로의 호들을 형성하는 것에 의해 구성될 수 있다. USERSTORE 파티션들은 임의의 개별화된 파티션 타입일 수 있으며, 현재는 부팅시에 생성되는 파티션들에 대한 마스터 부트 레코드(213)에서의 위치 보유자로서 사용된다. In the implementation outlined in FIG. 3, disk image utility 230 may configure various types of partitions, including BINARY, RAMIMAGE, ROMIMAGE, IMGFS, and USERSTORE partitions. BINARY partitions contain prebuilt NB0 files containing arbitrary data, but are not packages. As the name suggests, RAMIMAGE partitions are placed in RAM, while ROMIMAGE partitions are placed in place from the NOR part where they are stored. The image FS partition includes the partition type supported by the disk image utility 230 and can be constructed by simply forming calls to the appropriate version of IMGFS.dll 308 (via FSDMGR 304). . USERSTORE partitions can be of any individualized partition type and are currently used as the location holder in the master boot record 213 for partitions created at boot time.

다음 표는 디스크 이미지 유틸리티(230)로부터의 입력 파일들 및 출력 파일들을 요약한다.The following table summarizes the input files and output files from disk image utility 230.

용어Terms 설명Explanation CFG 파일CFG file 하드웨어 및 파티션 정보를 특정하는, 디스크 이미지 유틸리티로 입력되는 메모리 구성 파일. 여기에서는 Memory.CFG.XML이라고도 하는, 디스크 이미지 유틸리티로의 요구 입력.Memory configuration file, entered by the disk image utility, that specifies hardware and partition information. Request input to the disk image utility, also known as Memory.CFG.XML. SKU 파일SKU file 패키지-기반 파티션 컨텐츠들을 특정하는, 디스크 이미지 유틸리티로 입력되는 파티션 매핑 파일/이미지 목록 파일.Partition mapping file / image list file entered into the disk image utility that specifies package-based partition contents. RAMIMAGERAMIMAGE RAM으로부터의 실행을 위해 배치된 이진 파티션. 패키지들을 포함할 수 있음.Binary partition placed for execution from RAM. May contain packages. ROMIMAGEROMIMAGE 플래시로부터의 실행을 위해 배치된 이진 파티션. 패키지들을 포함할 수 있음.Binary partition placed for execution from flash. May contain packages. IMGFSIMGFS 디스크 이미지 유틸리티에 의해 지원되는 파티션 타입. 시스템 파티션의 패키지들과 같은 패키지들을 포함할 수 있음.Partition types supported by the disk image utility. May contain packages such as packages in the system partition. USERSTOREUSERSTORE 사용자-정의의 파티션 타입. 예상되는 용도는 FAT 또는 확장된 파티션들에 대한 MBR 엔트리를 생성하는 것이지만, 임의의 파티션 타입일 수 있음.User-defined partition type. The expected use is to create MBR entries for FAT or extended partitions, but can be of any partition type. BINARYBINARY 디스크 이미지 유틸리티에 의해 지원되는 파티션 타입. 임의의 데이터를 포함함. 패키지들을 포함할 수는 없음.Partition types supported by the disk image utility. Contains any data. It cannot contain packages.

디스크 이미지 유틸리티(230)는 모듈들을 패키지-기반 파티션들 중 하나로 재배치하는 것을 담당한다. 이를 실현하기 위해, 디스크 이미지 유틸리티(230)는 가상 어드레스(VA) 할당자를 이용한다. 또한, 디스크 이미지 유틸리티(230)는 그 파트에 대한 파티션들을 포함하는, 장치의 플래시 파트 각각에 대한 (상술한 바와 같은) BIN/NBO 파일, 및 MBR(Master Boot Record)을 출력할 수 있다. 출력 파일들은 MSPart 데스크탑 컴포넌트를 사용하는 것에 의해 생성될 수 있다. 또한, 디스크 이미지 유틸리티(230)에서의 많은 코드(예를 들어, VA 할당자, IMGFS 상호 작용들, 모듈 재배치들) 또한 장치측 업데이트 애플리케이션에 유용하며, 그에 따라, 디스크 이미지 유틸리티(230)는 장치 제한들(device limitations) 및 코드 이동성(code portability)을 고려한다.Disk image utility 230 is responsible for relocating the modules to one of the package-based partitions. To realize this, the disk image utility 230 uses a virtual address (VA) allocator. The disk image utility 230 may also output a BIN / NBO file (as described above), and a Master Boot Record (MBR) for each of the flash parts of the device, including partitions for that part. Output files can be generated by using the MSPart desktop component. In addition, many of the code in the disk image utility 230 (eg, VA allocator, IMGFS interactions, module relocations) are also useful for device-side update applications, whereby the disk image utility 230 may Consider device limitations and code portability.

도 4는 디스크 이미지 유틸리티(230)의 전반적인 흐름을 나타낸다. 디스크 이미지 유틸리티(230)는 데스크탑 컴포넌트를 포함할 수 있으며, 다양한 동작들을 수행하기 위한 별개의 컴포넌트들도 포함할 수 있다. 예를 들어, 디스크 이미지 유틸리티는 명령 라인을 통해 실행될 수 있으므로, 블록 400으로 표시된 바와 같이 명령 라인 인수들을 처리하기 위해, 디스크 이미지 유틸리티(230)는 명령 라인 처리기를 포함할 수 있다. 별개의 CFG 파일 파서가 메모리 구성 파일을 처리할 수 있으며(블록 402), 별개의 sku/패키지 파서가 블록 404로 표시된 바와 같이 파티션 매핑(SKU) 파일을 처리할 수 있다. 컴포넌트들 및 그들의 기능은 BINARY 파티션 생성기/처리(블록 406), RAMIMAGE/ROMIMAGE 파티션 생성기/처리(블록 408), IMGFS 파티션 생성기/처리(블록 410), USERSTORE 파티션 생성기/처리(블록 412), 및 후행 처리기(블록 414)에 의해 도 4에 표시되어 있다. 후행 처리기 및 디스크 이미지 유틸리티(230)에 의해 사용되는 데이터 구조들은 다음의 별개 섹션에서 설명한다.4 shows the overall flow of disk image utility 230. The disk image utility 230 may include a desktop component and may also include separate components for performing various operations. For example, the disk image utility may be executed via the command line, so that the disk image utility 230 may include a command line processor to process command line arguments as indicated by block 400. A separate CFG file parser can process the memory configuration file (block 402) and a separate sku / package parser can process a partition mapping (SKU) file as indicated by block 404. The components and their functions are BINARY partition generator / process (block 406), RAMIMAGE / ROMIMAGE partition generator / process (block 408), IMGFS partition generator / process (block 410), USERSTORE partition generator / process (block 412), and trailing Shown in FIG. 4 by the processor (block 414). The data structures used by the post processor and disk image utility 230 are described in the following separate sections.

상술한 바와 같이, 디스크 이미지 유틸리티(230;예를 들어, dskimage.exe)는, 다음의 명령과 같은, 명령 라인 인수들을 통해 호출될 수 있다.As discussed above, the disk image utility 230 (eg, dskimage.exe) may be invoked via command line arguments, such as the following command.

dskimage CFGfile SKUfiledskimage CFGfile SKUfile

명백히 알 수 있는 바와 같이, CFGfile 파라미터는, 상술한 바와 같이, 현재 플랫폼에 대한 RAM 및 플래시 레이아웃을 상술하며 파티션들을 정의하는 입력 파일인 메모리 구성 파일(236)로의 경로이다. SKU 파일 파라미터는, 상술한 바와 같이, 패키지들의 집합들을 열거하며 이들을 파티션들에 할당하는 파티션 매핑/이미지 목록 파일(238)로의 경로이다. 일 구현에서, 디스크 이미지 유틸리티(230)는 입력 파일들을 파싱할 경우에는 파일 확장자들을 보지 않지만, (예를 들어, 스크립트를 통해) 호출될 경우에는 다음의 이름을 가진 입력들을 기대한다. As can be seen clearly, the CFGfile parameter is a path to a memory configuration file 236, which is an input file that details the RAM and flash layouts for the current platform and defines partitions, as described above. The SKU file parameter is a path to a partition mapping / image listing file 238 that, as described above, enumerates sets of packages and assigns them to partitions. In one implementation, disk image utility 230 does not look at file extensions when parsing input files, but expects inputs with the following names when called (eg, via a script).

CFGFile = Memory.cfg.xmlCFGFile = Memory.cfg.xml

SKUFile = %_TGTPLAT%.sku.xmlSKUFile =% _TGTPLAT% .sku.xml

현재, 명령 라인 처리기는 CFGfile 및 SKUfile의 명령 라인 인수들의 존재만을 체크하며 이들을 그들의 개별적인(예를 들어, XSD) 확인자들(validators)에게로 전달한다. 인수가 상대 경로를 갖도록 특정되어 있다면, 디스크 이미지 유틸리티(230)는, 디스크 이미지 유틸리티(230)가 호출된 디렉토리로부터 관련 파일을 탐색한다. 인수가 절대 경로를 갖도록 특정되어 있다면, 디스크 이미지 유틸리티(230)는 이 절대 경로를 사용해 파일을 탐색한다. 디스크 이미지 유틸리티(230)에서, 경로1은 Environment.CurrentDirectory이고, 경로2는 CFGfile 또는 SKUfile이다. 인수들이 존재하지 않으면, 명령 라인 처리기는 (C#에서의 예외 취하기, 사용 메시지 출력하기, 벗어나기와 같은) 적절한 동작을 취할 것이다. Currently, the command line processor only checks for the presence of command line arguments of CFGfile and SKUfile and passes them to their respective (eg XSD) validators. If the argument is specified to have a relative path, the disk image utility 230 searches for the relevant file from the directory from which the disk image utility 230 is called. If the argument is specified to have an absolute path, the disk image utility 230 uses this absolute path to search for the file. In disk image utility 230, path 1 is Environment.CurrentDirectory and path 2 is CFGfile or SKUfile. If no arguments are present, the command line processor will take appropriate action (such as catching an exception in C #, printing a usage message, or exiting).

memory.cfg.xml 파서/처리는 제조자들에게 하드웨어를 기술하고 플래시 파트들에 파티션들을 할당하는 것에 있어서 상당한 융통성을 부여하도록 설계되었다. 현재의 일 구현에서, 메모리 구성 파서/처리 파서(도 4의 블록 402)는, 도 5에 대략적으로 도시된 바와 같이, memory.cfg.xml 파일상에서 2가지 레벨의 확인을 이용한다. 먼저, 단계 500으로 도시된 바와 같이, C# XMLValidatingReader 클래스를 통해, memory.cfg.xml 파일이 적합한 문맥(proper syntax)인지 확인되는데, XMLValidatingReader는 memory.cfg.xml이 유효한 xml 및 요구되는 태그들을 포함하는지 확인하며, 그렇지 않으면, 단계 502는 에러 조건을 출력하기 위해 분기한다. 확인의 제 2 레벨은 디스크 이미지 유틸리티(230)에 의해 수행된다. 제 2 레벨의 확인 동안, RAM, 플래시 파트들, 및 파티션들의 내부 표현이 생성된다. (단계 504 및 506에 의해 도 5에 도시된 바와 같이) 내부 표현을 생성하는데는 XML 직렬화가 사용되며, 그 다음, 무효 구성들, 예를 들어, 존재하지 않는 플래시 파트에 대한 파티션 매핑을 검출하기 위해, 내부 구조에 대한 확인이 수행된다. The memory.cfg.xml parser / process is designed to give manufacturers considerable flexibility in describing hardware and assigning partitions to flash parts. In one current implementation, the memory configuration parser / processing parser (block 402 of FIG. 4) uses two levels of validation on the memory.cfg.xml file, as shown approximately in FIG. 5. First, as shown in step 500, through the C # XMLValidatingReader class, the memory.cfg.xml file is checked to see if it is the proper syntax, and XMLValidatingReader checks whether memory.cfg.xml contains valid xml and required tags. Otherwise, step 502 branches to output an error condition. The second level of verification is performed by disk image utility 230. During the second level of verification, an internal representation of RAM, flash parts, and partitions is generated. XML serialization is used to generate the internal representation (as shown in FIG. 5 by steps 504 and 506), and then detecting invalid configurations, eg, partition mapping for non-existent flash parts. For this purpose, a check on the internal structure is carried out.

예시적 일 구현(예를 들어, Windows? CE-기반 구현)에서, 하드웨어 구성이 유효하기 위해서는, 파일의 RAM START 속성이 유효한 캐시 커널 가상 어드레스(0x80000000 - 0x9FFFFFFF)를 참조해야 하며, START+LENGTH 또한 유효해야 한다. 임의의 RAM_RESERVE 섹션들이 부모 RAM 소자의 START 및 LENGTH 속성들에 의해 특정된 커널의 가상 어드레스 범위 내에서 시작되고 끝나야 한다. RAM_RESERVE 소자들은 중첩될 수 없으며(START 내지 START+LENGTH는 각각의 RAM_RESERVE에 대해 고유해야 한다), 고유한, 공백이 아닌 ID 스트링들을 가져야 한다.In one exemplary implementation (e.g., Windows-based implementation CE-?), To the hardware configuration is valid, the RAM START attributes of the file cache valid kernel virtual address - and the need to refer to (0x80000000 0x9FFFFFFF), also START + LENGTH Must be valid. Any RAM_RESERVE sections must begin and end within the kernel's virtual address range specified by the START and LENGTH attributes of the parent RAM device. RAM_RESERVE elements cannot overlap (START to START + LENGTH must be unique for each RAM_RESERVE) and must have unique, non-blank ID strings.

이러한 예시적 구현에서는, (집합적으로 FLASH라 하는) NOR/NAND가 고유한 "ID" 속성들을 가져야하며 "RAM"이라 명명될 수 없다는 것을 포함하여, 다양한 규칙들이 강제될 수 있다. FLASH RESERVE 소자들은 고유한 "ID" 속성들을 가져야 하며 8개의 문자보다 긴 이름을 가질 수 없다. FLASH 소자의 LENGTH 속성들은 BLOCKSIZE에 의해 고르게 분할될 수 있어야 하고, BLOCKSIZE는 SECTORSIZE에 의해 고르게 분할될 수 있어야 한다. NOR 소자들의 경우, VASTART가 블록-정렬되어야 한다. FLASH RESERVE 소자들의 LENGTH 속성들은 부모 FLASH의 BLOCKSIZE에 의해 고르게 분할될 수 있어야 한다. NOR_RESERVE 소자들의 경우, VASTART는 블록-정렬되고, NOR VASTART 및 VASTART+LENGTH는 RAM 또는 임의의 다른 NOR 소자들과 중첩되지 않아야 하며 유효한 캐시 커널의 가상 어드레스여야 한다.In this example implementation, various rules may be enforced, including that NOR / NAND (collectively referred to as FLASH) must have unique "ID" attributes and cannot be named "RAM". FLASH RESERVE devices must have unique "ID" attributes and cannot have names longer than eight characters. The LENGTH attributes of the FLASH element must be evenly partitioned by BLOCKSIZE, and the BLOCKSIZE must be evenly partitioned by SECTORSIZE. For NOR devices, VASTART must be block-aligned. The LENGTH attributes of the FLASH RESERVE elements should be evenly divided by the BLOCKSIZE of the parent FLASH. For NOR_RESERVE elements, VASTART is block-aligned, and NOR VASTART and VASTART + LENGTH must not overlap with RAM or any other NOR elements and must be a virtual address of a valid cache kernel.

또한, 유효해지기 위해, NOR_RESERVE 소자들은 부모 NOR 소자의 VASTART 및LENGTH 속성들에 의해 특정된 캐시 커널의 가상 어드레스 범위 내에서 시작되고 끝나야 한다. 후술하는 할당자 클래스 계층 구조를 사용해 HARDWARE 조건들을 확인할 수 있다. 유효한 캐시 커널 어드레스 범위에 대해 전역적 할당자가 생성되어, RAM 및 NOR 태그들에 대한 유효 어드레스들 및 RAM과 NOR 파트들간의 어떤 충돌들을 검출하는데 사용된다. 마찬가지로, 유효한 RESERVE 영역들을 검출하기 위해 각각의 RAM 및 FLASH 파트에 대해 할당자들이 생성된다. 할당자들은 용이한 검색을 위해, 관련된 RAM/FLASH 오브젝트들에 저장될 수 있다. Also, to be valid, the NOR_RESERVE elements must start and end within the virtual kernel's virtual address range specified by the VASTART and LENGTH attributes of the parent NOR element. HARDWARE conditions can be checked using the allocator class hierarchy described below. A global allocator is created for a valid cache kernel address range and used to detect valid addresses for RAM and NOR tags and any conflicts between RAM and NOR parts. Likewise, allocators are created for each RAM and FLASH part to detect valid RESERVE regions. Allocators can be stored in related RAM / FLASH objects for easy retrieval.

파티션 데이터 또한, MemoryCFG 계층 구조에 저장된다. PARTITION들의 정당화(validation)를 위한 규칙들로는, 파티션들이 고유한 ID 속성들을 가질 것, PARTITION의 STORAGE_ID 속성이 FLASH 파트의 ID 속성과 매칭될 것, 그리고 ROMIMAGE 파티션의 STORAGE_ID 속성이 NAND 플래시를 참조할 수 없다는 것을 들 수 있다. RAMIMAGE/BINARY의 경우, COMPRESS 속성은 부울 타입이므로, {0, 1, 참, 거짓} 중 하나일 수 밖에 없다.Partition data is also stored in the MemoryCFG hierarchy. The rules for validation of PARTITIONs include that partitions have unique ID attributes, that the STORAGE_ID attribute of the PARTITION matches the ID attribute of the FLASH part, and that the STORAGE_ID attribute of the ROMIMAGE partition cannot refer to NAND flash. It can be mentioned. In the case of RAMIMAGE / BINARY, since the COMPRESS attribute is a Boolean type, it must be one of {0, 1, true, false}.

(집합적으로 PACKAGE 파티션들이라고 하는) RAMIMAGE/ROMIMAGE/IMGFS 또한 확인되며, 현 구현에서는, 하나의 RAMIMAGE/ROMIMAGE 파티션만이 존재할 수 있다. 양자가 특정되면, 정당화는 실패하게 된다. FSRAMPERCENT 및 ROMFLAGS 속성들은 (예를 들어, Windows? CE-기반 구현에서의) RAMIMAGE/ROMIMAGE 파티션에 대한 컨텐츠 테이블의 필드들에 대응된다. RAMIMAGE 파티션의 FIXUP_ADDRESS는, 이 파티션이 RAM에서 시작되는 장소를 의미한다. 이 속성은, 그것에 즉각적으로 수반되는 0x1000 바이트 이상의 빈 공간을 갖도록 RAM에서의 유효한 위치를 포인팅해야 한다. 현재로는, FLASH 파트마다 하나 이상의 USERSTORE 파티션이 존재할 수 없다.RAMIMAGE / ROMIMAGE / IMGFS (collectively referred to as PACKAGE partitions) is also identified, and in the current implementation, there can be only one RAMIMAGE / ROMIMAGE partition. If both are specified, the justification fails. FSRAMPERCENT and ROMFLAGS attributes (for example, Windows? CE- based on implementation) and corresponds to the fields in the table of contents for RAMIMAGE / ROMIMAGE partition. The FIXUP_ADDRESS of the RAMIMAGE partition is where this partition starts in RAM. This attribute must point to a valid location in RAM to have more than 0x1000 bytes of free space immediately accompanying it. Currently, there can be no more than one USERSTORE partition per FLASH part.

상술한 바와 같이, 이미지 목록(패키지-대-파티션 매핑 또는 SKU) 파일(238)은 파티션에 의해 조직된 패키지들의 리스트를 포함한다. (상기한) XML 스키마는 비교적 직접적이다. 이미지 목록 파일 파서/처리는, SKU 파일이 유효한 XML을 포함하는지를 확인할 뿐만 아니라 PACKAGE_LIST 태그들에 특정된 파티션들을 memory.cfg.xml의 PACKAGE 파티션 ID들에 매칭시킨다. PACKAGE_LIST 태그의 PACKAGE_ID 속성은 PACKAGE 파티션 소자의 ID 속성과 매칭되어야 하고, 매칭을 발견할 수 없으면, SKU 파서는 예외를 취한다. 도 6의 단계들(600, 602 및 604)이 이러한 다양한 동작들을 요약한다.As mentioned above, the image listing (package-to-partition mapping or SKU) file 238 includes a list of packages organized by partitions. The XML schema (described above) is relatively straightforward. The image list file parser / process not only checks whether the SKU file contains valid XML, but also matches the partitions specified in the PACKAGE_LIST tags with the PACKAGE partition IDs in memory.cfg.xml. The PACKAGE_ID attribute of the PACKAGE_LIST tag must match the ID attribute of the PACKAGE partition element, and if no match is found, the SKU parser throws an exception. Steps 600, 602, and 604 of FIG. 6 summarize these various operations.

각각의 PACKAGE_LIST 태그는 요구되는 PARTITION_ID 속성을 가진다. 패키지들을 파티션들에 매칭시키는 것은 PARTITION_ID 속성을 취하는 단계 및 그것을 C# HashTable로의 룩업으로 사용하는 단계를 포함한다. 매칭이 발견되면, 자식 PACKAGE_FILE 태그들은 ArrayList로 변환되며 PACKAGE 파티션에 대한 기존의 패키지 리스트와 합쳐진다. 패키지들을 추출하는 것은 다음의 방식으로 수행될 수 있다.Each PACKAGE_LIST tag has a required PARTITION_ID attribute. Matching packages to partitions includes taking the PARTITION_ID attribute and using it as a lookup into the C # HashTable. If a match is found, the child PACKAGE_FILE tags are converted to an ArrayList and merged with the existing package list for the PACKAGE partition. Extracting the packages can be performed in the following manner.

/// 각각의 PackagePartition에 대해/// for each PackagePartition

/// {/// {

/// PackagePartition의 각 패키지에 대해 /// for each package in the PackagePartition

/// 디렉토리 .\DskImage\PartitionID 생성/// create directory .\DskImage\PartitionID

/// {/// {

/// 파일 .\Packages\PackageName 열기/// open the file .\Packages\PackageName

/// 파일이 발견되지 않으면 오류/// error if file not found

/// 컨텐츠를 .\DskImage\PartitionID로 추출/// extract content to .\DskImage\PartitionID

/// 추출이 실패하면 오류/// error if extraction fails

/// }///}

/// }///}

디스크 이미지 유틸리티(230)는 _FLATRELEASEDIR 환경 변수의 존재를 체크하여, 발견되면 그것을 현재의 작업 디렉토리로 사용한다. 이는, _FLATRELEASEDIR에서는 파일들을 조작하기만 하면서 사용자가 임의 디렉토리로부터 "makeimg"을 수행할 수 있도록 허용하는 종래 구축 시스템의 거동과 일치한다. The disk image utility 230 checks for the existence of the _FLATRELEASEDIR environment variable and uses it as the current working directory if found. This is consistent with the behavior of conventional build systems in _FLATRELEASEDIR that only allow users to perform "makeimg" from any directory while only manipulating files.

(종래의 Windows? CE 구축 시스템과 같은,) MSPart의 데스크탑 (구축 시스템) 버전에 의해 파티션들이 생성되고 관리된다. MSPart 인터페이스로 인해, 디스크 이미지 유틸리티(230)는 파티션들의 실제 구성으로부터 기본 하드웨어에 관한 세부사항들을 추출할 수 있다. MSPart에 의해 생성된 NBO 파일에 대한 임의의 하드웨어-특정 조정들은 후행 처리에서 수행된다. MSPart는 디스크 이미지 유틸리티(230) 도구의 나머지에 의해 사용될 수 있는데, 그렇다면, 임의의 파티션들을 생성하기 전에, 후술하는 바와 같이, FLASH 파트 각각에 대해 MSPart 볼륨이 생성되며 임의의 RESERVE 섹션들이 표시된다. 디스크 이미지 유틸리티(230)는, 필요한 비관리 함수들(unmanaged functions)을 래핑(wrapping)하는 별도의 클래스 fsdmgr.cs를 포함한다. 이 처리는, 각각이 이름에 의해 액세스되어 그를 통해 반복될 수 있도록 하기 위한 플래시 파트들의 전역적 HashTable을 포함한다. 상기 처리는, 도 7에 대략적으로 나타낸 바와 같이, Flash 파트 각각의 FlashReserve 소자들에 대해 반복하고 fsdmgr.dll로의 호들을 형성하는 것에 의해 실현된다. RESERVE 영역들은, 실제 생성될 때의 데이터로 채워져 있다. 이를 위해, FSDMgr 클래스는 RESERVE 영역을 채우기 위한 데이터를 디스크 이미지로부터 fsdmgr_nt.dll에 배치한다.Partitions are created and managed by the desktop (build system) version of MSPart (such as the traditional Windows ® CE build system). Due to the MSPart interface, disk image utility 230 can extract details about underlying hardware from the actual configuration of partitions. Any hardware-specific adjustments to the NBO file created by the MSPart are performed in post processing. The MSPart can be used by the rest of the disk image utility 230 tool, if so, before creating any partitions, an MSPart volume is created for each of the FLASH parts and any RESERVE sections are displayed, as described below. The disk image utility 230 includes a separate class fsdmgr.cs that wraps the necessary unmanaged functions. This process includes a global HashTable of flash parts so that each can be accessed by name and repeated through it. The process is realized by iterating over the FlashReserve elements of each of the Flash parts and forming the calls to fsdmgr.dll, as shown roughly in FIG. The RESERVE areas are filled with data as it is actually created. To do this, the FSDMgr class places data to fill the RESERVE area from the disk image into fsdmgr_nt.dll.

NBO 구축의 제 1 단계는, BINARY 파티션들을 MSPart-탑재형 볼륨에 부가하는 것이다. BINARY 파티션들은 전체적으로 자체-포함적이기 때문에(즉, 이들은 수정을 요하지 않으며 NOR상의 SectorData 메타데이터를 요하지 않으므로), 이들이 먼저 처리된다. 대략적으로 상술한 바와 같이, BINARY 파티션들을 구축하는 것은 비교적 직접적이며, 이 처리는 BinaryPartitions의 어레이를 통해 반복되며 그들의 Create() 방법들을 호출한다. Partition 오브젝트 각각이 그들의 부모 플래시 파트를 포인팅하므로, 적절한 볼륨 핸들을 검색하는 것 또한 매우 직접적이다.The first step in building an NBO is to add BINARY partitions to the MSPart-mounted volume. Because BINARY partitions are entirely self-contained (ie, they do not require modification and do not require SectorData metadata on the NOR), they are processed first. As outlined above, building BINARY partitions is relatively straightforward, and this process repeats through an array of BinaryPartitions and invokes their Create () methods. Since each Partition object points to its parent flash part, finding the appropriate volume handle is also very straightforward.

일 구현에서, PartitionInfo 클래스(MemoryCFG 계층 구조의 파트)는, BinaryPartition 오브젝트들에 대해 반복하며 그들의 Create() 방법을 호출하는 것에 의해 시작되는 CreateAllPartitions라는 함수를 포함한다. BinaryPartition.Create() 함수는 특정한 플래시 블록에 대한 새로운 파티션을 생성하여 탑재하며, memory.cfg.xml로부터의 DATAFILE 속성에 특정된 파일을 열고, 데이터를 파티션에 기입하기 위한 FSDMgr로 호출된다. 이러한 사양을 위한 유사 부호(pseudocode)는 (일부의 MSPart API들을 사용해) 다음과 같이 설정된다.In one implementation, the PartitionInfo class (part of the MemoryCFG hierarchy) includes a function called CreateAllPartitions that iterates over BinaryPartition objects and begins by calling their Create () method. The BinaryPartition.Create () function creates and mounts a new partition for a particular flash block, opens the file specified by the DATAFILE attribute from memory.cfg.xml, and is called by FSDMgr to write data to the partition. The pseudocode for this specification is set as follows (using some MSPart APIs).

상술한 바와 같이, 디스크 이미지 유틸리티는, 각각 ROM 및 RAM으로부터의 장소에서 실행되는 파티션들인 ROMIMAGE 및 RAMIMAGE 타입의 파티션들을 생성하는데 사용되는 "romimage"를 제공한다. 이 파티션들은 통상적으로 IMGFS 파일 시스템을 구축하는데 필요한 최소 세트의 시스템 컴포넌트들: nk, coredll, filesys, fsdmgr, mspart, imgfs, 및 필요한 임의의 블록 드라이버들을 포함한다.As mentioned above, the disk image utility provides " romimage " used to create partitions of type ROMIMAGE and RAMIMAGE, which are partitions executed in place from ROM and RAM, respectively. These partitions typically contain the minimum set of system components needed to build an IMGFS file system: nk, coredll, filesys, fsdmgr, mspart, imgfs, and any block drivers needed.

ROMIMAGE/RAMIMAGE 처리는 일반적으로 (현 구현에 열거되어 있으며, 도 8의 단계들 801 내지 808로도 도시되어 있는 8개의) 다양한 단계들로 분해될 수 있다. ROMIMAGE / RAMIMAGE processing can generally be broken down into various steps (eight listed in the current implementation, and also shown as steps 801 through 808 in FIG. 8).

모듈들 및 파일들의 리스트 구축 및 정렬 (단계 801);Build and sort a list of modules and files (step 801);

모든 모듈들에 가상 어드레스 공간 할당 (단계 802);Allocating virtual address space to all modules (step 802);

모듈 수정들의 수행 (단계 803);Performing module modifications (step 803);

모든 데이터 섹션들 및 파일들의 압축 (단계 804);Compression of all data sections and files (step 804);

물리적 레이아웃 수행 (단계 805);Perform physical layout (step 805);

카피 섹션들의 할당 (단계 806);Allocation of copy sections (step 806);

커널 모듈 수정들의 수행 (단계 807); 및Performing kernel module modifications (step 807); And

실제 파티션 출력(단계 808)Actual partition output (step 808)

상기 단계들 각각은, 다양한 애플리케이션들(예를 들어, C 및 C# 애플리케이션들)로부터의 기능 할당 및 재배치에 대한 액세스를 용이하게 하는, romimage.dll로의 호들을 형성하는 것에 의해 수행될 수 있다. 디스크 이미지 유틸리티는 ROMImage.cs라는 래퍼 클래스(wrapper class)를 통해 romimage.dll과 인터페이스할 수 있다.Each of the above steps may be performed by forming calls to romimage.dll, which facilitates access to function assignment and relocation from various applications (eg, C and C # applications). The disk image utility can interface with romimage.dll through a wrapper class called ROMImage.cs.

romimage.dll은 Allocator 클래스 계층 구조와 다수 Allocator들을 생성하고 관리하는 기능, File 클래스 계층 구조와 파일들의 리스트를 생성하고 관리하는 기능, 및 ROMIMAGE/RAMIMAGE 파티션 구축 처리의 단계들을 수행하기 위한 함수들을 포함한다. romimage.dll includes functions for creating and managing the Allocator class hierarchy and multiple Allocators, creating and managing the File class hierarchy and lists of files, and functions for performing the steps of the ROMIMAGE / RAMIMAGE partition building process. .

Allocator 클래스 계층 구조는 RAM 및 FLASH에서의 이용 가능한 물리적 공간을 관리하는데 사용된다. 이는 임의적인 할당들 및 고정적인 유보들(fixed reservations) 모두를 수행하기 위한 기능을 나타낸다. Allocator 클래스(및 자식 AllocNode)는 다음과 같이 정의된다.The Allocator class hierarchy is used to manage the physical space available in RAM and FLASH. This represents the ability to perform both arbitrary assignments and fixed reservations. The Allocator class (and child AllocNode) is defined as follows:

romimage.dll은 Allocator들을 조작하는 다음의 함수들을 수출한다.romimage.dll exports the following functions for manipulating Allocators.

Allocate 함수에 대한 유효한 플래그로는 BOTTOMUP_ALLOC 및 TOPDOWN_ALLOC을 들 수 있다. 이름들에서 알 수 있는 바와 같이, 이들 모두는, 각각 현재 할당 윈도우의 하부 및 상부에서 시작해 자유 공간을 탐색하는 가장 적절한 알고리즘들(first-fit algorithms)이다. 이들은 선형 검색을 요한다(따라서 다수의 할당들이 요청될 경우 성능의 병목 현상이 발생할 수 있다).Valid flags for the Allocate function include BOTTOMUP_ALLOC and TOPDOWN_ALLOC. As can be seen from the names, all of these are the first-fit algorithms, which search for free space starting at the bottom and top of the current allocation window, respectively. They require a linear search (so performance bottlenecks can occur when multiple allocations are requested).

File 클래스는 파일 또는 모듈에 관한 모든 메타데이터를 저장하는데 사용되며 다음과 같이 정의된다.The File class is used to store all metadata about a file or module and is defined as follows:

파일을 구축하고 있는 데스크탑 컴퓨터에서, 각 파일의 컨텐츠는 메모리-매핑되며 File 및 Section 클래스들의 데이터 멤버들에 의해 포인팅된다. File 클래스 계층 구조를 조작하기 위해 다음의 데이터 구조가 정의된다.On the desktop computer building the file, the contents of each file are memory-mapped and pointed to by the data members of the File and Section classes. The following data structure is defined to manipulate the File class hierarchy.

RAMIMAGE/ROMIMAGE 파티션들을 구축하기 위해 다음의 함수가 제공되는데,The following functions are provided for building RAMIMAGE / ROMIMAGE partitions.

HRESULT BuildNKPartition(HANDLE hFile List,HRESULT BuildNKPartition (HANDLE hFile List,

HANDLE hVolume,        HANDLE hVolume,

HANDLE hSlot0Alloc,        HANDLE hSlot0Alloc,

HANDLE hSLot1Alloc,        HANDLE hSLot1Alloc,

HANDLE hPhysAlloc,        HANDLE hPhysAlloc,

HANDLE hRAMAlloc,        HANDLE hRAMAlloc,

DWARD dwReserved);        DWARD dwReserved);

여기서,here,

hFileList는 FileList 오브젝트로의 핸들이고 - FileList 오브젝트들의 생성은 다음 섹션에서 논의된다; hFileList is a handle to a FileList object-the creation of FileList objects is discussed in the next section;

hVolume은, 파티션 생성 동안에 DskImage에 의해 생성된 MSPart 볼륨으로의 핸들이며;hVolume is a handle to the MSPart volume created by DskImage during partition creation;

hSlot0Alloc은 0x600000으로 시작하는 길이 0x1A00000 할당자로의 핸들이고;hSlot0Alloc is a handle to length 0x1A00000 allocator starting with 0x600000;

hSlot1Alloc은 0x210000으로 시작하는 길이 0x1F00000 할당자로의 핸들이며hSlot1Alloc is a handle to the length 0x1F00000 allocator starting with 0x210000.

hPhyAlloc은 물리적 할당자(ROMIMAGE 파티션들에 대한 플래시 파트, RAMIMAGE 파티션들에 대한 RAM)이고;hPhyAlloc is the physical allocator (flash part for ROMIMAGE partitions, RAM for RAMIMAGE partitions);

hRAMAlloc은, memory.cfg.xml의 RAM 소자에 대응되는 RAM 할당자이며;hRAMAlloc is a RAM allocator corresponding to the RAM element of memory.cfg.xml;

dwReserved는, 다음과 같이 정의된 MiscNKInfo 구조로의 포인터이다.dwReserved is a pointer to the MiscNKInfo structure defined as follows:

typedef struct _MiscNKInfotypedef struct _MiscNKInfo

{{

USHORT cbSize;USHORT cbSize;

USHORT usCPUType;USHORT usCPUType;

DWORD dwROMFlags;DWORD dwROMFlags;

DWORD dwFSRAMPercent;DWORD dwFSRAMPercent;

BOOL fCompressPartitionBOOL fCompressPartition

} MiscNKInfo;} MiscNKInfo;

모듈들 및 파일들의 리스트를 구축하고 정렬하기 위해, (도 8의 단계 801), Romimage.dll은 파일들 및 모듈들의 링크된 다수 리스트들을 관리한다. 리스트를 구축하기 위해, Romimage.dll은 다음의 함수들을 제공한다.To build and sort the list of modules and files (step 801 of FIG. 8), Romimage.dll manages a linked multiple list of files and modules. To build the list, Romimage.dll provides the following functions.

HRESULT CreateFileList(PHANDLE phFileList);HRESULT CreateFileList (PHANDLE phFileList);

HRESULT DestroyFileList(HANDLE hFileList);HRESULT DestroyFileList (HANDLE hFileList);

HRESULT AddFileToList(HANDLE fFileList,HRESULT AddFileToList (HANDLE fFileList,

wchar_t *szFileName,        wchar_t * szFileName,

DWORD dwFlags,        DWORD dwFlags,

wchar_t *szPathToFile,        wchar_t * szPathToFile,

BOOL fLoadData,        BOOL fLoadData,

PHANDLE phFile);        PHANDLE phFile);

File 오브젝트를 하나의 파일 리스트에서 다른 것으로 이동시키기 위한 API가 존재할 수도 있다. 이러한 함수는 다음의 형태일 수 있다.There may be APIs for moving File objects from one file list to another. Such a function may be of the form

HRESULT SpliceFile(HANDLE hSrcList,HRESULT SpliceFile (HANDLE hSrcList,

HANDLE hDstList,        HANDLE hDstList,

HANDLE hFile);        HANDLE hFile);

가상 어드레스 공간을 모듈들에 할당하기 위해, (도 8의 단계 802), Slot 0/1 가상 어드레스 할당은 FileList, Slot 0에 대한 Allocator, 및 Slot 1에 대한 Allocator를 요한다. FileList는 이미 적당한 순서로 정렬되어 있을 수 있으며, 그 다음, 내장 DoVAAlloc 방법은 다음의 논리에 따라 할당을 수행해야 한다. To allocate the virtual address space to the modules (step 802 of FIG. 8), Slot 0/1 virtual address assignment requires a FileList, an Allocator for Slot 0, and an Allocator for Slot 1. The FileList may already be sorted in the proper order, and then the built-in DoVAAlloc method should perform the assignment according to the following logic.

/// DoVAAlloc으로 전달된 핸들들에 의해 참조되는 FileList 및 Allocator들을 찾기/// find FileList and Allocators referenced by handles passed to DoVAAlloc

/// FileList의 각 File에 대해 이들 컴포넌트들 중 어떤 것도 발견되지 않으면 오류/// error if none of these components is found for each File in the FileList

/// {/// {

/// File이 커널 또는 커널 모듈인가?/// Is File a kernel or kernel module?

/// {/// {

/// 나중을 위해 저장 - 후속 File로 진행/// save for later-proceed to subsequent file

/// }///}

/// File이 슬롯 1 DLL인가?/// Is the file a slot 1 DLL?

/// {/// {

/// 슬롯 1 코드 할당 수행/// perform slot 1 code assignment

/// 할당이 실패하면 슬롯 0로 이동/// go to slot 0 if allocation fails

/// 슬롯 0 데이터 할당 수행/// perform slot 0 data allocation

/// 할당이 실패하면 오류/// error if allocation fails

/// }///}

/// File이 슬롯 0 DLL인가?/// Is the file a slot 0 DLL?

/// }///}

/// 슬롯 0 코드 할당 수행/// perform slot 0 code assignment

/// 할당이 실패하면 오류/// error if allocation fails

/// 슬롯 0 데이터 할당 수행/// perform slot 0 data allocation

/// 할당이 실패하면 오류/// error if allocation fails

/// }///}

/// File이 단지 File인가?/// Is File just a File?

/// {/// {

/// 아무 것도 수행하지 않음 - 후속 File로 진행/// do nothing-proceed to subsequent file

/// }///}

/// }///}

모듈 수정들은, 도 8의 단계 803으로 나타낸 바와 같이, 커널 모듈들을 제외한 모든 것에 대해 수행된다. 이를 위해, FileList 클래스에 다음 함수가 제공된다.Module modifications are performed for everything except kernel modules, as indicated by step 803 of FIG. 8. To do this, the following function is provided in the FileList class:

HRESULT DoVAFixups(BOOL fReverse);HRESULT DoVAFixups (BOOL fReverse);

fReverse 인수는, 모듈이 수정되어야 하는지 또는 그것의 원래 값으로 되돌려져야 하는지를 특정한다. 이러한 기능은 장치측 업데이트 애플리케이션에 의해 요청되지만, 파일을 구축 중인 데스크탑 컴퓨터에서는, fReverse가 항상 FALSE일 것이다(호출자는 파일 리스트를 특정하기만 하면 된다). 이전의 romimage.exe는 .rel 파일을 통해 반복되고 한번에 전체 모듈을 수정했지만, 컴포넌트화된 업데이트에서는, "섹션의 특정 페이지만을 수정하는 능력"이 필요하다. Module 클래스의 FixupBlob 함수는 임의 포인터를 모듈 데이터로 넘기는 것을 지원하며, creloc 섹션을 통해 반복하고 그 데이터에 적용되는 수정들만을 발견하는 것에 의해 그것을 수정한다. 디스크 이미지 유틸리티(230)는 모듈 섹션 당 1회씩 그것을 호출한다. 장치측 업데이트 애플리케이션은, 그것이 재구성하는 각각의 bandiff 페이지 이후에 그것을 호출할 것이다. 이 시점에서, 모듈에 대한 재배치 정보는 모듈 내에(.creloc 섹션에) 저장된다. 따라서, 장치측 업데이트를 위해, 필요한 정보는 모듈에 자체적으로 포함되어 있으므로, 더 이상의 반복은 불필요하다.The fReverse argument specifies whether the module should be modified or returned to its original value. This functionality is requested by the device-side update application, but on desktop computers building files, fReverse will always be FALSE (caller only needs to specify a list of files). Previously, romimage.exe was iterated through a .rel file and modified the entire module at once, but with a componentized update, "the ability to modify only certain pages in a section" is needed. The FixupBlob function in the Module class supports passing arbitrary pointers to module data, modifying it by iterating through the creloc section and finding only the fixes that apply to that data. Disk image utility 230 calls it once per module section. The device-side update application will call it after each bandiff page it reconfigures. At this point, relocation information for the module is stored within the module (in the .creloc section). Thus, for device-side updates, the necessary information is included in the module itself, so no further repetition is necessary.

도 8의 단계 808에서 물리적 레이아웃이 수행되기 전에, 모듈 데이터 섹션들은 도 8의 단계 804에 나타낸 바와 같이 압축된다. 디스크 이미지 유틸리티(230)는, ROMIMAGE 및 RAMIMAGE 파티션들이 그 자리에서의 실행을 의도하기 때문에, 모듈들의 코드 섹션들에 대한 압축을 지원하지 않는다. 그러나, 원한다면, 코드 압축은 쉽게 추가될 수 있다.Before the physical layout is performed in step 808 of FIG. 8, the module data sections are compressed as shown in step 804 of FIG. 8. Disk image utility 230 does not support compression of code sections of modules because ROMIMAGE and RAMIMAGE partitions are intended to be executed in place. However, if desired, code compression can be easily added.

압축을 위해 FileList 클래스에 다음 함수가 제공된다.The following functions are provided in the FileList class for compression.

HRESULT DoCompression();HRESULT DoCompression ();

DoCompression이 특정 FileList에 대해 반복되며 커널 모듈들을 제외한 모든 데이터 섹션들을 압축한다. Section 클래스에 저장되어 있는 o32rom 헤더의 psize 멤버는 압축된 데이터 길이를 반영하도록 업데이트된다. 임의의 적당한 압축 알고리즘이 사용될텐데, 예를 들어, 현재의 romimage.exe 일 구현은 압축 해제에 대해 최적화되어 있는 알고리즘을 사용한다. 그러나, 장치측 업데이트 애플리케이션에 의해 romimage.dll이 사용되므로, 다른 알고리즘들이 대신 사용될 수도 있다.DoCompression repeats for a particular FileList and compresses all data sections except kernel modules. The psize member of the o32rom header stored in the Section class is updated to reflect the compressed data length. Any suitable compression algorithm would be used, for example one current romimage.exe implementation uses an algorithm that is optimized for decompression. However, since romimage.dll is used by the device side update application, other algorithms may be used instead.

일단 데이터 섹션들이 압축되고 나면, 이 처리는 물리적 레이아웃을 수행하는데 필요한 정보를 가진다. 이를 위해, FileList 클래스에 다음 함수가 제공된다.Once the data sections are compressed, this process has the information needed to perform the physical layout. To do this, the following function is provided in the FileList class:

HRESULT DoPhysicalLayout(Allocator &Alloc)HRESULT DoPhysicalLayout (Allocator & Alloc)

도 8의 단계 805는 파티션들을 출력하는 것을 나타낸다. ROMIMAGE 파티션들의 경우, 관련된 FLASH 파트의 Allocator가 사용된다. 이 파티션의 시작 위치는 조회 중인 MSPart에 의해 판정된다. RAMIMAGE 파티션들의 경우, 물리적 레이아웃을 위한 RAM Allocator가 사용된다. 이 파티션의 시작 위치는 파티션의 RAMIMAGE 소자에 대한 FIXUP_ADDRESS 속성에 의해 판정된다.Step 805 of FIG. 8 shows outputting partitions. For ROMIMAGE partitions, the Allocator of the associated FLASH part is used. The starting position of this partition is determined by the MSPart being queried. For RAMIMAGE partitions, a RAM Allocator for the physical layout is used. The starting position of this partition is determined by the FIXUP_ADDRESS attribute for the RAMIMAGE element of the partition.

DoPhysicalLayout은 가장 적절한 알고리즘을 사용하며 FileList의 컨텐츠를 통해 다음 순서로 반복한다.DoPhysicalLayout uses the most appropriate algorithm and iterates through the contents of the FileList in the following order:

1. (페이지 정렬된) 코드 섹션들1. Code sections (page aligned)

2. (.creloc 및 모든 파일들을 포함하는) 데이터 섹션들2. Data sections (including .creloc and all files)

3. (모든 TOC 엔트리들을 포함하는) TOC(table of contents)3. A table of contents (including all TOC entries)

4. 모든 e32 헤더들4. All e32 headers

5. 모든 o32 헤더 블록들5. All o32 header blocks

6. 카피 섹션 블록6. Copy section block

7. 파일명들7. File Names

이 단계 동안, 대다수의 TOC들이 생성된다. 모듈 헤더들의 물리적 위치를 저장하기 위한 장소를 위해 이것이 필요하다. TOC를 생성하는 것에 의해, 모듈 헤더들이 레이아웃되기 때문에, 이 메타데이터를 보유하기 위해 또 다른 데이터 구조를 생성할 필요가 없어진다. During this phase, the majority of TOCs are generated. This is necessary for a place to store the physical location of the module headers. By generating the TOC, since the module headers are laid out, there is no need to create another data structure to hold this metadata.

카피 섹션들(도 8의 단계 807) 및 kdata에 대한 공간을 할당하기 위해, RAM Allocator가 사용된다. 이 단계는 ROMIMAGE 파티션들에 대해 먼저 수행될 수 있지만, ROMIMAGE 및 RAMIMAGE 처리들을 가능한 유사하게 유지하기 위해 그렇게 하지 않는다. 슬롯 0/1 할당과 마찬가지로, FileList 클래스에 하나의 함수가 제공된다.To allocate space for copy sections (step 807 of FIG. 8) and kdata, a RAM Allocator is used. This step may be performed for ROMIMAGE partitions first, but not to keep the ROMIMAGE and RAMIMAGE processes as similar as possible. As with slot 0/1 allocation, a function is provided in the FileList class.

HRESULT DoCopySectionAlloc(Allocator %Alloc);HRESULT DoCopySectionAlloc (Allocator% Alloc);

일단 이 단계가 완결되고 나면, 이 처리는 pToc의 RAMStart, RAMFree, 및 RAMEnd 속성들을 채울 수 있다. Once this step is complete, this process can populate the pToc's RAMStart, RAMFree, and RAMEnd attributes.

카피 섹션들이 할당되고 나면, 도 8의 단계 806으로 나타낸 바와 같이, 커널 및 커널 모듈들이 수정된다. 슬롯 0/1 수정과 마찬가지로, FileList 클래스에 다음 함수가 제공된다. Once the copy sections have been allocated, the kernel and kernel modules are modified, as indicated by step 806 of FIG. As with slot 0/1 modification, the following function is provided in the FileList class:

HRESULT DoKernelVAFixups(BOOL fReverse);HRESULT DoKernelVAFixups (BOOL fReverse);

DoKernelVAFixups는 커널 모듈들의 리스트를 통해 반복되며, 각각의 모듈 오브젝트에 대한 DoKernelFixups 방법을 호출하는 것에 의해 필요한 수정들을 수행한다.DoKernelVAFixups iterates through the list of kernel modules and performs the necessary modifications by calling the DoKernelFixups method for each module object.

이 시점에서, 모든 것이 수정되며 물리적 할당들은 이미 수행되었다. 디스크 이미지 유틸리티(230)는 이미 MSPart와 통신했으며 데이터를 추구하는 파티션으로의 핸들을 가진다. 최종적인 이미지를 출력하기 위해, 파티션들을 기입하는 함수가 제공된다.At this point, everything is modified and the physical allocations have already been made. Disk image utility 230 has already communicated with the MSPart and has a handle to the partition seeking data. In order to output the final image, a function for writing partitions is provided.

HRESULT DoWriteNKPartition(HVOL hVolume, Allocator &Alloc);HRESULT DoWriteNKPartition (HVOL hVolume, Allocator &Alloc);

RAMIMAGE 및 ROMIMAGE 파티션들에 대해, DoWriteNKPartition은, 디스크 이미지 유틸리티(230) 자체가 BINARY 파티션들을 핸들링하는 방법과 유사하게, RAM에서의 파티션에 대한 표현을 생성한 다음 그 메모리 블록을 하나의 파일로 출력한다. 기입할 때, RESERVE 영역들을 건너뛰어야 하는 ROMIMAGE 파티션들을 위해 Alloc 인수가 필요하다.For RAMIMAGE and ROMIMAGE partitions, DoWriteNKPartition generates a representation of a partition in RAM and then outputs that memory block to a file, similar to how disk image utility 230 itself handles BINARY partitions. . When writing, the Alloc argument is required for ROMIMAGE partitions that must skip the RESERVE areas.

RAMIMAGE 파티션들에 대한 물리적 레이아웃은 RAM Allocaor를 사용하는 반면, ROMIMAGE 파티션들에 대한 물리적 레이아웃은 부모 플래시 파트의 Allocator를 사용한다는 것을 포함하여, ROMIMAGE와 RAMIMAGE 파티션들간에는 비교적 작은 차이들만이 존재한다. 또한, 플래시 파트에 충분한 공간이 없을 수도 있기 때문에, RAMIMAGE 파티션들에 대한 DoWriteNKPartition이 실패할 수도 있다. ROMIMAGE 파티션들은 부모 플래시 파트의 Allocator를 사용하므로, DoWriteNKPartition이 ROMIMAGE 파티션들에 대해서는 결코 실패하지 않는다. 관리형 dskimage.exe가 비관리형 romimage.dll로의 호들을 형성하는 구현이 C 및 C# 모두에서 가능할 수 있다.While the physical layout for RAMIMAGE partitions uses the RAM Allocaor, there are only relatively small differences between ROMIMAGE and RAMIMAGE partitions, including the physical layout for ROMIMAGE partitions using the Allocator of the parent flash part. Also, because there may not be enough space in the flash part, the DoWriteNKPartition for the RAMIMAGE partitions may fail. Since ROMIMAGE partitions use the Allocator of the parent flash part, DoWriteNKPartition never fails for ROMIMAGE partitions. An implementation in which managed dskimage.exe forms calls to unmanaged romimage.dll may be possible in both C and C #.

디스크 이미지 유틸리티(230)는, _FLATRELEASEDIR\DskImage\Partition에서의 목록(DSM) 파일을 통해 반복하여 DSM 엔트리들(및 DSM 파일 자체)을, romimage.dll이 처리할 FileList에 부가하는 것을 담당한다. ROMIMAGE 파티션들의 경우, 디스크 이미지 유틸리티(230)는 MSPart로 호출되어 물리적 레이아웃을 시도하기 전에 새로운 파티션을 생성한다(RAMIMAGE의 경우, 디스크 이미지 유틸리티(230)는 언제든 파티션을 생성할 수 있다). 파티션이 출력된 후, 디스크 이미지 유틸리티(230)는, 상술한 바와 같이, 그것을 리사이징한다. 다른 동작들은 romimage.dll에 의해 핸들링된다.The disk image utility 230 is responsible for iterating through the list (DSM) file in _FLATRELEASEDIR_DskImage_Partition to add DSM entries (and the DSM file itself) to a FileList for romimage.dll to process. For ROMIMAGE partitions, disk image utility 230 creates a new partition before it is called into MSPart to attempt a physical layout (in RAMIMAGE, disk image utility 230 can create a partition at any time). After the partition is output, the disk image utility 230 resizes it, as described above. Other operations are handled by romimage.dll.

상술한 바와 같이, 구축된 또 하나의 패키지 파티션 타입은 IMGFS이다. 이것은, Windows CE 커널에 의해 부여된 제한 사항들로 인해 RAMIMAGE/ROMIMAGE 영역들에 대한 할당이 먼저 발생해야 한다는 것을 포함하여, 여러가지 이유로 인해 다른 것들 다음에 구축되는데, IMGFS 파티션들은 NOR에 대한 SectorInfo를 요한다. 예시적인 NOR 플래시 미디어 드라이버는, SectorInfo를 포함하는 파티션들이 SectorInfo가 없는 것들 다음에 오도록 플래시가 조직되어 있다고 가정한다. IMGFS 파티션 구축시의 단계들은 ROMIMAGE/RAMIMAGE 파티션들에 대한 단계들과 유사하다. 다음의 단계들은 실질적으로 ROMIMAGE/RAMIMAGE 파티션 생성기로부터 재활용된다.As mentioned above, another package partition type built is IMGFS. This is built after others for a variety of reasons, including the allocation of RAMIMAGE / ROMIMAGE areas first because of the limitations imposed by the Windows CE kernel. IMGFS partitions require SectorInfo for the NOR. . The example NOR flash media driver assumes that the flash is organized so that partitions containing SectorInfo follow those without SectorInfo. The steps in building an IMGFS partition are similar to the steps for ROMIMAGE / RAMIMAGE partitions. The following steps are substantially recycled from the ROMIMAGE / RAMIMAGE partition generator.

모듈들 및 파일들의 리스트 구축 및 정렬;Building and sorting lists of modules and files;

모든 모듈들에 가상 어드레스 공간 할당;Allocating virtual address space to all modules;

모듈 수정들의 수행; 및Performing module modifications; And

실제 파티션 출력Physical partition output

IMGFS에 대한 물리적 레이아웃은 IMGFS 및 MSPart에 의해 핸들링된다. RAMIMAGE/ROMIMAGE 파티션들과 마찬가지로, IMGFS 파티션들을 기입하기 위한 BuildIMGFSPartition API가 존재한다.The physical layout for IMGFS is handled by IMGFS and MSPart. Like the RAMIMAGE / ROMIMAGE partitions, there is a BuildIMGFSPartition API for writing IMGFS partitions.

HRESULT BuildIMGFSPartition(HRESULT BuildIMGFSPartition (

HANDLE hFileList,        HANDLE hFileList,

HANDLE hVolume,        HANDLE hVolume,

HANDLE hSlot0Alloc,        HANDLE hSlot0Alloc,

HANDLE hSlot1Alloc,        HANDLE hSlot1Alloc,

DWORD dwReserved);        DWORD dwReserved);

특정된 Slot 0 및 Slot 1 할당자들은 RAMIMAGE/ROMIMAGE 파티션을 구축하기 위해 먼저 사용된 것들과 동일할 것으로 기대된다.The specified Slot 0 and Slot 1 allocators are expected to be the same as those used earlier to build the RAMIMAGE / ROMIMAGE partition.

IMGFS는 압축을 담당한다. 디폴트로, File들 및 Module 데이터 섹션들이 압축된다. IMGFS is responsible for compression. By default, the Files and Module data sections are compressed.

IMGFS 파티션은 커널 모듈들(ce.bib에 K 플래그를 가진 모듈들)을 포함할 수 없다. 따라서, VA 할당을 수행하기 전에, BuildIMGFSPartition은, 특정 FileList가 임의의 커널 모듈들을 포함하지 않는다는 것을 확인한다.IMGFS partitions cannot contain kernel modules (modules with the K flag in ce.bib). Thus, before performing VA allocation, the BuildIMGFSPartition verifies that a particular FileList does not contain any kernel modules.

그 다음, 다음의 FileList 멤버 함수들이 호출된다.Next, the following FileList member functions are called.

1. DoVAAlloc1.DoVAAlloc

2. DoVAFixups2. DoVAFixups

3. DoWriteIMGFSPartition (도 9)3.DoWriteIMGFSPartition (Figure 9)

도 9에 대략적으로 도시한 바와 같이, 모듈 수정들을 수행한 후에, 이 처리는 특정 FileList를 통해 반복하여(단계 900 및 단계 918), 각 엔트리에 대해 IMGFS의 새로운 파일을 생성한다. 현재의 리스트 항목이 모듈이면(단계 902), 섹션 단위로 처리된다(단계 904 내지 단계 912). 그렇지 않으면, 파일이 생성되고(단계 914) 데이터가 기입된다(단계 916).As shown roughly in Figure 9, after performing module modifications, this process iterates through the particular FileList (step 900 and step 918), creating a new file of IMGFS for each entry. If the current list item is a module (step 902), it is processed in sections (steps 904 to 912). Otherwise, a file is created (step 914) and data is written (step 916).

구축된 또 하나의 파티션 타입은, 실질적으로 사용자가 원하는 임의 타입의 파일 시스템인 USERSTORE이다. 이것은 이상적으로 FAT 또는 확장된 파티션들(PART_TYPE들 0x04 및 0x05)을 위해 설계된다. 현재의 일 구현에서, memorycfg.xsd는 사용자들에게 USERSTORE에 대한 길이를 특정할 수 있도록 허용하지 않기 때문에, 이 파티션은 나머지 플래시를 확장한다. USERSTORE를 구축하기 위해, 이 처리는 특정 PART_TYPE의 파티션을 생성하기 위한 FSDMGR로 호출되며, 플래시 파트상의 나머지 공간을 사용할 것을, 즉, 자동-크기 조정되어야 한다는 것을 FSDMGR에 지시한다(그에 따라, 일 구현에서는, 플래시 파트 당 하나의 USERSTORE라는 제한이 존재한다). Another partition type built is USERSTORE, which is virtually any type of file system the user wants. This is ideally designed for FAT or extended partitions (PART_TYPEs 0x04 and 0x05). In one current implementation, memorycfg.xsd does not allow users to specify the length for USERSTORE, so this partition extends the rest of the flash. To build a USERSTORE, this process is called with FSDMGR to create a partition of a particular PART_TYPE, instructing FSDMGR to use the remaining space on the flash part, i.e. auto-sized. , There is a limit of one USERSTORE per flash part).

후행 처리Post-processing

본 발명의 일 태양에 따르면, 완결될 경우, 디스크 이미지 유틸리티는, 상이한 파일 시스템들에 대응되는 하나 이상의 파티션들을 포함하는 하나의 파일(206)을 구축(예를 들어, 데스크탑) 시스템상에 생성한다. 이들 파티션 내에, 실행가능 모듈들이 가상 어드레스 공간에서 적절하게 수정된 패키지들의 컨텐츠가 설치될 것이다. 이 시점에서, 사용자에게는 하드웨어의 소정 특징들, 즉, RAM 및 저장 공간 위치들(어드레스들), 그들의 사이즈들, 및 저장 공간이 선형인지 아니면 블록-기반인지가 지시되어 있을 뿐이다. 플래시가 NOR 플래시인지 NAND 플래시인지, 아니면 하드 디스크 드라이브인지 어떠한 다른 타입의 저장 공간인지에 대한 특징은 아직 특정되지 않았다. 저장 기술은, 그것이 관리되는 방법에 따라, 이미지에 영향을 줄 수 있다. According to one aspect of the invention, when complete, the disk image utility creates one file 206 on a build (eg, desktop) system that includes one or more partitions corresponding to different file systems. . Within these partitions, the contents of packages whose executable modules have been modified in the virtual address space will be installed. At this point, the user is only instructed that certain features of the hardware, that is, RAM and storage space locations (addresses), their sizes, and whether the storage space is linear or block-based. Whether the flash is a NOR flash, a NAND flash, a hard disk drive, or any other type of storage space is not yet specified. The storage technology can affect the image, depending on how it is managed.

예를 들어, 플래시 저장 공간은 통상적으로, 도 10a 및 도 10b에 대략적으로 나타낸 바와 같이, 블록들로 분할되며 페이지들 또는 섹터들로 추가 분할된다. 이들 서브-컴포넌트 각각의 사이즈, 저장 기술이 각각을 (예를 들어, 수치적으로) 식별하는 방식, 및 각각의 페이지 또는 섹터에 대한 불량/유보/판독가능 상태가 관리되는 방식은 저장-기술 특정이다. For example, flash storage space is typically divided into blocks and further divided into pages or sectors, as shown approximately in FIGS. 10A and 10B. The size of each of these sub-components, the manner in which the storage technology identifies each (e.g. numerically), and the manner in which the bad / reserved / readable state for each page or sector is managed are storage-technology specific. to be.

후행 처리 단계의 목적은 이러한 관리 정보를, 디스크 이미지 유틸리티로의 입력 파일들에서 특정된 바와 같은, 이미지 레이아웃의 요구사항들을 위반하지 않는 방식으로 이미지에 도입하는 것이다. 예를 들어, 파티션들 중 하나가 NOR 플래시에서 실행된다면, 이것이 CPU 페이지 증분치로 CPU에 매핑될 수 있어야 하며 저장 관리 요구사항들로 인해 이것이 변경될 수 없다는 것을 특정하는 CPU 요구사항들이 존재한다.The purpose of the post processing step is to introduce this management information into the image in a manner that does not violate the requirements of the image layout, as specified in the input files to the disk image utility. For example, if one of the partitions runs in NOR flash, there are CPU requirements that specify that this should be able to be mapped to the CPU in CPU page increments and that this cannot be changed due to storage management requirements.

디스크 이미지 유틸리티(230) 도구의 후행 처리 단계는 MSPart-생성형 NB0 파일들에 대한 저장 하드웨어-특정 조정들을 형성하는데 사용된다. 예를 들어, 도 10a에 나타낸 바와 같이, NAND 플래시는, 섹터가 별개의 공간이라는 것과 함께 섹터 정보(각 섹터에 대한 메타데이터 m)를 가진다. 그러나, NOR 하드웨어는, 각 블록의 나머지 섹터에 포함되어 있는 4-섹터 블록의 3개 섹터들에 대한 메타데이터(m)에 의해 도 10b에 대략적으로 나타낸 바와 같이, 각 섹터에 대한 블록 내에 SectorInfo를 포함하도록 IMGFS 파티션을 변경해야 한다. 블록을 정렬하기 위해, 도 10b에 음영 영역으로 나타낸 바와 같이, 일부 공간이 사용되지 않을 수 있다. 쌍으로 된 플래시로 장치를 제조하는 경우 또한, NB0를 각 플래시 파트에 대한 별개의 파일들로 구별하고자 할 수 있다.The post processing step of the disk image utility 230 tool is used to form storage hardware-specific adjustments to the MSPart-generated NB0 files. For example, as shown in FIG. 10A, a NAND flash has sector information (metadata m for each sector) with sectors being separate spaces. However, the NOR hardware uses the SectorInfo in the block for each sector, as shown approximately in FIG. 10B by the metadata m for the three sectors of the 4-sector block contained in the remaining sectors of each block. You must change the IMGFS partition to include it. To align the blocks, some space may not be used, as indicated by the shaded areas in FIG. 10B. When manufacturing a device with a paired flash, one may also want to distinguish NB0 into separate files for each flash part.

후행 처리기(232;도 2, 예를 들어, postproc.exe)는 memory.cfg.xml의 임의 NOR 플래시 소자들상의 디스크 이미지 유틸리티(230)에 의해 자동적으로 실행될 수 있다. NOR 소자의 ID, VASTART, BLOCKSIZE, 및 SECTORSIZE 속성들이 주어지면, 후행 처리기는 ID.nb0.postproc 및 ID.bin을 출력한다. 디스크 이미지 유틸리티(230) 출력의 추가적인 후행 처리를 위해, 사용자(예를 들어, OEM)는, 디스크 이미지 유틸리티(230) 처리가 완결될 때 buildpkg 스크립트에 의해 호출될 postdiskimage.bat 파일을 생성할 수 있다.Post processor 232 (FIG. 2, for example postproc.exe) may be automatically executed by disk image utility 230 on any NOR flash elements of memory.cfg.xml. Given the ID, VASTART, BLOCKSIZE, and SECTORSIZE attributes of the NOR element, the post processor outputs ID.nb0.postproc and ID.bin. For further post processing of the disk image utility 230 output, the user (eg, an OEM) may create a postdiskimage.bat file to be called by the buildpkg script when the disk image utility 230 processing is complete. .

동작시에, 후행 처리기(232)는 NB0를 열어 마스크 부트 레코드를 탐색하며, 그 안의 데이터를 사용해 IMGFS 파티션을 배치한다. 그 다음, 후행 처리기(232)는, (예를 들어, NOR) 블록 드라이버가 인지할 수 있는 포맷의 섹터 데이터를 각 섹터에 부가한다. 또한, USERSTORE가 존재한다면, 섹터 데이터가 IMGFS에 부가된 후에는 더 이상 플래시 블록의 시작에 대응될 수 없기 때문에, 후행 처리기(232)는 USERSTORE의 시작을 이동시키고 변경된 NB0를 저장한다. 후행 처리기(232)는 변경된 NB0를 레가시 부트 로더들(legacy bootloaders)에 대한 이진 파일로 추가 변환할 수 있다. In operation, post processor 232 opens NB0 to retrieve the mask boot record and uses the data therein to place the IMGFS partition. Subsequent processor 232 then adds sector data in a format that can be recognized by the block driver (e.g., NOR) to each sector. Also, if USERSTORE exists, post processor 232 moves the start of USERSTORE and stores the changed NB0 since sector data can no longer correspond to the start of the flash block after it has been added to IMGFS. The post processor 232 may further convert the changed NB0 into a binary file for legacy bootloaders.

본 발명이 다양한 변경들 및 다른 구성들로 변경될 수도 있지만, 본 발명에 관한 소정의 예시적 실시예들을 도면들에 도시하였으며 상술하였다. 그러나, 본 발명을 개시되어 있는 특정 형태로 한정하려는 것이 아님을 알 수 있으며, 오히려, 본 발명의 정신 및 범위 내에 해당되는 모든 변경들, 다른 구성들, 및 등가물들을 커버하려는 의도이다.While the present invention may be modified in various changes and other configurations, certain exemplary embodiments of the invention have been shown in the drawings and described above. It is to be understood, however, that the intention is not to limit the invention to the particular forms disclosed, but rather, to cover all modifications, other configurations, and equivalents falling within the spirit and scope of the invention.

이상의 상세한 설명으로부터 알 수 있는 바와 같이, 오퍼레이팅 시스템 이미지 컴포넌트들을 파일 시스템-기반의 제조 이미지로 변환하는 메커니즘이 제공된다. 이미지 파일은 임의의 특정 저장 기술과 무관하며, 장치의 컴포넌트화된 업데이트를 용이하게 하는 동시에, 초기 이미지로 사용하기에 적합하다. As can be seen from the above detailed description, a mechanism is provided for converting operating system image components into file system-based manufacturing images. The image file is independent of any particular storage technology and facilitates componentized updating of the device while being suitable for use as the initial image.

도 1은 본 발명이 통합될 수 있는 컴퓨터 시스템을 대략적으로 나타내는 블록도이다.1 is a block diagram schematically illustrating a computer system in which the present invention may be incorporated.

도 2는, 본 발명의 일 태양에 따른, 내장 장치 또는 다른 매체에 이미지로서 기입하기 위한 데이터를 포함하는 상이한 파티션들이 구축되어 있는 출력 파일을 나타내는 블록도이다.FIG. 2 is a block diagram illustrating an output file in which different partitions are constructed that contain data for writing as an image on an embedded device or other medium, in accordance with an aspect of the present invention.

도 3은, 본 발명의 일 태양에 따른, 출력 파일을 구성하는데 사용되는 다양한 컴포넌트들을 나타내는 블록도이다.3 is a block diagram illustrating various components used to construct an output file, in accordance with an aspect of the present invention.

도 4는, 본 발명의 일 태양에 따른, 출력 파일을 구성하는 디스크 이미지 유틸리티의 전반적인 흐름을 나타내는 흐름도이다.4 is a flowchart showing the overall flow of a disk image utility constituting an output file, according to one aspect of the present invention.

도 5는, 본 발명의 일 태양에 따른, 메모리 구성 파일의 확인를 위한 논리를 나타내는 흐름도이다.5 is a flow diagram illustrating logic for identifying a memory configuration file, in accordance with an aspect of the present invention.

도 6은, 본 발명의 일 태양에 따른, 패키지 대 파티션 매핑 파일을 확인하고 특정 파티션들을 패키지들에 매칭하는 처리를 나타내는 흐름도이다.6 is a flowchart illustrating a process of identifying a package-to-partition mapping file and matching specific partitions to packages in accordance with an aspect of the present invention.

도 7은, 본 발명의 일 태양에 따른, 플래시 소자들의 처리를 나타내는 흐름도이다.7 is a flowchart illustrating processing of flash elements, in accordance with an aspect of the present invention.

도 8은, 본 발명의 일 태양에 따른, ROM/RAM-기반 파티션들을 구성하는 처리를 나타내는 흐름도이다.8 is a flowchart illustrating a process of configuring ROM / RAM-based partitions, in accordance with an aspect of the present invention.

도 9는, 본 발명의 일 태양에 따른, 시스템 파티션을 기입하는 처리를 나타내는 흐름도이다.9 is a flowchart showing a process of writing a system partition according to an aspect of the present invention.

도 10a 및 도 10b는, 본 발명의 일 태양에 따른 후행 처리에 의해 핸들링됨에 따라, 섹터들 및 블록들이 플래시 메모리에 정렬되는 상이한 방법들을 나타내는 블록도이다.10A and 10B are block diagrams illustrating different ways in which sectors and blocks are aligned to flash memory as handled by a post processing in accordance with one aspect of the present invention.

<도면의 주요 파트에 대한 부호의 설명><Explanation of symbols for main parts of the drawings>

202 : 전체 플래시202: full flash

204 : 이용 가능한 (가상) 플래시204: Available (Virtual) Flash

206 : 기입할 출력 파일206: output file to write

209 : 압축된 UL209: compressed UL

210 : 커널(NK) 파티션 210: kernel (NK) partition

211 : 시스템 파티션 211: system partition

212 : 사용자 저장 공간212: user storage

213 : MBR213: MBR

214 : 이전 장치들상의 기존 부트 로더214: Existing boot loader on older devices

215 : IPL215: IPL

230 : 디스크 이미지 유틸리티230: Disk Image Utility

232 : 후행 처리기232: postprocessor

234 : 패키지들234: Packages

236 : 메모리 구성 파일 236: memory configuration file

238 : SKU 파일238: SKU file

Claims (41)

컴퓨팅 환경에서,In a computing environment, 제 1 저장 매체에 설치하기 위한 이미지 데이터를 포함하는 패키지들에 액세스하는 단계; Accessing packages containing image data for installation in a first storage medium; 상기 패키지의 컨텐츠가 기입될 파티션들에 대한 설명서(description)에 액세스하는 단계; 및Accessing a description of partitions into which the contents of the package will be written; And 출력 파일을 제 2 저장 매체에 생성하는 단계- 상기 출력 파일은 파티션들을 포함하고, 각 패키지의 컨텐츠는 상기 설명서에 기초하여 상기 파티션 중 하나에 저장됨 -를 포함하는 방법.Generating an output file on a second storage medium, the output file comprising partitions, the contents of each package being stored in one of the partitions based on the description. 제 1 항에 있어서,The method of claim 1, 상기 출력 파일 내에서 상기 파티션들 중 하나 이상의 위치를 판정하기 위해 메모리 구성 파일에 액세스하는 단계를 더 포함하는 방법.Accessing a memory configuration file to determine the location of one or more of the partitions in the output file. 제 1 항에 있어서,The method of claim 1, 하나 이상의 패키지 컨텐츠는 오퍼레이팅 시스템 컴포넌트에 대응되고,One or more package contents correspond to operating system components, 상기 파티션들 중 하나는 시스템 파티션을 포함하며,One of the partitions comprises a system partition, 상기 기술에 기초해, 상기 오퍼레이팅 시스템 컴포넌트를 상기 시스템 파티션에 기입하는 단계를 더 포함하는 방법.Based on the technique, further comprising writing the operating system component to the system partition. 제 1 항에 있어서,The method of claim 1, 하나 이상의 패키지 컨텐츠는 커널 컴포넌트에 대응되고,One or more package contents correspond to kernel components, 상기 파티션들 중 하나는 RAM-기반 이미지 파티션을 포함하며,One of the partitions comprises a RAM-based image partition, 상기 기술에 기초해, 상기 커널 컴포넌트를 상기 RAM-기반 이미지 파티션에 기입하는 단계를 더 포함하는 방법.Based on the technique, further comprising writing the kernel component to the RAM-based image partition. 제 1 항에 있어서,The method of claim 1, 상기 하나 이상의 패키지 컨텐츠는 커널 컴포넌트에 대응되고,The one or more package contents correspond to kernel components, 상기 파티션들 중 하나는 ROM-기반 이미지 파티션을 포함하며,One of the partitions comprises a ROM-based image partition, 상기 기술에 기초해, 상기 커널 컴포넌트를 상기 ROM-기반 이미지 파티션에 기입하는 단계를 더 포함하는 방법.Based on the technique, further comprising writing the kernel component to the ROM-based image partition. 제 1 항에 있어서,The method of claim 1, 상기 하나 이상의 패키지 컨텐츠는 업데이트 로더 컴포넌트에 대응되고,The one or more package contents correspond to an update loader component, 상기 파티션들 중 하나는 이진 이미지 파티션을 포함하며,One of the partitions comprises a binary image partition, 상기 기술에 기초해, 상기 업데이트 로더를 상기 이진 이미지 파티션에 기입하는 단계를 더 포함하는 방법.Based on the technique, writing the update loader to the binary image partition. 제 1 항에 있어서,The method of claim 1, 상기 출력 파일을 생성하는 단계는, Generating the output file, 상기 파일의 끝으로 확장하는 파티션에 데이터를 기입하는 단계, 및 Writing data to a partition extending to the end of the file, and 기입된 데이터의 실제량에 기초해, 상기 파티션의 사이즈를 조정하는 단계를 포함하는 방법.Adjusting the size of the partition based on the actual amount of data written. 제 1 항에 있어서,The method of claim 1, 상기 출력 파일을 생성하는 단계는,Generating the output file, 상기 파일의 끝으로 확장하는 파티션에 데이터를 기입하는 단계, Writing data to a partition extending to the end of the file, 기입된 데이터의 끝 이후에 자유 공간 버퍼를 부가하는 단계, 및 Adding a free space buffer after the end of the written data, and 기입된 데이터의 실제량과 상기 자유 공간 버퍼에 기초해, 상기 파티션의 사이즈를 조정하는 단계를 포함하는 방법.And resizing the partition based on the actual amount of data written and the free space buffer. 제 1 항에 있어서,The method of claim 1, 파티션을 정의하기 위해, 상기 파일의 마스터 부트 레코드에 데이터를 기입하는 단계를 더 포함하는 방법.Writing data to a master boot record of the file to define a partition. 제 7 항에 있어서,The method of claim 7, wherein 상기 마스터 부트 레코드에 데이터를 기입하는 단계는 사용자 저장 공간 파티션을 정의하는 단계를 포함하는 방법.Writing data to the master boot record comprises defining a user storage space partition. 제 1 항에 있어서,The method of claim 1, 상기 출력 파일에 추가적인 데이터를 기입하는 단계를 더 포함하는 방법.Writing additional data to the output file. 제 1 항에 있어서,The method of claim 1, 상기 출력 파일에서 상기 제 1 저장 매체로의 데이터 전달을 준비하기 위해 후행 처리를 실행하는 단계를 더 포함하는 방법.Executing post-processing to prepare for data transfer from the output file to the first storage medium. 제 12 항에 있어서,The method of claim 12, 상기 제 1 저장 매체는, 그 안의 코드가 그 자리에서 실행될 수 있는 플래시 메모리를 구비하고,The first storage medium includes a flash memory in which code therein may be executed in place, 상기 방법은 The method is 그 안의 코드가 그 자리에서 실행되도록 상기 파티션들 중 하나 이상을 수정하기 위해, 메모리 구성 파일에 액세스하는 단계를 더 포함하는 방법.Accessing a memory configuration file to modify one or more of the partitions such that code therein is executed in place. 제 1 항에 있어서,The method of claim 1, 상기 제 1 저장 매체의 어떤 섹션들이 유보되는지를 판정하기 위해, 메모리 구성 파일에 액세스하는 단계를 더 포함하는 방법.Accessing a memory configuration file to determine which sections of the first storage medium are reserved. 실행될 경우, 상기 제 1 항의 방법을 수행하는 컴퓨터-실행가능 명령어들을 가진 하나 이상의 컴퓨터-판독가능 매체.One or more computer-readable media having computer-executable instructions that, when executed, perform the method of claim 1. 컴퓨팅 환경에서,In a computing environment, 저장 매체에 설치하기 위한 이미지 데이터를 가진 파티션들을 포함하고 있는 파일에 액세스하는 단계; 및Accessing a file containing partitions having image data for installation on a storage medium; And 특정 저장 기술에 의해 요구되는, 상기 파티션 및 파일 시스템 레이아웃에 대한 임의의 변경들을 도입하기 위해, 상기 파일을 처리하는 단계를 포함하는 방법.Processing the file to introduce any changes to the partition and file system layout as required by a particular storage technology. 제 16 항에 있어서,The method of claim 16, 상기 파일로부터 상기 저장 매체로 상기 특정 저장 기술에 대응되는 데이터를 전달하는 단계를 더 포함하는 방법.Delivering data corresponding to the particular storage technology from the file to the storage medium. 제 16 항에 있어서,The method of claim 16, 상기 출력 파일 내에서 상기 파티션들 중 하나 이상의 위치를 판정하기 위해, 메모리 구성 파일에 액세스하는 단계를 더 포함하는 방법.Accessing a memory configuration file to determine a location of one or more of the partitions in the output file. 제 16 항에 있어서,The method of claim 16, 상기 이미지 데이터는 패키지들에 대응되고,The image data corresponds to packages, 파티션-대-패키지 매핑 파일 및 메모리 구성 파일로부터 상기 파일을 생성하는 단계를 더 포함하는 방법.Generating the file from a partition-to-package mapping file and a memory configuration file. 실행될 경우, 상기 제 17 항의 방법을 수행하는 컴퓨터-실행가능 명령어들을 가진 하나 이상의 컴퓨터-판독가능 매체.One or more computer-readable media having computer-executable instructions that, when executed, perform the method of claim 17. 컴퓨팅 환경에서,In a computing environment, 파티션 정보 및 패키지 정보를 포함하고 있는 파티션-대-패키지 매핑 파일을 입력하는 디스크 이미지 유틸리티 처리- 상기 파일들의 데이터에 기초하여 상기 패키지 정보내의 식별된 패키지를 이용하여 이미지 파일을 출력하고, 상기 이미지 파일은 상기 파티션 정보내에 식별된 다수의 파티션을 포함하며, 각각의 패키지의 컨텐츠는 상기 설명서에 기초하여 상기 파티션들 중 하나에 저장됨 -; 및Disk image utility processing for inputting a partition-to-package mapping file including partition information and package information-outputting an image file using the identified package in the package information based on the data of the files, and outputting the image file. Includes a plurality of partitions identified in the partition information, wherein the contents of each package are stored in one of the partitions based on the description; And 특정 저장 기술에 의해 요구되는, 상기 이미지에 대한 임의 변경들을 도입하기 위해 상기 이미지 파일을 처리하는 후행 처리를 포함하는 시스템.A post processing to process the image file to introduce any changes to the image as required by a particular storage technique. 제 21 항에 있어서,The method of claim 21, 상기 디스크 이미지 유틸리티 처리는, 장치에 대한 저장 공간이 어떻게 구성되는지를 지시하는 데이터를 포함하고 있는 메모리 구성 파일을 더 입력하는 시스템.The disk image utility processing further inputs a memory configuration file containing data indicating how storage space for the device is configured. 제 22 항에 있어서,The method of claim 22, 상기 장치는, 그 안에서 코드가 그 자리에서 실행될 수 있는 메모리를 갖도록 구성되고,The apparatus is configured to have a memory therein in which code can be executed in situ, 상기 파티션들 중 하나 이상을 그 안에서 코드가 그 자리에서 실행되도록 수정하기 위해, 상기 메모리 구성 파일이 액세스되는 시스템.The memory configuration file is accessed to modify one or more of the partitions so that code is executed in place therein. 제 22 항에 있어서,The method of claim 22, 장치 메모리의 어떤 섹션들이 유보되는지를 판정하기 위해, 상기 메모리 구성 파일이 액세스되는 시스템.The memory configuration file is accessed to determine which sections of device memory are reserved. 제 21 항에 있어서,The method of claim 21, 하나 이상의 패키지 컨텐츠는 오퍼레이팅 시스템 컴포넌트에 대응되고,One or more package contents correspond to operating system components, 상기 파티션들 중 하나는 시스템 파티션을 포함하며,One of the partitions comprises a system partition, 상기 디스크 이미지 유틸리티는, 상기 기술에 기초해, 상기 오퍼레이팅 시스템 컴포넌트를 상기 시스템 파티션에 기입하는 시스템.And the disk image utility writes the operating system component to the system partition based on the description. 제 21 항에 있어서,The method of claim 21, 하나 이상의 패키지 컨텐츠는 커널 컴포넌트에 대응되고,One or more package contents correspond to kernel components, 상기 파티션들 중 하나는 RAM-기반 이미지 파티션을 포함하며,One of the partitions comprises a RAM-based image partition, 상기 디스크 이미지 유틸리티는, 상기 기술에 기초해, 상기 커널 컴포넌트를 상기 RAM-기반 이미지 파티션에 기입하는 시스템.And the disk image utility writes the kernel component to the RAM-based image partition based on the description. 제 21 항에 있어서,The method of claim 21, 상기 하나 이상의 패키지 컨텐츠는 커널 컴포넌트에 대응되고,The one or more package contents correspond to kernel components, 상기 파티션들 중 하나는 ROM-기반 이미지 파티션을 포함하며,One of the partitions comprises a ROM-based image partition, 상기 디스크 이미지 유틸리티는, 상기 기술에 기초해, 상기 커널 컴포넌트를 상기 ROM-기반 이미지 파티션에 기입하는 시스템.And the disk image utility writes the kernel component to the ROM-based image partition based on the description. 제 21 항에 있어서,The method of claim 21, 상기 하나 이상의 패키지 컨텐츠는 업데이트 로더 컴포넌트에 대응되고,The one or more package contents correspond to an update loader component, 상기 파티션들 중 하나는 이진 이미지 파티션을 포함하며,One of the partitions comprises a binary image partition, 상기 디스크 이미지 유틸리티는, 상기 기술에 기초해, 상기 업데이트 로더를 상기 이진 이미지 파티션에 기입하는 시스템.And the disk image utility writes the update loader to the binary image partition based on the description. 제 21 항에 있어서,The method of claim 21, 상기 디스크 이미지 유틸리티는 상기 파일의 끝으로 확장하는 파티션에 데이터를 기입하고, 기입된 데이터의 실제량에 기초해, 상기 파티션의 사이즈를 조정하는 시스템.And the disk image utility writes data to a partition extending to the end of the file and adjusts the size of the partition based on the actual amount of data written. 제 21 항에 있어서,The method of claim 21, 상기 디스크 이미지 유틸리티는 상기 파일의 끝으로 확장하는 파티션에 데이터를 기입하고, 기입된 데이터의 끝 이후에 자유 공간 버퍼를 부가하며, 기입된 데이터의 실제량과 상기 자유 공간 버퍼에 기초해, 상기 파티션의 사이즈를 조정하는 시스템.The disk image utility writes data to a partition extending to the end of the file, adds a free space buffer after the end of the written data, and based on the actual amount of data written and the free space buffer, System to resize. 제 21 항에 있어서,The method of claim 21, 상기 디스크 이미지 유틸리티는 파티션을 정의하기 위해 상기 파일의 마스터 부트 레코드에 데이터를 기입하는 시스템.The disk image utility writes data to the master boot record of the file to define a partition. 제 31 항에 있어서,The method of claim 31, wherein 상기 디스크 이미지 유틸리티는 상기 마스터 부트 레코드에 데이터를 기입하는 것에 의해 사용자 저장 공간 파티션을 정의하는 시스템.The disk image utility defines a user storage space partition by writing data to the master boot record. 저장 매체상에 오퍼레이팅 시스템 이미지를 생성하기 위해 처리되는 데이터 구조가 저장되어 있는 하나 이상의 컴퓨터 판독가능 매체로서,One or more computer readable media having stored thereon data structures that are processed to create an operating system image on a storage medium. 상기 데이터 구조는, The data structure is, 각각이 파일 시스템에 대응되는 파티션들을 정의하는 마스터 부트 레코드를 포함하는 제 1 데이터 세트;A first data set comprising a master boot record, each defining partitions corresponding to a file system; 이진 파티션을 포함하는 제 2 데이터 세트;A second data set comprising a binary partition; 저장-기반 파티션을 포함하는 제 3 데이터 세트; 및A third data set comprising a storage-based partition; And 시스템 파티션을 포함하는 제 4 데이터 세트를 포함하는, 하나 이상의 컴퓨터 판독가능 매체One or more computer readable media comprising a fourth data set comprising a system partition 제 33 항에 있어서,The method of claim 33, wherein 상기 이진 파티션은 업데이트 로더 코드를 포함하는, 하나 이상의 컴퓨터 판독가능 매체.And the binary partition comprises update loader code. 제 34 항에 있어서,The method of claim 34, wherein 상기 업데이트 로더 코드는 상기 이진 파티션에서 압축되어 있는, 하나 이상의 컴퓨터 판독가능 매체.And the update loader code is compressed in the binary partition. 제 33 항에 있어서,The method of claim 33, wherein 상기 저장-기반 파티션은 커널 코드를 포함하고 있는 RAM 이미지 파티션을 포함하는, 하나 이상의 컴퓨터 판독가능 매체.And the storage-based partition comprises a RAM image partition containing kernel code. 제 36 항에 있어서,The method of claim 36, 상기 커널 코드는 상기 RAM 이미지 파티션에서 압축되어 있는, 하나 이상의 컴퓨터 판독가능 매체.The kernel code is compressed in the RAM image partition. 제 33 항에 있어서,The method of claim 33, wherein 상기 저장-기반 파티션은 커널 코드를 포함하고 있는 ROM 이미지 파티션을 포함하는, 하나 이상의 컴퓨터 판독가능 매체.And the storage-based partition comprises a ROM image partition containing kernel code. 제 33 항에 있어서,The method of claim 33, wherein 상기 시스템 파티션은 오퍼레이팅 시스템 컴포넌트들을 포함하는, 하나 이상의 컴퓨터 판독가능 매체.At least one computer readable medium comprising operating system components. 제 33 항에 있어서,The method of claim 33, wherein 상기 제 1 데이터 세트의 상기 마스터 부트 레코드는 상기 정의된 파티션들 중 하나로서 사용자 저장 공간 파티션을 정의하는, 하나 이상의 컴퓨터 판독가능 매체.And the master boot record of the first data set defines a user storage space partition as one of the defined partitions. 제 33 항에 있어서,The method of claim 33, wherein 상기 데이터 구조는, The data structure is, 초기의 프로그램 로더 코드를 포함하고 있는 제 5 데이터 세트를 더 포함하는, 하나 이상의 컴퓨터 판독가능 매체.At least one computer readable medium further comprising a fifth data set containing initial program loader code.
KR1020040107052A 2004-12-16 2004-12-16 Creating file systems within a file in a storage technology-abstracted manner KR20050016256A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040107052A KR20050016256A (en) 2004-12-16 2004-12-16 Creating file systems within a file in a storage technology-abstracted manner

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040107052A KR20050016256A (en) 2004-12-16 2004-12-16 Creating file systems within a file in a storage technology-abstracted manner

Publications (1)

Publication Number Publication Date
KR20050016256A true KR20050016256A (en) 2005-02-21

Family

ID=37226692

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040107052A KR20050016256A (en) 2004-12-16 2004-12-16 Creating file systems within a file in a storage technology-abstracted manner

Country Status (1)

Country Link
KR (1) KR20050016256A (en)

Similar Documents

Publication Publication Date Title
US7614051B2 (en) Creating file systems within a file in a storage technology-abstracted manner
KR101143027B1 (en) Self-describing software image update components
US9569286B2 (en) Method and system for improving startup performance and interoperability of a virtual application
US8843918B2 (en) System and method for deployable templates
JP4936654B2 (en) How to create language-independent files and corresponding language-specific resource files for components
US7779389B2 (en) System and method for dynamic VM settings
US8392906B2 (en) Enabling parallel websphere runtime versions
KR101143112B1 (en) Applying custom software image updates to non-volatile storage in a failsafe manner
US7689600B2 (en) System and method for cluster file system synchronization
US20070257715A1 (en) System and method for abstract configuration
US8838750B2 (en) System and method for system information centralization
US20040054994A1 (en) System and method for persisting dynamically generated code in a directly addressable and executable storage medium
US8201189B2 (en) System and method for filtering components
US20090133042A1 (en) Efficient linking and loading for late binding and platform retargeting
KR20060061204A (en) Computing device with relatively limited storage space and operating/file system thereof
US6813762B1 (en) Method for processing program files in a programming language capable of dynamic loading
US7406687B1 (en) Sharing runtime representation of software component methods across component loaders
KR101615295B1 (en) Application of platform dependent routines in virtual machines by embedding native code in class files
US20080141219A1 (en) Multiple inheritance facility for java script language
KR20050016256A (en) Creating file systems within a file in a storage technology-abstracted manner
CN113656040A (en) Program component debugging and updating method and corresponding device, equipment and medium
US8615736B2 (en) Module facility for JAVASCRIPT language
WO2024067053A1 (en) Application program installation method and electronic device
Smith et al. Leveraging managed runtime systems to build, analyze, and optimize memory graphs
CN115878197A (en) Starting optimization method, system, chip, device and medium based on device tree

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid