Raspberry Pi有什么问题



Raspberry Pi是一款非常受欢迎的设备,以其价格适中,多功能,功能强大且社区活跃而著称。 粉丝网站和文章很容易找到,但是大多数人直到自己遭受苦难并在论坛上寻找信息后才知道它的弱点。

我将尝试谈论一些我个人遇到的问题,以及一些最典型的问题,这些问题通常会出现在对它一无所知的人中。 最后,为什么我不建议在某些应用程序中使用Pi,尤其是NAS服务(如NextCloudPi和Open Media Vault)。 我希望这可以节省我的时间,所以我在论坛上不再赘述。

我有很多Raspberry Pi,并且已经使用了很多年。 当第一款机型于2012年问世时,它成为单板市场的重要里程碑。 尽管已经存在好几个不错的板卡,例如Beagleboard和Odroid,但它们非常昂贵,只有铁杆粉丝才能购买和测试它们。

与它们相比,Pi并没有那么强大,但是由于惊人的便宜性,Pi确实在市场上引起了轰动。 博客,扩充卡,许多个人项目,大量图书馆... Raspberry Pi是第一个实现所有这些功能的社区,而如今,蓬勃发展的社区是Pi超越其他主板的最大优势。

但是现在是2019年,是时候再次环顾四周了。 我认为,在相同的价格下,还有更多质量更好的开放式替代品。 我会尽力解释。

性能表现




Raspberry Pi通过偷工减料来降低价格。 结果,与竞争对手相比,董事会在某些任务上的生产力不足。 特别是,它不太适合网络任务和USB功能。

这是SMSC LAN9514芯片 ,该芯片通过一个USB通道连接到SoC,同时充当USB到以太网适配器和USB集线器。 因此,当通过网络下载某些东西并将其存储在USB驱动器上时,以太网和USB处于同一通道上并且彼此竞争,这与NAS的典型用法相矛盾,更不用说在这里添加RAID了。

出于同样的原因,即使他们去年终于发布了支持千兆以太网的模型,实际网络性能也从未接近千兆,但最大网络速度为40 MB / s,如果达到,则为20 MB / s。传输到USB设备 。 当时,已经有便宜的板卡带有真正的千兆以太网和USB3。

实际上,Wi-Fi 并非通过SMSC而是通过SDIO连接到BCM4343芯片,因此使用Wi-Fi可以避免这种瓶颈。 但是,Wi-Fi芯片不是万能的,它必须处理周围的干扰,因此这不是理想的选择。

由于这些原因,我不建议将Pi用作NAS,无论是Open Media Vault还是Nextcloud。

Real Brain Pi-封闭源




如果您卷入了软件自由纠纷,那么我们Linux系统中的主要问题就是封闭源代码二进制blob。 我不会详细介绍,但是问题是无法验证系统的这些部分,并且它们可以访问设备中发生的所有事情。 这催生了大型开源项目,例如Android Replicant ,旨在使我们的系统摆脱任何二进制斑点:一个痛苦,乏味且缓慢的过程。

Raspberry Pi也存在类似的问题,其中CPU和GPU集成在同一BCM2837B0芯片中。 中央处理器是1400 MHz(在Pi 3B中)的64位四核ARM A53,图形处理器是频率为400 MHz的双核32位VideoCore IV。 CPU和GPU的集成在移动世界中很流行,因为它降低了价格和功耗。 竞争对手NXP iMX和Allwinner使用类似的方法。

因此,在上一个Pi中,有六个内核,但其中只有四个是ARM。 Linux在处理器上运行,但是这台设备上的Linux是二等公民可能会让您感到惊讶。 GPU内核在实时操作系统ThreadX下运行。 这种封闭源代码的OS无需Linux内核即可管理系统。

在下载开始时,Raspberry Pi处理器被完全禁用(技术上处于重置状态),并且GPU启动了系统。 您可以看一下/boot文件夹,您会发现二进制blob,GPU使用该二进制blob启动处理器和它自己的ThreadX OS( bootcode.binstart.elf )。 在此处阅读有关下载过程的更多信息。

是GPU挂载SD卡,下载这些blob并从文本文件config.txt中读取配置,我们对其进行编辑以调整视频设置或对GPU超频。 这里不涉及Linux。

