Development of device drivers
Detailed information:
Template of 32-bit driver for eComStation
|
Download eCo Software simple 32-bit driver.
- 32-bit driver
- interaction with ACPI driver
|
KEE interface
To develop modern drivers you should use DevHlp, KEE interfaces.
Read DDK, pddref.inf for details.
Tutorials
- We recommend start from this presentation:
OS/2 Device Driver Programming by Daniela Engert, (includes snippets of code)
- From Hello World to Real World
Suspend/resume
eCS supports suspend/resume for one-core and multi-core desktops and notebooks.
You can use APM interface (read DDK -> in_out.inf, Input/Output Device Driver Reference)
or hidden kernel function SaveRestore()
/*
* Function SaveRestore
* @pkt standard drivers packet
* @return None
* Note: This function is undocemmented in pddref.inf
*/
void
SaveRestore(
PRPSAVERESTORE pkt)
{
PrintDevCall((PRPH)pkt, "SaveRestore");
if (PSD)
{
PSD->AcpiOsPrintf("APM:SaveRestore - %x\n",(ULONG)pkt->FuncCode);
}
pkt->rph.Status |= STDON;
}
dd OFFSET FLAT:SaveRestore ; Command code 20h SaveRestore
Please share information with other developers how to:
- How to process command line parameters?
- How to gather log, so user can call: copy acpica$ acpi.log
- How to register driver in resource manager? So users can see it via rmview /IRQ
Programming PCI devices
To create new driver, you need
Wakeup PCI devices
Examples:
- Wake up sleeping PCI devices at boot time (by Veit)
driver, source code
- Source code of USB drivers (DDK)
Read/write ports from Ring3
Example how to read/write to the ports
Маппинг физической памяти в линейный
В результате этой операции подставляется данный физический
адрес под некоторый линейный адрес. Пример мапинга через драйвер SCREEN$ (thx LightElf)
Driver debugging
if you are going to do driver debugging, a trap dump partition is a
must have. It will save you a lot of time. A usable kernel debugger
setup will save you a even more time, but this can be problematic on newer
systems that lack a serial port.
Read details: OS/2 Diagnostic Tools and Tips by Steven Levine.
Useful links
|