笔记整理—uboot启动过程(2)BL1低级初始化

news2024/9/22 3:58:37

        lowlevel_init看名字就知道是关于初级方面的初始化,其中可用将其干的事情分为11个步骤:

        (1)push {lr} 也就是lr压栈。

        (2)检测复位状态:如冷上电、热启动、睡眠等。冷上电要初始化DDR后才能使用但是后面的两种不需要。

        (3)IO恢复。

        (4)关看门狗。

        (5)初始化SROM/SRAM(外部SRAM)。

        (6)PS_HOLD 锁存供电(分为两步。写成一步非法立即数不行)。

        (7)判断代码是否要重定位(当前代码在SRAM还是DDR中)运行状态是否等于链接地址。

                ①BL1代码在SRAM中与DDR中各有一份。如果是冷启动,代码在SRAM中,若是低功耗将会在DDR中(系统以前完整启动过)。

                ②判定当前地址可用,指导后面内容运行。主要就是要不要进行时钟或者DDR的初始化。代码在SRAM中->冷启动->初始化DDR与clock。代码在DDR中->热启动->不初始化后面的DDR与clock。

beq 1f    如果相等就会跳转到下方的1标号处
beq 1b    如果相等就会跳转到上方的1标号处

        运行地址是否等于链接地址的方法,对于x210而言是这样的:首先

bic r1 ,pc ,r0 (其中r0=0xff000fff)
目的是将pc的值取出,去除掉r0表示为1的位值,剩下的赋值给r1
r1=pc(&~(ff000fff))
ldr r2 ,_TEXT_BASE(C3E00000)这个值是ddr的链接地址
bic r2,r2,r0
r2=r2&~(ff000fff)
cmp r1 ,r2 比较r1和r2

        eg:(SRAM) pc=D0023456        TEXT_BASE=C3E00000

                (DDR) pc=C3E03456         TEXT_BASE=C3E00000

                比较pc的C3E与TEXT_BASE的C3E。

        (8)初始化时钟,system_clock_init(相关宏在x210_sd.h中)。

        (9)初始化内存,mem_ctrl_asm_init(DDR)。裸机中DMC0地址为0x20000000-0x2fffffff。uboot中可用物理地址为0x30000000-0x3fffffff。DMC0允许地址是0x20000000-0x3fffffff(一共512MB)。uboot中可用的物理地址为0x30000000-0x4fffffff,其中0x30000000-3fffffff为DMC0,0x40000000-4fffffff为DMC1。

        (10)初始化串口urat_asm_init。

        (11)tzpc_init (trust zone可信任区域初始化)。

        lowlevel_init.S执行完成完成OK的打印,其中O在串口初始化完成时打印,K在tzpc_init执行完成后打印。

        lowlevel_init执行完成。

        这里提一下代码二次开发的一个原则:原来的代码不需要了可用使用注释的方式实其不编译,而不是进行删除,且尽可能别重复。

        下一篇文章将继续对uboot的代码进行解析,下篇文章将开始于对栈的二次设置,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2068961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MS2232/MS2232T——±20kV ESD 保护、3V-5.5V 供电、真 RS-232 收发器

MS2232/MS2232T 芯片是集成电荷泵、具有 20kV ESD 保护的 RS-232 收发器,包括两路接收器、两路发送器。芯 片满足 TIA/EIA-232 标准,为异步通信控制器和串口连接器 提供通信接口。 芯片采用 3V-5.5V 供电,电荷泵仅用 4 个 0.1-0.47μF 小…

GUI / GitOps / API: 用 Bytebase 实现 SQL 审核

修改数据库中的数据时,确保安全准确至关重要。Bytebase 提供 SQL 审核功能:将 SQL 变更应用到数据库之前,可对其进行评估。SQL 审核可通过 Bytebase GUI、GitOps 工作流或 API 触发。 本教程将使用 Bytebase 的 SQL 审核来改进数据库 Schema …

对数据治理和云采用的思考:过去和现在

组织在向云服务转变的过程中面临数据治理复杂性和挑战。 如今,到了 2024 年,形势已经发生了变化,但根本问题却愈演愈烈。 数据的增长以及网络攻击的频率和复杂性不断增加,使得对强大的数据治理和安全的需求比以往任何时候都更加…

Educational Codeforces Round 169 (Rated for Div. 2)

前言 电脑显示屏一闪一闪地感觉要拿去修了,比赛时重启了好几次。 手速场,E 题没学过 Sprague-Grundy 吃了亏,好在前四题都一发过才不至于掉分。 Standings:1214 题目链接:Dashboard - Educational Codeforces Round 16…

shell脚本中$0 $1 $# $@ $* $? $$ 的各种符号意义详解

文章目录 一、概述1.1、普通字符1.2、元字符 二、转义字符$2.1、实例12.2、实例22.3、实例32.4、实例42.5、实例5 三、linux命令执行返回值$?说明 一、概述 shell中有两类字符:普通字符、元字符。 1.1、普通字符 在Shell中除了本身的字面意思外没有其他特殊意义…

设计模式-结构性模式-桥接模式

1.桥接模式定义 桥接模式就是将抽象部分与他的实现部分分离,使他们都可以独立的变化; 桥接模式用一种巧妙地方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转变为动态的组合关系,…

26个希腊字母写法和读音

瞧,在许多时候都会用到这些希腊字母,但不认识更不知道怎么读,so 记录一下便于查阅 26个希腊字母写法和读音 大写小写中文名英文注音意义Aα阿尔法Alpha角度;系数Bβ贝塔Beta磁通系数;角度;系数「γ伽玛Gamma电导系数(小写)Δδ德尔塔Delta变…

ES之二:centos7安装kibana和IK分词器

目录 一、Kibana介绍二、Kibana安装1、注意elasticsearch 和 kibana使用同一个版本2、更改配置3、kibana使用 三、Kibana安装1. 解压ik分词器2. 重新启动ES启动报错: 一、Kibana介绍 Kibana是一个针对Elasticsearch的开源分析及可视化平台,使用Kibana可…

客户端可以访问ntp时钟源,时间却一直不同步的问题

ntp时钟源通常是通过开放123 的udp端口对外提供ntp服务的,udp端口的访问可以通过nc -uvz xx.xx.xx.xx 123 端口进行验证,验证发现ntp时钟服务的123端口是开放的,也没有防火墙拦截123端口,但为什么客户端不同步ntp时钟源呢&#xf…

鸿蒙内核源码分析(异常接管篇) | 社会很单纯,复杂的是人

为何要有异常接管? 拿小孩成长打比方,大人总希望孩子能健康成长,但在成长过程中总会遇到各种各样的问题,树欲静而风不止,成长路上有危险,有时是自己的问题有时是外在环境问题.就像抖音最近的流行口水歌一样&#xff…

dp的练习总结(9)

P8766 异或三角 1.由题干给出的条件可知: (1)1≤a,b,c≤n,可得上限和枚举的范围 (2)a⊕b⊕c0,只有当前位相同的二进制数字异或才是 0,所以由此可知,当前位 a,b,c 都选 0,或 a,b,c 中任意两个数选择 1。同时…

Linux jobs命令:查看和管理后台任务

目录 一、jobs命令简介二、jobs命令适用的Linux版本三、jobs命令的基本语法四、jobs命令的常用选项或参数五、jobs命令实例5.1 显示当前shell中的后台作业将命令放到后台查看后台作业状态将后台作业带到前台 5.2 显示后台作业的进程号5.3 显示已停止的后台作业5.4 显示上次shel…

it程序员常用的技术社区网站有哪些

it程序员常用的技术社区网站有哪些??作为程序员,选择好合适的开发社区对提高自己的编程能力会有很大的帮助,技术人员经常会在各种技术交流社区游逛。优秀的实时开发社区确实能帮你积累不少开发经验技术教程 _ 网址大全 _ 博科趣 - 第1页技术教程网站,技…

cuda性能分析工具: nsight systems

安装 1. 安装nsys, nsys可以用命令行生成性能分析报告,参考: nsys profile 2. 安装Nsight Systems可视化工具NVIDIA Nsight Systems | NVIDIA 开发者 使用方法 1. 找一个可执行的cuda程序,编译成可执行文件,比如m…

14-17岁未成年如何办理能一直用的手机卡?

14-17岁未成年如何办理能一直用的手机卡? 有些姐妹要去外面上学,都想要一张属于自己的手机卡。 但是因为反诈的原因,对于手机卡的申领特别严格。 很多不满18岁的人能申领的卡,都是物联卡或者纯流量卡,只能上网&#x…

pytorch深度学习基础 6(简单的参数估计学习2)

上一节我们建立了一个简单的模型进行分析散点图,利用均方差来实现损失函数的计算,但是并没有计算出具体的参数值,这次我们来计算损失函数的损失值以及不断减小损失值,计算出最优的参数,代码原理非常简单大家可以自行理…

TOMCAT-企业级WEB应用服务器

一 WEB技术 1.1 HTTP协议和B/S 结构 HTTP(HyperText Transfer Protocol)协议即超文本传输协议,是用于在万维网(WWW)上传输超文本内容的基础协议。 一、HTTP 协议的特点 1、简单快速 客户向服务器请求服务时&#…

八股(3)——计网

八股(3)——计网 3. 计算机基础3.1 计算机网络OSI 七层模型是什么?每一层的作用是什么?TCP/IP 四层模型是什么?每一层的作用是什么?1. 应用层(Application layer)2. 传输层&#xff…

【iOS安全】iPhone8 iOS14.4.2 越狱教程

环境配置 iPhone 8: 固件版本 iOS 14.4.2 (18D70) 产品类型 iPhone10,1 (A1906) 销售型号 MQ862J/A MacBook Pro: macOS 10.15.7 装有CheckRa1n beta 0.12.4 概述 尝试了几个版本的unc0ver和Taurine,发现都不好使 unc0ver显示unsupported…

如何实现一棵AVL树

目录 1.什么是AVL树? 2.AVL树的实现 2.1AVL树结点的定义 2.2AVL树的插入 2.2.1插入的步骤 2.2.2插入情况分析 2.2.3旋转操作的分析 2.3AVL树的查找 3.AVL树的验证 4.AVL树的性能分析 1.什么是AVL树? AVL树其实就是一棵加了限制条件的二叉搜索树…