②编写
FLASH擦写程序。
#define N 100 /* 由于FLASH与RAM的读写速度不同,所以需要在每项操作后加入若干个延迟以保证正确性,延迟的具体长短可以根据具体情况作调整 */
void main()
{
unsigned int i,code;
unsigned int *code_addr;
unsigned int *flash_addr;
*GPIO_D_DR=0x0002; /*
映射方式设置为映射到片外数据FLASH*/
delay(N);
GPIOD_setup(); /*GPIOD设置*/
delay(N);
erase_flash(); /*如FLASH上原有数据无需保留,则全部擦除,如部分据需保留,也可部分擦除*/
*GPIO_D_DR=0x0000; /*映射方式设置为映射到片内XRAM*/
delay(N);
flash_addr=(unsigned int *) FL
ASH_ADDR;
code_addr=(unsigned int *)CODE_ADDR; /*设置XRAM的存储起始地址和数据FLASH擦写起始地址*/
/*循环擦写*/
for(i=0;i{
*GPIO_D_DR=0x0000;
delay(N);
code=*(code_addr++); /*保存XRAM中数据到变量code*/
delay(N);
*GPIO_D_DR=0x0002;
delay(N);
pre_write_flash(); /* 写FLASH前的预处理,向FLASH内写入相应命令字,根据所选用 FLASH的不同预处理操作也有所不同*/
delay(N);
*(flash_addr++)=code; /*写数据到FLASH中*/
delay(N);
}
}
擦写步骤如下:
① 将character[180][32]设置为全局变量。
② 将程序编译下载到DSP芯片中,打开工程目录中output文件夹中的.elf文件,找到character 数组在XRAM中存放的起始地址和长度。用户可以使用Watch Memory命令察看该段地址的数据值。
③ 使用Save Memory命令将XRAM中对应于character数组的地址段的数据以二进制形式保存在计算机上。通过UltraEdit将其打开,检看数据保存是否正确。
④ 打开FLASH擦写程序,修改数据在片内XRAM中存储的起始地址和FLASH的擦写起始地址与数据长度。编译下载后,单步执行,执行到擦除完FLASH,并将地址映射方式置为映射到片内XRAM处,使用Load Memory指令将char数据文件载入到片内XRAM的相应存储地址段中,再接着全速运行程序,几十秒之后程序执行完毕,数据便写到片外FLASH的相应地址中。
⑤ 再次打开FLASH擦写程序,单步执行到映射方式置为片外FLASH处停止,使用Save Memory命令保存FLASH中刚写入的地址段的数据值。接着使用UltraEdit的比较文件命令比较前两次保存的数据,如完全相同就表明character字模数组已经正确的写到片外FLASH中。
将数据擦写入片外数据FLASH后,就可以在用户程序中对该数据加以调用。在调用的时候要先将映射方式设置为映射到片外FLASH,然后再取数据。如下所示,取出FLASH中0x6000地址上存储的数据:
#define FLASH_ADD (unsigned int *)0x6000
*GPIO_D_DR=0x0002; /*映射方式设置为映射到片外FLASH*/
data = *(FLASH_ADD);