uboot移植之tag传参

author author     2022-08-31     268

关键词:

1:什么是tag

(1)tag是一种数据结构,用于uboot向内核传递参数,一个tag代表了一个参数,uboot在向kernel传参时,就是通过一个个tag来实现的。

(2)每个tag都有一个tag_header(一个结构体),包含了tag的类型和大小,然后tag中剩余的部分tag_xxx来当作传参的tag


2:kernel如何知道tag的起始地址。

uboot启动内核的最后通过theKernel (0, machid, bd->bi_boot_params);来启动内核,这三个参数,第一个固定是0,;第二个是机器码;第三个就是tag的存放的起始地址,也就是setup_start_tag。这三个参数分别存放在寄存器r0 r1 r2中。


3:kernel如何知道tag的结束地址

在tag传参的过程中,有一个setup_start_tag(ATAG_CORE类型)和setup_end_tag (ATAG_NONE类型),setup_start_tag表示tag开始传参,setup_end_tag 表示传参的结束,这两个tag之间的tag就是实际的向内核传递的tag。

总结:uboot和kernel都是在DDR中运行的,uboot先运行,最后通过theKernel (0, machid, bd->bi_boot_params);跳转到执行kernel,uboot向kernel传参的实现就是uboot和kernel规定一种传参的数据格式(tag),然后uboot将需要传递给kernel的参数存放到DDR的某段内存中,然后将 这段内存的起始地址传递给kernel,然后kernel通过这个地址来读取传递的参数。


在uboot的移植的时候需要注意的是

(1)tag传参部分的代码是不需要修改的,我们需要做的是需要打开或者关闭相应的宏定义,用来确定向内核传递哪些参数

(2)如果内核启动不成功,则需要考虑uboot传参是否正确。传参不成功首先看uboot中bootargs设置是否正确,其次看uboot是否开启了相应宏以支持传参。


本文出自 “11664570” 博客,请务必保留此出处http://11674570.blog.51cto.com/11664570/1925587

内核中对uboot传参tags的校验(代码片段)

...uboot给内核传tag参数参考博客:《uboot以tag方式给内核传参》。*(taglist.init)段······__tagtable_begin=.;*(.taglist.init)__tagtable_end=.;·······上面是摘抄自内核的链接脚本,__tagtable_begin和__tagtable_end表示taglist.init段在链... 查看详情

uboot移植之uboot命令体系解析

1:回归到main_loop   uboot启动第二阶段的最后,进入死循环main_loop()函数,命令行中没输出一次命令,就会执行一次main_loop函数,完成一次命令的获取、解析和执行。2:uboot命令体系的实现原理    uboot中... 查看详情

uboot移植之九鼎提供的uboot的文件分析

文件分析(1).gitignore:git管理工具相关的文件。(2)arm_config.mk:一个Makefile文件,将来会被Makefile里面的某句代码调用。(3)CHANGELOG、Changelog_Samsung、CHANGELOG-before-U-Boot-1.1.5:三个CHANELOG文件,其实就是该版本的uboot的变迁记录... 查看详情

uboot移植之主makefile分析

1:#uboot的版本号VERSION   =1            #主版本号PATCHLEVEL =3         #次版本号SUBLEVE 查看详情

uboot移植之start_armboot()函数分析

/********************************uboot的第二阶段就是初始化剩下的还没在第一阶段初始化的硬件。主要是SoC外部硬件(譬如iNand网卡芯片.......)uboot本身的一些东西(uboot的命令环境变量等.....)。然后最终初始化完必要的东西后进入到u... 查看详情

uboot移植之uboot中的sd卡驱动解析

1:地址对硬件操作的影响    (1)操作系统(指的是linux)下MMU肯定是开启的,也就是说linux驱动中肯定都使用的是虚拟地址。而纯裸机程序中根本不会开MMU,全部使用的是物理地址。这是裸机下和驱动中操控硬件的... 查看详情

uboot移植之start.s分析

uboot的函数入口要查看链接脚本中ENTTRY的入口参数,我们这里的链接脚本在board/samsung/x210/u-boot.lds,这个文件里面的开头有一句ENTRY(_start),所以uboot的入口就是在_start这个标识的地方。 * Base codes by scsuh (sc.su... 查看详情

uboot移植之九鼎提供的uboot的文件夹分析

...到的一些函数,这些函数都是硬件无关的,所以和我们的移植没多大关系(2)api_examples:api的示例代码(3)board:开发板相关的文件夹,这个文件夹里面存放的一个文件夹对应一款开发板或者是一个芯片厂商。我们在config配置... 查看详情

x-003friendlyarmtiny4412uboot移植之添加相应目录文件

  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 查看详情

x-005friendlyarmtiny4412uboot移植之时钟初始化

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 查看详情

x-009friendlyarmtiny4412uboot移植之sdcard用起来kernelboot起来

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 查看详情

x-001friendlyarmtiny4412uboot移植前奏

...链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi要移植的u-boot版本:u-boot-2016-09参考u-boot版本:友善之臂提供的u-boot-2010-12Tiny4412开发板硬件版本 查看详情

全志h3系统移植|移植主线最新uboot2023.04和kernel6.1.11到nanopineo开发板(代码片段)

文章目录环境说明uboot移植kernel移植rootfs移植测试环境说明OS:Ubuntu20.04.5LTSGCC:arm-none-linux-gnueabihf-gcc10.3.0编译器下载地址:Downloads|GNU-ADownloads–ArmDeveloperuboot移植当前最新版本v2023.04-rc2下载地址:https://github.com/u-boot/u-boot/archive/re... 查看详情

uboot移植:移植前的准备工作

一:uboot的来源    uboot的获取途径一般有三种,一种是uboot官方提供的这uboot,这里面是针对多种开发板和芯片的uboot代码,是全球各地上传,然后由uboot官方提供的,因为它里面包含了很多种开发板的uboot,所以文... 查看详情

uboot移植一uboot架构分析

开发环境:  1.开发板mini2440  2. u-boot-2010.12参考i资料:https://blog.csdn.net/androidbbc/article/details/50961163     http://www.cnblogs.com/kele-dad/p/8969174.html一、下载u-boot-2010.12,并且解压二、分析u-boor-2010.12a 查看详情

三,移植uboot-支持nand启动

文档时间:2018-08-10交叉编译器:arm-linux-gcc-4.3.2Ubuntu版本:16.04uboot版本:2013.10  查看详情

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

文档时间:2018-08-08交叉编译器:arm-linux-gcc-4.3.2Ubuntu版本:16.04uboot版本:2013.10uboot启动流程简要如下:    a,设置CPU为管理模式    b,关闭看门狗    c,关闭中断    d,设置时钟频率    e,进入lowlevel_init.S,... 查看详情

uboot配置编译源码分析

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