📄 main.c
字号:
#define MAIN
#include "glodef.h"
#define SDRAM_ADDR 0x02000000;
#define FLASH_ADDR 0x01400000;
#define FLASH_SIZE 0x80
void Delay(unsigned int time)
{
unsigned int i,j;
for(i = 0; i < time; i ++)
j = i;
}
void Flash_Program(unsigned char * Program_Addr, unsigned char *Src)
{
unsigned char* Flash_Addr, *SDRAM_Addr;
unsigned int i;
unsigned int end;
unsigned char Data, Sdram;
end = 0;
SDRAM_Addr = Src;
Flash_Addr = (unsigned char*)0x1415554;
*Flash_Addr = 0xaa;
Flash_Addr = (unsigned char*)0x140aaa8;
*Flash_Addr = 0x55;
Flash_Addr = (unsigned char*)0x1415554;
*Flash_Addr = 0xa0;
Flash_Addr = (unsigned char*)Program_Addr;
for(i = 0; i< FLASH_SIZE; i++)
{
Sdram = *SDRAM_Addr++;
Delay(20);
*Flash_Addr = Sdram;
Flash_Addr+=0x4;
}
Flash_Addr -=0x4;
Delay(200000);
while(end)
{
Data = 0;
Data = *Flash_Addr;
if((Data & 0x80) == (Sdram & 0x80))
{
end = 1;
}
}
}
void Flash_PM()
{
unsigned int i;
unsigned char * Base, *Source;
Base = (unsigned char*)0x01400000;
Source =(unsigned char*)0x02000000;
for(i = 0; i< 512; i++)
{
Flash_Program(Base,Source);
Base += 0x200;
Source += 0x80;
}
}
void Flash_DM()
{
unsigned int i;
unsigned char * Base, *Source;
Base = (unsigned char*)0x01440000;
Source =(unsigned char*)0x02010000;
for(i = 0; i< 512; i++)
{
Flash_Program(Base,Source);
Base += 0x200;
Source += 0x80;
}
}
void Flash_ID()
{
unsigned char* Flash_Addr;
unsigned char Data;
/* enter ID mode */
Flash_Addr = (unsigned char*)0x01415554;
*Flash_Addr = 0x000000aa;
Flash_Addr = (unsigned char*)0x0140aaa8;
*Flash_Addr = 0x00000055;
Flash_Addr = (unsigned char*)0x01415554;
*Flash_Addr = 0x00000090;
Flash_Addr = (unsigned char*)0x01400000;
Data = *Flash_Addr;
Flash_Addr += 0x04;
Data = *Flash_Addr;
Flash_Addr += 0x04;
Data = *Flash_Addr;
/* leave */
Flash_Addr = (unsigned char*)FLASH_ADDR;
Flash_Addr += 0x15554;
*Flash_Addr = 0xaa;
Flash_Addr = (unsigned char*)FLASH_ADDR;
Flash_Addr += 0xaaa8;
*Flash_Addr = 0x55;
Flash_Addr = (unsigned char*)FLASH_ADDR;
Flash_Addr += 0x15554;
*Flash_Addr = 0xf0;
}
void Flash_Read()
{
unsigned char *Flash_Addr1 = (unsigned char*)0x01400000;
unsigned char *Flash_Addr2 = (unsigned char*)0x01420000;
unsigned char *Flash_Addr3 = (unsigned char*)0x01440000;
unsigned char Data1;
unsigned int i;
Data1 = 0;
for(;;)
{
Data1 = *Flash_Addr1;
Flash_Addr1 +=0x04;
Data1 = *Flash_Addr2;
Flash_Addr2 +=0x04;
Data1 = *Flash_Addr3;
Flash_Addr3 +=0x04;
}
}
void test()
{
unsigned char *Flash_Addr1 = (unsigned char*)0x01400000;
unsigned char *Flash_Addr2 = (unsigned char*)0x0147ffff;
unsigned char Data1;
unsigned int i;
Data1 = 0;
for(;;)
{
*Flash_Addr1=0x0;
*Flash_Addr2=0xff;
}
}
void Flash_Erase()
{
unsigned char * Flash_Addr = (unsigned char*)0x01415554;
*Flash_Addr = 0xaa;
Flash_Addr = (unsigned char*)0x0140aaa8;
*Flash_Addr = 0x55;
Flash_Addr = (unsigned char*)0x01415554;
*Flash_Addr = 0x80;
Flash_Addr = (unsigned char*)0x01415554;
*Flash_Addr = 0xaa;
Flash_Addr = (unsigned char*)0x0140aaa8;
*Flash_Addr = 0x55;
Flash_Addr = (unsigned char*)0x01415554;
*Flash_Addr = 0x10;
}
void main()
{
unsigned route;
INTR_GLOBAL_DISABLE();
Global_EMIF();
Global_Init_var();
Global_DMA();
Global_Intr();
INTR_GLOBAL_ENABLE();
switch(route)
{
case 0:
Flash_ID();
break;
case 1:
Flash_Read();
break;
case 2:
for(;;)
{
TOUT_ASSERT(0);
TOUT_NEGATE(0);
};
break;
case 3:
Flash_Program((unsigned char*)0x01400000, (unsigned char *)0x80000000);
Flash_Read();
break;
case 4:
Flash_Erase();
Flash_Read();
break;
case 5:
Flash_All();
Flash_Read();
break;
case 6:
test();
break;
}/*
for(;;)
{
TOUT_ASSERT(0);
TOUT_NEGATE(0);
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -