You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
3.6 KiB
HTML

<!menue>
Dieses Kapitel beschreibt wie man f&uuml;r eine neue Platform Treiber-Code hinzuf&uuml;gt.
<span class="wH">Beschreibung aufgesetzt am WIN-GDI Treiber</span>
<!h2a=Treiber allgemein,Schritt1: Treiber Verzeichnis und SYS_PLATFORM define,driverallgemein>
Alle Systemtreiber befinden sich in einem separaten Verzeichnis innerhalb des Engine Source Codes: <wF>[l3lib] /src/driver. Innerhalb des Verzeichnisses gibt es das wichtige <wH>driver.h und f&uuml;r jede Unterst&uuml;tzte Systemplatform ein eigenes Unterverzeichnis. Im Unterverzeichnis <wH>generic befinden sich Systemplatform unabhängige Treibercodes die als Templates f&uuml;r Systemplatform spezifische Treiber verwendet werden können.
Generische Treiber sind komplett vollständig, die jeweiligen Systemtreiber beinhalten nur die Treiberfiles die nicht aus dem generic verwendet werden können.
z.B: generic/drv_path.cpp ist f&uuml;r viele Systeme einsetzbar, jedoch nicht unter Windows. In jedem Windowstreiber Verzeichnis ist daher eine eigene drv_path.cpp Variante.
Das umwandlen und linken eines Treibers f&uuml;r eine Platform wird &uuml;ber &uuml;ber das <wV>DEFINE <wD>SYS_PLATFORM_??? gesteuert.
Im headerfile <wT>driver<wT>.h befindet sich f&uuml;r jede Platform ein Define Abschnitt wo system spezifische Includes geladen werden.
<!img4=driver_dirlist.gif,Treiber Verzeichnis der Version 1.0>
<!h2a=Treiber hinzuf&uuml;gen,Neuen Treiber anlegen,driveradd>
<!ul=
\1) Namen f&uuml;r neue Systemplatform setzen.<br><p>
in driver.h <wD>SYS_PLATFORM_GENERIC define Block kopieren und umbenennen auf <wT>SYS_PLATFORM_<wH>NEU</p>
\2) Treiber Verzeichnis anlegen<br><p>
In <wF>[l3lib] /src/driver ein Subverzeichnis anlegen. Namenskonvention: <wT>[system_kurzname]_[subsystem].</p>
\3) Treiber sourcen kopieren.<br><p>
Von generic oder ähnlicher Platform in das neue Treiberverzeichnis kopieren. Nur Files kopieren die geändert werden. F&uuml;r neue Systemtreiber speziell: drv_gfx_dev.cpp, drv_mouse.cpp, drv_keyboard.cpp ...</p>
\4) Makefile anpassen<br><p>
F&uuml;r GCC das <wV>Makefile im [l3lib]src öffnen und den neuen Treiber einf&uuml;gen. Beschreibung dazu im Kapitel: </p>
=ul>
<!h2a=Edit Driver.h,Edit driver.h Define Block,driverblock>
<pre>
***********************************************************************/
Win32 GDI Driver
************************************************************************/
#if defined(<wH>SYS_PLATFORM_WIN32_GDI)
#define SYS_PLATFORM_DEFINED
#define OK (0)
#define FAIL (__LINE__)
#define EXTERN extern
#include <unistd.h>
#include <stdint.h>
#include "generic/sys_types.h"
#include "generic/sys_assert.h"
#include "generic/sys_debug.h"
#include "generic/drv_fileio.h"
#include "generic/sys_txCopy.h"
<wH>#pragma <wH>comment( lib, "<wH>lowlevellib_vc6_gdi" )
#endif //<wH>SYS_PLATFORM_WIN32_GDI
</pre>
/*
*
*
*
*
*
*
*
*
*/
<!h2a=VCC-Treiber Makefile,VC6 Konfiguration f&uuml;r neuen Treiber erstellen,drivervc6conf>
Project lowlevellib_vc6 laden und eine Konfiguration kopieren. Beispiel: Win32 gp2x -> Win32 gdi
<!img9=drv_config_copy.gif,Men&uuml;punkt Erstellen->
<!img9=drv_add_project.gif,Eine der vorhandenen Konfigs wählen zum kopieren>
Danach die Sourcefiles hinzuf&uuml;gen:
<!img9=drv_vcc_adddir.gif>
Die Konfiguration einstellen: Beim Präprozessor die SYS_PLATFORM_??? Variable einf&uuml;gen und beim Linker als Ziel die neue Bibliothek angeben. Namenskonvention ist lowlevellib_[kompiler]_[platform].lib.
<!img9=drv_project_settings1.gif>
Anschließend alle Ordner vom Erstellen ausblenden die nicht zum neuen Treiber der Konfiguration und zum Generic Ordner gehören.
<!img9=drv_project_settings2.gif>