KR19990011346A - How to Generate a Compressed Boot ROM - Google Patents

How to Generate a Compressed Boot ROM Download PDF

Info

Publication number
KR19990011346A
KR19990011346A KR1019970034413A KR19970034413A KR19990011346A KR 19990011346 A KR19990011346 A KR 19990011346A KR 1019970034413 A KR1019970034413 A KR 1019970034413A KR 19970034413 A KR19970034413 A KR 19970034413A KR 19990011346 A KR19990011346 A KR 19990011346A
Authority
KR
South Korea
Prior art keywords
compressed
uncompressed
code
object file
file
Prior art date
Application number
KR1019970034413A
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 KR1019970034413A priority Critical patent/KR19990011346A/en
Publication of KR19990011346A publication Critical patent/KR19990011346A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Abstract

본 발명은 제한된 ROM 공간에 필요한 여러 프로그램을 저장해 두고 사용하기 위해 ROM 프로그램을 압축하여 부팅 ROM을 생성하는 방법에 관한 것으로, 각각의 파일들을 적절한 컴파일 옵션에 따라 컴파일하여 개별적인 오브젝트 파일로 만드는 단계와; 상기 각각의 파일들의 비압축 코드부분을 서로 링크하여 하나의 독립된 이미지의 오브젝트 파일로 만드는 단계와; 상기 비압축 코드 부분의 텍스트 크기를 구하는 단계와; 상기 압축 코드 부분의 시작 주소로서 전체 시작 주소에 비압축 코드부분의 텍스트 크기를 더한 값을 할당하는 단계와; 상기 각각의 파일들의 압축 코드부분을 서로 링크하여 하나의 독립된 이미지의 오브젝트 파일로 만드는 단계와; 압축 프로그램을 사용하여 상기 생성된 오브젝트 파일을 압축시키는 단계와; 비압축 코드 부분과 압축 코드 부분을 서로 링크시키기 위해 비압축 코드의 심볼 테이블을 제거하는 단계와; 압축 코드에 인식레이블을 첨가하여 하나의 오브젝트 파일로 만드는 단계와; 마지막으로 비압축 코드 부분에 상기 생성한 압축 코드부분을 링크시켜서 하나의 부팅 이미지 파일을 생성하는 단계를 포함하여 이루어 진다.The present invention relates to a method of generating a boot ROM by compressing a ROM program for storing and using various programs required in a limited ROM space, the method comprising: compiling each file according to an appropriate compilation option to make a separate object file; Linking the uncompressed code portions of the respective files to each other to form an object file of one independent image; Obtaining a text size of the uncompressed code portion; Assigning a total start address plus a text size of an uncompressed code part as a start address of the compressed code part; Linking the compressed code portions of the respective files to each other to form an object file of one independent image; Compressing the generated object file using a compression program; Removing the symbol table of the uncompressed code to link the uncompressed code portion and the compressed code portion to each other; Adding the recognition label to the compression code to make one object file; Finally, the step of generating a boot image file by linking the generated compressed code portion to the uncompressed code portion.

Description

압축된 부팅 롬 생성 방법How to Generate a Compressed Boot ROM

본 발명은 압축된 부팅 ROM 생성 방법에 관한 것으로 특히, ROM 프로그램 공간의 일부를 압축하여 제한된 ROM 프로그램 공간에 필요한 여러 프로그램을 저장해 두고 사용하기 위한 압축된 부팅 ROM 생성 방법에 관한 것이다.The present invention relates to a compressed boot ROM generating method, and more particularly, to a compressed boot ROM generating method for compressing a part of a ROM program space to store and use various programs necessary for a limited ROM program space.

일반적으로 컴퓨터 시스템을 부팅하는 데 필요한 프로그램은 ROM에 저장되어 있고 컴퓨터 시스템이 파워 온 될 때 자동으로 수행된다.Generally, the programs needed to boot a computer system are stored in ROM and are automatically performed when the computer system is powered on.

이러한 부팅 프로그램은 일반적으로 독립된 여러개의 파일이 각각 컴파일되어 하나의 이미지 형태로 링크되어 만들어 진다.Such booting programs are usually made by compiling several independent files and linking them together in an image.

이하, 도 1을 참조하여 종래기술에 의한 부팅 ROM프로그램 생성 방법을 설명한다.Hereinafter, a boot ROM program generation method according to the related art will be described with reference to FIG. 1.

도시된 바와 같이, 독립된 각각의 모든 파일들을 컴파일하여 오브젝트 코드로 만든다.As shown, all individual files are compiled into object code.

