码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • uboot的start.S


    目录

    一、起始文件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继续往下执行
    1. .globl _start
    2. _start:
    3. #if defined(CONFIG_LINUX_KERNEL_IMAGE_HEADER)
    4. #include
    5. #elif defined(CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK)
    6. /*
    7. * Various SoCs need something special and SoC-specific up front in
    8. * order to boot, allow them to set that in their boot0.h file and then
    9. * use it here.
    10. */
    11. #include
    12. #else
    13. b reset
    14. #endif
    15. .align 3
    16. .globl _TEXT_BASE
    17. _TEXT_BASE:
    18. .quad CONFIG_SYS_TEXT_BASE
    19. /*
    20. * These are defined in the linker script.
    21. */
    22. .globl _end_ofs
    23. _end_ofs:
    24. .quad _end - _start
    25. .globl _bss_start_ofs
    26. _bss_start_ofs:
    27. .quad __bss_start - _start
    28. .globl _bss_end_ofs
    29. _bss_end_ofs:
    30. .quad __bss_end - _start
    31. reset:
    32. /* Allow the board to save important registers */
    33. b save_boot_params
    34. .globl save_boot_params_ret
    35. save_boot_params_ret:

    三、save_boot_params_ret

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

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

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

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

    参考博文

    博文2

  • 相关阅读:
    化学之如何判断能否追到妹子?
    MySQL数据库UDF提权学习
    Proteus仿真--花样流水灯(仿真文件+程序)
    云原生题目整理(待更新)
    ELK日志系统
    img为空时不显示
    Zabbix“专家坐诊”第204期问答汇总
    【java核心技术】Java知识总结 -- 语法篇
    106. 如何提高 SAP UI5 应用路由 url 的可读性
    汽车电子软件开发AutoSAR BSW开发分享
  • 原文地址:https://blog.csdn.net/m0_51247005/article/details/127093163
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号