当GPU允许CPU加载Linux内核时,它不仅离开舞台,而仅用作图形处理器 。 不,GPU仍然是主要的GPU。 您是否想过当Pi连接到HDMI时,谁会显示这些徽标? 还是警告图标中的这些闪电或温度符号 ? 确实,这就是ThreadX系统在GPU上所做的事情,而Linux根本不知道发生了什么。

我们可能不知道GPU的全部功能,但是我们知道他负责的事情。 对于本文而言,重要的是ThreadX监视电压降(这是一个普遍存在的问题,我们将在后面看到),并降低处理器的频率以防止处理器故障和冻结。 因此,在人类中,设备充其量只能以600 MHz而不是1400 MHz的频率运行。 节流始于4.65 V,也可以由温度触发。 同时,Linux仍然认为系统可以全频正常运行。

这就是我们所看到的。 由于主操作系统是专有的,因此我们无法知道它在做什么或能够做什么,因此始终存在隐私问题。

封闭源代码中至少包含一项专利,该专利禁止至少在2025年之前公开代码,但我们不知道这样做是否会做到。 曾尝试对VideoCore IV进行反向工程并为其创建开源固件。 不幸的是,该项目在带来有用的东西之前就已经消失了。 与Android Blob一样,这是一项非常困难的工作。

营养问题



这不是Raspberry Pi技术错误,而是典型的用户错误。

第一个模型几乎不使用80 mA,但每个新一代都变得越来越强大,因此更加耗能。 另外,许多用户插入的USB设备如果没有自己的电源也会消耗功率。

microUSB连接器最初仅设计用于1.8 A,尽管它是一个旧标准,并且您可以找到提供更多功能的充电器,所以许多人尝试使用旧的1 A手机充电器或在Internet上购买廉价的适配器为其供电覆盆子。 但是Pi是一台计算机,它需要高质量,稳定的电源,可以在输入端提供稳定的5V电压,电流强度高达2.5A。不仅需要一个体面的变压器,而且还需要高质量的连接(否则会出现电压降),但更重要的是您需要一条优质的电缆 ,否则电缆两端的电压将大大下降。 不良的电缆甚至比不稳定的电压源更常见,因此请确保使用优质的电缆:也许是20AWG或类似电缆,或者只是购买官方电源。 结论是,即使是2.5A 5V,也不是每个USB充电器都能正常工作。

将其添加到上一节中讨论的内容中,您将开始理解全局。 大多数用户在其设备上以较低的频率工作,而GPU却将其隐藏起来,因此他们实际上以600 MHz的较低频率工作:几乎与第一个Pi上的ARMv6相同。

在许多情况下,GPU的工作量不足,系统会随机崩溃或简单地冻结,从而可能破坏数据或损坏SD卡。 这通常在负载下发生,即当晶体管需要最大功率时。 然后用户来到论坛上并抱怨: 我的电源供应正常,我运行了该电源,没有任何故障 。 当然,这是不正确的,但通常他们不相信。

在我看来,这就是日本人所说的Poka Yoke ,也就是说,我们必须设计这样的系统,即根据他们的设计,它不允许用户用脚射击自己。 再次,官方电源的价格质量非常好,我强烈推荐它。

我不喜欢隐藏的专有系统将频率降低到我们无法控制的范围。 如果系统死机会更好:然后您可以立即看到发生了什么,然后一个人可以更换电源。 我认为,这比欺骗用户并使他们在整个Internet上抱怨更好。 很难想象,如果Pi开发人员没有隐藏Poka Yoke问题,他们会这么做的原因。

检查电源问题




花费了太长时间,但是我们仍然设法在内核级别记录了该问题。 如果在系统日志中看到这样的消息:

  kern:暴击:[1701.464833 2.116656]检测到欠压!  (0x00050005)