그후, 오브젝트 코드로 만들어진 파일들을 하나의 타겟 오브젝트 파일로 만든다.Then, make the files created with the object code into one target object file.

마지막으로 상기 타겟 오브젝트 파일의 헤드와 불필요한 테이블들을 제거하여 부팅 이미지 파일을 만든다.Finally, the head and unnecessary tables of the target object file are removed to create a boot image file.

이때 이미지 파일로 만들어진 부팅 프로그램의 크기가 시스템에서 사용가능한 ROM 프로그램 공간의 크기보다 큰 경우에는 문제가 된다.This is a problem if the size of the boot program created from the image file is larger than the amount of ROM program space available on the system.

이를 해결하기 위해선, 단순히 ROM의 용량을 늘리는 방법이 있을 수 있다.To solve this, there may be a way to simply increase the capacity of the ROM.

그러나, 이 방법은 이미 개발된 마더 보드를 수정해야 하므로 추가 비용이 필요할 뿐만 아니라, 마더 보드의 집적도나 크기에 제약 사항이 있을 경우엔 큰 문제가 된다.However, this method requires modifications to already developed motherboards, which incurs additional costs and is a major problem when there is a limitation in the density or size of the motherboard.

따라서, 본 발명은 상기와 같은 문제점을 해결하기 위한 것으로, 하드웨어의 수정 없이 소프트웨어적으로 프로그램 압축방법을 이용하여 ROM 이미지 파일을 집적화하므로써 제한된 ROM 크기에 보다 많은 부팅 프로그램을 집어 넣어 수행할 수 있도록 압축된 부팅 ROM 생성 방법을 제공하는 것을 목적으로 한다.Accordingly, the present invention is to solve the above problems, by compressing so that more boot programs can be put in a limited ROM size by integrating the ROM image file using a program compression method in software without hardware modification. It is an object of the present invention to provide a method of generating a boot ROM.

도 1은 종래 부팅 ROM 생성 방법을 나타낸 흐름도.1 is a flowchart illustrating a conventional boot ROM generating method.

도 2는 본 발명에 따른 압축된 부팅 ROM 생성 방법을 나타낸 흐름도.2 is a flowchart illustrating a compressed boot ROM generation method according to the present invention.

상기한 목적을 달성하기 위해, 본 발명은 각각의 파일들을 적절한 컴파일 옵션에 따라 컴파일하여 개별적인 오브젝트 파일로 만드는 단계(S1);와 상기 각각의 파일들의 비압축 코드부분을 서로 링크하여 하나의 독립된 이미지의 오브젝트 파일로 만드는 단계(S2);와 상기 비압축 코드 부분의 텍스트 크기를 구하는 단계(S3);와 상기 압축 코드 부분의 시작 주소로서 전체 시작 주소에 비압축 코드부분의 텍스트 크기를 더한 값을 할당하는 단계(S4); 상기 각각의 파일들의 압축 코드부분을 서로 링크하여 하나의 독립된 이미지의 오브젝트 파일로 만드는 단계(S5); 압축 프로그램을 사용하여 상기 단계(S5)에서 생성된 오브젝트 파일을 압축시키는 단계(S6); 비압축 코드 부분과 압축 코드 부분을 서로 링크시키기 위해 비압축 코드의 심볼 테이블을 제거하는 단계(S7); 압축 코드에 인식레이블을 첨가하여 하나의 오브젝트 파일로 만드는 단계(S8); 마지막으로 비압축 코드 부분에 상기 단계(S8)에서 생성한 압축 코드부분을 링크시켜서 하나의 부팅 이미지 파일을 생성하는 단계(S9)를 포함하여 이루어 진다.In order to achieve the above object, the present invention comprises the steps of (S1) to compile each of the files according to the appropriate compilation option to a separate object file; and to link the uncompressed code portion of the respective files to each other as a single Making an object file of (S2); and obtaining a text size of the uncompressed code portion (S3); and adding the text size of the uncompressed code portion to the entire start address as a start address of the compressed code portion. Allocating (S4); Linking the compressed code portions of the respective files to each other to form an object file of one independent image (S5); Compressing the object file generated in the step S5 using a compression program (S6); Removing the symbol table of the uncompressed code to link the uncompressed code part and the compressed code part with each other (S7); Adding the recognition label to the compression code to make one object file (S8); Finally, the compressed code portion generated in step S8 is linked to the uncompressed code portion to generate a boot image file (S9).

일반적으로 제한된 ROM 공간에 필요한 여러 프로그램을 저장해 두고 사용하기 위해서는 ROM 프로그램의 일부가 압축되어야 한다.In general, part of a ROM program needs to be compressed in order to store and use several programs in a limited ROM space.

