找回密码
 注册
搜索
查看: 708|回复: 1

[讨论] 如何对ARM内部Flash编程?

[复制链接]
发表于 2006-11-10 15:25:06 | 显示全部楼层 |阅读模式
第一次使用ARM,遇到以下问题,望各位大虾为我指条明路:
    写Flash函数如下:
int Write_Page(int *Buffer/*数据源指针*/)
{
  unsigned int  *Flash_Address;
  int i;  
  
  
  if(AT91C_BASE_MC->MC_FSR & 0x01)
  {
  
  }
  else
  {
      return 1;
  }
  //
  Flash_Address = (unsigned int *)(0x100000+FLASH_SAVE_PAGE_ADD*256);
   
  //
  for(i=0;i<64;i++)
  {
    *(Flash_Address + i) = Buffer;
  }
  
  if( ( AT91C_BASE_MC->MC_FSR & AT91C_MC_FRDY) != 1 )
  {  
    return 1;
  }
  
  AT91C_BASE_MC->MC_FMR = ((0x48)<<16) | 91C_MC_FWS_1FWS  ;  
//108us  ,wait state 2 cycles

  AT91C_BASE_MC->MC_FCR = ( 0x5A <<24) | ((FLASH_SAVE_PAGE_ADD<<8)&AT91C_MC_PAGEN) | AT91C_MC_FCMD_START_PROG ;//write page
  

  while(1)
  {   
    if(AT91C_BASE_MC->MC_FSR & 0x01)
    {
      if(AT91C_BASE_MC->MC_FSR & AT91C_MC_LOCKE)
      {
        return 1;
      }
      if(AT91C_BASE_MC->MC_FSR & AT91C_MC_PROGE)
      {   
        return 1;
      }
      
      break;
    }//if
  }  //while
  
  return 0;
} //Write_Page
执行完这段程序以后,程序就跑飞了,不断地进入未定义指令中断,我把看门狗打开也不能在超时以后复位系统,但是数据确实已经写入Flash,断电或者是按reset以后,从指定的地址里能够读出写入的数据。
 楼主| 发表于 2006-11-14 08:37:14 | 显示全部楼层
不好意思,看门狗可以复位,我初始化错误了,但是写flash不可以,我从网上看到说是要把代码调入ram中执行才可以,不知道怎么才能把代码加载到ram执行?
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-6 17:54 , Processed in 0.045133 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表