Part4_lesson3---U-Boot工作流程分析

发布者:Xiangsi最新更新时间:2024-10-09 来源: cnblogs关键字:U-Boot  工作流程  smdk2440 手机看文章 扫描二维码
随时随地手机看文章

1、程序入口

我们从什么地方去找入口呢,首先是打开顶层目录的makefile文件,在这个文件里面,每一个uboot支持的开发板都有一个配置选项,比如说,搜索smdk2440,结果如下

我们主要关注上图的右方那个红线处,它决定了开发板的名称smdk2440,拿到这个名称后,我们到目录boardsamsungsmdk2440下存放的文件就是开发板支持相关的一些文件;找到里面的u-boot.lds文件,那么我们uboot的整个链接就是用这个脚本文件来控制的,打开之

可知,在我们代码段最前端的是目录cpu/s3c24xx/下的start.c或者start.s文件,那么这个文件会得到最先运行,那么这个文件里面的那一段代码最先运行呢?

由链接器脚本可知

在start.s代码里面的标号_start处最先执行,也就是

2、分析第一阶段的代码--BL1

上面是设置中断向量表;

上面是设置处理器到SVC32模式,

上面是刷新I/D cache,然后是关闭MMU和cache;没有定义CONFIG_ONENAND这个宏,所以跳过

接下来执行

bl lowlevel_init

该函数位于对应开发板的lowlevel_init.S下

进入到该文件:

上面是初始化系统时钟,对串口进行汇编级的初始化,对nandflash进行简单的初始化,对内存的初始化,

 

然后,返回到上一级代码处:

判断是norflash还是nandflash,我们这里是nandflash,所以下面要拷贝nandflash剩下的内容

 

上面是拷贝nand_copy的内容,

上面是设置堆栈,为c语言编程做准备,清除bss段,

 

3、分析第二阶段的代码--BL2

在这个阶段通过ldr pc,_start_armboot,使程序进入内存中运行,那么下面来证明_start_armboot是不是在内存中

下面来证明_start_armboot在内存当中,

首先,对uboot进行配置

make smdk2440_config(这个来自于makefile里面)

然后,再执行一个make进行编译;

可以看到elf格式的uboot以及二进制格式的uboot.bin文件,

我们要查看_start_armboot的地址是多少,我们对u-boot.elf进行反汇编

打开dump文件且搜索底行命令格式下/_start_armboot

其入口地址为30001100,实际上它是内存里面的地址

往最前看,入口地方,如下:

上面的_start的地址为30000000,那么这个地址怎么来的,以及前面说过我们的第一阶段的程序不是在内存中运行而是在垫脚石中运行,垫脚石是从0地址开始的。

1、我们去链接一个程序的时候,如果这个程序由多个文件组成,那么它的链接地址是由链接器脚本决定的。

在uboot的顶层目录下面的config.mk里面,这个文件会被makefile包含进去,

代码段的基地址

那么这个TEXT_BASE在哪儿定义的呢?

如果TEXT_BASE修改为30008000,那么变化如下:

链接地址并不等于pc指针的值!!!!!!!!!!!!!!!!!!

 

如果是ldr pc,0x30008000,则pc指针的值就会为30008000

 

第二阶段程序分析

在这部分它会做一些硬件初始化和一些软件初始化(可能初始化环境变量等等)

分析:

首先分析上面的for循环,首先,使用一个指针指向一个函数数组,把数组里面的函数都取出来调用

上面函数里面,在硬件上对串口进行初始化,

上面是对LCD的初始化

上面是对网卡的初始化;以及初始化led;

main_loop()执行用户输入的命令!!它的作用是对用户输入到控制台的命令进行解析,并执行用户输入的命令。

下面是对6410的分析:

打开链接器脚本

 

跟上面分析差不多!!!

外设基地址初始化,这是6410上面才有的

上面有点亮led灯为了调试,然后是关闭看门狗,在2440上其实是有的,为什么他没有这个操作呢,其实它是有这个操作额,它做在系统时钟初始化里面,同时在里面还有关闭所有中断这个操作,这是在初始化系统时钟之前做的。

start_armboot是2440与6410共用的!!!

                                                                 

210初始化流程:

