首页
学习
活动
专区
圈层
工具
发布

Uboot 大全 | uboot 启动流程(二)

为了方便对硬件和驱动的管理,uboot还引入了类似linux内核的设备树和驱动模型特性。...文件,并通过以下命令将它们连接为最终的uboot.bin文件: cat u-boot-nodtb.bin u-boot.dtb >uboot.bin 驱动模型DM U-boot驱动模型与linux的设备模型比较类似...环境变量 环境变量可以为uboot提供在运行时动态配置参数的能力,如在命令行通过修改环境变量bootargs可以改变内核的启动参数。它以env=value格式存储,其中每条环境变量之间以’\0’结尾。...board_init_r流程 board_init_r是uboot重定位后需要执行的流程,它包含基础模块、硬件驱动以及板级特性等的初始化,并最终通过run_main_loop启动os会进入命令行窗口。...还有待于完善 do_bootcmd 加载linux内核

3K42

Uboot 大全 | uboot 启动流程(一)

– BL32 – BL33(uboot),即在bl32启动完成后再启动uboot,uboot作为启动链中作为最后一级镜像,用于启动最终的os。...因此默认情况下uboot并不需要与atf共同启动,而其自身就被设计为支持完整的多级启动链,该启动链被设计为最多可包含spl、tpl和uboot三个阶段。...若不需要支持tpl,则uboot的典型启动流程可精简为如下方式(这也是uboot最常见的运行方式): 对于有些启动速度要求较高的场景,可以进一步简化其启动流程。...如可将其设计为下面这种跳过uboot,直接通过spl启动操作系统的方式,此时其启动流程如下: Atf与U-boot组合方式启动 若系统需要支持secure和non secure两种执行状态,则必须要从...spl初始化流程在另一篇文章启动分析>中已经做了较详细的介绍,启动分析>> 故文本将主要介绍uboot特有部分的内容,其它代码只做简要分析。

