BeagleBone Black 及其超频

为什么要买这玩意?这就好像为什么有那么多人买 Raspberry Pi 一样,目前这货在跑 mediatomb 和 boinc ,以后可能会有 NAS 或者 V 你知道的 N ,总之总是有用的。那为什么不买 Raspberry Pi 呢?原因有三:pi 的运算速度只有 bone black 的一半;broadcom 的 SoC 向来啥资料没有(虽然这回放出了一点没有油盐的东西),而 TI 的文档一向很全面很深入;pi 的网卡挂在 USB 上,与外界通讯就全靠 USB ,够呛。于是,多花一点钱买 bone black 就显得很明智了。

Bone black 的硬件资料不少了,所以硬件方面简单说一下。

P1140093

标准晒机图。收到的是 A5C 版本。

P1140091

正面。

P1140096

核心是个 1GHz 的新版 AM3359 Sitara SoC ,前面多出来的 X 说明这是工程样品(内核输出里也有 AM335X ES2.0 )。

P1140097

两颗镁光的 IC ,大的这颗是 eMMC ,型号为 MTFC2GMVEA-0M WT ,为了控制成本只给了 2GB ,可以说聊胜于无(还不如多给个 TF 卡槽)。这玩意标称的速度为连续读取 30MB/s ,连续写入 6.6MB/s ,在 2GB 的 MLC NAND 中算是很不错的了。另外需要注意的是这片 eMMC 的界面版本是 MMC 4.41 ,而在 MMC 4.5 之前 discard 的行为和 ATA 的 TRIM 不一样,会强制擦除,所以,千万不要试图在 Beaglebone 上开 discard / TRIM ,如果开了闪存可能会很快耗尽擦写寿命。

emmc-mtmlc25nm2g

实测读取速度( aka. 笔者开 discard 的后果)

P1140098

小的这颗是内存颗粒,型号为 MT41K256M16HA-125 E ,256M×16bit DDR-3L 1600 CL11 。

有人误认为 bone 和 pi 一样都是 PoP ,大概是 SoC 的封装长得比较像吧。

P1140101

以太网 PHY 的 25.0 MHz 晶体。

P1140102

smsc 的 LAN8710A 百兆以太网 PHY 。这里吐个槽,这个 PHY 只要挨了哪怕一点点静电都会出 bug ,接网线闪灯,拔网线灯常亮,同时另一端的机器检测不到连接,非要断电重启才行。

以太网的 MAC 则集成到了 SoC 里,和内部总线直连,netperf 轻松跑出线速。

P1140103

TPS65217C 电源管理芯片( PMIC ),专门为 Sitara 系列 SoC 设计,据说内含一个 ARM Cortex-M3 核,和 SoC 间通过 I2C 通信。待会超频需要做一点有关它的手脚,准确的说需要提升一点电压。

P1140104

为 HDMI 部分提供时钟的 24.576MHz MEMS 振荡器,可以通过 GPIO 关掉。这玩意最近才兴起,有替代晶体振荡器的势头。

旁边的 U3 是个非门,连接 eMMC 的 nRST 。

P1140105

SoC 的 32.768kHz 低频晶体。

P1140108

USB 部分有一个疑似 100mA 的 polyfuse 。

P1140109

两只 IP4283CZ10 用于 HDMI 的 ESD 防护,不知道 pi 有没有类似设计。

P1140110

RESET 和 POWER 按键,以及 4 个用户可控的 LED 。LED 还专门用了三极管驱动,事实证明这些玩意在晚上很影响睡眠,果断记号笔伺候。据说 A5B 之前这些 LED 比现在还要亮,简直是脑子里有泡啊。

P1140126

NXP 的 TDA19988 HDMI 收发器,没 datasheet ,相当诡异。

P1140127

背面全貌( TF 卡槽上的高温胶带是我自己贴的)。

P1140111

背面为 SoC 提供主时钟的 24.0MHz 晶体。

P1140112

TL5209 500mA 低噪声 LDO 。

P1140113

PMIC 背面的电感和 MLCC 。

P1140114

非常迷你的 24LC32A ,存储板子的信息,浪费成本的好办法。

P1140115

