WO1996007136A1 - Production automatique de modules de gestion de peripheriques de systemes d'exploitation - Google Patents
Production automatique de modules de gestion de peripheriques de systemes d'exploitation Download PDFInfo
- Publication number
- WO1996007136A1 WO1996007136A1 PCT/US1995/011123 US9511123W WO9607136A1 WO 1996007136 A1 WO1996007136 A1 WO 1996007136A1 US 9511123 W US9511123 W US 9511123W WO 9607136 A1 WO9607136 A1 WO 9607136A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- initialize
- device driver
- operating system
- tailoring
- recited
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Definitions
- CP/M and S-100 based systems in their infancy, were very simple systems However, even with these simple systems, it was hard to get an isolated system operational. Since the software required the BIOS to be provided by the board manufacturer, it generally had to be properly placed on the floppy disk and incorporated into the boot loading process. But if the code was necessary for bootin the system, then this was a problem, unless another system was available. Therefore it was relatively hard to develop and configure an isolated system.
- UNIX became a standard operating system with the advantage that the application programs were freely transportable between various hardware platforms.
- this transportability was not true of the core UNIX operating system because the core or kernel also included certain system board or system related hardware code. The kernal varied between hardware platforms. Therefore, the UNIX kernel had to be re-written and re-developed for each particular computer system by each particular manufacturer and was not readily transportable. This limited the widespread use of UNIX.
- the operating system of a preferred embodiment of this invention must have an automated mechanism for generating device drivers and integrating them into the operating system to support diverse hardware platforms.
- I/O Input/Output
- IN and OUT instructions There are two forms of IN and OUT instructions. The first operates on a single byte, while the second operated on a two-byte word. The two forms are usually distinguished by a trailing "B" or "W" in the operation instruction code (opcode). This results in four instruction opcodes: INB, INW, OUTB and OUTW.
- Other processors distinguish I/O addresses from memory addresses by the instruction used to access them, or alternatively, by bits in the address.
- a trace facility is utilized to initiate an interrupt call to a particular BIOS routine requesting initialization of a target hardware device.
- the BIOS contains appropriate setup instructions for the device, instructions which are non-obvious and not well documented.
- the trace facility is piped through a simple filter, which extracts all OUT instructions, and the contents of the DX and AX registers at the time of the OUT instruction. By capturing this sequence of OUT instructions, the state of the device is stored at the end of the initialization.
- the resultant OUT instructions are converted to "C" code, and the resulting "C" code is compiled utilizing a compiler for the target computer system to generate a device driver for the target hardware device which is compatible with the target operating system support for the target computer system.
- additional filters can be used to capture sequences of IN instructions. Some boards actually use IN instructions to trigger certain controller state changes. As a further check, additional filters can be utilized to capture MEMORY READ/WRITE instructions for memory mapped controllers.
- Figure 1 is a block diagram of an exemplary computer system in accordance with a preferred embodiment
- FIG. 2 is a block diagram of a prior art operating system
- Figure 3 is a block diagram of the operating system in accordance with a preferred embodiment
- the computer system is an exemplary computer system on which an operating system organized and configured according to the present invention operates. As such, none of the specific hardware details or organizations are considered critical but are provided merely for explanatory purposes. Many additional elements can be added and certain elements illustrated can be removed.
- the computer system includes a series of slots 48 for use by interchangeable circuit boards or adapters.
- the slots 48 preferably conform to certain standards, for instance the Extended Industry Standard Architecture (EISA) or MicroChannel Architecture (MCA).
- EISA Extended Industry Standard Architecture
- MCA MicroChannel Architecture
- the bus 20 may actually be two or more separate buses so that CPU performance and adapter performance can be separately maximized with appropriate control and conversion circuits connecting the various buses.
- One exemplary adapter is a second hard disk controller 50.
- the hard disk controller 50 also includes a ROM 52.
- the hard disk controller 50 is connected to a hard disk 54.
- the hard disk controller 50 may, for example, be a high performance hard disk controller such as a SCSI controller, while the hard disk 40 may be a low to medium performance hard disk provided for minimum functionality of the computer system.
- the computer system is controlled by an operating system.
- Organizations of operating systems according to the prior art are generally shown in Figure 2. Exemplary operating systems are MS /DOS by Microsoft Corporation and UNIX by a number of vendors.
- the operating system is partitioned so that there is main operating code 100 and a device driver area 102.
- the device driver area 102 addresses certain generally changeable aspects of the computer system, such as the disk drives, the video or terminal units and the various serial and parallel ports.
- the main operating system code 100 includes the basic operating system kernel itself and certain code relating to interrupt processing, direct memory access control, timing functions and similar system control oriented functions.
- the particular problem as noted in the background is that the operating system of a preferred embodiment of this invention must have an automated mechanism for generating device drivers and integrating them into the operating system to support diverse hardware platforms.
- an operating system is configured as shown in Figure 3.
- the operating system is shown in block 101 with the interrupts, Direct Memory Access (DMA), timer and access control 102 resident in the RAM of the computer system.
- the DOS device drivers 100 and 110 normally resident in the ROM of a computer system, cannot be used with the operating system 100 because the Operating System is not DOS compatible.
- a preferred embodiment of the invention facilitates the construction of a compatible device driver initialization 103 and access and control function 104. These compatible device driver portions are extracted from the incompatible, original DOS device drivers 100 and 110.
- the memory map is presented in a traditional bottom up mapping of memory addresses from 0 to 100000+. Memory is organized on a word boundary with the Interrupt Vectors stored in low memory commencing at address 00000 as shown at label 490. BIOS data is stored in memory address 00400 as indicated at label 480. Graphic display adapter memory spans the region indicated by label 470, while the graphic BIOS extension is located at label 460. The Disk BIOS extension 450, Network BIOS extension 440 and the System BIOS 430 are located just below the high memory commencing at 420.
- the interrupt vectors 480 trap interrupts from the various hardware devices and pass control to the device specific BIOS routine, such as the graphics BIOS extension 460 to support a graphic hardware device.
- the device specific BIOS routine such as the graphics BIOS extension 460 to support a graphic hardware device.
- a preferred embodiment of the invention would use the existing device-specific BIOS routine 460 to create a new device support module, providing support in a new operating system environment for an existing DOS or other operating system supported graphics device.
- processing commences at terminal 500 and immediately proceeds to function block 502 where a trace program is initiated. This is accomplished on an Intel platform utilizing a hardware trace facility. Then, at function block 504, an INT 10 call is initiated to a BIOS device driver.
- the BIOS device driver is a Video BIOS.
- the Video BIOS contains appropriate setup instructions for the video controller. These instructions are often not well documented and sometimes are even not published.
- Function block 506 refers to trapping the setup instructions. This is accomplished when the trace facility is piped through a software enabled filter, which extracts all OUT instructions, and the contents of the DX and AX registers at the time of the OUT instruction. By capturing this sequence of OUT instructions, the state of the -8-
- controller at the end of the INT 10 (Initialize Graphics Board) command can be obtained.
- additional filters can be used to capture sequences of IN instructions, for complete correctness. Some boards actually use IN instructions to trigger certain controller state changes. Alternatively, this method could be utilized to capture MEMORY READ /WRITE instructions, for memory mapped controllers. Additional processing of the OUT/IN instructions can occur to eliminate certain redundant or unnecessary instructions. For example, the sequences of OUT instructions at known addresses that initialize the Video CLUT (DAC). This technique saves space and instructions.
- DAC Video CLUT
- boot sequence can be used to automatically generate a device driver for a target operating system.
- the target OS boot process reads the results of the trace results, and constructs a device driver for the graphics controller.
- This method should work for all known VGA and SVGA and VESA compliant controllers. This method also works for initialization code of ANY device with startup code in ROM at known addresses, and an interface for normal operation at known fixed addresses. The code presented below is utilized in a preferred embodiment to query a device driver in ROM and obtain the information necessary to generate a function device driver for another operating system environment.
- An example of a debug manual for use in debugging applications in accordance with a preferred embodiment is the MacsBug Reference and Debugging Guide, Apple Computer Corp., 1990.
- Sample 'C code file 'video_init.c' produced by this method in accordance with function blocks 508 . and 5 O of Figure 5.
- a compiler reference manual utilized in accordance with a preferred embodiment of the invention is AIX Version 3.2 for RISC System /6000. XL C User's GUIDE, SC09-1259-02 (1992).
- the autogeneration of a device driver for other devices such as disk drives, diskette drives, modems, and other peripherals would require including the step of tailoring the initialize device command to initialize the particular peripheral.
- the initialization call would be initiated from the DEBUG process and be documented in the technical reference or the processor handbook for the target peripheral device.
- the video device call is an INT 10 as shown above with reference to Figure 5, function block 504.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
Système et procédé nouveaux constituant un support dans un système d'exploitation cible pour de nouveaux périphériques à la base de modules de gestion de périphériques provenant d'un système d'exploitation existant. La création d'une image initialisable d'un système d'exploitation particulier se déroule en plusieurs étapes. On utilise d'abord une fonction d'analyse, afin de déclencher un appel d'interruption dirigé vers un programme particulier BIOS demandant l'initialisation d'un dispositif câblé cible. Le BIOS contient des instructions appropriées d'installation du dispositif, instructions non évidentes et documentées de façon imprécise. La fonction d'analyse est canalisée à travers un filtre unique qui extrait toutes les instructions de sortie (OUT) et le contenu des registres DX et AX au moment de l'instruction OUT. La saisie de la séquence d'instructions OUT permet de mémoriser l'état du dispositif à la fin de l'initialisation. Les instructions OUT obtenues sont converties en code 'C' et le code 'C' obtenu est compilé au moyen d'un compilateur du système informatique cible, afin de produire un module de gestion de périphérique pour le dispositif câblé cible compatible avec le support du système d'exploitation cible du système informatique cible.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/955,386 US6149781A (en) | 1994-01-10 | 1997-10-21 | Method and apparatus for electrochemical processing |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US29982794A | 1994-09-01 | 1994-09-01 | |
| US08/299,827 | 1994-09-01 |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US08/316,530 Continuation-In-Part US5476578A (en) | 1994-01-10 | 1994-09-30 | Apparatus for electroplating |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO1996007136A1 true WO1996007136A1 (fr) | 1996-03-07 |
Family
ID=23156464
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/US1995/011123 WO1996007136A1 (fr) | 1994-01-10 | 1995-08-30 | Production automatique de modules de gestion de peripheriques de systemes d'exploitation |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO1996007136A1 (fr) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0805399A1 (fr) * | 1996-05-01 | 1997-11-05 | Sun Microsystems, Inc. | Procédé pour générer un module d'interfaçage unique de périphérique virtuel pour un système d'exploitation à fenêtres |
| US8370711B2 (en) | 2008-06-23 | 2013-02-05 | Ramot At Tel Aviv University Ltd. | Interruption criteria for block decoding |
-
1995
- 1995-08-30 WO PCT/US1995/011123 patent/WO1996007136A1/fr active Application Filing
Non-Patent Citations (1)
| Title |
|---|
| "Captured Data Flow Systems Network Architecture Sequence Program Generator", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 37, no. 1, NEW YORK, US, pages 459 - 460 * |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0805399A1 (fr) * | 1996-05-01 | 1997-11-05 | Sun Microsystems, Inc. | Procédé pour générer un module d'interfaçage unique de périphérique virtuel pour un système d'exploitation à fenêtres |
| US5940613A (en) * | 1996-05-01 | 1999-08-17 | Sun Microsystems, Inc. | Method for creating a single binary virtual device driver for a windowing operating system |
| US8370711B2 (en) | 2008-06-23 | 2013-02-05 | Ramot At Tel Aviv University Ltd. | Interruption criteria for block decoding |
| US8806307B2 (en) | 2008-06-23 | 2014-08-12 | Ramot At Tel Aviv University Ltd. | Interruption criteria for block decoding |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6009480A (en) | Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device | |
| US7308511B2 (en) | System for allocating resources in a computer system | |
| US5394544A (en) | Software system debugger with distinct interrupt vector maps for debugging and application programs | |
| US5325532A (en) | Automatic development of operating system boot image | |
| US8407396B2 (en) | Providing block data access for an operating system using solid-state memory | |
| US7873821B2 (en) | BIOS configuration and management | |
| US5918048A (en) | Booting an operating system using soft read-only storage (ROS) for firmware emulation | |
| KR100764921B1 (ko) | 장치 이뉴머레이션을 위한 가상 rom | |
| US20040268113A1 (en) | Virtual out-of-band management controller | |
| US20050198487A1 (en) | Method and apparatus to support remote configuration code | |
| JP3230005B2 (ja) | オプション・ボードprom | |
| JP2008509483A (ja) | 予期せず/変化するハードウェア環境へのソフトウェアとファームウェアの適応 | |
| JP2008509483A5 (fr) | ||
| US7500094B2 (en) | BIOS identification, initialization and management | |
| GB2393537A (en) | In a computer system, a firmware interface table associated with a table which describes at least one system component. | |
| US7017034B2 (en) | System and method for using a firmware interface table to dynamically load multiple ACPI SSDT tables | |
| JP2004070953A (ja) | 複数のオペレーティングシステムをサポートする方法 | |
| WO1996007136A1 (fr) | Production automatique de modules de gestion de peripheriques de systemes d'exploitation | |
| US5754852A (en) | Apparatus for combining cellular telephone ring signals and PSTN ring signals | |
| US7103767B2 (en) | Method and apparatus to support legacy master boot record (MBR) partitions | |
| CN114489865A (zh) | 一种os级实现bios配置修改的方法 | |
| US7596685B2 (en) | Apparatus and method for building, storing, uploading, relocating and executing DOS based software module during system startup time | |
| US7240187B2 (en) | Method and apparatus to support legacy master boot record (MBR) partitions | |
| Banik et al. | Payload | |
| US7434201B2 (en) | Method and apparatus providing for extendable interaction between firmware and operating systems on digital devices |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AK | Designated states |
Kind code of ref document: A1 Designated state(s): CA CN JP |
|
| AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE |
|
| DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
| ENP | Entry into the national phase |
Ref country code: US Ref document number: 1997 955386 Date of ref document: 19971021 Kind code of ref document: A Format of ref document f/p: F |
|
| 122 | Ep: pct application non-entry in european phase |