uboot启动源码分析

mofei004 mofei004     2023-03-09     147

关键词:

开发板smdk2410的uboot为例。
第一阶段文件为cpu/arm920t/start.S和board/smdk2410/lowlevel_init.S。

一、第一阶段
1、设置cpu为svc模式
2、关看门狗、关中断
3、cpu初始化
4、设置栈
5、时钟初始化
6、拷贝uboot到ram
7、清除bss段
8、set PreLoadedONRAM
9、执行start_armboot,进入第二阶段入口

问题:
1、汇编中标号的实质?
2、内存控制参数拷贝过程中,源地址的计算问题?

3、时钟参数的计算问题?

 

二、第二阶段
start_armboot()函数分析:
1、设置指针gd、gd->bd,存储的是与内核交互的参数。
2、执行init_sequence数组中的函数。cpu、板子、中断、波特率、串口、控制台、dram等初始化操作。
3、内存中malloc段初始化。
4、设置uboot环境变量
5、设置bd中网卡参数
6、串口设备初始化
7、设置gd->jt
8、初始化控制为一个设备
9、初始化GPIO
10、以太网初始化
11、进入循环main_loop()

第2步中:
board_init()://1、IO初始化;2、板子识别码;3、设置bi_boot_params,gd->bd->bi_boot_params = 0x30000100;
serial_setbrg()://设置串口寄存器参数

uboot命令实现:
#define U_BOOT_CMD(name,maxargs,rep,cmd,usage,help)
cmd_tbl_t __u_boot_cmd_##name Struct_Section = #name, maxargs, rep, cmd, usage, help

其中Struct_Section定义如下:
#define Struct_Section __attribute__ ((unused,section (".u_boot_cmd"))) //

 






























uboot启动源码分析

开发板smdk2410的uboot为例。 第一阶段文件为cpu/arm920t/start.S和board/smdk2410/lowlevel_init.S。一、第一阶段 1、设置cpu为svc模式 2、关看门狗、关中断 3、cpu初始化 4、设置栈 5、时钟初始化 6、拷贝uboot到ram 7、清除bss段 8、setPreLoadedONRAM 9... 查看详情

s5pv210-uboot源码分析-第一阶段

uboot源码分析1-启动第一阶段1、starts.S是我们uboot源码的第一阶段:从u-boot.lds链接脚本中也可以看出start.S是我们整个程序的入口处,怎么看出的呢,因为在链接脚本中有个ENTRY(_start)声明了_start是程序的入口。所以_start符号所在的... 查看详情

uboot启动第一阶段分析(代码片段)

...oot第一阶段初识  1.1.什么是uboot第一阶段    1.1.1.启动os三个阶段      1.1.1.1.bl0阶段        a.这段代码是三星固化到iROM中,可以查看《S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf》        b.这段... 查看详情

uboot源码分析1-启动第一阶段

...生成的。里面就一行内容:#defineU_BOOT_VERSION"U-Boot1.3.4"2、启动代码的16字节头部3、异常向量表的构建4、用0xdeadbeef对齐填充5、分配空间放TEXT_BASE c3e000006、分配空间放uboot在DDR中的物理地址33e000007、设置CPU为SVC模式8、设置L2、L1... 查看详情

uboot源码分析

一、九鼎官方uboot和三星原版uboot对比(1)以九鼎官方的uboot为蓝本来学习的,以三星官方的这份为对照。(2)不同版本的uboot或者同一版本不同人移植的uboot,可能目录结构和文件内容都有所不同。将来大家懂了后也可以自己根据需... 查看详情

uboot配置编译源码分析

一、X210官方uboot配置编译实践1、找到官方移植好的uboot(BSP概念)(1)源头的源代码是uboot官网下载的。这个下载的源代码可能没有你当前使用的开发板的移植,甚至找不到当前开发板使用的SoC对应的移植版本。(2)SoC厂商在推出一... 查看详情

一,移植uboot,分析uboot启动流程(代码片段)

...译器:arm-linux-gcc-4.3.2Ubuntu版本:16.04uboot版本:2013.10uboot启动流程简要如下:    a,设置CPU为管理模式    b,关闭看门狗    c,关闭中断    d,设置时钟频率    e,进入lowlevel_init.S,初始化各个bank    f,进... 查看详情

