1,OSDFPGA配置一个专用的8位寄存器控制指示灯亮灭,访问地址为90080017h,由电路图可知低电平点亮。
2,程序运行时,可直接editmemory。即修改90080017h地址的值(可在Edit-memory-edit对话框中修改,也可在View memory中直接点击修改),当前指示灯亮灭情况随之改变。程序仍继续运行。
3,BSL的结构及其使用
4,DSP/BIOS程序设计环境
程序如下:
#include "c6x.h"
#define PROGXOR 1
#define LEDCTLR (*((unsignedchar*)(0x90080017)))
voidInitEMIF(); // 初始化EMIF接口
void Delay(unsigned intnDelay); // 软件延时子程序
main()
{
int i,j;
unsigned int uWork;
while ( 1 )
{
LEDCTLR=0; // 点亮所有8个指示灯
Delay(1024); //等待片刻
LEDCTLR=0x0ff; // 关闭所有8个指示灯
Delay(1024);
#ifndef PROGXOR
uWork=1; // 以下逐个点亮指示灯
for ( i=0;i<8;i++ )
{
LEDCTLR&=((~uWork)&0x0ff);
uWork<<=1;
Delay(1024);
}
uWork=1; // 以下逐个关闭指示灯
for ( i=0;i<8;i++ )?
{
LEDCTLR|=uWork;
uWork<<=1;
Delay(1024);
}
#else
for ( j=0;j<2;j++ )
{
uWork=1; // 以下逐个关闭或点亮指示灯
for ( i=0;i<8;i++ )
{
LEDCTLR^=uWork;
uWork<<=1;
Delay(1024);
}
}
#endif
}
}
// 软件延时子程序
void Delay(unsigned intnDelay)
{
unsigned int i,j,k=0;
for ( i=0;i<nDelay;i++ )
for ( j=0;j<6144;j++ )
k++;
}
// 初始化EMIF接口
void InitEMIF()
{
#defineEMIFA_GCTL 0x01800000
#defineEMIFA_CE1 0x01800004
#defineEMIFA_CE0 0x01800008
#defineEMIFA_CE2 0x01800010
#defineEMIFA_CE3 0x01800014
#defineEMIFA_SDRAMCTL 0x01800018
#defineEMIFA_SDRAMTIM 0x0180001c
#defineEMIFA_SDRAMEXT 0x01800020
#defineEMIFA_CE1SECCTL 0x01800044
#defineEMIFA_CE0SECCTL 0x01800048
#defineEMIFA_CE2SECCTL 0x01800050
#defineEMIFA_CE3SECCTL 0x01800054
*(int*)EMIFA_GCTL = 0x00052078;
*(int*)EMIFA_CE0 = 0xffffffd3;
*(int*)EMIFA_CE1 = 0x73a28e01;
*(int*)EMIFA_CE2 = 0x22a28a22;
*(int*)EMIFA_CE3 = 0x22a28a42;
*(int *)EMIFA_SDRAMCTL = 0x57115000;
*(int *)EMIFA_SDRAMTIM = 0x0000081b;
*(int *)EMIFA_SDRAMEXT = 0x001faf4d;
*(int *)EMIFA_CE0SECCTL= 0x00000002;
*(int *)EMIFA_CE1SECCTL= 0x00000002;
*(int *)EMIFA_CE2SECCTL= 0x00000002;
*(int *)EMIFA_CE3SECCTL= 0x00000073;
}
|