source: sbliveos2/trunk/Build.txt@ 169

Last change on this file since 169 was 151, checked in by sandervl, 25 years ago

update

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.1 KB
Line 
1/* $Id: Build.txt 151 2000-05-28 16:50:46Z sandervl $ */
2 SoundBlaster Live! OS/2 Audio driver Build Instructions
3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4Contents
5========
61 Introduction
72 Required tools
83 Recommended tools for debugging
94 Building the driver
105 SBLive driver architecture
116 Difference between the two kinds of 32 bits drivers
12
131 Introduction
14==============
15This document lists all the needed tools and compilers to build the SB Live
16OS/2 audio driver.
17It also tries to give some information about the architecture of the driver
18and explain some technical details.
19
20However, it does not attempt to explain everything. People that are not
21familiar with either device drivers or MMPM/2 audio drivers should
22read the PDD & MMPM/2 driver references. Although those two documents
23are not meant for beginners, they do contain a lot of very useful information.
24
25You can always email me (sandervl@xs4all.nl) if you wish to help out with the
26development of the driver and have some questions.
27Please make sure you've read at least the pdd & mmpm2 references and try
28to understand the source code before doing so.
29
30
312 Required tools
32================
33- Watcom C/C++ version 11.0b
34- ALP 4.x (IBM assembler; comes with ddk)
35- IBM OS/2 DDK (http://service.boulder.ibm.com/ddk/)
36 - Base headers/libraries/tools (combase.zip)
37 - MMPM/2 base (mmpmdd.zip)
38 - PDD & MMPM/2 driver reference
39
403 Recommended tools for debugging
41=================================
42- ICAT debugger (follow link from IBM DDK page)
43- OS/2 Debug kernel
44
45
464 Building the driver
47=====================
48You can build the driver from the main directory by executing:
49 WMAKE -f makefile.os2 /ms
50
51To build the debug version of the driver (which can be used with ICAT
52for source-level debugging) run
53 WMAKE -f makefile.os2 DEBUG=1 /ms
54
55To build the KEE enhanced version of the driver
56 WMAKE -f makefile.os2 KEE=1 /ms
57
58
595 SBLive driver architecture
60============================
61Simplified overview of the flow of control from a multimedia application
62to the SB Live driver. (for a more complete overview, check the MMPM/2
63Device Driver Reference; Audio Physical Device Driver Template/PDD architecture)
64
65 |=============|
66 | |
67 | application |
68 | |
69 |=============|
70ring 3 | ^
71--------------------------------------------------------------------------------
72ring 0 | |
73 v |
74 |=============|
75 | |
76 --->| MMPM/2 |
77 | | |
78 | |=============|
79 | | IOCtls |
80SHD calls | | |
81to return | | | IDC
82buffers | | |
83 | | |
84 | v v
85 | |-------------| OSS cmds |-------------|
86 | | | <---------> | |
87 ----|sblive16.sys | irqs |sblive32.sys |
88 | | ----------> | |
89 |-------------| |-------------|
90 ^ |
91--------------------------------------------------------------------------------
92hardware
93 irqs | |
94 | | hardware programming
95 |==============| |
96 | | |
97 | SB Live card |<-----------
98 | |
99 |==============|
100
101
102The drv16 directory contains the sources for the 16 bits driver that handles
103all MMPM/2 commands and communicates (IDC) with the 32 bits core driver using
104OSS (Linux audio api) commands.
105Sblive32.sys contains a small wrapper that interprets the IDC commands and
106translates them into appriate calls to the original Linux OSS driver (ioctls/
107open/close/read/write).
108Basically, the Linux code in sblive32 treats the 16 bits driver as a Linux
109application trying to use the audio card.
110
111During the init complete strategy call of sblive16, it sends the init command
112to the 32 bits driver. Which ends up calling module_init in the Linux code
113(sblive\main.c). At this point the Linux code tries to detect the sblive
114hardware using Linux pci kernel calls.
115All Linux kernel calls are implemented in sblive32 using OS/2 system calls.
116(i.e. kmalloc uses DevHlp_VMAlloc)
117
118The original Linux SB Live! sources have not changed for the most part.
119An exception is the acknowledgment that part of a buffer has been played/
120recorded. (emu10k1_waveout_bh/emu10k1_wavein_bh in sblive\audio.c)
121OSS32_ProcessIRQ is called from those procedures to tell the 16 bits driver
122to query the current position and return/queue buffers if needed.
123
124The 16 bits driver is more or less a generic MMPM/2 driver that could be used
125(in theory) to port any OSS Linux audio driver.
126The wrapper and linux kernel calls implemented in the lib directory can
127also be reused.
128
129
1306 Difference between the two kinds of 32 bits drivers
131=====================================================
132Warp Server for e-Business (and now Warp 4 too; with fixpack 13) feature
133a new 32 bits kernel api for physical device driver (well, not entirely true).
134
135The 'standard' 32 bits driver (not compiled with KEE=1) is a 32 bits compact
136memory model driver. (cs=ds, ss!=ds; small code, large data)
137The stack is still 16 bits and the SS and DS selectors are not identical.
138Therefor all pointers are far by default. (32 bits far; meaning 16:32, 16
139bits selector, 32 bits offset)
140
141Using this memory model works fine, but is a bit inefficient and not ideal
142for porting 32 bits code (which may have hidden dependencies on the 32 bits
143flat memory model; the sblive driver has none).
144That also explains why the standard 32 bits driver is 18kb larger than the
145KEE version.
146
147The 'enhanced' 32 bits driver uses the KEE interface to create a true 32 bits
148driver (cs=ds=ss).
149
150A small 16 bits part is still needed as our IDC, strategy and irq handlers
151are expected to be in the 16 bits code segment.
152An assembly file (drv32\startup.asm) takes care of the thunking that is
153required.
154
155
Note: See TracBrowser for help on using the repository browser.