背景

得到 dtb 文件以后,我们需要想办法下载到 板子中,并给 Linux 内核使用。

(高级版本的 uboot也有了 自己使用设备树支持,我们这里不讨论 uboot 使用的设备树)

Linux 内核 有关规定

根据Documentation/arm/Booting的描述,我们需要提供 参数列表 或者 设备树镜像 地址。

4. Setup boot data
------------------ Existing boot loaders: OPTIONAL, HIGHLY RECOMMENDED
New boot loaders: MANDATORY The boot loader must provide either a tagged list or a dtb image for
passing configuration data to the kernel. The physical address of the
boot data is passed to the kernel in register r2.

Uboot 有关规定

根据上面的描述,uboot 传参有2种类型。

1)通过 tag 传递 参数列表 给 Linux 内核

通过 tag 给内核传参时,是只需要知道内核的地址就可以了。

因为uboot给内核传的参数一般是放到内存的某个地址,因为tag所占的内存比较小,所以一般都时放在内存的起始地址+0x100的位置

所以可以直接使用: bootm + 内核所在内存的地址 来运行内核

bootm <uImage_addr>

2)使用了设备树之后,一般我们是这样启动的

bootm <uImage_addr> <initrd_addr> <dtb_addr>

uImage_addr : 内核地址,需要是uImage 

initrd_addr : initrd的地址(如果不存在initrd,可以用 “-”代替),initrd是一个内存文件系统,因为在内核内启动之前,一般是文件系统还没加载上的。而有些东西必须要通过文件系统才能操作启动。所以必须要有一个过渡的文件系统。

dtb_addr    : 设备树地址

附录: uboot 的参考设定

以下是基于 以前接手过的一个项目中的一些参考信息。

# uboot 各部分 储存与内存 对应信息
...
tftp 0x100000 boot.bin;
nand write 0x100000 0x0 0x300000; tftp 0x1000000 logo.bin;
nand write 0x1000000 0x300000 0x200000; tftp 0x2000000 uImage;
nand write 0x2000000 0x500000 0x500000; tftp 0x3000000 zynq.dtb;
nand write 0x3000000 0xa00000 0x20000; tftp 0x4000000 rootfs.img;
nand write.trimffs 0x4000000 0x2000000 0x8000000; # 启动命令
uboot> print
以下是有关信息(节选) boot_image=BOOT.bin bootcmd=nand read 0x1000000 0x500000 0x500000;nand read 0x2000000 0xa00000 0x20000;bootm 0x1000000 - 0x2000000

设备树DTS 学习: 4-uboot 传递 dtb 给 内核的更多相关文章

  1. 设备树DTS 学习: uboot 传递 dtb 给 内核

    背景 得到 dtb 文件以后,我们需要想办法下载到 板子中,并给 Linux 内核使用. (高级版本的 uboot也有了 自己使用设备树支持,我们这里不讨论 uboot 使用的设备树) Linux 内 ...

  2. 设备树DTS 学习:1-有关概念

    背景 设备树在Linux驱动开发中是一种比较常用的架构. 参考:<设备树DTS使用总结> .<linux内核设备树及编译> Linux设备树 介绍 在Linux 2.6中,ar ...

  3. 设备树DTS 学习:2-设备树语法

    背景 通过上一讲了解完设备树DTS有关概念,我们这一讲就来基于设备树例程,学习设备树的语法规则. 参考:设备树详解dts.设备树语法详解.设备树使用总结 设备树框架 1个dts文件 + n个dtsi文 ...

  4. 设备树DTS 学习:4-编写实战

    背景 讲完设备树的有关概念以及语法以后,我们接下来就让 我们的驱动 使用 设备树. ref : <内核学习笔记14:内核设备树学习>.<u-boot对设备树的支持> 测试代码 ...

  5. 设备树DTS 学习:Linux DTS文件加载过程

    背景 了解机制有利于对内核有更深的认识. wget https://mirrors.aliyun.com/linux-kernel/v3.x/linux-3.2.61.tar.xz 内核 在drive ...

  6. 设备树DTS 学习:3-常用的DTS 函数

    Linux内核中目前DTS相关的函数都是以of_前缀开头的,它们的实现位于内核源码的drivers/of下面 void __iomem*of_iomap(struct device_node *nod ...

  7. Linux dts 设备树详解(二) 动手编写设备树dts

    Linux dts 设备树详解(一) 基础知识 Linux dts 设备树详解(二) 动手编写设备树dts 文章目录 前言 硬件结构 设备树dts文件 前言 在简单了解概念之后,我们可以开始尝试写一个 ...

  8. uboot学习之五-----uboot如何启动Linux内核

    uboot和内核到底是什么?uboot实质就是一个复杂的裸机程序:uboot可以被配置也可以做移植: 操作系统内核本身就是一个裸机程序,和我们学的uboot和其他裸机程序没有本质的区别:区别就是我们操 ...

  9. Linux 设备树 dts

    1. dtb反编译成dts文件命令:./kernel-4.4/scripts/dtc/dtc_overlay -I dtb -O dts out/target/product/m863ur100_p0 ...

  10. Linux dts 设备树详解(一) 基础知识

    Linux dts 设备树详解(一) 基础知识 Linux dts 设备树详解(二) 动手编写设备树dts 文章目录 1 前言 2 概念 2.1 什么是设备树 dts(device tree)? 2. ...

随机推荐

  1. 开启 ssh 服务

    开启 ssh 服务 vim /etc/ssh/sshd_config 重启 ssh 服务:/etc/init.d/ssh restart 设置服务自启动:update-rc.d ssh enable

  2. elementui 时间戳和后台配合

    保存时间 思路: 前端传时间戳, 后台表里的时间类型为timestamp, model结构体tag设置为 *time.Time json:"activationTime" gorm ...

  3. 怎么样给Oracle数据库中的表添加列?

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  4. lodash已死?Radash库方法介绍及源码解析 —— 异步方法篇

    写在前面 tips:点赞 + 收藏 = 学会! 我们前面已经介绍了 radash 的相关信息和所有 Array 相关方法,详情可前往主页查看. 本篇我们继续介绍radash中异步相关的方法. 所有方法 ...

  5. Vue实现商品详情鼠标移动+放大显示图片细节

    效果图 代码实现 <template> <div> <div style="position: relative;" class="box& ...

  6. GROK 表达式

    GROK 表达式 常用表达式 标识:USERNAME 或 USER 正则:[a-zA-Z0-9._-]+ 名称:用户名 描述:由数字.大小写及特殊字符(._-)组成的字符串 例子:1234.Bob.A ...

  7. 通过 Wireshark 解密 Kerberos 票据

    前言 在使用 Wireshark 分析 Active Directory 的 Kerberos 的流量时,会遇到加密票据的情况,这对进一步探究 AD 下的漏洞篡改事件的详细过程造成了影响.在查询资料时 ...

  8. gin+MySQL简单实现数据库查询

    利用 gin 项目搭建一个简易的后端系统. 一个简易的 HTTP 响应接口 首先在 go 工作区的终端输入这条指令: go get -u github.com/gin-gonic/gin 将 gin ...

  9. WPF开发快速入门【2】WPF的基本特性(Style、Trigger、Template)

    概述 本文描述几个WPF的常用特性,包括:样式.触发器和控件模板. 样式/Style Style就是控件的外观,在XAML中,我们通过修改控件的属性值来设置它的样式,如: <!--直接定义sty ...

  10. Swift 与 Objc Exception

    一.背景 Swift具备完善的Error handle机制,对于纯Swift下面的Error,在编码的时候能够正确处理. 在使用try? 处理抛出Error的方法的时候,会忽略Error,直接返回ni ...