左边是 D 触发器,和 HDMI 时钟有关。右边是两路 buffer ,给 TTL UART 缓冲用。其实俩电阻就完全搞定了对不?至少大部分设备里都是这样解决的。

P1140116

TPS2051 电流开关,带电流检测,旁边还有 TPD4S012 ESD 防护,都是为 USB host 服务的。

P1140117

微型 HDMI 接口。

P1140118

USB OTG 接口。同时也可负责供电。

P1140120

网口。LED 的分配比较奇葩,黄色是 100Mbps ,绿色是 Link/Act 。

P1140121

网口型号,内置隔离变压器。

P1140122

USB host 口,不知道为什么要有个小洞。

P1140124

不是裸奔党,所以弄了个盒子。

IMG_20131109_211946888

LED 口子开得不好。

OLYMPUS DIGITAL CAMERA

超频之前有加散热片,虽然芯片温度非常低。顺便说一下 AM3359 的片上带隙温度传感器不准,3.12 内核已经把它的支持拿掉了。

mmcinfo

mmcinfo ,用来判断 TF 卡的真伪很方便。

下面进入正题,超频。

这里假设 bone 上跑的是 debian ,用的是 robert-nelson kernel 3.12.6 。首先需要把此内核的源码下载下来,checkout am33x-v3.12 ,然后改动几个 patch 把 VDD_MPU 的限制提升到 1.4V ( absolute maximum rating 是 1.5V ,但是两头都不会太准,所以还是留点余量),然后再在 cpufreq 里面加上 1.2GHz 的配置。所有的改动都在 DTS 里面完成,所以超频只需要更换 dtb 即可,无需改动内核本身。

在多番尝试后得到的最高的能稳定运行的频率也就是 1.2GHz 了,也就是说电压不加太高的话只能超 20% 。

顺便说一下,VDD_MPU 被接在了 TPS65217 的 DC_DC2 上,而这路输出最高可以到 3.3V ,感觉可以通过一个 dtb 烧掉 bone 。

最后给出 dtb 和 patch  。3.12 的 dtb 不能和 3.8 的内核混用,变砖别赖我。

dtb 下载 ( MD5 = de00c8fe96a0fc18cebd1c285c2d986a ),做个软连接到 am335x-boneblack.dtb 即可。超频有一定风险,可能导致硬件损坏。

patch :

