为什么要买这玩意?这就好像为什么有那么多人买 Raspberry Pi 一样,目前这货在跑 mediatomb 和 boinc ,以后可能会有 NAS 或者 V 你知道的 N ,总之总是有用的。那为什么不买 Raspberry Pi 呢?原因有三:pi 的运算速度只有 bone black 的一半;broadcom 的 SoC 向来啥资料没有(虽然这回放出了一点没有油盐的东西),而 TI 的文档一向很全面很深入;pi 的网卡挂在 USB 上,与外界通讯就全靠 USB ,够呛。于是,多花一点钱买 bone black 就显得很明智了。
Bone black 的硬件资料不少了,所以硬件方面简单说一下。
标准晒机图。收到的是 A5C 版本。
正面。
核心是个 1GHz 的新版 AM3359 Sitara SoC ,前面多出来的 X 说明这是工程样品(内核输出里也有 AM335X ES2.0 )。
两颗镁光的 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 ,如果开了闪存可能会很快耗尽擦写寿命。
实测读取速度( aka. 笔者开 discard 的后果)
小的这颗是内存颗粒,型号为 MT41K256M16HA-125 E ,256M×16bit DDR-3L 1600 CL11 。
有人误认为 bone 和 pi 一样都是 PoP ,大概是 SoC 的封装长得比较像吧。
以太网 PHY 的 25.0 MHz 晶体。
smsc 的 LAN8710A 百兆以太网 PHY 。这里吐个槽,这个 PHY 只要挨了哪怕一点点静电都会出 bug ,接网线闪灯,拔网线灯常亮,同时另一端的机器检测不到连接,非要断电重启才行。
以太网的 MAC 则集成到了 SoC 里,和内部总线直连,netperf 轻松跑出线速。
TPS65217C 电源管理芯片( PMIC ),专门为 Sitara 系列 SoC 设计,据说内含一个 ARM Cortex-M3 核,和 SoC 间通过 I2C 通信。待会超频需要做一点有关它的手脚,准确的说需要提升一点电压。
为 HDMI 部分提供时钟的 24.576MHz MEMS 振荡器,可以通过 GPIO 关掉。这玩意最近才兴起,有替代晶体振荡器的势头。
旁边的 U3 是个非门,连接 eMMC 的 nRST 。
SoC 的 32.768kHz 低频晶体。
USB 部分有一个疑似 100mA 的 polyfuse 。
两只 IP4283CZ10 用于 HDMI 的 ESD 防护,不知道 pi 有没有类似设计。
RESET 和 POWER 按键,以及 4 个用户可控的 LED 。LED 还专门用了三极管驱动,事实证明这些玩意在晚上很影响睡眠,果断记号笔伺候。据说 A5B 之前这些 LED 比现在还要亮,简直是脑子里有泡啊。
NXP 的 TDA19988 HDMI 收发器,没 datasheet ,相当诡异。
背面全貌( TF 卡槽上的高温胶带是我自己贴的)。
背面为 SoC 提供主时钟的 24.0MHz 晶体。
TL5209 500mA 低噪声 LDO 。
PMIC 背面的电感和 MLCC 。
非常迷你的 24LC32A ,存储板子的信息,浪费成本的好办法。
左边是 D 触发器,和 HDMI 时钟有关。右边是两路 buffer ,给 TTL UART 缓冲用。其实俩电阻就完全搞定了对不?至少大部分设备里都是这样解决的。
TPS2051 电流开关,带电流检测,旁边还有 TPD4S012 ESD 防护,都是为 USB host 服务的。
微型 HDMI 接口。
USB OTG 接口。同时也可负责供电。
网口。LED 的分配比较奇葩,黄色是 100Mbps ,绿色是 Link/Act 。
网口型号,内置隔离变压器。
USB host 口,不知道为什么要有个小洞。
不是裸奔党,所以弄了个盒子。
LED 口子开得不好。
超频之前有加散热片,虽然芯片温度非常低。顺便说一下 AM3359 的片上带隙温度传感器不准,3.12 内核已经把它的支持拿掉了。
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 +
博主好厉害,内功深厚啊!
TDA19988的Datasheet找到了。
https://www.digikey.ca/htmldatasheets/production/1794143/0/0/1/tda19988-datasheet.html