s5pv210-uboot源码分析-uboot环境变量

9、1、uboot的环境变量1、环境变量的作用(1)在我们不改变uboot源代码的情况下,只需要改变环境变量的值就可以改变uboot运行时的数据和一些特性。比如说,通过修改bootdelay环境变量,就可以更改开机倒数的秒数。2、环境变量的... 查看详情

从0移植uboot_启动流程分析(代码片段)

来源:Linux社区 作者:xiaojiang1025 : http://www.linuxidc.com/Linux/2017-02/141019.htm 经过了上一篇的配置,我们已经执行make就可以编译出一个uboot.bin,但这还不够,首先,此时的uboot并不符合三星芯片对bootloader的格式要求... 查看详情

s5pv210-uboot源码分析-uboot的硬件驱动部分

1、裸机中本身是没有驱动概念的。狭义上的驱动的概念是操作系统中用来具体操控硬件的那部分代码叫驱动。广义上讲,只要是操控硬件的都算是驱动。2、裸机程序中是直接操控硬件的,但是在操作系统中我们必须通过驱动操... 查看详情

第1阶段——uboot启动函数bootm命令分析

...d=nandread.jffs20x30007FC0kernel;bootm0x30007FC0"中怎么实现bootm命令启动内核.其中bootm要做的事情:a读取头部,把内核拷贝到合适的地方(0X30008000)b在do_boom_linux()中把参数给内核准备好,并告诉内核参数的首地址c在do_boom_linux()中最后使用theKern 查看详情

海思hi35xxuboot启动分析总结(代码片段)

前言在嵌入式linux设备中,uboot的最终目的就是启动kernel。对于uboot而言,没有人把它引导起来,所以uboot首先需要把自己加载起来,然后再去引导kernel的启动,这也就可以大致的分为Uboot启动的第一阶段和第二阶段。(一)start.S第一... 查看详情

通过uboot传参设置mtd分区流程源码分析

因为公司同事反映他使用的开板无法将根目录下的ip_work目mounth成功,由于本人当时没有去现场查看问题,只是象征性的询问内核是否创建了/dev/mtdblock5设备节点,因为该开发板默认是挂载在mtdblock5上,由于同事对这方面不了解,... 查看详情

uboot启动流程分析(代码片段)

1、前言在前面的文章Uboot启动流程分析(三)中,链接如下:https://www.cnblogs.com/Cqlismy/p/12006287.html已经对init_sequence_f前半部分函数进行了简单分析,前半部分主要是对调试串口终端进行了初始化,以及输出了一些必要的字符串,接... 查看详情

[架构之路-25]:目标系统-系统软件-bootloaderuboot内存映射与启动流程(代码片段)

...述1.1概述1.2内存映射(案例)1.3uboot在嵌入式系统启动中的位置第2章 uboot启动流程(源码分析)2.1入口函数:_start2.3执行流程(文字描述)2.4初始化过程第3章uboot如何加载内核3.1 vmlinuz/vmlinux、Image、zI... 查看详情

[架构之路-25]:目标系统-系统软件-bootloaderuboot内存映射与启动流程(代码片段)

...述1.1概述1.2内存映射(案例)1.3uboot在嵌入式系统启动中的位置第2章 uboot启动流程(源码分析)2.1入口函数:_start2.3执行流程(文字描述)2.4初始化过程第3章uboot如何加载内核3.1 vmlinuz/vmlinux、Image、zI... 查看详情

bsp开发之ubootuboot常用命令以及代码分析(代码片段)

...UBOOT代码分析(通用UBOOT2016.01代码学习)顶层Makefile分析UBOOT启动过程代码分析第一阶段第二阶段打印测试命令行处理UBOOT代码分析(RTL8197定制uboot代码学习)顶层Makefile分 查看详情

从0移植uboot_配置分析(代码片段)

...sp;:http://www.linuxidc.com/Linux/2017-02/141018.htm 和绝大多数源码编译安装一样,uboot的编译流程也类似于"makeconfig->make->makeinstall"**三步,只是由于uboot本身是针对多种平台的bootloader,软件的复杂性和 查看详情