7.1K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    uboot下启动RPU ELF

    这样就需要把RPU以及BIT文件从BOOT.BIN中分离出来,放在uboot中加载。二、实现因为RPU有些特殊,为了能够响应中断,RPU的vector必须运行在TCMA或者OCM区域中。...这样RPU的链接脚本中,运行地址会分为两段(TCM和DDR),TCM区域的地址在RPU和RPU角度看,地址又是不同的,这就为在uboot下加载RPU ELF带来了一些麻烦,我们需要对UBOOT代码进行一些修改...2.1 修改uboot代码在uboot中加载RPU ELF时间,需要将中断向量表所在分区加上0xFFE00000,以便让APU能够正确的将vector加载到TCM中。...2.2 生成BOOT.BIN2.2.1 BIF 文件该BOOT.BIN不包含bitstream 和 正常的rpu程序但是需要包含一个空的rpu程序,原因如下: a. fsbl启动阶段如果发现BOOT.BIN...另外fsbl启动阶段,会有对rpu的初始化,如果发现BOOT.BIN中没有rpu程序,就不会有这些初始化。

    36300

    Uboot到底如何启动内核

    1.uboot启动内核的代码缩减如下: Uboot 1.16/lib_arm/board.c中start_armboot()函数调用/common/main.c中main_loop()函数,在main_loop...使用在/lib_arm/bootm.c定义的do_bootm_linux(),我们已经知道入口地址,只需跳到入口地址就可以启动linux内核了,在这之前需要做一件事———— uboot传递参数(启动参数...启动代码在do_bootm_linux()函数: void (*theKernel)(int zero, int arch,uint params);  //定义函数指针theKernel theKernel...tag结构体,所谓的设置传递参数其实就是初始化这些tag的值,想了解这个结构体以及这些tag的值是如何设置的请看嵌入式Linux应用开发完全手册的uboot章节 我们来看setup_start_tag...更多uboot启动内核的细节观看毕业班视频自己写uboot。

    2K10

    26000字剖析uboot启动过程

    更好的阅读体验请见: uboot启动流程分析汇编阶段最先执行的是汇编文件start.S,这个文件跟架构有关,例如芯片架构是arm926ejs,那路径就在*arch/arm/cpu/start.S*。...初始化shell环境,我们可以在uboot里执行相关的命令,跟在linux上执行命令类似 cli_init(); run_preboot_environment_command();#if defined...启动内核前会有个倒计时,如果我们在这个倒计时前中断,就可以停在uboot设置环境变量里,就可以做修改环境变量、升级、更新镜像、用相关命令调试等。...跳转到内核镜像的地址执行 **kernel_entry(0, machid, r2);** }#endif}到此uboot的正常启动流程就结束了。...uboot的启动流程面试中经常会问到,因此熟悉它是非常必要的。

    2.5K21

    一.linux开发之uboot移植(一)——初识uboot

    重启并不是复活了刚才的uboot,重启只是uboot的另一生) 2. **uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核** 。...串口控制台的波特率 netmask 以太网的网络掩码 ethaddr 以太网的MAC地址 bootfile 默认的下载文件名 bootargs 传递给Linux内核的启动参数 bootcmd 自动启动时执行命令...给kernel传参:bootargs(内核移植中必定使用) (1)linux内核启动时可以接收uboot给他传递的启动参数,这些启动参数是uboot和内核约定好的形式、内容,linux内核在这些启动参数的指导下完成启动过程...意义解释: console=ttySAC2,115200 控制台使用串口2,波特率115200. root=/dev/mmcblk0p2 rw 根文件系统在SD卡端口0设备(iNand)第2分区,根文件系统是可读可写的...主机开启nfs服务后,就可以像tftp一样传文件到开发板了,而且nfs还可以挂载根文件系统,这就是nfs的主要作用 具体参考另一博客* nfs服务器的安装及使用* 6.SD卡/iNand操作指令movi

    5.1K30

    全志 Linux 系统启动优化 启动优化速度方式 优化启动流程 优化uboot 优化kernel等

    2.2.4 bootchart bootchart是一个用于linux启动过程性能分析的开源软件工具,在系统启动过程自动收集CPU 占用率、进程等信息,并以图形方式显示分析结果,可用作指导优化系统启动过程...2.3.2 uboot启动优化 uboot主要功能是引导内核、量产升级、电源管理、开机音乐/logo、fastboot刷机等。...2.3.2.8 uboot重定位 目前的启动过程中,uboot在执行过程中会进行一次重定位,可以在串口中打印出这个值,然后 修改uboot的加载地址使得boot0将uboot加载进DRAM的时候就直接加载到这个地址...3 Tina启动速度优化 Tina中启动优化主要依靠宏CONFIG_BOOT_TIME_OPTIMIZATION来完成,该宏会进行如 下工作: 调整Linux内核镜像的压缩方式,调整rootfs的压缩方式...如下: Linux内核镜像压缩方式从GZIP换成LZO,优化> 0.2s。

    5.2K30

    i.MX6ULL嵌入式Linux开发1——uboot移植初探

    这段bootloader程序会先初始化DDR等外设, 然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。...4.3 烧录开发板 这是的烧录开发板,实际是要「烧录到SD卡中」,然后将SD卡插入开发板,让开发板从SD卡启动(需要在开发板上设置拨码开关来选择启动方式)。...最终烧写到SD卡里面的就是这个imx文件。 4.3.2 启动开发板 烧录完之后,将「SD卡插入开发板启动」,使用「串口连接电脑」,查看uboot启动信息。...第 22行提示「正常启动」, 也就是说 uboot要从emmc里面读取环境变量和参数信息启动 Linux内核了。...如果在倒计时结束以后没有按下回车键,那么 Linux 内核就会启动,Linux 内核一旦启动,uboot 就运行结束了。

    3.6K41

    Zynq中程序存储位置和设置方法

    1.2 固化在SD卡 通过读卡器将可执行文件复制进SD卡,将启动方式设置为SD卡启动,下次启动就可以从SD卡启动了。...2.1 部分固化在QSPI FLASH中 可以在QSPI Flash中固化 fsbl+uboot+FPGA的程序+linux内核+设备树,将根文件系统存储在emmc中。...fsbl+uboot本身已经可以运行,uboot运行后会将其余部分拷贝到内存继续运行。以下是uboot中的zynq-common.h中的一部分程序。...可以看出 fsbl+uboot+FPGA的程序和裸机程序是一样的,剩下的就是uboot执行程序的一部分。如果linux内核+设备树存储在别的地方,只需要将上述程序修改为从相应地方拷贝到内存就可以。...2.2 固化在SD卡 通过读卡器将可执行文件复制进SD卡,将启动方式设置为SD卡启动,下次启动就可以从SD卡启动了。

    1.7K30

    嵌入式Linux开发-根文件系统本地挂载

    当前用的开发板是友善之臂的Tiny4412,官方提供了分区工具,可以将SD卡分区,将制作好的内核、uboot、文件系统映像、配置脚本放在SD卡里,然后开发板选择SD卡启动,就可以通过uboot完成EMMC...本地挂载方式1 这种放需要准备一张SD卡,然后需要利用官方光盘里提供的分区工具,对SD卡进行分区,再将内核、uboot、文件系统映像文件拷贝到SD卡上,再修改配置文件,设置启动的系统为Linux系统。...,设置uboot从刚才解压文件系统的分区启动,重启开发板,最后完成挂载。...接下来就详细的完成上面说的步骤: (1)对EMMC进行分区安装文件系统 在uboot命令行执行以下代码。注意: 当前是从SD卡启动。...注意: 当前是从SD卡启动 [root@wbyq ]# rm /dev/* [root@wbyq ]# mdev -s [root@wbyq ]# mount /dev/mmcblk1p2 /mnt/

    5.9K20

    史上最全的Uboot常用命令汇总(超全面!超详细!)收藏这一篇就够了「建议收藏」

    这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH, SD, MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。...uboot 支持 EMMC 和 SD 卡,因此也要提供 EMMC 和 SD 卡的操作命令。...我们就来更新一下 SD 中的 uboot,先查看一下 SD 卡中的 uboot 版本号,注意编译时间,输入命令: mmc dev 0 //切换到 SD 卡 version //查看版本号...的本质工作是引导 Linux,所以 uboot 肯定有相关的 boot(引导)命令来启动 Linux。...boot命令 boot 命令也是用来启动 Linux 系统的,只是 boot 会读取环境变量 bootcmd 来启动 Linux 系统, bootcmd 是一个很重要的环境变量!

    20.6K44

    beaglebone AI环境搭建与运行

    4.beaglebone AI启动方式 5.beaglebone AI的Linux编译 5.1 编译kernel 5.2 选择根文件系统 6.将Linux的镜像烧录 6.1 格式化SD卡 6.2 拷贝...rootfs到SD卡中 6.3 拷贝Linux内核镜像 6.4 拷贝设备树文件 6.5 拷贝内核模块 7.启动与验证 8.总结 1.前言 本文主要介绍beaglebone的开发过程与启动方式。...本文主要介绍SD卡与eMMC的启动模式。并且将uboot烧录到SD卡中进行启动。 首先准备一张小于等于16GB的SD卡(实测32GB的卡插入没用),接着插入Ubuntu系统中。 输入lsblk。...从上面的过程不难分析,一般的TI芯片都会将启动分为三部分 ROM->MLO(SPL)->uboot.img 5.beaglebone AI的Linux编译 5.1 编译kernel git clone...6.将Linux的镜像烧录 接下来烧录Linux的镜像到SD卡中。 6.1 格式化SD卡 首先和烧录uboot的方式一样,如果检测到sd卡的号为sdc。

    2.8K30
    领券