norflash信息

我知道我们norflash是2M内存,那我们怎么通过命令来查看呢。

第一行是nor的大小,通过读0x27地址。不过我不知道为什么还要左移1位,因为0x14 = 20 ,2^20=1M,读的话确实是1M,左移一位就是2M了。

2,3行不知道是干嘛的。我们看第四行,number of erase block region 是什么呢,nor是由几个region组成的,而region是由block组成的。number of erase block region 就是reigon的数量。查看数量就读0X2C地址。然后就是block了,我们怎么查看block呢,

看表上的数据,读0X2d,0x2e,数据都是零,下面也有好多0,感觉有点迷。refer to the CFI publication 100,我们百度一下这个。

上面的意思是:
 *  block_num的数量 低2个字节+1   什么意思呢 do_nor_read(0x2d),do_nor_read(0x2e)是低8位8-16位;
 *  block_size的大小 高2个字节*256 do_nor_read(0x2f),do_nor_read(0x30)是低16-24位24-32位;
 */(do_nor_read读操作)。原理就这么多。

给个代码吧

void nor_read()
{
   char str[4];
   int i,cout=0,z;
   int nor_block_base = 0x2d;
   int nor_size,nor_regions,nor_block_num,nor_block_size,nor_block_addr=0;
   do_nor_write(0x55,0x98);   //进入CFI模式
   str[0]=do_nor_read(0x10);  //0x10地址上数据是'Q'
   str[1]=do_nor_read(0x11);   //0x10地址上数据是'R'
   str[2]=do_nor_read(0x12);   //0x10地址上数据是'Y'
   str[3]='\n';
   nor_size = (do_nor_read(0x27) << 1); //nor大小
   nor_regions = do_nor_read(0x2c);     //region数量
   printf("the :%s\n\r",str);
   printf("norsize :%x,nor_regions :%x\n\r",nor_size/1024/1024,nor_regions);
   printf("nor_block_addr:\n\r");
   for(i = 0 ;i < nor_regions; i++ )
   {
       nor_block_num = (do_nor_read(nor_block_base)+(do_nor_read(nor_block_base+1)<<8))+1; //block数量
    nor_block_size = ((do_nor_read(nor_block_base+2)+(do_nor_read(nor_block_base+3)<<8)))*256; //block大小
    nor_block_base+=4; //传给上面第一个。  //nor_block地址
    for(z=0 ;z < nor_block_num ; z++)
    {
           printf("%x",nor_block_addr);
           nor_block_addr += nor_block_size;         
     puts(" ");
     cout++ ;
     if(cout%5 == 0)
     {  
            puts("\n\r");
     }
    }
     
   
   }
   printf("nor_block_num :%d\n\r",nor_block_num);
   
}
CFI模式就是想要访问NOR模式,可以读取NOR的大小,平常我们只能读取我们上面的数据。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值