目录

一、起始文件start.S

二、_start和reset

三、save_boot_params_ret

四、_main之前系统寄存器初始化和从核的引导


一、起始文件start.S

1.uboot编译完成后有一个uboot-boot.lds链接器文件

2.打开里面有一个ENYRY(_start),_start符号所在的文件就是整个程序的起始文件

3.位置在 u-boot-2022.01/arch/arm/cpu/armv8/start.S

4.异常向量表代码位置u-boot-2022.01\arch\arm\lib\vectors.S

二、_start和reset

  • 进后有两种可配置情况,因为没有定义LINUX_KERNEL_IMAGE_HEADER 所以不需要看
  • 直接跳转到  reset  继续执行启动流程
  • save_boot_params 此处定义为了一个弱函数,为直接跳转回save_boot_params_ret继续往下执行
.globl   _start
_start:
#if defined(CONFIG_LINUX_KERNEL_IMAGE_HEADER)
#include <asm/boot0-linux-kernel-header.h>
#elif defined(CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK)
/** Various SoCs need something special and SoC-specific up front in* order to boot, allow them to set that in their boot0.h file and then* use it here.*/
#include <asm/arch/boot0.h>
#elseb  reset
#endif.align 3.globl    _TEXT_BASE
_TEXT_BASE:.quad    CONFIG_SYS_TEXT_BASE/** These are defined in the linker script.*/
.globl  _end_ofs
_end_ofs:.quad  _end - _start.globl _bss_start_ofs
_bss_start_ofs:.quad    __bss_start - _start.globl  _bss_end_ofs
_bss_end_ofs:.quad  __bss_end - _startreset:/* Allow the board to save important registers */b  save_boot_params
.globl  save_boot_params_ret
save_boot_params_ret:

三、save_boot_params_ret

进行地址无关的相对地址修复,以此保证后续在跳入c语言部分时可正常执行,一般不定义此配置则是继续往下执行boot流程。

四、_main之前系统寄存器初始化和从核的引导

对一些系统寄存器进行初始化

  • 关闭data cache,关闭mmu
    定义设置异常向量表的宏
    系统的时钟频率,COUNTER_FREQUENCY频率值
  • 勘误修正等

参考博文

博文2

uboot(一)—— start.S相关推荐

  1. u-boot中filesize环境变量【转载】

    转载地址:https://blog.csdn.net/fzs333/article/details/48518559 U-Boot中的环境命令可以使用$(filesize)来确定刚下载(传输)得到的文 ...

  2. 使用Uboot启动内核并挂载NFS根文件系统

    配置编译好内核之后,将生成的内核文件uImage拷贝到/tftpboot/下,通过tftp服务器将内核下载到开发板,使用命令:tftp 31000000 uImage.下载完成之后配置bootargs ...

  3. linux内核 机器码,u-boot与Linux内核机器码问题

    在<>一文中,执行完第6步的操作后,启动u-boot后,用bootm 命令来引导内核(执行bootm 0x30008000),但是执行后,卡住了,无法启动内核,现象如下: Starting ...

  4. 2014.4新版uboot启动流程分析

    原文 http://blog.csdn.net/skyflying2012/article/details/25804209 此处转载有稍作修改 最近开始接触uboot,现在需要将2014.4版本ub ...

  5. uboot源码分析笔记

    前几天看了ucos的源码,后面开始学习uboot的源码 网上看到一些uboot的文章,当然都是牛人写出来的,不过基本版本有点老,我这越是初学者,越想学习新版本的代码 我下载的是u-boot-2014. ...

  6. uboot引导kernel - 3 -uboot给内核传参详解

    uboot中执行theKernel函数后,kernel正式启动.如下函数,我们发现有3个参数. 1. 参数 0: 2. 参数machid; 如下code 中获取machid, gd是个全局变量. 2. ...

  7. uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题

    uboot启动Linux内核过程分为4大步骤: 问题2: uboot阶段DDR的分区的问题 上述步骤2和步骤4中,有将uboot/kernel拷贝纸DDR的步骤,具体要拷贝到DDR的什么位置呢? 分清 ...

  8. uboot引导kernel - 1 - Flash的分区

    uboot启动Linux内核过程分为4大步骤: 问题1:Flash的分区相关问题 在 上述步骤1/2/4 中都提到了从启动介质(iNand/SD)中读取uboot/kernel到SRAM/DDR中,那 ...

  9. Tiny4412 Uboot

    1. Build uboot a) 安装好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)并设置好 环境变量PATH,保证可以正常使用. b) 解 ...

  10. tiny210V2 Uboot kernel filesystem 烧写和启动

    1.sd启动 将u-boot镜像写入SD卡 将SD卡通过读卡器接上电脑(或直接插入笔记本卡槽),通过"cat /proc/partitions"找出SD卡对应的设备,我的设备节点是 ...

最新文章

  1. 结构型模式之Adapter模式
  2. IO流(文本文件读取练习)
  3. vue axios跨域请求_axios的请求拦截和vue路由的导航守卫有什么区别
  4. Codeforces Round #506 (Div. 3) - F. Multicolored Markers (思维)
  5. 初学Java ssh之Spring 第二篇
  6. android中sp的意义_两分钟理解Android中SP与DP的区别
  7. php验证mysql内数据_MySQL中数据类型的验证_MySQL
  8. MFC实现 MSN QQ 窗口抖动
  9. 中大计算机考研爆冷,中山大学计算机“爆冷”,321分排名第二,网友:“锦鲤”附体!...
  10. 成为一名专业的前端开发人员,需要学习什么?
  11. 解决eclipse环境下maven项目tomcat启动,未加载到项目的问题
  12. 中国自由软件推广先锋的自述,心潮澎湃的一往无前,一定要看!作者:洪峰 ...
  13. 华为USG6000V防火墙学习
  14. 销售管理系统er图_这套电商订单管理系统,90%电商玩家都受用
  15. 前端三级联动 distpicker插件
  16. 基于ELK 7.50搭建elastalert 监控报警和权限控制
  17. qt 取消按钮点击效果_Qt 对话框里添加确定取消按钮
  18. HDU 5651 xiaoxin juju needs help 组合数
  19. 用sendcloud来发邮件
  20. SCA连载GDPR罚单之保加利亚国家税务局(NRA)信息泄露事件

热门文章

  1. Hive综合案例练习(中级):环境数据准备
  2. jsp107ssm广州市家教中介服务网站
  3. 恭喜你,修家谱前看到了这篇文章,正确使用家谱字体避免惹笑话
  4. 瞧不上 C++ 和 D 语言,国外程序员将 5.8 万行代码迁移到 Jai 语言,到底图什么?
  5. Ipopt-3.12.7在ubuntu18.04安装
  6. 电话号码的正则判断(电话、正则的使用)
  7. 慧办公 EXCEL 提取表名到A列
  8. python时间格式化_python格式化时间
  9. 如何一键重装Win7系统 Win7系统重装的方法教程
  10. 七大排序算法大汇总(上)