]>
Commit | Line | Data |
---|---|---|
77a37381 | 1 | #include "stdafx.h" |
2 | #include "tester1.h" | |
3 | #include <commctrl.h> | |
4 | //#include <aygshell.h> | |
5 | #include <sipapi.h> | |
6 | #include "setup.h" | |
7 | ||
8 | #define GPIO 0x40E00000 | |
9 | #define GPIO_MEDIAQ 0x14040000 | |
10 | #define MQ_OFF 0x008 | |
c5f1f439 | 11 | |
77a37381 | 12 | int GPIOalt[81],GPIOio[81],GPIOst[81],mediaq; |
c5f1f439 | 13 | |
77a37381 | 14 | void SetGPIOio(int i,int io) // set GPIO as io == 1 output io == 0 input |
15 | { | |
16 | UINT32 *gpio=(UINT32*)VirtualAlloc((void*)0x0,0x100, MEM_RESERVE,PAGE_READWRITE); | |
17 | VirtualCopy((void*)gpio,(void *) (GPIO/256), 0x100, PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL); | |
18 | if(io) | |
19 | gpio[0xC/4 + (i/32)] = gpio[0xC/4 + (i/32)] | (1<<(i%32)); | |
20 | else | |
21 | gpio[0xC/4 + (i/32)] = gpio[0xC/4 + (i/32)] & (~(1<<(i%32))); | |
22 | VirtualFree(gpio,0,MEM_RELEASE); | |
23 | } | |
24 | ||
25 | void SetGPIOalt(int i,int io) // set GPIO as io == 1 output io == 0 input | |
26 | { | |
27 | UINT32 *gpio=(UINT32*)VirtualAlloc((void*)0x0,0x100, MEM_RESERVE,PAGE_READWRITE); | |
28 | VirtualCopy((void*)gpio,(void *) (GPIO/256), 0x100, PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL); | |
29 | UINT32 w = gpio[0x54/4 + (i/16)] & (~(3<<((i%16)*2))); | |
30 | gpio[0x54/4 + (i/16)] = w | (io<<((i%16)*2)); | |
31 | VirtualFree(gpio,0,MEM_RELEASE); | |
32 | } | |
33 | ||
34 | void writeGPIOConfig(FILE*fd, UINT32 *gpio) | |
35 | { | |
36 | for(int i=0;i<81;i++) | |
37 | { | |
38 | UINT32 adr=i/16; | |
39 | fprintf(fd,"GPIO #%d=%c, %d\n",i,(gpio[0xC/4+(adr/2)]>>(i%32))&0x1?'O':'I',(gpio[0x54/4+adr]>>((i%16)*2))&0x3); | |
40 | GPIOalt[i]=(gpio[0x54/4+adr]>>((i%16)*2))&0x3; | |
41 | GPIOio[i]=(gpio[0xC/4+(adr/2)]>>(i%32))&0x1; | |
42 | ||
43 | } | |
44 | } | |
45 | ||
46 | inline int readGPIOstate(UINT32 *gpio,int i) | |
47 | { | |
48 | return (gpio[(i/32)]>>(i%32))&0x1; | |
49 | } | |
50 | ||
51 | inline int readGPIOalt(UINT32 *gpio,int i) | |
52 | { | |
53 | return (gpio[0x54/4+i/16]>>((i%16)*2))&0x3; | |
54 | } | |
55 | ||
56 | void Gpio() | |
57 | { | |
58 | SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_BELOW_NORMAL); | |
59 | // SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL); | |
60 | FILE *fd=fopen("\\loggerG.txt","w"); | |
61 | SYSTEMTIME time; | |
62 | ||
63 | fprintf(fd,"MCMEM0=0x%x\n",ReadPhysical(0x48000028)); | |
64 | fprintf(fd,"MCMEM1=x%x\n",ReadPhysical(0x4800002C)); | |
65 | fprintf(fd,"MCATT0=0x%x\n",ReadPhysical(0x48000030)); | |
66 | fprintf(fd,"MCATT1=0x%x\n",ReadPhysical(0x48000034)); | |
67 | fprintf(fd,"MCIO0=0x%x\n",ReadPhysical(0x48000038)); | |
68 | fprintf(fd,"MCIO1=0x%x\n",ReadPhysical(0x4800003C)); | |
69 | ||
70 | for(int q=0;q<16;q++) | |
71 | fprintf(fd,"DMA #%d=0x%x\tDCMD=0x%x\tDSADR=0x%x\tDTADR=0x%x\n",q,ReadPhysical(0x40000000+q*4),ReadPhysical(0x40000200+q*0x10+0xC),ReadPhysical(0x40000200+q*0x10+0x4),ReadPhysical(0x40000200+q*0x10+0x8)); | |
72 | GetSystemTime(&time); | |
73 | int sec=time.wSecond,quit=0; | |
74 | sec+=4; | |
75 | if(sec>60) sec-=60; | |
76 | UINT32 *gpio=(UINT32*)VirtualAlloc((void*)0x0,0x100, MEM_RESERVE,PAGE_READWRITE); | |
77 | VirtualCopy((void*)gpio,(void *) (GPIO/256), 0x100, PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL); | |
78 | UINT32 *gpio1=(UINT32*)VirtualAlloc((void*)0x0,0x1000, MEM_RESERVE,PAGE_READWRITE); | |
79 | VirtualCopy((void*)gpio1,(void *) (GPIO_MEDIAQ/256), 0x1000, PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL); | |
80 | writeGPIOConfig(fd,gpio); | |
81 | ||
82 | for(int i=0;i<81;i++) | |
83 | { | |
84 | GPIOst[i]=-1; | |
85 | } | |
86 | int state,alt; | |
87 | while(sec>time.wSecond) | |
88 | { | |
89 | GetSystemTime(&time); | |
90 | if(gpio1[MQ_OFF/4]!=(UINT32)mediaq) | |
91 | { | |
92 | mediaq=gpio1[MQ_OFF/4]; | |
93 | fprintf(fd,"MQ_GPIO=0x%x\n",mediaq); | |
94 | } | |
95 | for(i=0;i<81;i++) | |
96 | { | |
97 | /* if(GPIOio[i]) continue;*/ | |
98 | if(GPIOalt[i]) continue; | |
99 | // if(i==16) continue; | |
100 | // if(i==28) continue; | |
101 | // if(i==29) continue; | |
102 | // if(i==30) continue; | |
103 | // if(i==31) continue; | |
104 | state=readGPIOstate(gpio,i); | |
105 | alt=readGPIOalt(gpio,i); | |
106 | if(GPIOst[i]==state&&GPIOalt[i]==alt) continue; | |
107 | GPIOst[i]=state; | |
108 | if(GPIOalt[i]==alt) | |
109 | fprintf(fd,"#%d: %d\n",i,state); | |
110 | else | |
111 | { | |
112 | GPIOalt[i]=alt; | |
113 | fprintf(fd,"#%d: %d\tf=%d\n",i,state,alt); | |
114 | } | |
115 | ||
116 | } | |
117 | } | |
118 | fclose(fd); | |
119 | } |