为什么要买这玩意?这就好像为什么有那么多人买 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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | 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