Search previous posts for the use of the "volatile" keyword.
-Curtis.
On September 1, 2006 09:05 am, mattsaintdev wrote:
> Hi,
> posted a similar request a few weeks ago but after help still not
> getting a handle to the PLD registers of the video card.
>
> Once problem was that i needed to be SU to do an open on "dev/mem"
> but still the pointer to "pld_regs=(unsigned char *)mmap(" is
> returning a -1. Checked page size btw which is 4096.
>
> I dont have a problem mapping the video buffer though?
>
> Code below, any suggestions?
>
> Thanks
>
> Matt
>
>
>
>
> #include <unistd.h>
> #include <sys/types.h>
> #include <sys/mman.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <fcntl.h>
>
> volatile unsigned char *pld_regs;
>
>
> int main(int argc, char **argv)
> {
>
> char base7;
> int mem_handle=open("/dev/mem", O_RDWR | O_SYNC);
> //
> // 0x11E0_0000 = PLD Register base address
>
> printf("mem handle = %d\n", mem_handle);
>
> pld_regs=(unsigned char *)mmap(0, 4096 , PROT_READ|PROT_WRITE,
> MAP_SHARED, mem_handle, 0x11E00000);
>
>
> if ((int)pld_regs=-1) {
> printf("MMap failed.\n Page size = %d\n",getpagesize() );
> exit(1);
> }
> //
> //
> //
> //
> printf("TS-7KV Register settings probe \n");
> printf("------------------------------ \n\n");
> printf("BASE+0 Board ID #1 = %X (documented as 0x41)\n", pld_regs
> [0xE0] );
> printf("BASE+1 Board ID #2 = %X (documented as 0x20)\n", pld_regs
> [0xE1] );
>
> base7=pld_regs[0xE7];
> if (base7 & 0x80) printf("ADC option is installed\n");
> if (base7 & 0x40) printf("CAN option is installed\n");
> if (base7 & 0x20) printf("J5 Set\n");
> if (base7 & 0x10) printf("J4 Set\n");
> if (base7 & 0x08) printf("J3 Set\n");
> if (base7 & 0x04) printf("J2 Set\n");
> if (base7 & 0x02) printf("J1 Set\n");
> //
> //
> return 0;
> }
>
>
>
>
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|