码迷,mamicode.com
首页 > 其他好文 > 详细

arm:判断是从nand启动还是从norflash启动

时间:2014-12-23 19:14:11      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

 

//int bBootFrmNORFlash(void) :判断是否从norflash启动。
//ret==1 :norflash启动
//ret==0 :nandflash启动。(或者是jlink调试的情况。)
//该函数应用范围有限,只针对于bootloader最初的stage1。
int bBootFrmNORFlash(void)
{
    volatile unsigned int *pdw = (volatile unsigned int *)0;
    unsigned int dwVal;
    
    /*
     * 无论是从NOR Flash还是从NAND Flash启动,
     * 地址0处为指令"b    Reset", 机器码为0xEA00000B,
     * 对于从NAND Flash启动的情况,其开始4KB的代码会复制到CPU内部4K内存中,
     * 对于从NOR Flash启动的情况,NOR Flash的开始地址即为0。
     * 对于NOR Flash,必须通过一定的命令序列才能写数据,
     * 所以可以根据这点差别来分辨是从NAND Flash还是NOR Flash启动:
     * 向地址0写入一个数据,然后读出来,如果没有改变的话就是NOR Flash
    *这仅仅针对于初始阶段,norflash启动时,最终也要将程序加载到SDRAM中运行。因此该函数应用范围是有局限性的。
     */

    dwVal = *pdw;       
    *pdw = 0x12345678;
    if (*pdw != 0x12345678)
    {
        return 1;
    }
    else
    {
        *pdw = dwVal;
        return 0;
    }
}

 

arm:判断是从nand启动还是从norflash启动

标签:

原文地址:http://www.cnblogs.com/mylinux/p/4180577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!