个人理解—uboot启动过程(1)

news2024/11/26 10:30:29

           在前文关于MKCONFIG的常用配置参数与链接脚本中逐渐的引入了通过uboot的文件启动校验头引入了uboot的汇编部分,该部分是为了去启动后续的uboot的c语言部分,但是c语言是需要使用到内存的,所以可用理解为:该汇编部分的主要目的就是为了格式化内存以便c语言可用运行。

        前文说到了x210的uboot使用到的16字节校验头,为了就是校验文件的完整性和正确性。异常向量表依照cpu写出,没有这玩也系统就容易跑飞。

reset    系统启动复位执行    b reset

        uboot中的异常向量表处理异常能使用就行(不像是内核一样要求高)。

.balignl 16 , 0xdeadbeef

         这句话的意思是以16字节对齐,若没有对齐则使用0xdeadbeaf填充,0xdeadbeaf是16进制数字,但刚好能组成一个英文词语——坏牛肉,所以就被用于做填充,其本质也是魔数有着特定的意思。(差8字节就填充2个坏牛肉)

        对齐访问的优势:1.效率要求。2.硬件要求。

TEXT_BASE 链接地址 C3E00000 在Makefile里

在汇编语言中
_TEXT_BASE:
    .word TEXT_BASE

_TEX_BASE:为标号
.word 为类型
TEXT_BASE 为值

        其就类似于指针,可用ldr加载_TEXT_BASE得到值,在此的.word表示4个字节。

CFG_PHY_UBOOT_BASE    33e00000 是uboot的物理地址 c3e00000是虚拟地址

        IRQ中断:

msr cosr_c , #0xd3

        向cpsr中的c位写入0xd3。cpsr是程序状态寄存器,c位是模拟位。其中:

0xd3:11010011
其中mode位为0-4位
T位位位第五位:1-ARM状态
10011表示svc模式
F位为第6位:1表示关闭FIQ
I位为第7位:1表示关闭IRQ

        这里禁止FIQ和IRQ、是为了后面为中断做好准备后再对齐进行开启。ARM类型的cpu在复位时默认为svc模式,但写T位是为了移植性,代码不依赖于预设是一种保障。

disable_L2cache    禁止L2cache
set_L2cache_auxctrl_cycle    设置L2cache的辅助控制
enable_L2cache    使能L2cache

        这就是去开启一个功能的正确方式,先关闭功能,再对其进行设置,最后再开启功能。刷新L1cache的Icache与Dcache。其中Icache为指令cache,Dcache为数据cache。

        关闭MMU,由于没有进行虚拟地址映射,所以先给关了。

        Read booting information 读取启动信息(E000 0004)。

        OM引脚选择:OM5:OM0从哪里启动(也就是启动介质)。

        bic r2 ,r1 ,#0xffffffc1只保留r1位中的后几位,清除了ffffffc1位内容,存入r2中。

        Nand信息:4kb 5-cycle 8-bitECC

        最终在r3中存入0x3表示MMC_sd启动!

ldr sp =0xd003600    设置栈IROM

bl lowlevel_init 跳转到低层次初始化

        在lowlevel_init之前因为要bl跳转了,不用栈的话只能调用一层函数,这样就回不到原位了,代码在SRAMZ中,DDR未启用,栈地址被uboot自定义。

        bl只会将返回的地址存储在LR中,但LR只能写一个返回地址,所以要启动栈。在进入第二层函数时要指第一层LR入栈,才能去做第二层函数。

        下一篇文章将对lowlevel_init进行详细说明,敬请期待。

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

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

相关文章

python异步编程-channels使用,创建websocket服务

目录 channels介绍准备工作创建python虚拟环境安装channels安装django安装daphne创建django项目创建chat应用 配置instance项目简单聊天室页面在chat应用中创建模板base.htmlroom.html 添加视图添加路由添加urls.py项目路由添加chat转发路由启动同步服务器 搭建websocket服务创…

H5 Q绑查询系统源码

源码名称:H5 Q绑查询系统源码 源码介绍:H5Q绑查询系统源码由2个H5单页组成,无需数据库或PHP环境。上传后修改接口即可运行。 需求环境:H5 下载地址: https://www.51888w.com/208.html

鸿蒙内核源码分析(重定位篇) | 与国际接轨

一个程序从源码到被执行,当中经历了3个过程: 编译:将.c文件编译成.o文件,不关心.o文件之间的联系.静态链接:将所有.o文件合并成一个.so或.out文件,处理所有.o文件节区在目标文件中的布局.动态链接&#xf…

将所有PPT中的字体颜色白色改成黑色---使用AI提高效率

背景 在工作中,遇到一个PPT,老板需求,将PPT页面的所有的字体从白色改成黑色, 检查了发现,这个ppt有几个问题,没有使用母版,都是每一页进行编写, 一共500多页, 如果每个…

Markdown中使用 LaTeX 绘图 -- TikZ