IROM(固化程序)把BL1(NANDFLASH中的)程序复制到IRAM中去,BL1的大小最大为16KB,在IRAM中运行的BL1会把NANDFLASH中后面的内容BL2复制到IRAM中剩下的地址中去,最大为80KB,如果还有的话,就只能往内存里面复制了。其实uboot编译出来BL2是大于80KB的,所以uboot还是采用往内存中去复制的这种情况,

在2440和6410里面的BL1和BL2是烧写到同一个bin文件里面的,而在210中是把BL1和BL2烧写到不同的bin文件中的,

BL1是位于下面

然后打开u-boot-spl.lds文件,它决定了BL1是怎么产生出来的


关键字:U-Boot  工作流程  smdk2440 引用地址:Part4_lesson3---U-Boot工作流程分析

上一篇:Part4_lesson4---Bootloader架构设计
下一篇:Part4_lesson2---ARM处理器这个硬件启动流程分析

推荐阅读最新更新时间:2026-03-25 13:07

是德科技与三星携手NVIDIA展示端到端AI-RAN验证工作流程
该联合演示会在2026年世界移动通信大会上展示,为AI驱动的无线接入网模块验证简化了数据采集、AI/ML训练及基准测试流程 是德科技与三星电子宣布,会在巴塞罗那举行的2026年世界移动通信大会(MWC 2026)上,与NVIDIA联合演示端到端人工智能无线接入网络(AI-RAN)测试与验证工作流程。该演示展示了是德科技的AI-RAN解决方案如何以物理上行共享信道(PUSCH)信道估计用例,简化AI驱动RAN模块的验证流程,将数据生成、AI/ML训练和性能基准测试整合到单一的自动化工作流程中,以加速创新并降低运营商和设备厂商的部署风险。 随着AI技术在RAN中不断深入应用,工程师必须在多样化的真实网络条件下对算法进行验证。然
[网络通信]
浅谈无刷电机的工作流程
上一期的芝识课堂,我们跟大家一起分析了无刷电机的四个功能单元,并详细分析了PWM和逆变器单元的工作情况,今天我们继续来熟悉无刷电机工作流程中另外两个重要的部分——转子位置检测和波形驱动。 转子位置检测是电机控制和驱动过程中不可或缺的一环,是实现电机精确控制和稳定运转的关键,特别是对于需要高精度控制的电机系统,转子位置检测的精度和速度都至关重要。常用的无刷电机转子位置检测有两种方式,即霍尔传感器检测和无传感器检测。 传感器原理 霍尔传感器的原理是检测磁场并输出与其大小成比例的模拟信号。霍尔传感器的输出通过比较器转换为开关数字信号,然后作为无刷电机的转子位置信号。采用高精度、昂贵的编码器和解析器来检测伺服电机的位置,以实现精确
[嵌入式]
浅谈无刷电机的<font color='red'>工作</font><font color='red'>流程</font>
Synopsys如何支持汽车照明设计师改进工作流程
作为达索系统的合作伙伴,Synopsys 不断增强其基于 LucidShape CAA V5 的产品,以促进在 CATIA V5 环境中开发更安全、更智能的车辆。CATIA V5 用户可以依靠 LucidShape CAA 来缩短汽车照明设计时间,高效地探索创意造型选项,并为制造团队提供及时、准确的结果。 正如我们在关于设计汽车照明系统的博客文章中所描述的那样,既需要满足法规要求,又要提供独特的造型,这增加了光学系统的复杂性。正因为如此,汽车设计师比以往任何时候都更能从先进的设计软件中受益,以帮助他们满足苛刻的产品和行业规范。 Synopsys 不断增强 LucidShape CAA 对零件级模型和产品级装配体的建模,以提
[嵌入式]
Synopsys如何支持汽车照明设计师改进<font color='red'>工作</font><font color='red'>流程</font>
PLC的工作流程、分类及关键技术
可编程逻辑控制器(Programmable Logic Controller,PLC)是一种广泛应用于工业自动化领域的控制设备。它采用可编程的存储器、输入输出模块和中央处理单元等组件,通过编写特定的程序来实现对生产过程的控制。本文将介绍PLC的工作流程、分类、以及一些关键技术,帮助读者更好地理解PLC的性能和应用。 一、PLC的工作流程 PLC的核心部件是中央处理单元(Central Processing Unit,CPU),它负责处理所有的输入/输出信号、计数器、定时器和中断等功能。PLC的工作流程如下: 1.上电启动:当PLC上电时,CPU会进行自检,然后从存储器中加载操作系统和应用程序。 2.扫描输入:CPU会周期性地扫
[嵌入式]
语音识别技术的工作原理 语音识别技术的工作流程
语音是人类最自然的交互方式。计算机发明之后,让机器能够“听懂”人类的语言,理解语言中的内在含义,并能做出正确的回答就成为了人们追求的目标。我们都希望像科幻电影中那些智能先进的机器人助手一样,在与人进行语音交流时,让它听明白你在说什么。语音识别技术将人类这一曾经的梦想变成了现实。语音识别就好比“机器的听觉系统”,该技术让机器通过识别和理解,把语音信号转变为相应的文本或命令。 语音识别技术,也被称为自动语音识别AutomaTIc Speech RecogniTIon,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列。语音识别就好比“机器的听觉系统”,它让机器通过识别和理解,把语音
[嵌入式]
语音识别技术的<font color='red'>工作</font>原理 语音识别技术的<font color='red'>工作</font><font color='red'>流程</font>
激光散射粒度分析仪的工作原理及操作流程
激光散射粒度分析仪作为一种新型的粒度测试仪器,已经在其它粉体加工与应用领域得到广泛的应用。它的特点是测试速度快、重复性好、准确性好、操作简便。激光散射粒度分析仪对提高产品质量、降低能源消耗有重要意义。 激光散射粒度分析仪是利用粒子的布朗运动,根据光的散射原理测量粉颗粒大小的,是一种比较通用的粒度仪。其特点是测量的动态范围宽、测量速度快、操作方便,尤其适合测量粒度分布范围宽的粉体和液体雾滴。对粒度均匀的粉体,比如磨料微粉,要慎重选用。 激光散射粒度分析仪一般采用MIE散射原理,激光粒度分析仪内有激光器,它会发射出一束具有一定波长的激光束,该激光束在经过滤镜后成为平行的光束照射到颗粒上面,因为粒径不同,从而产生光散射现象。散射
[测试测量]
是德科技推出全新器件建模软件,助力实现一站式工作流程
显著提升半导体器件建模工程师的团队效率,提高整个设计和开发工作流程的自动化程度 2022 年 8 月 30 日,北京—— 是德科技公司日前发布了一个全新的建模(MG)环境。 该环境可提高整个工作流程的自动化程度,进而提升半导体器件建模工程师的工作效率。是德科技提供先进的设计和验证解决方案,旨在加速创新,创造一个安全互联的世界。 半导体器件建模工程师需要依靠自动化工具来创建准确的仿真模型和工艺设计套件(PDK),以便在硅(CMOS)技术和三五族化合物技术的基础之上打造基带和射频(RF)集成电路(IC)设计。 是德科技器件建模和表征产品经理马龙表示:“是德科技的器件建模 2023 软件套件可以满足客户的需求,帮助他们
[测试测量]
是德科技推出全新器件建模软件,助力实现一站式<font color='red'>工作</font><font color='red'>流程</font>
泰克NAB 2019上吸睛操作,展示完整HDR视频工作流程解决方案
行业领先的视频测试、监测和诊断解决方案创新企业—泰克科技公司在4月8~11日举办的NAB展览会上,在南厅(上层) SU5006号展台展示了全新的、面向高动态范围(HDR)准备就绪的解决方案。泰克的HDR视频功能适用于其屡获大奖的媒体制作、监测和分析套装解决方案,包括PRISM、Aurora和Sentry。 对视频行业来说,新增HDR可谓恰逢其时。影视点播(VOD)传送流明显改变了视频内容的制作、传送和消费方式。机顶盒(OTT)转播平台使得客户日益需要更高的体验质量,观众现在希望其内容能够以HDR方式传送。 “各广播公司希望抓住HDR带来的机遇,他们一直与泰克携手,改善HDR工艺,优化HDR工作流程。”泰克科技公司视频产品事
[手机便携]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved