gpt4 book ai didi

Linux,支持略有不同的电路板变体,相同的 SOC

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:52 26 4
gpt4 key购买 nike

我目前正在使用 freescale 的 i.MX6 和 linux 构建。我们的板子略有不同,我想找到一个很好的例子,或者可能是关于如何在 linux 内核中轻松支持板子的几个不同变体的想法。

我想做的一件事就是尽可能避免成堆的 if 语句。糟糕的是(在外包之后)我们的整个板初始化基本上都在一个文件中。看起来很棒。但仔细观察后发现这很正常......

我的第一个想法是借鉴我们之前的 WinCE 构建,我们使用一个结构来保存关于平台的所有信息(gpio 映射、特殊/不同的硬件),所以当板初始化运行时它会读取一个平台 ID,然后动态初始化所有信息。事实证明这很……困难,因为所有内容都作为静态 some_device_data 数据 [] 预先烘焙。因为它都是预烘焙的,所以很难在另一个 init 中访问。还感觉……从文件中导出所有内容有点奇怪。

我的第二个想法是将电路板初始化复制到两个单独的初始化中。从主板初始化我可以调用我需要的任何一个但是......似乎有很多重复并且变得难以维护。

我想首先要问的重要问题是... Linux 是否提供了一种智能方式来管理板的小变体。我知道我们的产品将经历许多小的迭代,并且能够为所有内核采用一个内核很重要。

如果没有聪明的方法,那么最不痛苦的是什么?如果声明似乎是最痛苦的,因为我们的上一个产品在其生命周期中经历了大约 20 种不同的变化(这些变化得到了很长时间的支持,并且经常发生生命周期结束的情况)

最佳答案

你应该看看device tree :

设备树是一种描述硬件的数据结构。给定正确的设备树,相同的编译内核可以支持更广泛的体系结构系列中的不同硬件配置。 Linux 内核可以读取 ARM、x86、MicroBlaze、PowerPC 和 SPARC 架构中的设备树信息。对于 ARM,使用设备树已成为所有新 SoC 的强制要求。

一些链接:

Arm support in linux kernel

eLinux

Arm SoC Check-List

Device Tree for Dummies

关于Linux,支持略有不同的电路板变体,相同的 SOC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21542903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com