Markdown中使用 LaTeX 绘图 -- TikZ 1 介绍1.1 概述1.2 与其他图包对比 2 示例 & 学习[The TikZ and PGF Packages](https://tikz.dev/)[Graphics with TikZ in LaTeX](https://tikz.net/)[TikZ PGF Manual](https://www.bu.edu/math/files/2013/08/tikzpgfmanual.pdf)[在 …

中科亿海微伺服控制FOC解决方案

随着科技的不断进步和应用的不断扩展,电机控制技术的需求也在不断增加,主要的电机控制需求包括高精度控制、高效率、高可靠性和智能化等。 FOC(磁场定向控制),也被称作VC(矢量控制)&#xff0c…

从用户体验说起,集运系统需要哪些重要的功能?

良好的用户体验是服务成功的关键,更是客户持续选择的理由。用户体验层面最简单的表达其实就是:别让我等、别让我想、别让我烦。 在当今时代,用户的期望正在不断提高,他们追求快捷、高效和透明的服务。因此,集运系统在…

生信圆桌x生信菜鸟团:生物信息学初学者的交流与成长社区

生信菜鸟团是一个专门为生物信息学初学者和爱好者打造的在线社区,致力于为广大生信学习者提供一个分享知识、交流经验、共同成长的平台。随着生物信息学在各大领域的快速发展,越来越多的研究者和学生开始涉足这一领域,但生信知识的广度和深度…

人才流失预测项目

在本项目中,通过数据科学和AI的方法,分析挖掘人力资源流失问题,并基于机器学习构建解决问题的方法,并且,我们通过对AI模型的反向解释,可以深入理解导致人员流失的主要因素,HR部门也可以根据分析…

备战秋招60天算法挑战,Day22

题目链接: https://leetcode.cn/problems/missing-number/ 视频题解: https://www.bilibili.com/video/BV1HS42197Hc/ LeetCode 268.丢失的数字 题目描述 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组…

基于Python flask的岗位招聘数据分析系统,应用Python、Flask框架、Pyecharts、Wordcloud等技术

基于Python Flask的岗位招聘数据分析系统旨在为企业人力资源部门和求职者提供一个全面的数据分析平台,通过对招聘数据的深度挖掘和可视化展示,帮助用户做出更明智的决策。该系统采用了Python、Flask框架,并结合Pyecharts、Wordcloud等技术&am…

Matplotlib基本操作

1.什么是Matplotlib matplotlib 是一个广泛使用的 Python 图形库,用于生成静态、动态和交互式的可视化图表。它最初由 John D. Hunter 创建,并首次发布于2003年。matplotlib 提供了一个面向对象的 API,允许用户创建多种类型的图表&#xff0c…

[JavaScript版本五子棋小游戏]

目录 全部运行代码:五子棋游戏的基本步骤:代码剖析:1. 初始化游戏界面2. 管理游戏状态3. 玩家交互4. 电脑AI5. 胜负判定6. 游戏控制 本文通过实现一个基本的五子棋游戏,展示了如何使用HTML、CSS和JavaScript来构建一个简单的交互式…

ATGM332D-F8N低功耗、小尺寸单北斗多频定位导航模块规格书

ATGM332D-F8N主要 特征 &#xff1a; 1、多频点单北斗接收机 支持B1C独立定位通道数目&#xff1a;176通道支持北斗二号、北斗三号支持B1I、B1C、B2I、B3I、B2a、B2b 定位精度 单点定位精度&#xff1a;<1.0mCEP50推算定位误差&#xff1a;<3&#xff05;&#xff08;定位…

伦敦银行情的软件有什么选择?

普通投资者做伦敦银交易&#xff0c;多以技术分析为主、基本分析为辅的方法作为自己的交易策略&#xff0c;既然提到技术分析&#xff0c;那么伦敦银行情的软件就至关重要&#xff0c;因为我们需要通过这些软件才能看到行情并进行分析&#xff0c;那看伦敦银行情的软件有什么好…

2024.8.21

130124202408211006 DATE #:20240821 ITEM #:DOC WEEK #:WEDNESDAY DAIL #:捌月拾捌 TAGS < BGM "琴师--要不要买菜" > < theme oi-contest > < [NULL] > < [空] > < [空] > 此情可待成追忆&#xff0c;只是当时已惘然 -- 《锦瑟》…

「OC」视图控制器的懒加载策略

「OC」视图控制器的懒加载策略 文章目录 「OC」视图控制器的懒加载策略懒加载懒加载的优点常见的懒加载实现方法使用懒加载的注意事项 控制器的懒加载参考资料 懒加载 懒加载&#xff08;Lazy Loading&#xff09;是一种设计模式&#xff0c;其核心思想是在需要时才进行对象的…

Verilog刷题笔记55

题目&#xff1a; Exams/ece241 2014 q5a You are to design a one-input one-output serial 2’s complementer Moore state machine. The input (x) is a series of bits (one per clock cycle) beginning with the least-significant bit of the number, and the output (Z)…

更快更强,SLS 推出高性能 SPL 日志查询模式

作者&#xff1a;无哲 引言 随着数字化进程的持续深化&#xff0c;可观测性一直是近年来非常火热的话题&#xff0c;在可观测的三大支柱 Log/Trace/Metric 中&#xff0c;日志&#xff08;Log&#xff09;数据一般是最为常见的&#xff0c;企业迈向可观测性的第一步&#xff…

《黑神话:悟空》总销量已破 450 万份,总销售额超过15亿元,对于单机游戏来说,这一成绩意味着什么?

《黑神话&#xff1a;悟空》总销量突破450万份&#xff0c;总销售额超过15亿元&#xff0c;意味着几个关键点&#xff1a; 市场认可度高&#xff1a;这样的销量和销售额表明游戏受到了广泛的玩家欢迎&#xff0c;市场认可度极高。对于单机游戏而言&#xff0c;这代表了其在游戏…