如何让U-boot实现Nand/Nor 双启动

发布者:玉米哥哥最新更新时间:2013-03-06 来源: dzsc关键字:U-boot  双启动  s3c2410 手机看文章 扫描二维码
随时随地手机看文章

  在做u-boot移植的时候,多数人使用的是Nand flash启动或Nar flash启动。这样u-boot就只能在Nand flash或Nor flash。那么我们如何让我们的u-boot在Nand flash或Nor flash都能使用。

  首先,我们说说u-boot,u-boot是系统启动的时候执行的一段程序,这段程序一般存放在Nand flash中或Nor flash中。我们所说的Nand flash启动或Nor flash启动主要是涉及到一段搬移代码。这段搬移代码的功能是u-boot自己把自己搬移到内存中执行。如下是Nor flash启动中的这段搬移代码(这里以s3c2410为例)

  relocate:                        /* relocate U-Boot to RAM */

  adr r0, _start        /* r0 <- current positiON of code */

  ldr r1, _TEXT_BASE        /* test if we run from flash or RAM */

  cmp r0, r1                        /* don\'t reloc during debug */

  beq stack_setup

  ldr r2, _armboot_start

  ldr r3, _bss_start

  sub r2, r3, r2                /* r2 <- size of armboot */

  add r2, r0, r2                /* r2 <- source end address */

  copy_loop:

  ldmia r0!, {r3-r10}                /* copy from source address [r0] */

  stmia r1!, {r3-r10}                /* copy to target address [r1] */

  cmp r0, r2                /* until source end addreee [r2] */

  ble copy_loop

  #endif        /* CONFIG_SKIP_RELOCATE_UBOOT */

  #endif

  上面这段代码就是把u-boot搬移到内存。而不同的启动方式区别也就在这段代码上,如果我们这里是Nand flash启动的话我们也需要写相同功能的代码,不同的是对于Nand的操作和Nor的操作是完全不同的,选择Nor flash启动是将Nor flash映射到片选0上也就是0x0地址而选择Nand flash启动则是将CPU的片内RAM(4K)映射到0地址,通过Nand flash控制器操作Nand flash。至于如何操作Nand flash这里就不多说了。我们这里讨论如何实现Nand 和 Nor双启动。下面我们看看这两种启动的映射关系。[page]


  我们在看下寄存器BWSCON:


  通过上图我们可以发现,我们可以通过判断BWSCON的第2位和地3位的值判断是Nor flash启动还是Nand Flash启动。所以我们可以添加如下代码。

  # define BWSCON        0x48000000

  ldr r0,=BWSCON

  ldr r0,[r0]

  ands r0,r0,#6

  beq nand_boot

  //////////////////

  Nar 搬移代码

  ////////////////////

  nand_boot:

  //////////////////////

  Nand 搬移代码

  //////////////////////

  有了上面这段代码,就可以实现双启动了,只要再适当的添加对应的功能我们的uboot就完成了。

关键字:U-boot  双启动  s3c2410 引用地址:如何让U-boot实现Nand/Nor 双启动

上一篇:高压双电源智能控制系统的研制
下一篇:基于嵌入式Linux平台的图像采集与传输设计

推荐阅读最新更新时间:2024-03-16 13:19

