当前位置:首页 > 云计算 > 正文

Yocto在云计算中的用途


一、如何在Yocto中使用自己的设备树dts和内核配置Linux和DeviceTreeLinux内核设备树数据使用模型。OpenFirmwareDeviceTree(DT)是一种数据结构和硬件描述语言。准确地说,它是一种可以被操作系统解析的描述硬件的语言,因此操作系统不需要对平台物质形式的细节进行硬编码。从结构上来说,DT是由命名节点组成的树结构或无环图。节点可以包含任意数量的命名属性,命名属性可以包含任意数量的数据。还有一种机制可以从普通树外部的节点创建链接。从概念上讲,一组通用的使用方法,即绑定。绑定定义了数据在设备树中的呈现方式,并描述了典型的硬件功能,包括数据总线、中断线、GPIO连接和外设。描述了尽可能多的材料,以最大限度地利用现有绑定的源代码,但由于属性名称和节点名称是简单的字符串,因此可以通过定义新节点和属性或创建新链接来轻松扩展现有绑定。在没有完全理解现有绑定的情况下创建新绑定时要小心。对于I2C总线来说,通常存在两种不同且互不兼容的链路。这是因为创建新链接时没有研究当前系统中如何枚举I2C设备。1.简史2.数据模型请参考DeviceTreeUsage的2.1HighLevelView章节。你需要明白的是,DT是一种描述硬件的数据结构。它没有什么神奇之处,不能解决所有硬件配置问题。它只是提供一种语言来提取Linux内核支持的板卡硬件配置和设备驱动程序。DT使卡片和设备成为数据驱动的。它们应该根据传递给内核的数据进行初始化,而不是像以前那样使用硬编码方法。从概念上讲,数据驱动的平台初始化可以减少代码重复,从而允许单个内核映像支持许多硬件平台。Linux使用DT的主要原因有3个:1)平台识别2)运行时配置3)设备数量2.2平台识别首先也是最重要的是内核使用DT中的数据来识别特定的机器。理想情况下,内核应该独立于特定的硬件平台,因为所有硬件平台细节都是由设备树描述的。然而,硬件平台并不完美,因此内核必须在初始化阶段尽早识别机器,以便内核有机会执行特定于机器的初始化序列。在大多数情况下,机器识别独立于设备树,内核通过机器的主处理器或SOC选择初始化代码。以ARM平台为例,setup_arch()会调用setup_machine_fdt(),该函数会迭代machine_desc链表,选择与设备树数据最匹配的machine_desc结构体。它通过查找设备树根节点的兼容属性并与machine_desc->dt_compat进行比较来确定哪个machine_desc结构最合适。Compatible属性包含一个有序的字符串列表,以确切的计算机名称开头,后跟可选的映射列表,从最佳匹配到其他匹配类型。以TIBeagleBoard的Compatible属性为例,BeagleBoardxMBoard可以描述如下:兼容=“ti,omap3-beagleboard”,“ti,omap3450”,“ti,omap3”;兼容=“ti,omap3-beagleboard-xm”,“ti,omap3450”,“ti,omap3”;此处,“ti,omap3-beagleboard-xm”是最佳拟合模型,“ti,omap3450”位居第二,“ti,omap3”位居第三。精明的读者可能会注意到,BeaglexM也可以声明“ti,omap3-beagleboard”匹配,但需要注意的是,在板级上,两台机器之间的变化比较大,很难确定它们是否兼容。。从高层次的角度来看,安全性比声明一张卡与另一张卡兼容要好。需要注意的一种情况是一个板承载另一个板,例如连接到板的处理器。(两个处理器支持同一张卡)