📄 flashcmd.c
字号:
#define FlashMap1BaseAddr 0xb0000000
void WriteIsOver(void);
//-----------------------------------------------------
void EraseChip(void)
{
*(volatile unsigned char*)(FlashMap1BaseAddr + 0xaaa) = 0xaa;
*(volatile unsigned char*)(FlashMap1BaseAddr + 0x555) = 0x55;
*(volatile unsigned char*)(FlashMap1BaseAddr + 0xaaa) = 0x80;
*(volatile unsigned char*)(FlashMap1BaseAddr + 0xaaa) = 0xaa;
*(volatile unsigned char*)(FlashMap1BaseAddr + 0x555) = 0x55;
*(volatile unsigned char*)(FlashMap1BaseAddr ) = 0x10;
WriteIsOver();
}
void WriteByte(unsigned int Addr, char Val)
{
*(volatile unsigned char*)(FlashMap1BaseAddr ) = 0xaa;
*(volatile unsigned char*)(FlashMap1BaseAddr ) = 0x55;
*(volatile unsigned char*)(FlashMap1BaseAddr ) = 0xa0;
*(volatile unsigned char*)(FlashMap1BaseAddr + Addr) = Val;
WriteIsOver();
}
unsigned char ReadByte(unsigned int Addr)
{
unsigned char Val=0;
Val=*(volatile unsigned char*)(FlashMap1BaseAddr + Addr);
return Val;
}
void WriteIsOver(void)
{
unsigned int i;
unsigned char LastToggleBit,CurrentToggleBit;
LastToggleBit = (*(volatile unsigned char*)FlashMap1BaseAddr) & 0x40;
CurrentToggleBit = (*(volatile unsigned char*)FlashMap1BaseAddr) & 0x40;
for(i = 0; ; i++)
{
LastToggleBit = CurrentToggleBit;
CurrentToggleBit = (*(volatile unsigned char*)FlashMap1BaseAddr) & 0x40;
if(LastToggleBit == CurrentToggleBit) break;
}
}
void pllbypass()
{
*((volatile unsigned int *)0x29a0110)=0x00000003;//160M
*((volatile unsigned int *)0x29a0114)=0x00008000;
*((volatile unsigned int *)0x29a0160)=0x00008007;//eclk=10M
*((volatile unsigned int *)0x29a0164)=0x00008007;
*((volatile unsigned int *)0x29a0100)=0x00000041;
*((volatile unsigned int *)0x29a0138)=0x00000001;
*((volatile unsigned int *)0x70000080)=0x0ffffffe;
*((volatile unsigned int *)0x70000084)=0x0ffffffc;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -