uboot引导kernel - 1 - Flash的分区
uboot启动Linux内核过程分为4大步骤:
问题1:Flash的分区相关问题
在 上述步骤1/2/4 中都提到了从启动介质(iNand/SD)中读取uboot/kernel到SRAM/DDR中,那么具体从启动介质的什么位置分别读取呢?
上述步骤1中,iROM的code是SoC出厂内置的,因此这个位置要参考SoC的数据手册。摘抄数据手册如下:
SD/MMC/eSSD作为存储介质时,BL1在存储介质的Block1开始,长度为N. 每个block为512个bytes, 我们设置的BL1为16K,所以占用31个block,即block1 – block32用来存储BL1. (以下实例均以SD为例)
NAND作为存储介质时,BL1在存储介质的Page0开始,长度为N.
上述步骤2中,从存储介质(SD/Nand)中读取整个uboot到DDR中, BL2在存储介质中的地址是BL1(uboot前16k)中的code 定义的,所以和数据手册无关,我们根据需要自己实现即可。
比如,以SD为例,我们将整个uboot.bin烧录到SD卡的第49扇区开始的地方(block 48), 假如uboot大小为200K,则占用400个block, 所以uboot在SD的位置: block48 – block447.
上述步骤4中,从存储介质(SD/Nand)中读取整个kernel到DDR中,这个地址同步骤二,自己定义即可。
比如,以SD为例,我们将整个kernel烧录到SD卡的第601扇区开始的地方(block 600), 假如kernel大小为10240K,则占用20480个block, 所以uboot在SD的位置: block600 – block10839.
关于问题1,总结以下,存储介质(SD/Nand Flash)中的分区一般包含BL1,uboot, kernel, 其中BL1的位置和SoC的启动设计有关,需要参考数据手册,而uboot和kernel的所在的位置自己实现即可,我们一定要按照事先设计好的分区来烧写存储介质。
1) uboot必须在Flash开头(取决于SoC启动设计),其他分区相对位置是可变的。
2) 各分区的大小由系统移植工程师自己来定,一般定为合适大小(不能太小,太小了容易溢出;不能太大,太大了浪费空间)
3) 分区在系统移植前确定好,在uboot中和kernel中使用同一个分区表。将来在系统部署时和系统代码中的分区方法也必须一样。
遗留问题1:存储介质分区应该还包含roofs,即根文件系统,这个位置是怎么规划的?是怎么通知到内核的呢(传参(tag- ATAG_CMDLINE),用root=指定位置)?
遗留问题2:存储介质分区应该还包含环境变量。
2.1.uboot学习前传/ 2.1.12.uboot中对Flash和DDR的管理 有描述。
相关文章:

fedora mysql默认密码忘记_Linux fedora 24 忘记密码图形化界面修改root密码的方法
方法及其简单,只需要两步即可:1、第一步:打开终端,输入sudo su命令。–此处的密码为普通用户的密码,也就是开机时输入的密码。2、第二步:直接sudo passwd root就重置了roor密码了。此时输入新的密码即可&am…

Java Web项目结构
Java Web项目结构(一般) 1、Java src 2、JRE System Library 3、Java EE 6 Libraries 4、Web App Libraries 5、WebRoot 版权声明:本文博客原创文章,博客,未经同意,不得转载。转载于:https://www.cnblogs.c…

