Loading...

树莓派新板参数提前泄露,靠一份设备树文件就能读出来?



以下内容由亚星娱乐整理:

树莓派刚刚泄露了 Pi Zero 3W 的信息,方式不是发布会,也不是产品页,而是一份描述 Pi Zero 硬件的设备树(DeviceTree)文件。

正是从这份文件里,人们读出了它搭载 BCM2711 (也就是 Pi 4 的 CPU)、用上了 PCIe(甚至可能已经引出)、带有一个板载电源键、多了一颗电源指示灯,还提供 eMMC 选项。

如果非要猜,这会是第一块双面布局的 Pi Zero 板;

如果再抱点希望,它终于该用上 USB-C 了。

不信的话,设备树文件就摆在那里,字里行间的信息其实非常好读。

设备树文件的作用,是告诉 Linux 内核或其他系统内核:该期待什么 CPU、该加载哪些驱动、板子上暴露了哪些接口,以及这些接口上接着什么设备。

有时候,一份像样的设备树文件,就是让你手里那块被冷落的单板电脑跑上现代 Linux 系统的唯一必需品。

这类文件其实就在你身边。

你的手机有,路由器有,ARM 笔记本有,各种单板电脑更不用说。

有些设备树文件并不友善,只是 Linux 内核与专有驱动之间薄薄的一层;

这类东西常见于某些厂商 CPU 的手机里。

大多数设备树文件则只是老老实实做自己的事。

先要知道的事 设备树文件描述硬件,就像 HTML 描述网页元素。

它不具备图灵完备性,所以单靠设备树是跑不了《毁灭战士》的——除非你碰上那种不友善的实现。

设备树源文件(扩展名 .

dts 、 .

about image

dtsi )会被编译成内核可读的二进制文件( .

dtb 、 .

dtbo )。

就算手里没有源码,反编译并改动它也相对容易。

处理设备树文件并不难。

编译与反编译命令简单到不能再简单,也很容易查到;

那个编译器同时也是反编译器,一个小工具,一条 sudo apt install device-tree-compiler 就能装上。

在为 Blepis PDA 干活时,团队写了一个脚本,为 Blepis 可能搭配的不同屏幕批量编译一堆 overlay,这大概是最直白不过的事情之一。

设备树文件分几类:include、基础文件和 overlay。

include( .

dtsi )通常存放 CPU 相关信息,多是些你永远不会去碰的无聊内容,比如时钟定义。

基础文件完整描述一块板子,内核加载它,就知道该怎么对待这块板。

overlay 一般是可选的,用来在基础设备树之上“添加”功能,既可以描述额外设备,也可以修改已经描述过的设备或接口。

你在树莓派的 config.

txt 里肯定见过 overlay 这个词。

想靠阅读来学设备树,可以去翻树莓派的 overlay 源码目录,从 README 开始。

里面内容极多,大部分很无聊,但仔细找能找到金子。

顺带一提, broadcom/ 目录下的基础设备树文件也值得一看,能让你了解不少树莓派硬件本来的样子。

从大量例子中学 多数时候你想写的是 overlay,而不是基础文件。

写 overlay 要学的东西不多,因为可以学的地方实在太多。

入门阶段,只需要掌握写出一个能用的 overlay 所需的最低限度知识;

而 99% 的情况下,这意味着拿一份现成的 overlay 稍作修改。

树莓派有一份简单又格外啰嗦的 LED overlay,注释比代码还多,简直像是专门给人练手用的。

它描述一个接在特定 GPIO 上的 LED、它的默认状态、标签,甚至还有覆盖项,让你可以随时替换这些参数。

之后,在运行中的系统上用一条命令就能加载这个 overlay(这部分是树莓派独有),去拨弄那颗 LED,把它变成心跳灯或 CPU 活动信号,愿意的话还能写进 config.

txt 永久加载。

文件注释齐全,几乎解释了一切。

还有一份 overlay 描述接在 Pi 上的 I2C 触摸屏:把引脚编号改成对得上的,编译、加载,内核应该就会自动识别它。

另一份 overlay 用来关闭 Pi 上的 WiFi——把两个变量设成“disabled”,看起来是不是超级简单?

再有一份描述 SPI 以太网控制器,它定义了所用引脚,还特意把用到的那个 SPI 接口设为“disabled”,免得你从用户空间误写进去。

有时树莓派自家的 overlay 过于复杂,反而不利于学习,光看数量就知道。

别担心,例子还有很多

本文内容由亚星娱乐整理。

亚星娱乐整理多类型数字娱乐内容,从项目特色、主题资料到版本变化均按照类别进行展示。页面强调简单易读和内容层次,让用户能够轻松发现感兴趣的游戏,并进一步了解相关内容的发展与变化。