7、嵌入式系统启动与设备树详解

嵌入式系统启动与设备树详解

1. 从引导加载程序到内核

当引导加载程序将控制权传递给内核时,它需要传递一些基本信息,具体如下:
- 机器编号:在不支持设备树的PowerPC和Arm平台上用于识别SoC类型。
- 已检测到的硬件基本细节:至少包括物理RAM的大小和位置以及CPU的时钟速度。
- 内核命令行:一个普通的ASCII字符串,用于控制Linux的行为,例如指定包含根文件系统的设备名称。
- 可选信息:设备树二进制文件的位置和大小、初始RAM磁盘(initramfs)的位置和大小。

信息传递方式因架构而异,且近年来有所变化。过去,PowerPC引导加载程序传递指向板信息结构的指针,Arm则传递指向A标签列表的指针。但传递的信息有限,大部分需在运行时发现或硬编码到内核作为平台数据。随着设备树的出现,情况得到了改善。自2013年2月Linux 3.8发布以来,Arm系统逐渐采用设备树来收集硬件平台信息,使单个内核二进制文件能在多种平台上运行。

2. 设备树简介

如果使用Arm或PowerPC SoC,很可能会遇到设备树。设备树是一种灵活定义计算机系统硬件组件的方式,它只是静态数据,而非可执行代码。通常由引导加载程序加载并传递给内核,也可与内核镜像捆绑。其格式源自Sun Microsystems的OpenBoot引导加载程序,遵循IEEE 1275 - 1994标准。如今,它被广泛应用于Arm Linux实现,在MIPS、MicroBlaze、ARC等架构中也有一定应用。

3. 设备树基础

Linux内核的 arch/$ARCH/boot/dts

相关推荐

vxWorks7.0下基于zynq的boot启动程序

最近工作有点忙,好久没有更新内容,前段时间抽空做了vxWorks7.0下的基于zynq的boot程序,在此做个总结。 vxworks7.0支持三种不同的boot程序:第一种uboot,第二种vxworks6.9.x以上的bootloader,第三种bootapp,关于uboot的创建方法在前面的博文中已经提到过,bootloader6.9的话,因为我不在使用6.9的版本,所以在此也就不做介绍,今天我们来谈一谈vxworks7.0下bootapp的创建方法。 首先,创建VSB工程,在创建VSB工程时一定要

weixin_45560089的博客 4275

设备树DTS详解与Android开发

设备树DTS是一种描述硬件设备和资源的数据结构,通过树状结构和属性描述,实现了硬件与软件的交互和配置。设备树提供了一种统一的描述方式,使得相同架构的处理器可以在不同的硬件平台上运行相同的Android固件,提高了系统的可移植性和兼容性。编译并烧录设备树后,Android系统会读取设备树文件,解析LED设备的描述信息,并加载相应的驱动程序。在Android开发中,设备树DTS文件需要被编译成二进制的设备树文件(.dtb或.dtb.img),并与Android固件一起烧录到设备中。

HackDashX的博客 1017

12、嵌入式系统开发:设备树与软件层定制指南

本文深入探讨了嵌入式系统开发中的核心环节——设备树与软件层定制。内容涵盖设备树的内存寻址、在Yocto中修改编译与调试方法,以及软件层的镜像探索、新层添加、包管理、用户组配置、初始化系统选择、文件系统优化和安全合规等关键技术。通过详细的操作指南和流程图,帮助开发者高效构建和优化定制化嵌入式系统。

pz89012345的博客 51

硬件连接与设备树配置详解

本文介绍了如何根据不同处理器的原理图进行硬件连接,并详细解释了如何配置设备树以支持I2C设备。内容涵盖了从硬件连接的物理层面到软件层面的设备树配置,以及如何利用这些配置实现硬件的功能。

weixin_30356433的博客 427

Python实战:用pdfplumber从PDF中精准提取表格数据(附完整代码)

本文详细介绍了如何使用Python库pdfplumber从PDF中精准提取表格数据,包括环境配置、标准与复杂表格处理策略、数据清洗与验证等实战技巧。通过完整代码示例,帮助数据分析师和财务专业人士实现PDF数据提取的自动化,提升工作效率。

weixin_29061821的博客 398

避坑指南:RFSoC数据转换器多片同步配置的7个致命错误

本文深入剖析了在配置RFSoC多片同步功能时,工程师最常遇到的七个致命错误。从Tile 0的强制启用、时钟域与SYSREF时序,到跨代器件兼容性、电源序列以及动态重配置的陷阱,文章结合实战经验,提供了从原理到调试的完整RF数据转换器配置指南,旨在帮助开发者高效构建相位一致的大规模射频采样系统。

weixin_28452161的博客 532

FPGA时序约束--实战篇(读懂Vivado时序报告)

本文将详细介绍如何读懂Vivado时序报告,包括报告的基本结构和如何分析报告。

mengzaishenqiu的博客 1万+

从零部署思澈科技SiFli-Solution:避坑指南与实战排错

本文详细介绍了从零部署思澈科技SiFli-Solution开发环境的完整流程与实战排错指南。重点解析了Keil uVision5版本选择、Butterfli工具路径配置等关键步骤,并针对Keil路径报错、函数冲突等高频问题提供了具体解决方案,帮助开发者高效避坑,快速搭建稳定的嵌入式开发环境。

devops8pract的博客 529

医学成像学习笔记(一):核磁共振成像(MRI)k空间为何是图像频谱详解

前言   k空间是核磁共振成像图像重建的核心,可能很多人像笔者一样第一次学时会非常疑惑,为何k空间是图像的频域空间,观其填充过程,明明是空域信号的采样填充呀。网上很少有文章讨论这个问题,所以笔者在此写下自己的理解,供大家参考。 MRI位置编码   现在的MRI一次扫描的是一个断层或者多个断层,所谓断层就是一个有厚度的面,通过z方向梯度场来选择。我们扫描一个断层的目的是为了获得该断层各位置的质子情况,它们携带着组织的性质信息,反应出来的就是信号强度。如果整个断层都采用相同的磁场强度,而我们只能得到一个断

意疏的学习笔记 1万+

直捣黄龙~

这篇文章描述了一个矩阵寻路问题,要求计算从起点到终点的最短路径数量及长度。主要思路是通过BFS算法解决:首先标记哨兵警戒区域为禁区,然后从起点出发进行广度优先搜索,记录每个位置的最短步数和路径条数。当到达终点时,输出路径数和步数;若不可达则返回(0,0)。算法使用队列实现BFS,同时处理路径统计和步数记录,适用于网格寻路类问题。

面试高手的博客 215

点云语义分割:RandLANet模型推理C++部署(2)

一、数据读取及预处理 二、模型推理 三、结果保存

zhaoguanhua的博客 3797

基于深度学习的目标检测在 Android 端的优化实现:YOLO Mobile × NPU 加速实战教程

随着国产手机芯片日益强大,终端侧的目标检测任务已经具备实用性基础。本文围绕实际工程场景,详细讲解如何在 Android 应用中部署轻量级目标检测模型(如 YOLO Mobile、EfficientDet Lite),并结合国产手机 NPU 能力,实现高性能、低延迟、实时目标检测系统。文章将涵盖从模型选择、结构优化、量化转换到 Android 上推理加速、UI 实时渲染的全链路工程路径,强调每一环节的真实可复现性与部署细节,适合 AI 工程师、移动开发者及企业级应用落地团队参考使用。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1409

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 12、多值逻辑与多智能体认知规划的新进展
下一篇: 4、数据愿景、使命与战略:构建数据驱动型企业
algae
博客等级 码龄19年 1378粉丝 1719原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值