flashcmd.c
来自「TI 最新的1.2G DSP TMS320C6455的bootloader的烧写」· C语言 代码 · 共 65 行
C
65 行
#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 + =
减小字号Ctrl + -
显示快捷键?