Hallo Ich habe ein MBX-Board (Motorola). Das Board hat drei LED's die ich zu testes halber ansteuern möchte. Ich habe ein kleines programm ich C, dass mir den zugriff auf ein register ermöglichen soll, von dem aus ich die LED's steuern kann. Leider klappt das aber nicht so ganz. Sieht vielleicht gerade jemand wo ich einen fehler mache? #include <unistd.h> #include <string.h> #include <sys/socket.h> #include <sys/time.h> #include <fcntl.h> #include <asm/system.h> #include <asm/io.h> #include <sys/mman.h> #define C_MEMSPACE 0xFA100000 /* physical address */ #define C_MEMSIZE 0x100 /* count */ #define C_PAGE 0x1000 /* page size */ int mem_fd; /* handle to /dev/mem */ unsigned char *vMemory; /* array for memory-access */ unsigned long vFIFOMask; /* set by SET_TRACE */ /* enables access to memory and I/O space */ unsigned char fGetAccess( void ) { /* accessing memory */ mem_fd = open( "/dev/mem", O_RDWR ); /* open /dev/mem */ if( mem_fd < 0 ) return( 0 ); vMemory = (unsigned char *)malloc( C_MEMSIZE + (C_PAGE-1) ); /* allocate */ if( vMemory == NULL ) return( 0 ); if( (unsigned long)vMemory % C_PAGE ) /* start on boundary */ vMemory += C_PAGE - ((unsigned long)vMemory % C_PAGE ); vMemory = (unsigned char *)mmap( /* map vMemory on physical space */ (caddr_t)vMemory, C_MEMSIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, mem_fd, C_MEMSPACE ); if( (long)vMemory < 0 ) return( 0 ); return( 1 ); /* successful */ } /* releases resources (notmally never called) */ void fReleaseAccess( void ) { close( mem_fd ); } /* turn LED on, FIFO will not be resetted */ void fLEDOn( void ) { vMemory[0x00] = 0x00; } /* turn LED off, FIFO will not be resetted */ void fLEDOff( void ) { vMemory[0x01] = 0x0E; } void main( void ) { fGetAccess(); /* Enable access */ fLEDOff(); /* LED off shows ready */ fReleaseAccess(); } hier noch die spezifikationen vom Board Das MBX-Board verfügt über drei LEDs die von einem Register aus gesteuert werden können. Es gibt zwei verschieden Register auf dem Board. Das erste befindet sich an allen geraden Adressen von $FA100000- $FA1FFFFE. Das zweite an allen ungeraden Adressen von $FA100001- $FA1FFFFF. Die LEDs können mit Hilfe des zweiten Registers gesteuert werden. Das Register besitzt 7 nutzbare Datenbits, die nachfolgend beschrieben werden. Die ersten vier Bits im Kontrollregister (2) definieren die Spannung für die PCMCIA Karte ( für uns nicht von Bedeutung). Die Bits vier bis sechs sind die Kontrollstatus LEDs. Bit sieben setzt das PCI Interface zurück (falls es gesetzt ist).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.