@

1、启动地址

先以2440开发板为例,SDRAM(0x30000000--0x34000000) 共64MB。

uboot中一般设置uboot启动地址为:TEXT_BASE=0x33F80000。该地址是uboot正式运行起来后的地址,但刚开始的汇编阶段代码并不是在该地址上运行的 ,看下面的分析。

2、uboot占用内存

从0x33F80000--0x34000000,相当于在SDRAM最高段地址给了uboot 512KB空间,老版的uboot一般占用300KB,够用了。

如果新版uboot较大,就需要给uboot留更大空间,例如1MB,那么就可以根据自己的SDRAM修改TEXT_BASE。

3、2440从NAND启动

开发板配置为从NAND启动,物理0地址处会链接到4KB的Boot Internal SRAM(硬件实现,这段内存怎么叫也是随意的)(这里没用"映射"用的"链接",是怕理解为MMU映射了);

上电会将NAND FLASH前4KB的代码拷贝到Boot Internal SRAM(硬件实现)(0--0x1000);

从0地址开始运行uboot汇编阶段的代码;

汇编代码会把NAND FLASH中完整的uboot代码拷贝到SDRAM上,地址为TEXT_BASE,完成后就跳转到SDRAM运行。

4、2440从NOR启动

配置为从NOR启动,物理0地址处会链接到NOR FLASH(硬件实现);

上电后NOR FLASH上的uboot代码可以直接运行;

当然,汇编阶段的代码还是会把NOR FLASH中完整的uboot代码拷贝到SDRAM上,地址为TEXT_BASE,完成后就跳转到SDRAM运行。

5、某开发板从SPI FLASH启动

某开发板物理0地址处挂了一块小内存SDRAM,物理高地址处挂了块大内存SDRAM,存储芯片为SPI FLASH

上电会将SPI FLASH中的uboot完整代码拷贝到SDRAM上运行(硬件实现);

然后,汇编阶段代码会把小内存SDRAM中完整的uboot代码拷贝到大内存SDRAM上,地址为TEXT_BASE,完成后就跳转到SDRAM运行。注意该阶段,软件实现的并不是从SPI FLASH将代码拷贝到大内存SDRAM,因为软件操作SPI需要初始化SPI 控制器和SPI FLASH芯片,然而汇编阶段软件还没初始化这俩。

Linux移植总结--uboot从不同介质上启动分析的更多相关文章

  1. freescale-sdk linux移植一搭建编译环境脚本host-prepare.sh分析

    接下来使用自己的课外歇息时间,对基于PowerPC架构freescale-sdk,进行linux移植和分析.主要參考官方文档freescale linux sdk START_HERE.html,首先 ...

  2. Linux移植之配置过程分析

    在Linux移植之移植步骤中已经将Linux移植的过程罗列出来了,现在分析一下Linux的配置过程,将分析以下两个配置过程: 1.make s3c2410_defconfig分析 2.make men ...

  3. Linux移植到自己的开发板(二)UBOOT和Linux

    @ 目录 一.uboot跳转到Linux 二. Linux内核启动之解压阶段 三. Linux内核启动之汇编阶段 插曲:关于Kconfig和Makefile 四. Linux内核启动之C语言阶段 五. ...

  4. Linux移植之tag参数列表解析过程分析

    在Linux移植之内核启动过程start_kernel函数简析中已经指出了start_kernel函数的调用层次,这篇主要是对具体的tag参数列表进行解析. 1.内存参数ATAG_MEM参数解析 2. ...

  5. Linux移植之内核启动过程start_kernel函数简析

    在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...

  6. Linux移植之make uImage编译过程分析

    编译出uboot可以运行的linux内核代码的命令是make uImage,下面详细介绍下生成linux-2.6.22.6/arch/arm/boot/uImage的过程: 1.vmlinux.Ima ...

  7. Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析【转】

    转自:http://www.latelee.org/embedded-linux/porting-linux-tstest-code.html 本文是作者对tslib库的ts_test.c文件进行分析 ...

  8. Linux系统——访问U-BOOT环境变量

    Linux系统下访问U-BOOT环境变量 移植过U-BOOT的人,都知道:在U-BOOT中存有ENV.但U-BOOT在引导内核启动之后,U-BOOT的生命周期就结束了.那么启动LINUX内核之后,U- ...

  9. CH02基于ZYNQ的嵌入式LINUX移植

    CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...

随机推荐

  1. opencv笔记-SimpleBlobDetector

    通用的 Blob 检测方法包括:Laplacian of Gaussian(LoG), Difference of Gaussian(DoG), Derterminant of Hessian(DoH ...

  2. Solution -「多校联训」博弈

    \(\mathcal{Description}\)   Link.   A B 两人在树上博弈,初始时有一枚棋子在结点 \(1\).由 A 先操作,两人轮流移动沿树上路径棋子,且满足本次移动的树上距离 ...

  3. Zookeeper应用之一:数据发布与订阅初体验

    Zookeeper到底是什么?可以从Zookeeper提供的功能来理解.本篇小作文就是使用其提供的功能之一:数据发布与订阅. 需求:服务端开启多个实例提供服务,客户端使用服务.如果服务端某个服务下线或 ...

  4. 如何删除远端已经推送的Commit记录???(Git版本回退)

    如何删除远端已经推送的Commit记录???(Git版本回退) 简单描述 突然事件:刚刚,就在刚刚,发生误了操作. 操作描述:我把修改的文件保存错分支了,已经commit了.并且还push上去了.对, ...

  5. v-model指令的学习

    v-model的原理 v-model="message"   ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓就相当于先用一个v-bind绑定一个 ...

  6. C++ 序列操作函数最全总结

    标准库定义了许多用于操作序列的算法,大多在algorithm和numeric文件中,大多数函数的原理并不复杂,但是在很多情况下可以替代手写的情况,甚至更加优秀. 这类算法函数非常多,但是他们都有共同的 ...

  7. IP网络主动测评系统——IT运维人员的好帮手

    一.前 言 随着计算机网络的普及和快速发展,互联网已经融入到人们的衣食住行等方方面 面,如工作.购物.音视频聊天.视频会议.朋友圈.抖音.在线网游.网络电影 电视等.毫不夸张地说,现如今大部分人的绝大 ...

  8. DT时代,优秀的BI工具应该具备哪些功能

    马云曾在一次演讲中说:"人类正从IT时代走向DT时代."那DT究竟是什么,和IT有什么不同呢?我们对IT非常熟悉,它是信息技术(InformationTechnology)的英文缩 ...

  9. 你别告诉我你还在用Excel做数据透视分析吧,太low了!

    来到大数据分析的时代,大量的大数据分析软件涌现,尽管如此,如果今天有人问起最常用的数据透视分析工具是什么的时候,我猜想Excel应该是大家的不二之选. 但是其实我想说,用现在的手机来打比方,Excel ...

  10. 还在用excel做分析?你已经out了!

    Excel 是个很有趣的工具,不管你是不是数据分析领域的打工人,都一定听过它的名字,甚至在全球拥有大量虔诚的粉丝.Excel这个名字其实源自英语中的" Excellence "一词 ...