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继续往下执行
.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相关推荐
- u-boot中filesize环境变量【转载】
转载地址:https://blog.csdn.net/fzs333/article/details/48518559 U-Boot中的环境命令可以使用$(filesize)来确定刚下载(传输)得到的文 ...
- 使用Uboot启动内核并挂载NFS根文件系统
配置编译好内核之后,将生成的内核文件uImage拷贝到/tftpboot/下,通过tftp服务器将内核下载到开发板,使用命令:tftp 31000000 uImage.下载完成之后配置bootargs ...
- linux内核 机器码,u-boot与Linux内核机器码问题
在<>一文中,执行完第6步的操作后,启动u-boot后,用bootm 命令来引导内核(执行bootm 0x30008000),但是执行后,卡住了,无法启动内核,现象如下: Starting ...
- 2014.4新版uboot启动流程分析
原文 http://blog.csdn.net/skyflying2012/article/details/25804209 此处转载有稍作修改 最近开始接触uboot,现在需要将2014.4版本ub ...
- uboot源码分析笔记
前几天看了ucos的源码,后面开始学习uboot的源码 网上看到一些uboot的文章,当然都是牛人写出来的,不过基本版本有点老,我这越是初学者,越想学习新版本的代码 我下载的是u-boot-2014. ...
- uboot引导kernel - 3 -uboot给内核传参详解
uboot中执行theKernel函数后,kernel正式启动.如下函数,我们发现有3个参数. 1. 参数 0: 2. 参数machid; 如下code 中获取machid, gd是个全局变量. 2. ...
- uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题
uboot启动Linux内核过程分为4大步骤: 问题2: uboot阶段DDR的分区的问题 上述步骤2和步骤4中,有将uboot/kernel拷贝纸DDR的步骤,具体要拷贝到DDR的什么位置呢? 分清 ...
- uboot引导kernel - 1 - Flash的分区
uboot启动Linux内核过程分为4大步骤: 问题1:Flash的分区相关问题 在 上述步骤1/2/4 中都提到了从启动介质(iNand/SD)中读取uboot/kernel到SRAM/DDR中,那 ...
- Tiny4412 Uboot
1. Build uboot a) 安装好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)并设置好 环境变量PATH,保证可以正常使用. b) 解 ...
- tiny210V2 Uboot kernel filesystem 烧写和启动
1.sd启动 将u-boot镜像写入SD卡 将SD卡通过读卡器接上电脑(或直接插入笔记本卡槽),通过"cat /proc/partitions"找出SD卡对应的设备,我的设备节点是 ...
最新文章
- 结构型模式之Adapter模式
- IO流(文本文件读取练习)
- vue axios跨域请求_axios的请求拦截和vue路由的导航守卫有什么区别
- Codeforces Round #506 (Div. 3) - F. Multicolored Markers (思维)
- 初学Java ssh之Spring 第二篇
- android中sp的意义_两分钟理解Android中SP与DP的区别
- php验证mysql内数据_MySQL中数据类型的验证_MySQL
- MFC实现 MSN QQ 窗口抖动
- 中大计算机考研爆冷,中山大学计算机“爆冷”,321分排名第二,网友:“锦鲤”附体!...
- 成为一名专业的前端开发人员,需要学习什么?
- 解决eclipse环境下maven项目tomcat启动,未加载到项目的问题
- 中国自由软件推广先锋的自述,心潮澎湃的一往无前,一定要看!作者:洪峰 ...
- 华为USG6000V防火墙学习
- 销售管理系统er图_这套电商订单管理系统,90%电商玩家都受用
- 前端三级联动 distpicker插件
- 基于ELK 7.50搭建elastalert 监控报警和权限控制
- qt 取消按钮点击效果_Qt 对话框里添加确定取消按钮
- HDU 5651 xiaoxin juju needs help 组合数
- 用sendcloud来发邮件
- SCA连载GDPR罚单之保加利亚国家税务局(NRA)信息泄露事件
热门文章
- Hive综合案例练习(中级):环境数据准备
- jsp107ssm广州市家教中介服务网站
- 恭喜你,修家谱前看到了这篇文章,正确使用家谱字体避免惹笑话
- 瞧不上 C++ 和 D 语言,国外程序员将 5.8 万行代码迁移到 Jai 语言,到底图什么?
- Ipopt-3.12.7在ubuntu18.04安装
- 电话号码的正则判断(电话、正则的使用)
- 慧办公 EXCEL 提取表名到A列
- python时间格式化_python格式化时间
- 如何一键重装Win7系统 Win7系统重装的方法教程
- 七大排序算法大汇总(上)