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

📄 2410下flash用于编程的主函数.c

📁 Norflash通用的读写
💻 C
字号:
int main()
{
      Mem_Init();
      Port_Init();
      Uart_Init(115200);
      
      printk("\n\r***********************************\n\r");
      printk("Flash Write Program for S3C2410A Evaluation Board");
      printk("\n\r***********************************\n\r");
      
      if(flash_init()==0)                                                                   //识别Flash
         return(0);                                                                        //没有发现任何Flash或Flash型号不支持
      while(1){
         printk("\n\rFlash Program Menu:\n\r");
         printk("Press 1 for Boot Loader program.\n\r");
         printk("Press 2 for Ramdisk program.\n\r");
         printk("Press 3 for Linux kernel program.\n\r");
         switch(Uart_Getch()){
               case'1':
                       printk("write boot loader:from 0x30100000 to 0x00000000,length=50KB\n\r");
                       flash_erase(0,50000);                                               //Flash 擦除
                       printk("programing...\n\r");                                        //Flash 编程
                       flash_block_transfer((unsigned short*)(0x30100000),0,50000);        
                       printk("verifing...\n\r");                                          //比较编程结果
                       mem_cmp((U32*)(0x30100000),(U32 *)0.50000);                         
                       break;
               case'2':
                       printk("write ramdisk:from 0x30300000 to 0x00100000,length=0x180000\n\r");
                       flash_erase(0x100000,0x180000);                                     //Flash 擦除
                       printk("programing...\n\r");                                        //Flash 编程
                       flash_block_transfer((unsigned short*)(0x30300000),0x100000,0x180000);
                       printk("verifing...\n\r");                                          //比较编程结果
                       mem_cmp((U32*)(0x30300000),(U32 *)0x100000,0x180000);
                       break;
               case'3':
                       printk("write linux kernel:from 0x30200000 to 0x00010000,length=0xf0000\n\r");
                       flash_erase(0x10000,0xF0000);                                       //Flash 擦除
                       printk("programing...\n\r");                                        //flash 编程
                       flash_block_transfer((unsigned int*)(0x30200000),0x00010000,0xf0000);
                       printk("verifing...\n\r");                                          //比较编程结果
                       mem_cmp((U32*)(0x30200000),(U32 *)0x10000,0xf0000);
                       break;
               default:printk("wrong input\n\r");
                                
               }
         printk("program finished!\n\r press any key to continue");
         Uart_Getch();
         }   
      return(1);
}


//mem_cmp函数的代码如下

int mem_cmp(U32 *src,U32 *des,U32 length){
    U32 i;
    for(i=0,length=length>>2;i<length;i++)
       if(src[i]!=des[i]){
             printk("cmp error:src[0x%x]=0x%x,des[0x%x]=0x%x\n\r",i*4,src[i],i*4,des[i]);
             return 0;
       }
       return 1;
}

⌨️ 快捷键说明

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