본 발명은 ROM 공간을 절약하기 위하여 압축된 형태의 부팅 ROM을 생성한다.일반적인 부팅 프로그램은 각각의 오브젝트 파일들이 컴파일되어 하나의 이미지로 링크되어 생성되는 방법을 거친다.The present invention creates a bootable ROM in a compressed form in order to save ROM space. A typical boot program goes through a method in which each object file is compiled and linked into one image.

본 발명에서는 제한된 ROM 공간에 보다 많은 부팅 프로그램을 집어 넣어 수행하기 위하여, 압축하여 수행이 불가능한 일부 하드웨어 초기화 프로그램을 제외한 나머지 프로그램을 압축시켜 압축된 부팅 프로그램으로 사용한다.In the present invention, in order to put more boot programs in a limited ROM space and perform them, the program is compressed and used as a compressed boot program except for some hardware initialization programs that cannot be compressed and executed.

압축된 부팅 프로그램은, 크게, 비압축 프로그램 처리 단계, 압축 프로그램 처리 단계와, 비압축 프로그램과 압축 프로그램을 묶어서 하나의 압축된 부팅 프로그램을 생성하는 압축된 부팅 프로그램 생성단계를 거쳐 생성된다.The compressed boot program is largely generated through an uncompressed program processing step, a compressed program processing step, and a compressed boot program generating step of generating a compressed boot program by combining the uncompressed program and the compressed program.

상기 비압축 프로그램 처리단계에서는, 비압축 프로그램을 컴파일하고 비압축 프로그램의 크기를 구하고(상기 단계(S1) 내지 단계(S3)),In the uncompressed program processing step, the uncompressed program is compiled and the size of the uncompressed program is obtained (steps S1 to S3),

상기 압축 프로그램 처리단계에서는, 압축시킬 프로그램을 컴파일하고 압축시켜 독립된 하나의 오브젝트 파일을 생성하고(상기 단계(S4) 내지 단계(S6)),In the compressed program processing step, by compiling and compressing the program to be compressed to generate a separate object file (steps S4 to S6),

상기 압축된 부팅 프로그램 생성 단계에서는 비압축 프로그램과 압축 프로그램을 서로 묶어서 하나의 압축 부팅 프로그램으로 생성한다(상기 단계(S7) 내지 단계(S9)).In the compressed boot program generating step, the uncompressed program and the compressed program are bundled together to generate one compressed boot program (steps S7 to S9).

이하, 도 2를 참조하여 본 발명의 동작을 더욱 상세히 설명한다.Hereinafter, the operation of the present invention will be described in more detail with reference to FIG. 2.

먼저, 상기 단계(S1)에서는, 압축코드 부분과 비압축 코드 부분으로 나누어지는 각각의 파일들을 적절한 컴파일 옵션에 따라 컴파일하여 개별적인 오브젝트 파일로 만든다.First, in the step S1, each of the files divided into the compressed code portion and the uncompressed code portion is compiled according to an appropriate compilation option to make a separate object file.

그후, 단계(S2)에서는, 상기 각각의 파일들의 압축시킬 수 없는 부분인 비압축 코드 부분을 서로 링크하여 하나의 독립된 오브젝트 이미지 파일로 만든다.Then, in step S2, the uncompressed code portions, which are non-compressible portions of the respective files, are linked to each other to form one independent object image file.

단계(S3)에서는, 상기 비압축 코드 부분의 텍스트 크기를 구한다.In step S3, the text size of the uncompressed code part is obtained.

단계(S4)에서는, 상기 압축 코드부분의 시작 주소로서 상기 각각의 파일의 전체 시작 주소에 상기 단계(S3)에서 구한 비압축 코드의 텍스트 크기를 더한 값을 할당한다.In step S4, as the start address of the compressed code part, a value is obtained by adding the text size of the uncompressed code obtained in step S3 to the entire start address of each file.

단계(S5)에서는, 상기 각각의 파일들의 압축시킬 부분인 상기 압축 코드부분들을 링크하여 하나의 독립된 오브젝트 이미지 파일로로 만든다.In step S5, the compressed code portions, which are the portions to be compressed of the respective files, are linked into a single object image file.

이는 상기 단계(S2)에서 상기 비압축 코드부분을 압축시켜 하나의 독립된 이미지 파일로 만든 것에 대응한다.This corresponds to compressing the uncompressed code portion in step S2 into a single independent image file.

