首页 > 代码库 > arm:判断是从nand启动还是从norflash启动

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

 

 

 

 

//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启动