⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2-4.c

📁 《DSP嵌入式开发典型案例》 一书源码(第二章)
💻 C
字号:
#include <stdio.h>
#include <c6x.h>
#include "6711.h"

int Len = 0x0a000;       							// 预编写的程序长度
int main()
{
  char *flash_ptr =(char *) 0x090000000;
  char src_ptr[128] = {0};
  FILE *hex_fp = NULL;
  int  flag = 0,j,data,l,i,length,temp,temp1;
  char hex_filename[80]="post.hex";
  
  CSR=0x100;			          
  IER=1;                    
  ICR=0x0ffff;                 

  *(unsigned volatile int *)EMIF_CE1 = 0x0ffffff03; 
 
  if ( (hex_fp=fopen( hex_filename , "r" ))== NULL )
  {
     printf( "\nERROR: File %s does not exist!\n", "post.HEX" );
     exit(0);
  }

  if ( (fgetc(hex_fp)) == 0x02)
  {  											// do nothing
  }
  else
  {
     exit(0);
  }
  
  printf("Programming the flash.\n");
  
  *(char *) flash_addr1 = 0x0aa;
  *(char *) flash_addr2 = 0x55;
  *(char *) flash_addr1 = 0x80;
  *(char *) flash_addr1 = 0x0aa;
  *(char *) flash_addr2 = 0x55;
  *(char *) flash_addr1 = 0x10;   
  
  temp = *flash_ptr;
  temp &= 0x40;
  temp1 = *flash_ptr;
  temp1 &= 0x40;	
  while(temp != temp1)
  {
     temp = *flash_ptr;
     temp &= 0x40;
     temp1 = *flash_ptr;
     temp1 &= 0x40;	
  }                            
  length = Len/128;

  for(l=0;l<length;l++)
  {
	  for (i =0;i<128;i++) 
	  {
		  j = fscanf(hex_fp,"%x", &data);
		  src_ptr[i] = data;
		  if (j == EOF || j == 0)
		  {
             flag = 1;
		  }
          }
	  *(char *) flash_addr1 = 0x0aa;
  	  *(char *) flash_addr2 = 0x55;
  	  *(char *) flash_addr1 = 0x0a0;   
      for (i=0;i<128;i++) 
  	*flash_ptr++ = src_ptr[i];  			
  	  temp = *--flash_ptr;
  		temp &= 0x80;	
  		while(!temp)
  		{
  		   temp = *flash_ptr;
  		   temp &= 0x80;
  		 }                            
  	  flash_ptr++;
  } 

  printf("\nProgramming the flash is completed.");
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -