📄 flasherase.c
字号:
//
// Project: Experiment 2.10.5 Flash Programming - Chapter 2
// File name: flashErase.c
// Function: flashErase()
//
// Description: This function erase the entire C5510 DSK flash memory
// Note: this funciton is for AMD: AM29LV400B
//
// For the book "Real Time Digital Signal Processing:
// Implementation and Application, 2nd Ed"
// By Sen M. Kuo, Bob H. Lee, and Wenshun Tian
// Publisher: John Wiley and Sons, Ltd
//
// Tools used: CCS v.2.12.07
// TMS320VC5510 DSK Rev-C
//
#include "flash.h"
#pragma CODE_SECTION(flashErase, ".text:example:flashErase");
short flashErase()
{
volatile unsigned long *fBase;
short retValue;
volatile short i;
// Issue flash chip erase sequence: AA-55-80-AA-55-10
*((volatile unsigned short *)FLASH_MEM_ADDR555) = FLASH_MEM_AA;
*((volatile unsigned short *)FLASH_MEM_ADDR2AA) = FLASH_MEM_55;
*((volatile unsigned short *)FLASH_MEM_ADDR555) = FLASH_MEM_SETUP;
*((volatile unsigned short *)FLASH_MEM_ADDR555) = FLASH_MEM_AA;
*((volatile unsigned short *)FLASH_MEM_ADDR2AA) = FLASH_MEM_55;
*((volatile unsigned short *)FLASH_MEM_ADDR555) = FLASH_MEM_ERASE;
// Wait until flash erase complete
fBase = (unsigned long *)(FLASH_MEM_BASE);
for (i=0; i<1000; i++) ;
while(1)
{
if ((*fBase & FLASH_MEM_DQ7) == FLASH_MEM_DQ7)
{
retValue = 0; // Normal return
break;
}
else if ((*fBase & FLASH_MEM_DQ5) == FLASH_MEM_DQ5)
{
if ((*fBase & FLASH_MEM_DQ7) != FLASH_MEM_DQ7)
{
retValue = 1; // Erase failed and timed out
break;
}
}
}
flashReset();
return (retValue);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -