📄 dec5416-mem.c
字号:
/*********************************************************************************
* MCPSB.C v1.00 测试MCBSP同步串口测试的主程序 *
* 版权(c) 2003- 北京合众达电子技术有限责任公司 *
* 设计者: 段立锋 *
**********************************************************************************/
#include "type.h"
#include "sysreg.h"
#include "mcbsp54.h"
#include "memory.h"
#define TESTCODEADDR 0x28000
#define FLASH_ADDR 0x10000
#define FLash_ADDR_MAX 0x3FFFF
unsigned int i= 0;
unsigned int k= 0;
unsigned long flashaddr = 0x400000;
unsigned long flashbaddr = 0;
unsigned long flashlong= 0;
unsigned int sramaddr = 0x8000;
unsigned long srampaddr = 0x100000;
unsigned int sramread[0x100];
main()
{
/*设置系统时钟*/
sys_clk(CLK160);
/*初始化DEC5416板卡*/
dec5416_init();
/*设置系统的高32k的软件等待为4个*/
sys_wait(0x075ff);
/*配置系统存储器*/
/*设置数据空间的高32K为SRAM*/
memory_set(0x80);
/*测试外部的SRAM,当安装CY7c1021时,为2页,每页32K*/
/* 当安装CY7C1041时,为8页,每页32K*/
/*填写第一页*/
for(i =0; i<0x8000;i++)
{
*(unsigned int *)sramaddr++ = i;
}
/*填写第二页*/
memory_set(0x81);
sramaddr = 0x8000;
for(i =0; i<0x8000;i++)
{
*(unsigned int *)sramaddr++ = i+1;
}
/*填写第三页*/
memory_set(0x82);
sramaddr = 0x8000;
for(i =0; i<0x8000;i++)
{
*(unsigned int *)sramaddr++ = i+2;
}
/*填写第四页*/
memory_set(0x83);
sramaddr = 0x8000;
for(i =0; i<0x8000;i++)
{
*(unsigned int *)sramaddr++ = i+3;
}
/*填写第五页*/
memory_set(0x84);
sramaddr = 0x8000;
for(i =0; i<0x8000;i++)
{
*(unsigned int *)sramaddr++ = i+4;
}
/*填写第六页*/
memory_set(0x85);
sramaddr = 0x8000;
for(i =0; i<0x8000;i++)
{
*(unsigned int *)sramaddr++ = i+5;
}
/*填写第七页*/
memory_set(0x86);
sramaddr = 0x8000;
for(i =0; i<0x8000;i++)
{
*(unsigned int *)sramaddr++ = i+6;
}
/*填写第八页*/
memory_set(0x87);
sramaddr = 0x8000;
for(i =0; i<0x8000;i++)
{
*(unsigned int *)sramaddr++ = i+7;
}
/*修改页控制器,查看每页填的数据是否正确*/
memory_set(0x80);
memory_set(0x81);
memory_set(0x82);
memory_set(0x83);
memory_set(0x84);
memory_set(0x85);
memory_set(0x86);
memory_set(0x87);
/*将Sram映射到程序空间的0x100000处*/
memory_set(0xa0);
/*读回头0x100个数据,观察是否正确*/
progm_readm(srampaddr,&sramread[0],0x100);
progm_readm( (srampaddr+0x8000),&sramread[0],0x100);
progm_readm( (srampaddr+0x10000),&sramread[0],0x100);
progm_readm( (srampaddr+0x18000),&sramread[0],0x100);
progm_readm( (srampaddr+0x20000),&sramread[0],0x100);
progm_readm( (srampaddr+0x28000),&sramread[0],0x100);
progm_readm( (srampaddr+0x30000),&sramread[0],0x100);
progm_readm( (srampaddr+0x38000),&sramread[0],0x100);
/*测试FLASH,将FLASH映射到程序空间0x400000以上*/
memory_set(0x80);
/*FLASH的整片擦除*/
flash_erase((flashaddr+CHIP_ADDR),CHIP_ERASE);
/*写入整片的数据*/
flashaddr = 0;
for(flashlong = 0;flashlong<FLash_ADDR_MAX ;flashlong++)
{
if(flash_writes(flashaddr++,flashlong)==0)
{
/*写入错误计数*/
k=k+1;
}
}
k=0;
/*FLASH块擦除*/
for(flashbaddr = 0x400000; flashbaddr<0x440000; flashbaddr=flashbaddr+0x8000)
{
if(flash_erase(flashbaddr,BLOCK_ERASE) == 0)
{
/*察除错误计数*/
k=k+1;
}
}
/*写入整片的数据*/
flashaddr = 0;
for(flashlong = 0;flashlong<FLash_ADDR_MAX ;flashlong++)
{
if(flash_writes(flashaddr++,(0x3ffff-flashlong) )==0)
{
/*写入错误计数*/
k=k+1;
}
}
k=0;
/*FLASH扇区擦除*/
for(flashbaddr = 0x400000; flashbaddr<0x440000; flashbaddr=flashbaddr+0x800)
{
if(flash_erase(flashbaddr,SECTOR_ERASE) == 0)
{
/*察除错误计数*/
k=k+1;
}
}
k = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -