Linux移植总结--uboot从不同介质上启动分析
@
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从不同介质上启动分析的更多相关文章
- freescale-sdk linux移植一搭建编译环境脚本host-prepare.sh分析
接下来使用自己的课外歇息时间,对基于PowerPC架构freescale-sdk,进行linux移植和分析.主要參考官方文档freescale linux sdk START_HERE.html,首先 ...
- Linux移植之配置过程分析
在Linux移植之移植步骤中已经将Linux移植的过程罗列出来了,现在分析一下Linux的配置过程,将分析以下两个配置过程: 1.make s3c2410_defconfig分析 2.make men ...
- Linux移植到自己的开发板(二)UBOOT和Linux
@ 目录 一.uboot跳转到Linux 二. Linux内核启动之解压阶段 三. Linux内核启动之汇编阶段 插曲:关于Kconfig和Makefile 四. Linux内核启动之C语言阶段 五. ...
- Linux移植之tag参数列表解析过程分析
在Linux移植之内核启动过程start_kernel函数简析中已经指出了start_kernel函数的调用层次,这篇主要是对具体的tag参数列表进行解析. 1.内存参数ATAG_MEM参数解析 2. ...
- Linux移植之内核启动过程start_kernel函数简析
在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...
- Linux移植之make uImage编译过程分析
编译出uboot可以运行的linux内核代码的命令是make uImage,下面详细介绍下生成linux-2.6.22.6/arch/arm/boot/uImage的过程: 1.vmlinux.Ima ...
- Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析【转】
转自:http://www.latelee.org/embedded-linux/porting-linux-tstest-code.html 本文是作者对tslib库的ts_test.c文件进行分析 ...
- Linux系统——访问U-BOOT环境变量
Linux系统下访问U-BOOT环境变量 移植过U-BOOT的人,都知道:在U-BOOT中存有ENV.但U-BOOT在引导内核启动之后,U-BOOT的生命周期就结束了.那么启动LINUX内核之后,U- ...
- CH02基于ZYNQ的嵌入式LINUX移植
CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...
随机推荐
- Charles抓包工具介绍
1.Charles是什么? Charles是一款基于http协议的代理服务器,通过称为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的. 2.Charles有哪些用途? (1)能够分析前 ...
- MLlib学习——基本统计
给定一个数据集,数据分析师一般会先观察一下数据集的基本情况,称之为汇总统计或者概要性统计.一般的概要性统计用于概括一系列观测值,包括位置或集中趋势(比如算术平均值.中位数.众数和四分位均值),展型(比 ...
- 使用污点分析检查log4j问题
摘要:log4j问题的余波还在继续,为什么这个问题潜伏了这么长时间,大家一直没有发现?这里从静态分析的角度谈下log4j问题的发现. 本文分享自华为云社区<使用污点分析检查log4j问题> ...
- 在Linux中设置php变量的方法
默认情况下已经安装好了PHP环境,并且知道安装好后的PHP文件路径,然后可以通过以下的方式设置PHP变量,快速执行PHP命令运行PHP文件. 环境:centos 第一步:vi ~/.bash_prof ...
- Solution -「CERC 2016」「洛谷 P3684」机棚障碍
\(\mathcal{Description}\) Link. 给一个 \(n\times n\) 的网格图,每个点是空格或障碍.\(q\) 次询问,每次给定两个坐标 \((r_1,c_1), ...
- 我们一起来学Shell - 正则表达式
文章目录 什么是正则表达式 正则表达式元字符 正则表达式应用举例 POSIX 方括号表达式 POSIX 字符集列表: 我们一起来学Shell - 初识shell 我们一起来学Shell - shell ...
- php base64格式的图片字符串和图片文件相互转换的代码
在移动端上传图片的时候通常会将图片转换成base64格式的字符串提交,所以此时需要使用服务器端的程序进行转换成二进制的数据.如下PHP代码实现了图片文件和base64格式的图片字符串相互转换的方法,同 ...
- 『无为则无心』Python面向对象 — 51、私有成员变量(类中数据的封装)
目录 1.私有成员变量介绍 (1)私有成员变量概念 (2)私有成员变量特点 (3)私有成员变量体验 2.属性私有化工作原理 3.定义成员变量的标识符规范 4.私有成员变量的获取和设置方式 1.私有成员 ...
- python对文件夹内文件去重
昨天无聊写了一个百度图片爬虫,测试了一下搜索"斗图".一下给我下了3000多个图片,关键是有一半以上重复的.what a fuck program ! 好吧,今天写一个文件去重功能 ...
- [LeetCode]1365. 有多少小于当前数字的数字
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目. 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 ...