📄 iotest.c
字号:
#include <stdio>
#include "iotestcfg.h"
#define GPIO_DIR (*(ioport volatile unsigned *)0x3400)
//General-purpose I/O Direction Register
#define GPIO_DATA (*(ioport volatile unsigned *)0x3401)
//General-purpose I/O Data Registerint i = 0;
//EGCR=0x0220 enable clkmem clkmem= CPU clock/2=96Mhz ardy low active
// Main clock =12Mx16=192Mhz
// SDC1 0xf948 kingpro
// SDC2 0x03ff kingpro
//Sdram period = 0x0080 kingpro
//Sdram init = 0x00 Kingpro
// SDC1 0x3922/3933 Dtech
// SDC2 0x0252 Dtech
//Sdram period = 0x0400 Dtech
//Sdram init = 0x00 Dtech
long i = 0;
main()
{
// int dat;
int ioport * EBCR;
unsigned int data, data_rd;
short j;
EBCR=(int *)0x6c00;
*EBCR=0x01;
GPIO_DIR = 0x0092; //GPIO1 GPIO4 GPIO7 Direction: output
GPIO_DATA = 0x0092; //GPIO1=High, GPIO4 high,gpio7 high L2 off for D5509
// start sdram test
asm("\tBCLR XF"); //start sdram test L1 on for D5509
data = GPIO_DATA;
data &= 0xFf7f; //GPIO7=LOW, L2 on for D5509
GPIO_DATA = data;
GPIO_DATA = data;
*(int *)0x60000a = 0x3; //L3 on For D5509
data=0;
for(i=0x20000;i<0x400000;i++) // write SDram
{
*(int *)i = data;
data++;
}
data_rd=0;
for(i=0x20000;i<0x400000;i++) // read and test SDram
{
data = *(int *)i ;
if ( data_rd==data)
{
data_rd++;
}
else
{
asm("\tBSET XF"); // L1 off for D5509
data = GPIO_DATA;
data |= 0x0080; //GPIO7=high, L2 off for D5509
GPIO_DATA = data;
GPIO_DATA = data;
*(int *)0x60000a = 0x1; //L3 off For D5509
}
}
for(i=0;i<8000000;i++)
data_rd=0; // wait time
// end sdtam test
asm("\tBSET XF");
for ( j = 0; j<100; j++);
asm("\tBCLR XF");
for ( j = 0; j<100; j++);
asm("\tBSET XF");
for(;;)
{
data = GPIO_DATA;
data &= 0xFffd; //GPIO1=LOW, L1 on for BGA5509
GPIO_DATA = data;
GPIO_DATA = data;
data = GPIO_DATA;
data &= 0xFf7f; //GPIO7=LOW, L2 on for D5509
GPIO_DATA = data;
GPIO_DATA = data;
asm("\tBSET XF"); // L1 off for D5509
*(int *)0x60000a = 0x3; //L3 on For D5509
for(i=0;i<2000000;i++);
*(int *)0x600000 = 0x0; //LED1 OFF For Kingpro
*(int *)0x60000a = 0x1; //L3 off For D5509
data = GPIO_DATA;
data |= 0x0002; //GPIO1=high, L1 off for BGA5509
GPIO_DATA = data;
GPIO_DATA = data;
data = GPIO_DATA;
data |= 0x0080; //GPIO7=high, L2 off for D5509
GPIO_DATA = data;
GPIO_DATA = data;
asm("\tBCLR XF"); // L1 on for D5509
for(i=0;i<2000000;i++);
*(int *)0x600000 = 0x1;//LED1 ON for Kingpro
asm("\tBSET XF"); // L1 off for D5509
for(i=0;i<2000000;i++);
*(int *)0x600001 = 0x0; //LED3 OFF for Kingpro
asm("\tBCLR XF"); // L1 on for D5509
for(i=0;i<100000;i++);
*(int *)0x600001 = 0x1;//LED3 ON for Kingpro
for(i=0;i<100000;i++);
*(int *)0x600002 = 0x0; //LED2 OFF for Kingpro
for(i=0;i<100000;i++);
*(int *)0x600002 = 0x1;//LED2 ON for Kingpro
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -