当前位置: 首页 > news >正文

rockchip 平台 linux FIT 打包格式介绍

1 基础介绍


FIT(flattened image tree)是U-Boot⽀持的⼀种新固件类型的引导⽅案,⽀持任意多个image打包和校
验。FIT 使⽤ its (image source file) ⽂件描述image信息,最后通过mkimage⼯具⽣成 itb (flattened image
tree blob) 镜像。its⽂件使⽤ DTS 的语法规则,⾮常灵活,可以直接使⽤libfdt 库和相关⼯具。
FIT 是U-Boot默认⽀持且主推的固件格式,SPL和U-Boot阶段都⽀持对FIT格式的固件引导。更多信息请
参考:
因为官⽅的FIT功能⽆法满⾜实际产品需求,所以RK平台对FIT进⾏了适配和优化。所以FIT⽅案中必须
使⽤RK U-Boot编译⽣的mkimage⼯具,不能使⽤PC⾃带的mkimage。


2 范例介绍


如下以u-boot.its和u-boot.itb作为范例进⾏介绍。
/images :静态定义了所有的资源,相当于⼀个 dtsi⽂件;
/configurations :每个 config 节点都描述了⼀套可启动的配置,相当于⼀个板级dts⽂件。
default = :指明默认启⽤的config;
./doc/uImage.FIT/
/dts-v1/;
/ {
description = "Simple image with OP-TEE support";
#address-cells = <1>;
images {
uboot {
description = "U-Boot";
data = /incbin/("./u-boot-nodtb.bin");
type = "standalone";
os = "U-Boot";
arch = "arm";
compression = "none";
使⽤mkimage⼯具和its⽂件可以⽣成itb⽂件:
fdtdump 命令可以查看 itb⽂件内容:
load = <0x00400000>;
hash {
algo = "sha256";
};
};
optee {
description = "OP-TEE";
data = /incbin/("./tee.bin");
type = "firmware";
arch = "arm";
os = "op-tee";
compression = "none";
load = <0x8400000>;
entry = <0x8400000>;
hash {
algo = "sha256";
};
};
fdt {
description = "U-Boot dtb";
data = /incbin/("./u-boot.dtb");
type = "flat_dt";
compression = "none";
hash {
algo = "sha256";
};
};
};
// configurations 节点下可以定义任意多个不同的conf节点,但实际产品⽅案上我们只需要⼀个
conf即可。
configurations {
default = "conf";
conf {
description = "Rockchip armv7 with OP-TEE";
rollback-index = <0x0>;
firmware = "optee";
loadables = "uboot";
fdt = "fdt";
signature {
algo = "sha256,rsa2048";
padding = "pss";
key-name-hint = "dev";
sign-images = "fdt", "firmware", "loadables";
};
};
};
};
            mkimage + dtc
[u-boot.its] + [images]  =========>   [u-boot.itb]
cjh@ubuntu:~/uboot-nextdev/u-boot$ fdtdump fit/u-boot.itb | less
/dts-v1/;
// magic: 0xd00dfeed
// totalsize: 0x600 (1536)
// off_dt_struct: 0x48
// off_dt_strings: 0x48c
// off_mem_rsvmap: 0x28
// version: 17
// last_comp_version: 16
// boot_cpuid_phys: 0x0
// size_dt_strings: 0xc3
// size_dt_struct: 0x444
/memreserve/ 7f34d3411000 600;
/ {
  version = <0x00000001>;        // 新增固件版本号
  totalsize = <0x000bb600>;       // 新增字段描述整个itb⽂件的⼤小
  timestamp = <0x5ecb3553>;       // 新增当前固件⽣成时刻的时间戳
  description = "Simple image with OP-TEE support";
  #address-cells = <0x00000001>;
  images {
    uboot {
      data-size = <0x0007ed54>;   // 新增字段描述固件⼤小
      data-position = <0x00000a00>; // 新增字段描述固件偏移
      description = "U-Boot";
      type = "standalone";
      os = "U-Boot";
      arch = "arm";
      compression = "none";
      load = <0x00400000>;
      hash {
        // 新增固件的sha256校验和
        value = <0xeda8cd52 0x8f058118 0x00000003 0x35360000 0x6f707465
0x0000009f 0x00000091 0x00000000>;
        algo = "sha256";
     };
   };
    optee {
      data-size = <0x0003a058>;
      data-position = <0x0007f800>;
      description = "OP-TEE";
      type = "firmware";
      arch = "arm";
      os = "op-tee";
      compression = "none";
      load = <0x08400000>;
      entry = <0x08400000>;
      hash {
        value = <0xa569b7fc 0x2450ed39 0x00000003 0x35360000 0x66647400
0x00001686 0x000b9a00 0x552d426f>;
        algo = "sha256";
     };
   };
    fdt {


3 itb结构


itb本质是fdt_blob + images的⽂件集合,有如下两种打包⽅式,RK平台⽅案采⽤结构2⽅式。
      data-size = <0x00001686>;
      data-position = <0x000b9a00>;
      description = "U-Boot dtb";
      type = "flat_dt";
      compression = "none";
      hash {
        value = <0x0f718794 0x78ece7b2 0x00000003 0x35360000 0x00000001
0x6e730000 0x636f6e66 0x00000000>;
        algo = "sha256";
     };
   };
 };
  configurations {
    default = "conf";
    conf {
      description = "Rockchip armv7 with OP-TEE";
      rollback-index = <0x00000001>; // 固件防回滚版本号,没有⼿动指定时默认为0
      firmware = "optee";
      loadables = "uboot";
      fdt = "fdt";
      signature {
        algo = "sha256,rsa2048";
        padding = "pss";
        key-name-hint = "dev";
        sign-images = "fdt", "firmware", "loadables";
     };
   };
 };
};
    fdt blob
|-----------------------------------|
|  |------|  |------|  |------|   |
|  | img0 |  | img1 |  | img2 |   | 结构1:image在fdt_blob内,即:itb = fdt_blob(含
img)
|  |------|  |------|  |------|   |
|-----------------------------------|
|--------------|------|------|------|
|        |    |    |    |
|  fdt blob  | img0 | img1 | img2 | 结构2:image在fdt_blob外,即itb = fdt_blob +
img
|        |    |    |    |
|--------------|------|------|------|

相关文章:

rockchip 平台 linux FIT 打包格式介绍

1 基础介绍 FIT&#xff08;flattened image tree&#xff09;是U-Boot⽀持的⼀种新固件类型的引导⽅案&#xff0c;⽀持任意多个image打包和校 验。FIT 使⽤ its (image source file) ⽂件描述image信息&#xff0c;最后通过mkimage⼯具⽣成 itb (flattened image tree blob) …...

虚拟机安装宝塔的坑

问题&#xff1a; 在虚拟机中centos7和centos8中安装宝塔之后&#xff0c;无法访问面板。 解决&#xff1a; 1.先关闭防火墙&#xff08;如果本机能够ping通相关端口&#xff0c;则不用关闭防火墙&#xff09; 2.最新的宝塔会自动开启ssl协议&#xff0c;需要手动关闭。…...

Ubuntu使用QtCreator + CMake 开发C/C++程序

平台 OS: Ubuntu 20.04 cmake: 3.16.3 IDE: Qt Creator 4.11.1 Based on Qt 5.14.1 (GCC 5.3.1 20160406 (Red Hat 5.3.1-6), 64 bit) Built on Feb 5 2020 12:48:30 From revision b2ddeacfb5 Copyright 2008-2019 The Qt Company Ltd. All rights reserved. The program …...

【分布式监控】zabbix与grafana连接

1.在zabbix- server服务端安装grafana&#xff0c;并启动服务 先在官网下载软件 https://grafana.com/grafana/download/9.4.7?editionenterprise&pggraf&plcmtdeploy-box-1#可以翻译成中文介绍&#xff0c;很详细的教程 yum install -y https://dl.grafana.com/ent…...

02-编程猜谜游戏

本章通过演示如何在实际程序中使用 Rust&#xff0c;你将了解 let 、 match 、方法、关联函数、外部crate等基础知识。 本章将实现一个经典的初学者编程问题&#xff1a;猜谜游戏。 工作原理如下&#xff1a;程序将随机生成一个介于 1 和 100 之间的整数。然后&#xff0c;程序…...

Web3解密:区块链技术如何颠覆传统互联网

随着区块链技术的崛起&#xff0c;Web3正逐渐成为新一代互联网的代名词。它不再依赖中心化的权威机构&#xff0c;而是通过去中心化、透明、安全的特性&#xff0c;为用户带来更为开放和公正的互联网体验。本文将深入解密Web3&#xff0c;揭示区块链技术如何颠覆传统互联网的基…...

java小项目:简单的收入明细记事本,超级简单(不涉及数据库,通过字符串来记录)

