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;
    }
}
时间: 2024-10-31 08:29:02

arm:判断是从nand启动还是从norflash启动的相关文章

u-boot分析1:Nandflash、Norflash启动

了解u-boot之前首先了解下Bootloader,简单说Bootloader就是一段小程序,它在系统上电时开始运行,初始化硬件设备,准备好软件环境,最后调用操作系统内核. u-boot全称:Universal Boot Loader,即通用Bootloader,遵循GPL条款,开放源码. 支持多种嵌入式操作系统内核:Linux.NetBSD.VxWorks等 支持多个处理器系列:如PowerPC.ARM.x86.MIPS等 u-boot的核心最终目的就是从Flash上读出内核,然后启动内核.如

怎样判断iOS App是通过哪种途径启动的?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions说明:当应用程序启动时执行,应用程序启动入口.只在应用程序启动时执行一次.application参数用来获取应用程序的状态.变量等,值得注意的是字典参数:(NSDictionary *)launchOptions,该参数存储程序启动的原因.1.若用户直接启动,lauchOptions

写一个服务,隔5分钟检测一次,某一个进程,是否启动,如果没有启动,则开启进程

public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { System.Timers.Timer timer1 = new System.Timers.Timer(); //创建一个定时器 timer1.Interval = 1000 * 60 * 5;//5min执行一次 t

在linux oracle 10g/11g x64bit环境中,goldengate随os启动而自己主动启动的脚本

在linux.oracle 10g/11g x64bit环境中,goldengate随os启动而自己主动启动的脚本 背景描写叙述: goldengate安装于/u01/ggs文件夹下 rhel5.5 oracle 10g/11g x64bit Oracle GoldenGate Command Interpreter for Oracle Version 11.1.1.0.0 Build 078 Linux, x64, 64bit (optimized), Oracle 11 on Jul 28

linux更改启动级别后,无法启动的问题解决

装好之后,配置好IP,启动后也能上网了,然后我修改了系统的启动级别(默认为3,我改为了5),意思是让他能够启动桌面. 我是这么设置的: 1.vi命令打开/etc/inittab文件,可以看到如下描述 2.我的默认级别为3,即标准的运行级别,也就是启动后只有命令行.此时我想把它改为桌面启动方式,于是我手动将级别改为5 3.保存退出后,reboot重启虚拟机,等待着进入CentOS那难看的桌面,结果一直无法进入系统,出现以下界面: 等了很长时间都不能进入系统,重启虚拟机电源数次也是不行.我就会想了以

[转载]用 grub2 启动 clover.iso 来启动 OS X

这个帖子只用来解决特定问题,是楼主这两天辛苦的结晶,如果你遇到了跟我差不多的情形,你就可以尝试这个解决方案. 特定情景:1.不管你的机器支不支持 UEFI ,反正你现在是用传统 BISO + MBR 模式启动的:2.你的硬盘上装了包括 Win, Mac 和 Linux 在内的多个系统:3.Mac 所在分区不是主分区,导致你无法使用常规模式来引导:4.你不想更改硬盘分区和重装系统. 5.你目前使用 Linux 在一个 boot 分区上安装 grub2 来实现多系统引导,6.你头疼的是这个 grub

MySQL 服务正在启动 .MySQL 服务无法启动。系统出错。发生系统错误 1067。进程意外终止。

检查了一个晚上才发现是---配置问题 #Path to installation directory. All paths are usually resolved relative to this.basedir=“C:\Program Files\MySQL\MySQL Server 5.5” #Path to the database root#datadir=C:\Program Files\MySQL\MySQL Server 5.0/Data/datadir="d:/dqz/MySQ

Centos 6.3网卡启动需用Ifup-eth0启动问题.

使用命令ifup eth0 可以正常设置启动,系统重启后或者重启网卡即失效了. 永久解决方法 1.在/etc/sysconfig/network-scripts/ifcfg-eth0 只需修改 ONBOOT=yes  就OK           --引导时是否激活设备 DEVICE=eth0 BOOTPROTO=none HWADDR=00:1b:fc:32:6e:c6 NM_CONTROLLED=yes ONBOOT=yes TYPE=Ethernet UUID="474a2670-3670-

Intent显示启动与隐式启动

Android的Acitivity启动大致有两种方式:显式启动与隐式启动.下面分别介绍: 1.显示启动: 清单文件注册Activity <activity android:name="com.example.intentmethod.XianshiActivity" android:label="@string/xianshi_label" > </activity> 启动方法: Intent intent = new Intent(Main