s3c2410 board.c分析
在介绍该函数之前,我们需要看一看几个数据结构,这些是u-boot中几个重要的数据结构: 1)、gd_t该数据结构保存了u-boot需要的配置信息(我暂时称它为全局信息表), typedef struct global_data { bd_t *bd; //与板子相关的结构,见下面 unsigned long flags; unsigned long baudrate; //波特率 unsigned long have_console; /* serial_init() was called */ unsigned long reloc_off; /* Relocation Offset,
[单片机]
基于嵌入式MPU和CAN总线的测控系统设计
1 绪论     随着网络技术的不断发展,Internet把世界上分散的计算机系统、通信系统实现了互连,形成了共用数据网络,成功的实现了网络资源共享。而CAN总线技术使得控制系统向着分散化、网络化、智能化的方向发展,使控制技术与计算机以及网络技术更为紧密的结合在一起。随着CAN总线控制网络的进一步发展,控制网络与因特信息网络的结合,方便了对设备的远程监控、诊断和维护。 2 系统模型概述     本设计采用在CAN总线控制网络和因特网之间加入一个转换接口。这种方式是通过硬件来实现的,即在底层网络与中间监控层之间加入中继器、网桥、路由器等专门的硬件设备,使控制网络作为信息网络的扩展与之紧密集成。硬件设备可以是一台专门的计算
[嵌入式]
OK6410A 开发板 (三) u-boot-1.1.6 boot 解析
u-boot 怎么放入SD卡 s3c6410 启动 流程中 irom 中的 bl0 加载 sd 卡 的 bin 文件到 iRAM u-boot.bin 有 202KB,怎么放入仅有8KB的iRAM 查看 CHxx_IROM_ApplicationNote_Rev1.00_080801.pdf 参考书 参考书 要求 如果 u-boot.bin大于8KB,则必须 分为两部分 且第一部分 小于等于 8KB , 且被放到非易失性存储器(有6种)的 指定位置(指定位置由参考书(其实是iROM中的程序)决定) 且第二部分 要被 第一部分加载 , 第二部分被放置的位置由第一部分的加载函数决定 u-boot-1.1.6
[单片机]
ok6410 u-boot-2012.04.01移植六完善MLC NAND支持
继ok6410 u-boot-2012.04.01移植四、五后,开发板基本已支持MLC NAND,支持DM9000.但是通过NAND命令更新u-boot到NAND,还存在问题,需要根据u-boot的nand命令继续修改,最终实现通过网卡tftp程序到内存,接着通过NAND命令写到NAND。 开发环境: 系统:ubuntu 10.04.4 单板:ok6410 NAND FLASH:K9GAG08U0D 2048MB NOR Flash:EN29LV160AB 2MB DDR:K4X1G163PCX2 256MB NET:DM9000AEP 编译器:arm-linux-gcc-4.3.2 搭建开发环境详见ubuntu 10.04.4开
[单片机]
s3c2410 watchdog (看门狗)
1.什么是watchdog? watchdog,中文名称叫做 看门狗 ,全称watchdog timer,从字面上我们可以知道其实它属于一种定时器。然而它与我们平常所接触的定时器在作用上又有所不同。普通的定时器一般起记时作用,记时超时 (Timer Out)则引起一个中断,例如触发一个系统时钟中断。熟悉windows开发的朋友应该用过windows的Timer,windows Timer的作用与方才所讨论的定时器在功能上是相同的,只是windows Timer属于软件定时器,当windows Timer记时超时则引起App向System发送一条消息从而触发某个事件的发生。我们从以上的描述可知不论软件定时器或硬件定时器他们的作用都是
[单片机]
SD存储技术及其基于S3C2410的应用
摘要:本文首先介绍了SD Memory Card ( Secure D ig ita l MemoryCard)的基本结构和原理,着重对SD 卡的命令字和操作流程进行介绍。接着研究了三星32位嵌入式处理器S3C2410与SD 卡硬件接口电路及其对SD卡的基本读写操作方式。 关键词: SD;存储; S3C24101 1 引言 SD卡( Secure DigitalMemory Card)是一种基于Flash的新一代存储器,它着重数据存储的安全、容量和性能,是许多便携式电子产品如数码相机、手提电话, PDA 等理想的外部存储介质。 2 SD的基本概念 2. 1 SD的通信协议 SD卡系统可以在两种通信协议下工作: S
[工业控制]
SD存储技术及其基于<font color='red'>S3C2410</font>的应用
移植标准Linux 操作系统到S3C2410
1 前 言 目前 , 在嵌入式系统里基于ARM核的嵌入式处理器已经成为市场主流。随着ARM技术的广泛应用 , 建立面向ARM构架的嵌入式操作系统也就成为当前研究的热点。S3C2410是SAMSUNG公司基于ARM920T处理器内核开发的一款16/32位嵌入式处理器,运行 频率 高达200多M,具有MMU和高速缓存等丰富片上资源,是目前基于ARM920T内核的出货量最大的一款芯片。目前嵌入式操作系统也较多,如 Tor2nado 的VxWork、微软的 Windows CE等等。大量开发人员选择的却都是Linux,这是因为它源代码开放,可以轻松修改移植到自己的目标平台系统里使用。并且事实证明,效果令人满意。两者的结合必将在嵌入
[单片机]
U-Boot在基于ADSP BF533的嵌入式Linux系统上的移植
1 引言 Boot Loader(内核引导程序)是在操作系统内核运行之前运行的一段自举程序,用于初始化硬件设备、改变处理器运行模式、重组中断向量和建立内存空间映射图,从而将系统的软硬件带到一个合适的状态或者用户定制的特定状态,以便为最终加载操作系统内核准备好正确的环境 。 嵌入式Linux系统常用的Boot Loader有arm-boot、redboot、U-Boot等。U-Boot (全称Universal Boot Loader)是当前比较流行的遵循GPL条件的开放源码项目。U-Boot具有源码公开的特点,开发人员可根据自身需要进行裁减;支持多种处理器和嵌入式操作系统内核;具有多种设备驱动源码:支持种引导方式;具有功能强大
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved