Skip to content

树莓派的工业用途

树莓派通常用作另一种产品的一部分。本文档介绍了可用于使用 Pi 的其他功能的一些其他功能。

客户 OTP 设置

有许多可以使用的 OTP 值。要查看所有OTP值的列表,可以使用:

pi @ raspberrypi:〜$ vcgencmd otp_dump

此转储中的一些有趣的行是:

  • 28-序列号
  • 29-序列号的补码
  • 30-修订号

同样,从 36 到 43 (含)之间,有八行 32 位供客户​​使用

要对这些位进行编程,您将需要使用 vcmailbox 。这是固件的 Linux 驱动程序接口,它将处理行的编程。为此,请参考文档here和 vcmailbox 示例应用程序here

vcmailbox应用程序可以直接在树莓派 树莓派 OS构建上的命令行中使用。一个示例用法是:

pi @ raspberrypi:〜$/opt/vc/bin/vcmailbox 0x00010004 8 8 0 0
0x00000020 0x80000000 0x00010004 0x00000008 0x800000008 0xnnnnnnnn 0x00000000 0x00000000

上面使用mailbox property interfaceGET_BOARD_SERIAL,请求大小为 8 个字节,响应大小为 8 个字节(发送两个整数)对于请求 0 ,0)。对此的响应将是两个整数(0x00000020和 0x80000000 ),后跟标签代码,请求长度,响应长度(第 31 位设置为指示它是响应),然后是 64 位序列号(其中 MS 32位始终为 0 )。

要设置客户 OTP 值,您将需要使用 SET _CUSTOMER_OTP(0x38021)标签,如下所示:

pi @ raspberrypi:〜$/opt/vc/bin/vcmailbox 0x00038021 [8 +数字* 4] [8 +数字* 4] [start_num] [数字] [值] [值] [值] ...
  • start_num =从 0 -7开始编程的第一行
  • number =要编程的行数
  • value =要编程的每个值

因此,要将 OTP 客户行 4 、 5 和 6 分别编程为 0x11111111 、 0x22222222 、 0x33333333 ,可以使用:

pi @ raspberrypi:〜$/opt/vc/bin/vcmailbox 0x00038021 20 20 4 3 0x11111111 0x22222222 0x33333333

然后将对第 40 、 41 和 42 行进行编程。

要读回值,可以使用:

pi @ raspberrypi:〜$/opt/vc/bin/vcmailbox 0x00030021 20 20 4 3 0 0 0
0x0000002c 0x80000000 0x00030021 0x00000014 0x80000014 0x00000000 0x00000003 0x11111111 0x22222222 0x33333333

如果您希望将此功能集成到自己的代码中,则应该能够使用 vcmailbox .c代码作为示例来实现此功能。

锁定 OTP 更改

可以锁定 OTP 更改,以避免再次对其进行编辑。这可以通过在 OTP 写邮箱中使用特殊参数来完成:

pi @ raspberrypi:〜$/opt/vc/bin/vcmailbox 0x00038021 8 8 0xffffffff 0xaffe0000

一旦锁定,客户的 OTP 值将无法再更改。请注意,此锁定操作是不可逆的。

使客户 OTP 位不可读

有可能完全阻止读取客户的 OTP 位。这可以通过在 OTP 写邮箱中使用特殊参数来完成:

pi @ raspberrypi:〜$/opt/vc/bin/vcmailbox 0x00038021 8 8 0xffffffff 0xaffebabe

此操作对于绝大多数用户来说不太可能有用,并且是不可逆的。