그리고 단계(S5)에서는, 상기 단계(S4)에서 구한 압축코드 부분의 시작 주소를, 상기 압축 코드부분을 링크할 때의 압축코드 부분의 시작 주소로서 사용한다In step S5, the start address of the compressed code portion obtained in step S4 is used as the start address of the compressed code portion when the compressed code portion is linked.

단계(S6)에서는, 상기 단계(S5)에서 링크시킨 압축 코드의 헤드를 제거하고 상기 압축코드의 뒷 부분에 생성된 심볼 테이블을 제거한 후 압축 프로그램을 사용하여 상기 압축코드 부분을 압축시킨다.In step S6, the head of the compressed code linked in the step S5 is removed, the symbol table generated later in the compressed code is removed, and the compressed code part is compressed using a compression program.

단계(S7)에서는, 단계(S2)에서 구한 비압축 코드 부분에 대해 생성된 오브젝트 이미지 파일과 단계(S5)에서 구한 압축 코드 부분에 대해 생성된 오브젝트 이미지 파일을 서로 링크시키기 위해 비압축 코드의 심볼 테이블을 제거한다.In step S7, the symbol of the uncompressed code is linked to link the object image file generated for the uncompressed code part obtained in step S2 and the object image file generated for the compressed code part obtained in step S5 to each other. Drop the table.

단계(S8)에서는, 압축 코드부분의 시작 코드에 비압축 코드부분에서 인식할 수 있는 인식레이블을 첨가하여 하나의 오브젝트 코드로 된 오브젝트 파일을 만든다.In step S8, a recognition file that can be recognized by the uncompressed code portion is added to the start code of the compressed code portion to create an object file of one object code.

마지막으로, 단계(S9)에서는 상기 단계(S2)에서 비압축 코드부분에 대해 생성된 오브젝트 이미지 파일에, 상기 단계(S5)에서 압축 코드부분에 대해 생성된 오브젝트 이미지 파일을 링크시켜 하나의 부팅 이미지 파일을 생성한다.Finally, in step S9, one boot image is linked by linking the object image file generated for the uncompressed code part in step S2 and the object image file generated for the compressed code part in step S5. Create a file.

상기한 바와 같은 구성에 의해, 부팅 프로그램이 특정 컴퓨터 하드웨어에 있는 ROM의 크기 보다 크게 될 경우 하드웨어 수정이나 ROM의 용량을 실제적으로 늘리지 않고, 압축방법을 사용하여 부팅 프로그램의 일부를 압축시켜 ROM에 저장하므로써 상대적으로 ROM 공간의 제약을 적게 받는 효율적인 부팅 프로그램을 생성할 수 있다.With the above configuration, if the booting program becomes larger than the size of the ROM in the specific computer hardware, a part of the booting program is compressed and stored in the ROM using a compression method without actually modifying the hardware or increasing the capacity of the ROM. This allows you to create an efficient boot program that is relatively less constrained by ROM space.

Claims (1)

각각의 파일들을 적절한 컴파일 옵션에 따라 컴파일하여 개별적인 오브젝트 파일로 만드는 단계(S1);와Compiling each of the files according to an appropriate compilation option into individual object files (S1); and 상기 각각의 파일들의 비압축 코드부분을 서로 링크하여 하나의 독립된 이미지의 오브젝트 파일로 만드는 단계(S2);와Linking the uncompressed code parts of the respective files with each other to form an object file of one independent image (S2); and 상기 비압축 코드 부분의 텍스트 크기를 구하는 단계(S3);와Obtaining a text size of the uncompressed code part (S3); and 상기 압축 코드 부분의 시작 주소로서 전체 시작 주소에 비압축 코드부분의 텍스트 크기를 더한 값을 할당하는 단계(S4);와Assigning a value obtained by adding a text size of an uncompressed code part to a full start address as a start address of the compressed code part (S4); and 상기 단계(S4)에서 구한 압축코드의 시작 주소를 이용하여 상기 각각의 파일들의 압축 코드부분을 서로 링크하므로써 하나의 독립된 이미지의 오브젝트 파일로 만드는 단계(S5);와Making an object file of one independent image by linking the compressed code parts of the respective files with each other using the start address of the compressed code obtained in the step S4; and 압축 프로그램을 사용하여 상기 단계(S5)에서 생성된 오브젝트 파일을 압축시키는 단계(S6);와Compressing the object file generated in the step S5 using a compression program (S6); and 상기 비압축 코드 부분과 압축 코드 부분을 서로 링크시키기 위해 비압축 코드의 심볼 테이블을 제거하는 단계(S7);와Removing the symbol table of the uncompressed code to link the uncompressed code part and the compressed code part with each other (S7); and 상기 압축 코드부분에 인식레이블을 첨가하여 하나의 오브젝트 파일로 만드는 단계(S8);와Adding a recognition label to the compressed code part to form a single object file (S8); and 비압축 코드 부분에 상기 단계(S8)에서 생성한 압축 코드부분을 링크시켜서 하나의 부팅 이미지 파일을 생성하는 단계(S9)를 포함하여 이루지는 것을 특징으로 하는, 압축된 부팅 ROM 생성 방법.And generating (S9) one boot image file by linking the compressed code portion generated in the step (S8) to the uncompressed code portion.
KR1019970034413A 1997-07-23 1997-07-23 How to Generate a Compressed Boot ROM KR19990011346A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970034413A KR19990011346A (en) 1997-07-23 1997-07-23 How to Generate a Compressed Boot ROM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970034413A KR19990011346A (en) 1997-07-23 1997-07-23 How to Generate a Compressed Boot ROM