diff --git a/patch.sh b/patch.sh
index 61cf477..2c379ff 100644
--- a/patch.sh
+++ b/patch.sh
@@ -224,7 +224,8 @@ cpufreq () {
 	${git} "${DIR}/patches/cpufreq/0002-ARM-OMAP2-add-missing-lateinit-hook-for-calling-pm-l.patch"
 	${git} "${DIR}/patches/cpufreq/0003-ARM-OMAP3-use-cpu0-cpufreq-driver-in-device-tree-sup.patch"
 	${git} "${DIR}/patches/cpufreq/0004-ARM-dts-OMAP3-add-clock-nodes-for-CPU.patch"
-	${git} "${DIR}/patches/cpufreq/0005-hack-boneblack-enable-1Ghz-operation.patch"
+	${git} "${DIR}/patches/cpufreq/0005-hack-vdd-mpu.patch"
+	${git} "${DIR}/patches/cpufreq/0006-hack-boneblack-enable-1Ghz-operation.patch"
 }

 sgx () {
diff --git a/patches/cpufreq/0005-hack-boneblack-enable-1Ghz-operation.patch b/patches/cpufreq/0005-hack-boneblack-enable-1Ghz-operation.patch
deleted file mode 100644
index c0ca805..0000000
--- a/patches/cpufreq/0005-hack-boneblack-enable-1Ghz-operation.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From ebb84cf959ef769260ebc7ad4c8b8e242de4a662 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson@gmail.com>
-Date: Thu, 12 Dec 2013 13:03:55 -0600
-Subject: [PATCH 5/5] hack: boneblack: enable 1Ghz operation
-
-Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
----
- arch/arm/boot/dts/am335x-boneblack.dts | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-diff --git a/arch/arm/boot/dts/am335x-boneblack.dts b/arch/arm/boot/dts/am335x-boneblack.dts
-index 61842c1..e64b61d 100644
---- a/arch/arm/boot/dts/am335x-boneblack.dts
-+++ b/arch/arm/boot/dts/am335x-boneblack.dts
-@@ -10,6 +10,26 @@
- #include "am33xx.dtsi"
- #include "am335x-bone-common.dtsi"
-
-+/ {
-+	cpus {
-+		cpu@0 {
-+			cpu0-supply = <&dcdc2_reg>;
-+			/*
-+			 * To consider voltage drop between PMIC and SoC,
-+			 * tolerance value is reduced to 2% from 4% and
-+			 * voltage value is increased as a precaution.
-+			 */
-+			operating-points = <
-+				/* kHz    uV */
-+				1000000	1325000
-+				800000	1300000
-+				600000  1112000
-+				300000   969000
-+			>;
-+		};
-+	};
-+};
-+
- &hdmi {
- 	status = "okay";
- };
---
-1.8.5.1
-
diff --git a/patches/cpufreq/0005-hack-vdd-mpu.patch b/patches/cpufreq/0005-hack-vdd-mpu.patch
new file mode 100644
index 0000000..bd90656
--- /dev/null
+++ b/patches/cpufreq/0005-hack-vdd-mpu.patch
@@ -0,0 +1,23 @@
+From 76b84cf959ef769260ebc7ad4c8b8e242de4a662 Mon Sep 17 00:00:00 2001
+From: Chi Zhang <zhangchi866@gmail.com>
+Date: Thu, 12 Dec 2013 13:03:55 -0600
+Subject: hack: boneblack: vdd_mpu up to 1.4V
+
+Signed-off-by: Chi Zhang <zhangchi866@gmail.com>
+---
+ arch/arm/boot/dts/am335x-bone-common.dtsi | 2 +-
+ 1 file changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
+index 2f66ded..1052bc3 100644
+--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
++++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
+@@ -206,7 +206,7 @@
+ 			/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
+ 			regulator-name = "vdd_mpu";
+ 			regulator-min-microvolt = <925000>;
+-			regulator-max-microvolt = <1325000>;
++			regulator-max-microvolt = <1375000>;
+ 			regulator-boot-on;
+ 			regulator-always-on;
+ 		};
diff --git a/patches/cpufreq/0006-hack-boneblack-enable-1Ghz-operation.patch b/patches/cpufreq/0006-hack-boneblack-enable-1Ghz-operation.patch
new file mode 100644
index 0000000..0838542
--- /dev/null
+++ b/patches/cpufreq/0006-hack-boneblack-enable-1Ghz-operation.patch
@@ -0,0 +1,45 @@
+From ebb84cf959ef769260ebc7ad4c8b8e242de4a662 Mon Sep 17 00:00:00 2001
+From: Robert Nelson <robertcnelson@gmail.com>
+Date: Thu, 12 Dec 2013 13:03:55 -0600
+Subject: [PATCH 5/5] hack: boneblack: enable 1Ghz operation
+
+Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
+---
+ arch/arm/boot/dts/am335x-boneblack.dts | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/arch/arm/boot/dts/am335x-boneblack.dts b/arch/arm/boot/dts/am335x-boneblack.dts
+index 61842c1..e64b61d 100644
+--- a/arch/arm/boot/dts/am335x-boneblack.dts
++++ b/arch/arm/boot/dts/am335x-boneblack.dts
+@@ -10,6 +10,27 @@
+ #include "am33xx.dtsi"
+ #include "am335x-bone-common.dtsi"
+
++/ {
++	cpus {
++		cpu@0 {
++			cpu0-supply = <&dcdc2_reg>;
++			/*
++			 * To consider voltage drop between PMIC and SoC,
++			 * tolerance value is reduced to 2% from 4% and
++			 * voltage value is increased as a precaution.
++			 */
++			operating-points = <
++				/* kHz    uV */
++				1200000	1375000
++				1000000	1325000
++				800000	1300000
++				600000	1112000
++				300000	 969000
++			>;
++		};
++	};
++};
++
+ &hdmi {
+ 	status = "okay";
+ };
+--
+1.8.5.1
+

《BeagleBone Black 及其超频》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注