nwait.c
上传用户:zbk8730
上传日期:2017-08-10
资源大小:12168k
文件大小:5k
源码类别:

uCOS

开发平台:

C/C++

  1. #include <string.h>
  2. #include "def.h"
  3. #include "option.h"
  4. #include "2440addr.h"
  5. #include "2440lib.h"
  6. void WaitRd8(void);
  7. void WaitWr8(void);
  8. void WaitRd32(void);
  9. void WaitWr32(void);
  10. void WaitRd16(void);
  11. void WaitWr16(void);
  12. #define BUS8 (0)
  13. #define BUS16 (1)
  14. #define BUS32 (2)
  15. #define ENWAIT (1)
  16. #define SRAMBE03 (1)
  17. #define B4_Tacs (0x0) //0clk
  18. #define B4_Tcos (0x0) //0clk
  19. #define B4_Tacc (0x2) //3//clk
  20. #define B4_Tcoh (0x0) //0clk
  21. #define B4_Tah (0x0) //0clk
  22. #define B4_Tacp (0x0) //2//clk
  23. #define B4_PMC (0x0) //no page mode
  24. #define CS_nGCS4 0x20000000
  25. // Work-around with nWAIT.
  26. void Test_WaitPin(void)
  27. {
  28.     U32 savePLLCON,saveCLKDIVN;
  29. int i;
  30.     saveCLKDIVN=rCLKDIVN;
  31.     savePLLCON=rMPLLCON;
  32.     Uart_TxEmpty(1);
  33.     ChangeClockDivider(12,12);     // 1:2:4 
  34.     ChangeMPllValue(246,13,1);  //Fin=12MHz FCLK=100MHz for ALTERA
  35.     Uart_Init(101606000/4,115200); // PCLK is about 25MHz
  36.     rMISCCR=0x330; //HCLK
  37.     rGPHCON=(rGPHCON & (~(0x3<<18))) | (0x2<<18);   //GPH9=CLKOUT0
  38.     Uart_Printf("Select test bus width(32bit(0)/16bit(1)/8bit(2): ");
  39.     i=Uart_GetIntNum();
  40.     switch(i) {
  41. case 0:
  42.     WaitWr32();
  43.     Uart_Printf("n");
  44.     WaitRd32();
  45.     Uart_Printf("n");
  46.     break;
  47. case 1:
  48. WaitWr16();
  49. Uart_Printf("n");
  50. WaitRd16();
  51. Uart_Printf("n");
  52. break;
  53. case 2:
  54. WaitWr8();
  55. Uart_Printf("n");
  56. WaitRd8();
  57. Uart_Printf("n");
  58. break;
  59. default:
  60. break;
  61. }
  62.     Uart_TxEmpty(1);
  63.     rCLKDIVN=saveCLKDIVN;
  64.     rMPLLCON=savePLLCON;
  65.     Uart_Init(0,115200);    
  66. }
  67. void WaitRd8(void)
  68. {
  69.     U8 readVal;
  70.     int i;
  71.   Uart_Printf("[nGCS4,8-bit,read,nWAIT Test].n");
  72.     rBWSCON=rBWSCON & ~(0xf<<16)|(BUS8<<16)|(ENWAIT<<18); //nGCS4 
  73.     rBANKCON4=((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));
  74. Uart_Printf("rBWSCON:%xn", rBWSCON);
  75. Uart_Printf("rBANKCON4:%xn", rBANKCON4);
  76.     for(i=0;i<2;i++); //wait until the bank configuration is in effect.
  77. Uart_Printf("Press any key to stop...n");
  78. while(1) {
  79.     readVal=(*(volatile U8 *)CS_nGCS4);
  80. if(Uart_GetKey()!=0) break;
  81. }
  82.     //readVal&=0xf;//data[3:0]
  83.     //Uart_Printf("read_data=%x.n",readVal);
  84. }
  85. void WaitWr8(void)
  86. {
  87.     int i;
  88.     Uart_Printf("[nGCS4,8-bit,write,nWAIT Test].n");
  89.     rBWSCON=rBWSCON & ~(0xf<<16)|(BUS8<<16)|(ENWAIT<<18); //nGCS4 
  90.     rBANKCON4=((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));
  91. Uart_Printf("rBWSCON:%xn", rBWSCON);
  92. Uart_Printf("rBANKCON4:%xn", rBANKCON4);
  93. for(i=0;i<2;i++); //wait until the bank configuration is in effect.
  94. Uart_Printf("Press any key to stop...n");
  95. while(1) {
  96.     *((volatile U8 *)CS_nGCS4)=0;
  97. if(Uart_GetKey()!=0) break;
  98. }
  99. }
  100. void WaitRd16(void)
  101. {
  102.     U16 readVal;
  103.     int i;
  104.     Uart_Printf("[nGCS4,16-bit,read,nWAIT Test].n");
  105.     rBWSCON=rBWSCON & ~(0xf<<16)|(BUS16<<16)|(ENWAIT<<18); //nGCS4 
  106.     rBANKCON4=((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));
  107. Uart_Printf("rBWSCON:%xn", rBWSCON);
  108. Uart_Printf("rBANKCON4:%xn", rBANKCON4);
  109.     for(i=0;i<2;i++); //wait until the bank configuration is in effect.
  110. Uart_Printf("Press any key to stop...n");
  111. while(1) {
  112.     readVal=(*(volatile U16 *)CS_nGCS4);
  113. if(Uart_GetKey()!=0) break;
  114. }
  115.     //readVal&=0xf;//data[3:0]
  116.     //Uart_Printf("read_data=%xn",readVal);
  117. }
  118. void WaitWr16(void)
  119. {
  120.     int i;
  121.     Uart_Printf("[nGCS4,16-bit,write,nWAIT Test].n");
  122.     rBWSCON=rBWSCON & ~(0xf<<16)|(BUS16<<16)|(ENWAIT<<18); //nGCS4 
  123.     rBANKCON4=((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));
  124.     
  125.     Uart_Printf("rBWSCON:%xn", rBWSCON);
  126.     Uart_Printf("rBANKCON4:%xn", rBANKCON4);
  127.     for(i=0;i<2;i++); //wait until the bank configuration is in effect.
  128.     Uart_Printf("Press any key to stop...n");
  129.     while(1) 
  130.     {
  131.         *((volatile U16 *)CS_nGCS4)=0;
  132.         if(Uart_GetKey()!=0) 
  133.          break;
  134.     }
  135. }
  136. void WaitRd32(void)
  137. {
  138.     U32 readVal;
  139.     int i;
  140.     Uart_Printf("[nGCS4,32-bit,read,nWAIT Test].n");
  141.     rBWSCON=rBWSCON & ~(0xf<<16)|(BUS32<<16)|(ENWAIT<<18); //nGCS4 
  142.     rBANKCON4=((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));
  143.     Uart_Printf("rBWSCON:%xn", rBWSCON);
  144.     Uart_Printf("rBANKCON4:%xn", rBANKCON4);
  145.     for(i=0;i<2;i++); //wait until the bank configuration is in effect.
  146.     Uart_Printf("Press any key to stop...n");
  147.     while(1) 
  148.     {
  149.         readVal=(*(volatile U32 *)CS_nGCS4);
  150.      if(Uart_GetKey()!=0) 
  151.     break;
  152.     }
  153. }
  154. void WaitWr32(void)
  155. {
  156.     
  157.     int i;
  158.     
  159.     Uart_Printf("[nGCS4,32-bit,write,nWAIT Test].n");
  160.     rBWSCON=rBWSCON & ~(0xf<<16)|(BUS32<<16)|(ENWAIT<<18); //nGCS4 
  161.     rBANKCON4=((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC));
  162.     Uart_Printf("rBWSCON:%xn", rBWSCON);
  163.     Uart_Printf("rBANKCON4:%xn", rBANKCON4);
  164.     for(i=0;i<2;i++); //wait until the bank configuration is in effect.
  165.     Uart_Printf("Press any key to stop...n");
  166.     while(1) 
  167.     {
  168.         *((volatile U32 *)CS_nGCS4)=0;
  169. if(Uart_GetKey()!=0) 
  170.     break;
  171.     }
  172. }
  173. void Test_XBREQ(void)
  174. {
  175.     U32 saveGPBCON,saveGPBUP;
  176.     saveGPBCON=rGPBCON;
  177.     rGPBCON=0x2800;
  178.     Uart_Printf("Press any key!!n");
  179.     Uart_Getch();
  180.     
  181.     rGPBCON=saveGPBCON;
  182. }