Publications (1)

Publication Number Publication Date
KR19990011346A true KR19990011346A (en) 1999-02-18

Family

ID=66040559

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970034413A KR19990011346A (en) 1997-07-23 1997-07-23 How to Generate a Compressed Boot ROM

Country Status (1)

Country Link
KR (1) KR19990011346A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011105860A3 (en) * 2010-02-26 2011-11-24 Samsung Electronics Co., Ltd Method and apparatus for generating minimum boot image
US8448151B2 (en) 2008-12-08 2013-05-21 Electronics And Telecommunications Research Institute Method for binarizing initial script on operating system and operating method of binary script
US9354895B2 (en) 2012-11-06 2016-05-31 Samsung Electronics Co., Ltd. Method of updating boot image for fast booting and image forming apparatus for performing the same
US10394570B2 (en) 2010-02-26 2019-08-27 Hp Printing Korea Co., Ltd. Method of generating boot image for fast booting and image forming apparatus for performing the method, and method of performing fast booting and image forming apparatus for performing the method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8448151B2 (en) 2008-12-08 2013-05-21 Electronics And Telecommunications Research Institute Method for binarizing initial script on operating system and operating method of binary script
WO2011105860A3 (en) * 2010-02-26 2011-11-24 Samsung Electronics Co., Ltd Method and apparatus for generating minimum boot image
US10394570B2 (en) 2010-02-26 2019-08-27 Hp Printing Korea Co., Ltd. Method of generating boot image for fast booting and image forming apparatus for performing the method, and method of performing fast booting and image forming apparatus for performing the method
US9354895B2 (en) 2012-11-06 2016-05-31 Samsung Electronics Co., Ltd. Method of updating boot image for fast booting and image forming apparatus for performing the same

Similar Documents

Publication Publication Date Title
US7162709B2 (en) System and method for common code generation
JP4699580B2 (en) Method for static initialization of data processing system array, data processing method, and computer-readable storage medium storing data processing system and program for causing computer to execute control procedure thereof
US6609248B1 (en) Cross module representation of heterogeneous programs
US7380242B2 (en) Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
US20010042069A1 (en) Method and apparatus for building a memory image
JP2000047874A (en) Device and method for footprint reduction of preloaded class
US7213237B2 (en) Intermediate code preprocessing apparatus, intermediate code execution apparatus, intermediate code execution system, and computer program product for preprocessing or executing intermediate code
JP2002508560A (en) Combining multiple class files into a runtime image
US6185578B1 (en) Program creation apparatus, program creation method, and recording medium containing a software program for implementing the method
US6959430B2 (en) Specialized heaps for creation of objects in object-oriented environments
JPH09212356A (en) System for protecting computer software described in interpreter language
US20030086620A1 (en) System and method for split-stream dictionary program compression and just-in-time translation
JP2005501334A (en) A framework for generating Java macro instructions in a Java computing environment
US6754796B2 (en) Frameworks for implementation of java heaps
KR19990011346A (en) How to Generate a Compressed Boot ROM
US6314564B1 (en) Method for resolving arbitrarily complex expressions at link-time
US7036120B2 (en) Two tier clusters for representation of objects in Java programming environments
JPH0869381A (en) Compilation system
US6961933B2 (en) Representation of Java data types in virtual machines
US7565646B2 (en) Method for compression of object code interpreted by tree-structured expression factorization
JP2002091762A (en) Program generator
JP2001014172A (en) Program converting device
JP2002099423A (en) Program compression method
KR20030052767A (en) Compression and restore method for binary file
Bischof et al. String Management

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination