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
72 lines
3.6 KiB
HTML
<!menue>
|
|
|
|
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,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ü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,driveradd>
|
|
<!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: </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ür neuen Treiber erstellen,drivervc6conf>
|
|
|
|
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>
|
|
|
|
|