WTForms 小计1 forms
2019独角兽企业重金招聘Python工程师标准>>> 定义 from wtforms import Form, StringField, validators class MyForm(Form):first_name StringField(uFirst Name, validators[validators.input_required()])last_name StringField(uLast Name, validators[vali…

day32-1 事件Event
事件Event-线程 每一个线程都是独立运行且状态不可预测。你把一个任务丢到子线程中,这个任务将异步执行,如何获取到这个任务的执行状态?使用threading库中的Event对象。对象包含一个可由线程设置的信号标志,线程直到等到该标志为真…
uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题
uboot启动Linux内核过程分为4大步骤: 问题2: uboot阶段DDR的分区的问题 上述步骤2和步骤4中,有将uboot/kernel拷贝纸DDR的步骤,具体要拷贝到DDR的什么位置呢? 分清楚这两个概念: 链接地址:链接…

java ftp pasv_Ftp主动模式和被动模式以及java连接ftp模式设置
FTP的主动模式与被动模式FTP服务器使用20和21两个网络端口与FTP客户端进行通信。FTP服务器的21端口用于传输FTP的控制命令,20端口用于传输文件数据。FTP主动模式:FTP客户端向服务器的FTP控制端口(默认是21)发送连接请求,服务器接受连接&#…
Python2.7 安装numpy报错解决方法
Windows 10下用pip安装numpy包报错: Microsoft Visual C 9.0 is required Unable to find vcvarsall.bat Get it from http://aka.ms/vcpython27 通过报错提示信息,打开http://aka.ms/vcpython27会跳转到Microsoft Visual C Compiler for Python 2.7的下…

异常The Struts dispatcher cannot be found. This is
2019独角兽企业重金招聘Python工程师标准>>> 原因:struts2的过滤器映射路径写错 解决方案:在web.xml中配置struts2的过滤器如下: <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*&…

UNDO表空间损坏,爆满,ORA-600[4194]/[4193]错误解决
模拟手工删除UNDO表空间 在ORADATA 中把UNDOTBS01.DBF 删除模拟启库SQL> STARUP;*第 1 行出现错误:ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件ORA-01110: 数据文件 2: C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF利用系统本身的默认手动管理 MAN…
uboot引导kernel - 3 -uboot给内核传参详解
uboot中执行theKernel函数后,kernel正式启动。如下函数,我们发现有3个参数。 1. 参数 0; 2. 参数machid; 如下code 中获取machid, gd是个全局变量. 2.1 bi_arch_number是board_info中的一个元素,含义是:开发板的机器…

hdu 1166 敌兵布阵(树状数组)
题意:区间和 思路:树状数组 #include<iostream> #include<stdio.h> #include<string.h> using namespace std;int n,c[50005];int lowbit(int i){return i&-i; }void update(int i,int val){//更新函数while(i<n){//注意这个n的…

java jdbc 表存在_使用JDBC查询是否存在某表或视图,按月动态生成表
查询数据库是否有某表的存在,主要用的就是Connection对象对元数据的操作,代码很简单,贴出来大家参考。/*** 查询数据库是否有某表* param cnn* param tableName* return* throws Exception*/SuppressWarnings("unchecked")public b…

linux串口驱动分析
linux串口驱动分析硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作。UART 使用系统时钟能够支持最高 115.2Kbps 的波特…
计算TD-LTE DL 峰值速率的工具和相关参数
前一段时间测试DT 基站,需要配置TDD LTE cell 的UDC、TM模式来验证不同组合下的下行峰值速率,趁此机会我用excel写了一个计算下行峰值速率的工具。工具上传至我的github: https://github.com/greenricky/tdlte_dl_rate 计算峰值速率的常用办法是参考36.2…

java配置中心开源项目_配置中心搭建(spring-cloud-config-server)
1.github创建配置库2.配置服务端①创建项目②导入jarorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testorg.springframework.cloudspring-cloud-starter-netflix-eureka-clientorg.springframework.cloudspring-cloud-config-…

detection in video and image
video中的detection,背景更加复杂,目标更加不聚焦,同时由于图片分辨率低于图像,因此更加难做。 image中的Detection,背景相对简单些,目标更加聚焦,同时图片分辨率高,因此更加容易些。 转载于:ht…

烂泥:U盘安装Centos6.5
本文首发于烂泥行天下。使用U盘安装Centos6.5,需要以下几个步骤:1、 制作U盘linux系统2、 设置服务器BIOS3、 安装Centos,注意引导分区的安装首先要把U盘做成linux启动盘。网上有关这方面的软件比较多,在此我使用的是WinSetupFrom…

http status 汇总
http status 汇总 常见HTTP状态码 200 OK301 Moved Permanently302 Found304 Not Modified307 Temporary Redirect400 Bad Request401 Unauthorized403 Forbidden404 Not Found410 Gone500 Internal Server Error501 Not Implemented100 Continue 初始的请求已经接受…

hdu 4278 2012天津赛区网络赛 数学 *
8进制转为10进制 1 #include<cstdio>2 #include<iostream>3 #include<algorithm>4 #include<cstring>5 #include<cmath>6 #include<queue>7 #include<map>8 using namespace std;9 #define MOD 1000000007 10 const int INF0x3f3f3f…
slub object 内存布局
我在 https://blog.csdn.net/wowricky/article/details/83218126 介绍了一种内存池,它的实现类似于linux 中打开slub_debug (1. make menuconfig: Kenel hacking -> Memory Debugging, 2. comand line中传入slub_debugPZU) 时slub 对象池。 首先我们先看一下slub…

java wait abc_java----wait/notify
解释wait/notify必须配合synchronized使用democlass NotifyStop2 {private final Object lock new Object();public void add(String s) throws InterruptedException {Thread.sleep(1000);synchronized (lock) {System.out.println("add notify qian");//唤醒其他线…

hdu-1166敌兵布阵
这个题目就是考察线段树的基本用法,我自己打了代码,其实就是照模板来的,大概思想已经弄懂了。用c不能过,说我超时,就改成c的读入读出,这坑爹的过了。我最爱的c,你肿么了。。。 这是ac的代码&…

Android数据存储(三)——SQLite
如果需要一个更加健壮的数据存储机制,则需要使用一个关系型数据库,在Android上,则为SQLlite。 SQLite的特点:轻量级、嵌入式的、关系型数据库。可移植性好,易使用,小,高效且可靠,与使…
3GPP组织和协议概述
3GPP组织概述 1. TSG/WG 3GPP是以工作组开展工作的,目前有3个大的技术规范组:RAN, SA, CT, 这一级别的工作组英语写为 TSG (Technical Specification Group)。每个TSG下面又分了很多工作组(WG: work group). 详见下表: https://www.3gpp.or…

mysql被拖垮_说几个拖垮系统的小细节!
本文首发于个人微信公众号《andyqian》,期待你的关注!前言有好几天没有更新了,期间确实比较忙些,以至于周末也没休息。在这期间,感触还是蛮深的。现在碎片化的想法等整理好后,再以文章的形式分享出来。今天要说的是另外…

为 区域添加 Tag
tagsinput selectTag 转载于:https://www.cnblogs.com/yunqianduan/p/4740902.html

android中文字中间有超链接的实现方法
1.XML里写: <resources> <string name"ACCOUNT_REGISTER_PROMPT_AGREEMENT">点击注册,表示同意<a href"http://www.ouragreement.com">服务协议</a></string> </resources> <TextView …

4.4 类型转换
from http://www.learncpp.com/cpp-tutorial/44-type-conversion-and-casting/ 类型隐式转换 类型隐式转换的步骤如下所示: Long double (highest)DoubleFloatUnsigned long intLong intUnsigned intInt (lowest) 最底层是int而不是short或是char,是因为…

LFSR 和 m序列
翻译自:sharetechnote: LFSR LFSR Linear Feedback Shift Register - 线性反馈移位寄存器 LFSR 是一种移位寄存器电路,其中两个或多个中间步骤的输出线性组合并反馈到输入值,这就是为什么它被称为线性反馈移位寄存器的原因。 该电路具有以…

python合并k个有序链表_Leetcode合并K个升序链表(Python版本),LeetCode,python
一、描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下&…