自制F1C200S demo板(八、Linux初学3)

uboot执行流程学习

uboot执行流程文件路径:

1、uboot/arch/arm/cpu/arm926ejs/start.S,执行结束会跳转到_main部分,处于下一路径中

2、uboot/arch/arm/lib/crt0.S,执行到

    mov    r0, #0
    bl    board_init_f

会跳转到void board_init_f(ulong dummy),处于下一路径中

3、uboot/arch/arm/mach-sunxi/board.c,执行结束时跳转到下一路径

4、uboot/arch/arm/lib/crt0.S,执行到

ldr pc, =board_init_r /* this is auto-relocated! */

会跳转到void board_init_r(gd_t *dummy1, ulong dummy2),处于下一路径中

5、uboot/common/spl/spl.c,执行结束后,跳转到image中执行

6、又会执行uboot/arch/arm/lib/crt0.S,执行到

    mov    r0, #0
    bl    board_init_f

会跳转到void board_init_f(ulong boot_flags),但却处于下一路径中

这里出现两个相同函数名,执行时却按照不同流程进行了!!!

6、uboot/common/board_f.c,,执行结束后跳转到下一路径

7、uboot/arch/arm/lib/crt0.S,执行到

ldr pc, =board_init_r /* this is auto-relocated! */(自动重定位)

会跳转到void board_init_r(gd_t *new_gd, ulong dest_addr),但却处于下一路径中

这里出现两个相同函数名,执行时却按照不同流程进行了!!!查到资料解释为:在启动阶段由内部BROM复制一部分程序到DDR执行,猜测这一部分里有一个board_init_r,然后运行这一部分程序,这一部分程序又回拷贝整个uboot到DDR,这个时候的uboot里也有一个board_init_r,但地址应该不太一样,猜测arm内部进行自动重定位了。

8、uboot/common/board_r.c,执行结束后跳转到下一路径

9、uboot/common/main.c,之后处于命令行状态,可以用命令执行uboot操作。启动内核也属于命令执行uboot操作,但这个操作会结束uboot命令行状态。

crt0.s会被执行两次,且每次运行调用的函数不一样。spl时执行crt0.s,调用一个board_init_f和board_init_r函数,这两个函数在board.c中;当调用uboot镜像后,又执行了crt0.s,也调用一个board_init_f和board_init_r函数,但这时这两个函数却分别在board_f.c和board_r.c中。

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

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

相关文章

今日总结2024/5/31

今日熟悉了常用库函数,并查集,常用建边方式 明天蓝桥杯国赛随缘了,第一次估计也是最后一次了 LQOJ.269 排列序数 如果用 a b c d 这 4 个字母组成一个串,有 4!24 种,如果把它们排个序,每个串都对应一个序号&#xf…

陪玩小程序都需要怎么做?

开发陪玩小程序需要进行全面的需求分析、功能规划、技术选型、界面设计等一系列步骤。陪玩小程序作为一种新兴的网络服务平台,为用户提供了寻找游戏伙伴、预约陪玩服务等功能,满足了用户在游戏领域的社交互动和技能提升需求。具体分析如下: 需…

一份不知道哪里来的第十五届国赛模拟题

这是一个不知道来源的模拟题目,没有完全完成,只作代码记录,不作分析和展示,极其冗长,但里面有长按短按双击的复合,可以看看。 目录 题目代码底层驱动主程序核心代码关键:双击单击长按复合代码 …

Flutter 中的 SliverPadding 小部件:全面指南

Flutter 中的 SliverPadding 小部件:全面指南 Flutter 是一个功能丰富的 UI 框架,由 Google 开发,允许开发者使用 Dart 语言来构建高性能、美观的跨平台应用。在 Flutter 的滚动组件体系中,SliverPadding 是一个用来为其子 Slive…

今日学会的,刘姥姥进大观园

Git - First-Time Git Setup 下载了Git,会用Git了? 还有这个:学习 HTML5 Canvas 这一篇文章就够了 | 菜鸟教程 (runoob.com) JavaScript 用法 | 菜鸟教程 (runoob.com) 看到这个真的是受益匪浅,我终于懂了一直有的疑惑。 3D可…

js 正则匹配返回所有匹配到的范围

js正则默认不返回匹配到的范围,有些场景用起来就不太方便。如果想针对于匹配到的位置多次操作就要另外想个办法了。 indexOf 这个只能获取到第一个出现的位置,其他位置不太行,这个方法好像就行不通了。 自己一个个找,写个kmp算法感…

Mock的用法

1. 引入unittest包,再从包里引用mock类 import unittest from unittest import Mock 2. mock的作用,做挡板或者用来做一些单元测试过程中复杂的数据的模拟 demo Demo() #把mock的值赋值给demo的get()方法,这样在调用这个方法时&#xff0…

RAG技术探索

什么是RAG 1 RAG原理 RAG(Retrieval Augmented Generation, 检索增强生成),即LLM在回答问题或生成文本时,先会从大量文档中检索出相关的信息,然后基于这些信息生成回答或文本,从而提高预测质量。RAG模型尤…

数据在内存中的存储<C语言>

导言 在计算机中不同类型的数据在计算机内部存储形式各不相同,弄懂各种数据在计算机内部存储形式是有必要的,C语言的学习不能浮于表面,更要锻炼我们的“内功”,将来在写程序的时候遇见各种稀奇古怪的bug时,也便能迎刃而…

天文学专业大学院校排名(2024最新排行榜)

序号 学校代码 学校名称 学科名称 评估结果 1 10284 南京大学 天文学 A 2 10358 中国科学技术大学 天文学 A 3 10001 北京大学 天文学 B- 4 10248 上海交通大学 天文学 C 5 10027 北京师范大学 天文学 C- 天文学专业排名前5名的大学有&#xff1…

pipeline在计算机领域有什么贴切的翻译

在计算机领域,"pipeline"一词通常被翻译为“流水线”。这个术语指的是一种技术或架构,其中多个处理阶段按顺序执行,使得数据可以在一个阶段完成处理后立即被送入下一个阶段,从而提高效率和性能。在不同的上下文中&#…

控制障碍函数CBF详解(附带案例实现)

控制障碍函数CBF详解(附带案例实现) 文章目录 控制障碍函数CBF详解(附带案例实现)1. Control Affine System2. Lyapunov Theory, Nagumos Theory, Invariance Principle3. Control Lyapunov Function (CLF) and CLF-QP4. Control …

算法(十二)分治算法

文章目录 算法概念算法例子字符串中小写转大写求X^n问题 算法概念 分治算法(divide and conquer)算法的核心思想其实就是"分而治之",将原问题划分成n个规模较小,并且结构与原问题相似的子问题,递归地解决这…

移植其他命令行Vivado IDE的工具

移植其他命令行Vivado IDE的工具 介绍 本章介绍如何迁移各种AMD命令行工具以在AMD中使用 Vivado™集成设计环境(IDE)。 迁移ISE Partgen命令行工具 ISE™Design Suite Partgen工具可获得: •系统上安装的所有设备的信息 •详细的包装信息 您可…

[openwrt-21.02]openwrt-21.02 make menuconfig不显示luci-app-firewall问题分析及解决方案

问题描述 make menuconfig在 在applications界面没有luci-app-firewall 问题分析 首先重新执行 ./scripts/feeds update -a ./scripts/feeds install -a 然后再次执行make menuconfig,依然不显示,所以不是feeds安装的问题 最后看到log有个openmptc…

GB-T 43206-2023 信息安全技术 信息系统密码应用测评要求

GB-T 43206-2023 信息安全技术 信息系统密码应用测评要求 编写背景 随着信息技术的飞速发展,信息系统在社会经济活动中扮演着越来越重要的角色。信息安全问题也随之成为社会关注的焦点。GB-T 43206-2023《信息安全技术 信息系统密码应用测评要求》是针对信息系统中…

kotlin gradle 在libs.versions.toml控制下添加本地aar/jar的方法

与之前gradle集中控制的方法相同,唯一不同的是改成kotlin dsl格式: 修改Module级别的build.gradle.kt文件 在dependencies函数块内添加下面代码块 implementation(fileTree(mapOf("dir" to "libs","include" to listOf(…

记录mabatis-plus初体验

一、简介 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 测试问题现象:测试mabatis的crud方法 增加 批量删除都没有问题 单单就是这个根据ID删除有问题 解决方案:真的就是pom文件的问题 自己的版本是Intelli…

Fully Convolutional Networks for Semantic Segmentation--论文笔记

论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/abs/1411.4038 3.数据集地址 论文摘要的翻译 卷积网络是强大的视觉模型,可以产生特征层次结构。我们表明,卷积网络本身,经过端到端,像素对像素的训练,在…

【新能源大巴BMS结构与乘用车的区别】

新能源大巴BMS结构与乘用车的区别 这篇文章主要介绍新能源大巴的电池和BMS的结构与乘用车的区别。 主要有,新能源大巴行业、新能源电池系统结构和新能源大巴的BMS系统。 第一部分 新能源大巴行业 其实数数全球的商用车(大巴卡车),大致的方向还是沿着就…