子核:信息:[1707.668180 6.203347]归一化电压(0x00000000 

那么您的电压会降低。 很好,现在Linux至少捕获了这些信息,但是如果我们想知道更多信息,我们需要直接访问GPU。

vcgencmd命令可以从ThreadX固件获取系统信息。

 # vcgencmd get_config int arm_freq=1000 core_freq=500 sdram_freq=600 over_voltage=6 disable_overscan=1 force_pwm_open=1 

您可以使用vcgencmd measure_clock armvcgencmd measure_volts检查实际频率和电压。 这是tkaiser 监视脚本的示例输出。

 # With a crappy PSU and/or Micro USB cable output looks like this # on a RPi 3: # # 44.0'C 600 MHz 1010000000000000000 1.2V # 44.5'C 600 MHz 1010000000000000000 1.2V # 44.0'C 600 MHz 1010000000000000101 1.2V # 44.0'C 600 MHz 1010000000000000101 1.2V # 44.0'C 600 MHz 1010000000000000101 1.2V # 44.5'C 600 MHz 1010000000000000000 1.2V # 45.1'C 600 MHz 1010000000000000101 1.2V # # With an ok-ish cable it looks like this (when running cpuburn-a53): # # 48.3'C 1200 MHz 0000000000000000000 1.3312V # 48.3'C 1200 MHz 0000000000000000000 1.3312V # 48.3'C 1200 MHz 0000000000000000000 1.3312V # 48.3'C 1200 MHz 0000000000000000000 1.3312V # 50.5'C 1200 MHz 0000000000000000000 1.3312V # 56.4'C 600 MHz 0000000000000000000 1.2V # 54.8'C 600 MHz 1010000000000000101 1.2V # 55.3'C 600 MHz 1010000000000000101 1.2V # 55.8'C 600 MHz 1010000000000000101 1.3312V # 53.7'C 600 MHz 1010000000000000101 1.2V # 51.5'C 600 MHz 1010000000000000101 1.2V # 51.0'C 600 MHz 1010000000000000101 1.2V # # And only by bypassing the crappy connector you can enjoy RPi 3 # performing as it should (please note, there's a heatsink on my RPi # -- without throttling would start and then reported clockspeed # numbers start to get funny): # # 75.2'C 1200 MHz 1010000000000000000 1.3250V # 75.8'C 1200 MHz 1010000000000000000 1.3250V # 75.8'C 1200 MHz 1010000000000000000 1.3250V # 76.3'C 1200 MHz 1010000000000000000 1.3250V # 76.3'C 1200 MHz 1010000000000000000 1.3250V # 73.6'C 1200 MHz 1010000000000000000 1.3250V # 72.0'C 1200 MHz 1010000000000000000 1.3250V # 70.4'C 1200 MHz 1010000000000000000 1.3250V # # Now with a pillow on top for some throttling: # # 82.2'C 1200/ 947 MHz 1110000000000000010 1.3250V # 82.7'C 1200/ 933 MHz 1110000000000000010 1.3250V # 82.7'C 1200/ 931 MHz 1110000000000000010 1.3250V # 82.7'C 1200/ 918 MHz 1110000000000000010 1.3250V # 82.2'C 1200/ 935 MHz 1110000000000000010 1.3250V # 79.9'C 1200/1163 MHz 1110000000000000000 1.3250V # 75.8'C 1200 MHz 1110000000000000000 1.3250V # # And here on RPi 2 with crappy USB cable and some load # # 50.8'C 900 MHz 1010000000000000000 1.3125V # 49.8'C 900 MHz 1010000000000000000 1.3125V # 49.8'C 900/ 600 MHz 1010000000000000101 1.2V # 49.8'C 900/ 600 MHz 1010000000000000101 1.2V # 48.7'C 900/ 600 MHz 1010000000000000101 1.2V # 49.2'C 900/ 600 MHz 1010000000000000101 1.2V # 48.7'C 900 MHz 1010000000000000000 1.3125V # 46.5'C 900 MHz 1010000000000000000 1.3125V # # The funny thing is that while the kernel thinks it's running # with 900 MHz (performance governor) in reality the 'firmware' # throttles down to 600 MHz but no one knows :) 


结论



我确实认为Raspberry Pi已成为单板计算机历史上的一个非常重要的事件,但是今天它在质量,性能和开放性方面都已经落后。 有许多负担得起的替代方案,开发人员已更加关注这些问题。

尽管如此,我仍然使用Raspberry Pi,以帮助用户设置自己的云托管。 考虑到该板的受欢迎程度,只要它对人们有用,对我来说保持它就有意义。

Source: https://habr.com/ru/post/zh-CN440584/


All Articles