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.5 KiB
HTML

<!menu>
Dieses Kapitel beschreibt wie man für eine neue Platform Treiber-Code hinzufügt.
<span class="wH">Beschreibung aufgesetzt am WIN-GDI Treiber</span>
<!h2a=Treiber allgemein,Schritt1: Treiber Verzeichnis und SYS_PLATFORM define>
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ür jede Unterstützte Systemplatform ein eigenes Unterverzeichnis. Im Unterverzeichnis <wH>generic befinden sich Systemplatform unabhängige Treibercodes die als Templates fü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ü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ür eine Platform wird über über das <wV>DEFINE <wD>SYS_PLATFORM_??? gesteuert.
Im headerfile <wT>driver<wT>.h befindet sich fü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ügen,Neuen Treiber anlegen>
<!ul=
\1) Namen fü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ür neue Systemtreiber speziell: drv_gfx_dev.cpp, drv_mouse.cpp, drv_keyboard.cpp ...</p>
\4) Makefile anpassen<br><p>
Für GCC das <wV>Makefile im [l3lib]src öffnen und den neuen Treiber einfügen. Beschreibung dazu im Kapitel: <!link=GCC-Treiber Makefile>, <!link=VCC-Treiber Makefile></p>
=ul>
<!h2a=Driver.h Define Block>
<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ür neuen Treiber erstellen>
Project lowlevellib_vc6 laden und eine Konfiguration kopieren. Beispiel: Win32 gp2x -> Win32 gdi
<!img9=drv_config_copy.gif,Menüpunkt Erstellen->
<!img9=drv_add_project.gif,Eine der vorhandenen Konfigs wählen zum kopieren>
Danach die Sourcefiles hinzufügen:
<!img9=drv_vcc_adddir.gif>
Die Konfiguration einstellen: Beim Präprozessor die SYS_PLATFORM_??? Variable einfü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>