📄 hello.c
字号:
/*
* Copyright 2003 by Texas Instruments Incorporated.
* All rights reserved. Property of Texas Instruments Incorporated.
* Restricted rights to use, duplicate or disclose this code are
* granted through contract.
*
*/
/* "@(#) DSP/BIOS 4.90.270 06-11-03 (barracuda-m10)" */
/***************************************************************************/
/* */
/* H E L L O . C */
/* */
/* Basic C standard I/O from main. */
/* */
/* */
/***************************************************************************/
#include <stdio.h>
#define uint unsigned int
#define ushort unsigned short
#define ulint unsigned long
uint *srampoint;
ushort state=0;
ioport uint port2aaa;
ioport uint port5555;
/********************************************/
void CFIQueryExit(void)
{
port5555 = 0xaaaa;
port2aaa = 0x5555;
port5555 = 0xf0f0;
state &= 0xfc;
}
void SWPIDExit(void)
{
port5555 = 0xf0f0;
state &= 0xfc;
}
void CFIQueryEntry(void)
{
if(state&1)
{
if(state&2)
SWPIDExit();
else
return;
}
port5555 = 0xaaaa;
port2aaa = 0x5555;
port5555 = 0x9898;
state |= 1;
}
void SWPIDEntry(void)
{
if(state&1)
{
if(state&2)
return;
else
CFIQueryExit();
}
port5555 = 0xaaaa;
port2aaa = 0x5555;
port5555 = 0x9090;
state |= 3;
}
void ChipErase(void)
{
if(state&1)
{
if(state&2)
SWPIDExit();
else
CFIQueryExit();
}
port5555 = 0xaaaa;
port2aaa = 0x5555;
port5555 = 0x8080;
port5555 = 0xaaaa;
port2aaa = 0x5555;
port5555 = 0x1010;
while(1)
{
uint i;
i = *((volatile uint *)0x6666)&0x40;
if(i!=*((volatile uint *)0x6666)&0x40) //D6 == D6
continue;
if(*((volatile uint *)0x8888)&0x80)
break; //D7 == 1
}
}
void FlashProg(uint ProgStart, uint InData)//uint *DataPtr, uint WordCnt)
{
uint i, j;
j=InData;
port5555 = 0xaaaa;
port2aaa = 0x5555;
port5555 = 0xa0a0;
srampoint=(uint *)ProgStart;
*srampoint = j;
while(1)
{
i = (*srampoint)&0x40;
if(i!=(*srampoint&0x40)) //D6 == D6
continue;
if((*srampoint&0x80)==(j&0x80))
break; //D7 == D7
}
}
void FlashRead(uint ReadStart, uint *DataPtr, uint Size)
{
int i;
for(i=0; i<Size; i++)
*(DataPtr+i) = *((uint *)ReadStart+i);
}
void main()
{
uint SramTemp=0;
uint ReadData=0;
uint ReadToFlash=0;
uint AccessPoint=0x8000;
FILE *fptr;
asm(" SSBX INTM");
asm(" STM #7fffH,SWWSR");
asm(" STM #0a0H,PMST");
asm(" SSBX XF");
ChipErase();
puts("Download Begin.........\n");
fptr = fopen("bassfir.bin", "rb");
while(!feof(fptr))
{
SramTemp=0;
ReadData=fgetc(fptr);
ReadToFlash=ReadData;
ReadData=fgetc(fptr);
ReadToFlash=(ReadToFlash<<8)+ReadData;
FlashProg(AccessPoint,ReadToFlash);
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
srampoint=(uint *)AccessPoint;
SramTemp=*srampoint;
asm(" NOP");
asm(" NOP");
asm(" NOP");
asm(" NOP");
AccessPoint++;
}
FlashProg(0xffff,0x8000);
asm(" NOP");
asm(" NOP");
fclose(fptr);
puts("Download Finish!\n");
asm(" NOP");
asm(" NOP");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -