[ros-diffs] [arty] 25302: A test to see if things are mostly working. You can build it and then load them on a prep box. You'll see output on the serial port if they linked and bound properly. I have a patch for gxemul that can load pecoff and bind imports, that can be used for this purpose.

arty at svn.reactos.org arty at svn.reactos.org
Fri Jan 5 06:50:56 CET 2007


Author: arty
Date: Fri Jan  5 08:50:55 2007
New Revision: 25302

URL: http://svn.reactos.org/svn/reactos?rev=25302&view=rev
Log:
A test to see if things are mostly working.  You can build it and then load
them on a prep box.  You'll see output on the serial port if they linked
and bound properly.  I have a patch for gxemul that can load pecoff and bind
imports, that can be used for this purpose.

Added:
    branches/powerpc/reactos/tools/ppc-build/serialtest/
    branches/powerpc/reactos/tools/ppc-build/serialtest/makefile
    branches/powerpc/reactos/tools/ppc-build/serialtest/serial.c
    branches/powerpc/reactos/tools/ppc-build/serialtest/serial.def
    branches/powerpc/reactos/tools/ppc-build/serialtest/serial.h
    branches/powerpc/reactos/tools/ppc-build/serialtest/serialtest.c

Added: branches/powerpc/reactos/tools/ppc-build/serialtest/makefile
URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/tools/ppc-build/serialtest/makefile?rev=25302&view=auto
==============================================================================
--- branches/powerpc/reactos/tools/ppc-build/serialtest/makefile (added)
+++ branches/powerpc/reactos/tools/ppc-build/serialtest/makefile Fri Jan  5 08:50:55 2007
@@ -1,0 +1,16 @@
+all: serialtest.exe serial.dll
+
+libserial.a serial.exp:
+	reactos-powerpc-dlltool -D serial.dll -e serial.exp -l libserial.a -d serial.def -k -A -S reactos-powerpc-as -L reactos-powerpc-ld
+
+serialtest.exe: serial.h serialtest.c libserial.a
+	reactos-powerpc-gcc -Wl,--image-base=0x400000 -Wl,--entry,main -nostdlib -nostartfiles -o $@ serialtest.c -L. -lserial
+
+serial.dll: serial.o serial.exp
+	reactos-powerpc-gcc -Wl,--image-base=0x600000 -Wl,--entry,sync -nostdlib -nostartfiles -shared -o $@ serial.o serial.exp
+
+serial.o: serial.c
+	reactos-powerpc-gcc -c $<
+
+clean:
+	rm -rf *.o *.a *.exp *.dll

Added: branches/powerpc/reactos/tools/ppc-build/serialtest/serial.c
URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/tools/ppc-build/serialtest/serial.c?rev=25302&view=auto
==============================================================================
--- branches/powerpc/reactos/tools/ppc-build/serialtest/serial.c (added)
+++ branches/powerpc/reactos/tools/ppc-build/serialtest/serial.c Fri Jan  5 08:50:55 2007
@@ -1,0 +1,37 @@
+#include "serial.h"
+
+void sync() {
+    __asm__("eieio\n\t"
+	    "sync");
+}
+
+void send(char *serport, char c) {
+	/* Wait for Clear to Send */
+    while( !(serport[LSR] & 0x20) ) sync();
+    
+    serport[THR] = c;
+    sync();
+}
+
+char recv(char *serport) {
+    char c;
+
+    while( !(serport[LSR] & 1) ) sync();
+    
+    c = serport[RCV];
+    sync();
+}
+
+void setup(char *serport, int baud) {
+	int x = 115200 / baud;
+	serport[LCR] = 128;
+	sync();
+	serport[BAUDLOW] = x & 255;
+	sync();
+	serport[BAUDHIGH] = x >> 8;
+	sync();
+	serport[LCR] = 3;
+	sync();
+	serport[IER] = 0;
+	sync();
+}

Added: branches/powerpc/reactos/tools/ppc-build/serialtest/serial.def
URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/tools/ppc-build/serialtest/serial.def?rev=25302&view=auto
==============================================================================
--- branches/powerpc/reactos/tools/ppc-build/serialtest/serial.def (added)
+++ branches/powerpc/reactos/tools/ppc-build/serialtest/serial.def Fri Jan  5 08:50:55 2007
@@ -1,0 +1,5 @@
+LIBRARY SERIAL.DLL
+EXPORTS
+setup at 8
+send at 8
+recv at 4

Added: branches/powerpc/reactos/tools/ppc-build/serialtest/serial.h
URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/tools/ppc-build/serialtest/serial.h?rev=25302&view=auto
==============================================================================
--- branches/powerpc/reactos/tools/ppc-build/serialtest/serial.h (added)
+++ branches/powerpc/reactos/tools/ppc-build/serialtest/serial.h Fri Jan  5 08:50:55 2007
@@ -1,0 +1,21 @@
+#ifndef SERIAL_H
+#define SERIAL_H
+
+#define RCV 0
+#define THR 0
+#define BAUDLOW 0
+#define BAUDHIGH 1
+#define IER 1
+#define FCR 2
+#define ISR 2
+#define LCR 3
+#define MCR 4
+#define LSR 5
+#define MSR 6
+#define SPR 7
+
+extern void send(char *serport, char c);
+extern char recv(char *serport);
+extern void setup(char *serport, int baud);
+
+#endif//SERIAL_H

Added: branches/powerpc/reactos/tools/ppc-build/serialtest/serialtest.c
URL: http://svn.reactos.org/svn/reactos/branches/powerpc/reactos/tools/ppc-build/serialtest/serialtest.c?rev=25302&view=auto
==============================================================================
--- branches/powerpc/reactos/tools/ppc-build/serialtest/serialtest.c (added)
+++ branches/powerpc/reactos/tools/ppc-build/serialtest/serialtest.c Fri Jan  5 08:50:55 2007
@@ -1,0 +1,17 @@
+#include "serial.h"
+
+int main() {
+    int i;
+    char *iobase = (char *)0x80000000;
+    char *serport = iobase + 0x3f8;
+
+    setup( serport, 9600 );
+
+    for( i = ' '; i <= '~'; i++ ) {
+        send(serport, i);
+    }
+    send(serport, 0xa);
+
+    return 0;
+}
+




More information about the Ros-diffs mailing list