一、效果 二、代码 2.1 Acount类 package com.demo1;public class Acount {public static void main(String[] args) {String details "收支\t账户金额\t收支金额\t说 明\n"; //通过字符串来记录收入明细int balance 10000;boolean loopFlag true;//控制循…...

域环境权限提升

Windows系统配置错误 在Windows系统中&#xff0c;攻击者通常会通过系统内核溢出漏来提权&#xff0c;但是如果碰到无法通过系统内核溢出漏洞法国提取所在服务器权限的情况&#xff0c;就会系统中的配置错误来提权。Windows系统中常见哦欸之错误包括管理员凭证配置错误&#x…...

【Debian】非图形界面Debian10.0.0安装xfce和lxde桌面

一、安装 1. Debian10.0.0安装xfce桌面 sudo apt update sudo apt install xfce4 startxfce4 2. Debian10.0.0安装lxde桌面 sudo apt-get install lxde安装后重启电脑。 二、说明 XFCE、LXDE 和 GNOME 是三个流行的桌面环境&#xff0c;它们都是为类 Unix 操作系统设计…...

极狐GitLab 线下『 DevOps专家训练营』成都站开班在即

成都机器人创新中心联合极狐(GitLab)隆重推出极狐GitLab DevOps系列认证培训课程。该课程主要面向使用极狐GitLab的DevOps工程师、安全审计人员、系统运维工程师、系统管理员、项目经理或项目管理人员&#xff0c;完成该课程后&#xff0c;学员将达到DevOps的专家级水平&#x…...

片外存储器_FLASH的页、扇区、块介绍

目录标题 1、什么是FLASH存储器&#xff1f;2、Flash中页、扇区、块是什么意思?有什么区别&#xff1f;2.1、芯片内部框图2.2、页2.3、扇区2.4、块2.5、包含示意图 3、使用FLASH 时候&#xff0c;必须知道的事。 1、什么是FLASH存储器&#xff1f; FLASH属于广义的ROM&#x…...

Python——字符串的基本操作

⼀、 创建 s1 lenovo s2 "QF" s3 """hello lenovo""" s4 hello 亮 s5 """hello shark """ s6 hello world ⼆、简单使⽤ 1.\ 转义符 testimony This shirt doesn\t fit me words hello \ns…...

【cuda】四、基础概念:Cache Tiled 缓存分块技术

缓存分块是一种内存优化技术&#xff0c;主要用于提高数据的局部性&#xff08;Locality&#xff09;&#xff0c;以减少缓存未命中&#xff08;Cache Miss&#xff09;的次数。在现代计算机体系结构中&#xff0c;处理器&#xff08;CPU&#xff09;的速度通常比内存快得多。因…...

[C#]winform部署openvino官方提供的人脸检测模型

【官方框架地址】 https://github.com/sdcb/OpenVINO.NET 【框架介绍】 OpenVINO&#xff08;Open Visual Inference & Neural Network Optimization&#xff09;是一个由Intel推出的&#xff0c;针对计算机视觉和机器学习任务的开源工具套件。通过优化神经网络&#xff…...

Java中对日期的处理

Java中对日期的处理 这个案例主要掌握&#xff1a; 1.怎么获取系统当前时间 2.String-->Date 3.Date-->String Import java.text.SimpleDateFormat; Import java.util.Date; public class DateTest01{ public static void main(String[] args) throws Exception{ //获取…...

【Linux install】Ubuntu和win双系统安装及可能遇到的所有问题

文章目录 1.前期准备1.1 制作启动盘1.2关闭快速启动、安全启动、bitlocker1.2.1 原因1.2.2 进入BIOSshell命令行进入BIOSwindows设置中高级启动在开机时狂按某个键进入BIOS 1.2.3 关闭Fast boot和Secure boot 1.3 划分磁盘空间1.3.1 查看目前的虚拟内存大小 2.开始安装2.1 使用…...

Helm Dashboard — Kubernetes 中管理 Helm 版本的 GUI

Helm Dashboard 通过提供图形用户界面&#xff0c;使在 Kubernetes 中管理 Helm 版本变得更加容易&#xff0c;这是许多开发人员所期望的。它可用于在 Kubernetes 中创建、部署和更新应用程序的版本&#xff0c;并跟踪其状态。 本文将探讨 Helm Dashboard 提供的特性和优势&am…...

【Guava笔记01】Guava Cache本地缓存的常用操作方法

这篇文章,主要介绍Guava Cache本地缓存的常用操作方法。 目录 一、Guava Cache本地缓存 1.1、引入guava依赖 1.2、CacheBuilder类 1.3、Guava-Cache使用案例...

Flink(十三)【Flink SQL(上)SqlClient、DDL、查询】

前言 最近在假期实训&#xff0c;但是实在水的不行&#xff0c;三天要学完SSM&#xff0c;实在一言难尽&#xff0c;浪费那时间干什么呢。SSM 之前学了一半&#xff0c;等后面忙完了&#xff0c;再去好好重学一遍&#xff0c;毕竟这玩意真是面试必会的东西。 今天开始学习 Flin…...

Labview局部变量、全局变量、引用、属性节点、调用节点用法理解及精讲

写本章前想起题主初学Labview时面对一个位移台程序&#xff0c;傻傻搞不清局部变量和属性节点值有什么区别&#xff0c;概念很模糊。所以更新这篇文章让大家更具象和深刻的去理解这几个概念&#xff0c;看完记得点赞加关注喔~ 本文程序源代码附在后面&#xff0c;大家可以自行下…...

Fluent Bit源码解析:KISS原则如何打造轻量级日志处理神器

Fluent Bit源码解析&#xff1a;KISS原则如何打造轻量级日志处理神器 【免费下载链接】fluent-bit Fast and Lightweight Logs and Metrics processor for Linux, BSD, OSX and Windows 项目地址: https://gitcode.com/GitHub_Trending/fl/fluent-bit 在当今云原生时代&…...

如何高效抓取足球数据:SoccerData实战指南

如何高效抓取足球数据&#xff1a;SoccerData实战指南 【免费下载链接】soccerdata ⛏⚽ Scrape soccer data from Club Elo, ESPN, FBref, FiveThirtyEight, Football-Data.co.uk, SoFIFA and WhoScored. 项目地址: https://gitcode.com/gh_mirrors/so/soccerdata 在足…...

从‘飞到红色建筑左边’说起:拆解无人机视觉语言导航(VLN)背后的三大工程难题

从"飞到红色建筑左边"说起&#xff1a;拆解无人机视觉语言导航的工程化困局 当你在测试场地对无人机说出"飞到红色建筑左边"时&#xff0c;这个看似简单的指令背后&#xff0c;是一场跨越模态鸿沟的复杂解码过程。不同于实验室里的完美演示&#xff0c;真实…...

GIS小白也能搞定!用QGIS加载2023版全国自然保护区SHP数据的保姆级教程

GIS小白也能搞定&#xff01;用QGIS加载2023版全国自然保护区SHP数据的保姆级教程 第一次接触GIS软件时&#xff0c;看着满屏的专业术语和复杂界面&#xff0c;很多人都会感到无从下手。但别担心&#xff0c;今天我们就用最通俗易懂的方式&#xff0c;带你一步步完成全国自然保…...

ANIMATEDIFF PRO效果展示:森林晨雾中飘落树叶+光线穿透动态GIF集

ANIMATEDIFF PRO效果展示&#xff1a;森林晨雾中飘落树叶光线穿透动态GIF集 1. 引言&#xff1a;当AI遇见电影级动态美学 想象一下&#xff0c;你脑海中有一个绝美的画面&#xff1a;清晨的森林&#xff0c;薄雾缭绕&#xff0c;阳光透过层层叠叠的树叶&#xff0c;形成一道道…...

5个核心维度掌握YimMenu:GTA5辅助工具全攻略

5个核心维度掌握YimMenu&#xff1a;GTA5辅助工具全攻略 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...

告别数据标注!用Dynablox+Voxblox在ROS2上实现实时动态物体检测(保姆级配置)

零标注动态感知革命&#xff1a;DynabloxVoxblox在ROS2中的实战部署指南 当机器人在商场扶梯间遇到滚动的玩具球&#xff0c;或在仓库中识别扛着纸箱的工人时&#xff0c;传统基于深度学习的检测方法往往需要大量场景特定的标注数据。ETH Zurich与MIT联合发布的Dynablox技术&am…...

特斯拉行车记录仪视频合并终极指南:高效处理多摄像头记录的专业方案

特斯拉行车记录仪视频合并终极指南&#xff1a;高效处理多摄像头记录的专业方案 【免费下载链接】tesla_dashcam Convert Tesla dash cam movie files into one movie 项目地址: https://gitcode.com/gh_mirrors/te/tesla_dashcam 特斯拉行车记录仪视频智能合并工具tesl…...

机器人中的多模态——RoboBrain

论文下载地址&#xff1a;arxiv.org/pdf/2502.21257 代码地址&#xff1a;https://github.com/FlagOpen/RoboBrain/ 数据集下载地址&#xff1a;https://github.com/FlagOpen/ShareRobot/ 目录1.关于RoboBrain1.1 RoboBrain的潜在应用场景1.2 RoboBrain具备哪些能力2.关于Share…...

从轮胎变形到车辆漂移:深入浅出聊聊自动驾驶横向控制里的‘侧偏刚度’

轮胎侧偏刚度&#xff1a;自动驾驶横向控制中的隐形弹簧 想象一下在高速公路上以120km/h的速度变道时&#xff0c;方向盘只需轻轻转动几度——这种看似反直觉的操控背后&#xff0c;是轮胎侧偏刚度在默默发挥着作用。就像跳水运动员入水时水面产生的弹性变形一样&#xff0c;轮…...