DSP篇--C6701功能调试系列之 FLASH测试

Posted nanke_yh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DSP篇--C6701功能调试系列之 FLASH测试相关的知识,希望对你有一定的参考价值。

目录

1、 FLASH介绍

2、  FLASH功能测试


        调试的前期准备可以参考前面的博文:DSP篇--C6701功能调试系列之前期准备_nanke_yh的博客-CSDN博客 

1、 FLASH介绍

        FLASH作为EMIF的外设,对其操作就需要根据EMIF相关配置来确定FLASH的地址了。

        一般地,用CPLD或者FPGA对其进行译码,分别给各个外设的片选分配一个唯一的地址。这个地址是物理地址,是用CEx和EA[21:2]硬线做译码得到的。而DSP要操作这个地址,必须使用逻辑地址(字节地址),这就要求有一个物理地址和逻辑地址的对应关系。在建立这种关系的时候,我们要明确地指出某个CEx的数据宽度,是8位还是16位。需要熟悉EMIF寄存器的配置:

2、  FLASH功能测试

        对于Flash的操作主要是flash擦除,flash读和flash写。DSP通过EMIF的CE1存储空间外扩flash,根据Flash的数据手册可以得到Flash的相应操作的命令定义表:

         擦除FLASH主要有片擦除和扇区擦除两种方法。一般调试大部分使用片擦除,也就是全部擦除。

        查看flash手册重点需要找到以下几个关键点:1、FLASH的起始地址,也即基地址(0x01400000);2、扇区擦除时,每一扇区的起始地址和长度。

        代码示例:

#define FLASH_ADR1  (0x01400000+(0x555<<2))
#define FLASH_ADR2  (0x01400000+(0x2aa<<2)) 
#define FLASH_ADR3  0x01400000 //基地址
//写
 *((Uint16 *)FLASH_ADR1) = 0x00AA;
 *((Uint16 *)FLASH_ADR2) = 0x0055;
 *((Uint16 *)FLASH_ADR1) = 0x00A0;
 *((volatile Uint16 *)Dst) = *SrcWord; // transfer the Uint16 to destination
 while((*((volatile Uint16 *)Dst))!= (*SrcWord));//自主判断是否完成
//擦除
void EraseFlash(void)
		
	*(volatile Int16 *)FLASH_ADR1 = 0x00AA;		
	*(volatile Int16 *)FLASH_ADR2 = 0x0055;		
	*(volatile Int16 *)FLASH_ADR1 = 0x0080;		
	*(volatile Int16 *)FLASH_ADR1 = 0x00AA;		
	*(volatile Int16 *)FLASH_ADR2 = 0x0055;		
	*(volatile Int16 *)FLASH_ADR1 = 0x0010;		
	while((*(volatile Uint16 *)0x01400000) != 0xffff);	

void Erasecetor(Uint16 SAnum)

	*(volatile Int16 *)FLASH_ADR1 = 0x00AA;		
	*(volatile Int16 *)FLASH_ADR2 = 0x0055;		
	*(volatile Int16 *)FLASH_ADR1 = 0x0080;		
	*(volatile Int16 *)FLASH_ADR1 = 0x00AA;		
	*(volatile Int16 *)FLASH_ADR2 = 0x0055;			
	*(volatile Uint16*)(FLASH_ADR3+0x10000*SAnum) = 0x30;
	while(*(volatile Uint16*)(FLASH_ADR3+0x10000*SAnum) != 0xFFFF);		

         擦除完成后,所有地址上的值都会是FFFF的。

        总结:首先需确定Flash的硬件引线的bit位;再确认Flash的起始地址位置;最后根据flash手册中操作命令调试读写、擦除功能。

以上是关于DSP篇--C6701功能调试系列之 FLASH测试的主要内容,如果未能解决你的问题,请参考以下文章

DSP篇--C6701功能调试系列之Bootloader程序自引导

DSP篇--C6701功能调试系列之Bootloader程序自引导

DSP篇--C6701功能调试系列之SRAMADC喂狗测试

DSP篇--C6701功能调试系列之SRAMADC喂狗测试

DSP篇--C6701功能调试系列之 UART串口测试

DSP篇--C6701功能调试系列之 UART串口测试