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 ...
随机推荐
- Solution -「洛谷 P6021」洪水
\(\mathcal{Description}\) Link. 给定一棵 \(n\) 个点的带点权树,删除 \(u\) 点的代价是该点点权 \(a_u\).\(m\) 次操作: 修改单点点权. ...
- 使用SetTrustedCredmanAccessPrivilege获取已保存的凭据
windows系统中有一个名为SeTrustedCredmanAccessPrivilege的权限,使拥有该特权的进程可作为受信任的调用者访问凭据管理器. 凭据管理器可以从控制面板 -> ...
- 使用IWebBrowser2操控浏览器页面测试(IE)
测试一下在IE浏览器界面中插入代码测试,采用寻找窗口的方式获取Internet Explorer_Server句柄. 写的时候参考了很多网上的资料,有些地方不大适用就稍微修改了一下. Send ...
- PRML 概率分布
本文地址:https://www.cnblogs.com/faranten/p/15917369.html 转载请注明作者与出处 1 二元变量 1.1 伯努利分布与二项分布 考虑一个最基本的试验: ...
- VMware vSphere,ESXi和vCenter的关系和区别
VMware Inc.是一家软件公司.它开发了很多产品,尤其是各种云解决方案 .他的云解决方案包括云产品,数据中心产品和桌面产品等. vSphere是在数据中心产品下的一套软件.vSphere类似微软 ...
- Python3+PyMysql
原文地址(持续更新ing-):https://www.caituotuo.top/6bf90683.html 1. 安装PyMySQL pip3 install PyMySQL 2. 创建数据库 # ...
- jar工具常用命令
参考链接:https://www.ibm.com/developerworks/cn/java/j-jar/index.html
- python的字符串切片技术
听说过python的字符串切片技术吗?是不是听着超高级的?实际上,也不用想得太难,python的字符串切片技术就是将字符串的某些字符提取出来而已~ 字符串切片 字符串是一种序列类型,可以按序号访问其中 ...
- Map<String, String> map按key值排序
private static String buildMd5Params(Map<String, String> map) { StringBuilder result = new Str ...
- 使用Irony开发译码器
使用Irony开发一个针对G代码的译码器.不想使用Lex&Yacc的原因是: 1.我只会用C#和Python写代码,用Lex&Yacc还得学习新的语法规范,我懒: 2.Lex& ...