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

📄 main.c

📁 在ARM ADS开发环境下,做的一个通过串口下载接收bootloader的程序,包含对flash的操作.
💻 C
字号:

#include "main.h"
#include "serial.h"
#include "flash.h"
#define   XHYPER255A 

extern uint ReceiveFile(void);


LOADER_STATUS	status;

void C_Entry(void){

	//char cc;
	char c,flag;
	
	long k,l,i;
	
	
	uint buffer,ads[10];
	
	
	
	
    long	 src=0;
	
	
	FUNIT	  *s;
	
	
	
	
    char * string1 = "\n\nThis is my first embody program!\nPlease send file.....\n\n";
    
    status.terminalSpeed = SERIAL_SPEED;
	status.downloadSpeed = SERIAL_DOWNLOAD_SPEED;
	SerialInit(status.terminalSpeed);
	
	/*k=0;
    while(1)
    {
    printf("o");
     
     if(SerialInputByte(&c))
      //       SerialOutputString("ok");     
         save_file(c,k++);
     
      
     else
      {
        k++; 
        if(k>100000)k=0;
       // printf("error%ld",k);
       }
     }*/
    
    
    /////char * string1 = "\n\nThis is my first embody program!\nPlease send file.....\n\n";
    SerialOutputString(string1);
    
    

 
 
 
 
 
 
    
 
 	src  = (long)KERNEL_DRAM_BASE;////#define KERNEL_DRAM_BASE		(0xA0008000)
	
	
		
		
	s=(FUNIT *)src;
 
 
 
 
 
 
 
 

 
 
 for(i=0;i<5191;i++)  


{    
    buffer=ReceiveFile();
    
    //    ads[i]=buffer;
    
    *s=buffer;
    
    //*s=0x1234;
    
    s++;
    
    
    
}   
    
   

 
 
    
    //SerialInputByte()
    
    
    
    
    
    
    
    
    
    
    
    
WriteProToFlash(FLASH_BLOCK_SIZE*128);
  
	
	//串口初始化为115200,而且最好程序的入口不要是main
	 
	/*		
	flag='#'; k=-1;l=0;
    while( 1 )	{	
    /*
	printf("\n***************MENU**********************\n");
	printf("*            1--EraseFlashBlocks        *\n");
	printf("*            2--EraseOneFlashBlock      *\n");
	printf("*            3--WriteProToFlash         *\n");
	printf("*            4--ReadProFromFlash        *\n");
	printf("*            5--RebootFromFlash         *\n");
	printf("***************MENU**********************\n");
  
    while (!SerialInputByte(&c));
    k++;l++;
     save_file(c,k);
     if(l>4000) 
      WriteProToFlash(k);
   while (!SerialInputByte(&c)); 
    printf("%c",c);
   if( (c=='*') && (flag=='#')) 
    { 
      flag=c;
      k=-1;
      continue;
     }
   
   //发送文件协议:*dddddd*
      
   if((flag=='*'))//开始接受数据
    {
   
      if(c!='*')
      {
   
       k++;       
       save_file(c,k);
       }
      
      else 
         {
         
           flag='#';//文件传输结束
           WriteProToFlash(k);       
           k=-1;
           SerialOutputString(string1); 
        
          } 
     }  
    else
       printf(" invalid file sign: %c ",c);   
   
   }//while(1)*/
      
}

⌨️ 快捷键说明

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