Clock running slow when gpio0[11] pulled high

We’ve recently found a strange problem. Repeatable across all eleven boards we’ve tried so far.

When pin 32 on P8 (gpoi0[11]) is pulled high via a resistor on boot, the clock on the BBB runs ~7000 seconds slow a day. (~5 seconds a minute)

If the pin is pulled low or left floating on boot, the clock keeps time.

The device tree overlay was set to 0x37 for this pin - fast slew, output, pullup, mode 7, but changing this has no effect.

We were using Debian 7.9 with various programs installed, a few device tree overlays applied and a custom cape when we noticed this, but it’s still the case using the Debian 8.6 image with no modifications, no dto and no cape.

We haven’t been able to find anything online and don’t really know where to start looking.

Any ideas?

I should clarify that this is the system clock, not the hardware clock.

That pin is used during the boot operation.
Check in the SRM for the default boot options.

Expanding Chad’s comment, in the Beaglebone Black System Reference Manual (Rev B, Jan 20, 2014)

“Figure 39. Processor Boot Configuration” in “Section 6.8 Default Boot Options” says that the top two bits of the SYSBOOT register, SYSBOOT[15:14], seem to select which oscillator is used (19.2MHz, 24MHz, 25MHz, 26MHz).

“Figure 38. Processor Boot Configuration Design” shows that SYS_BOOT14 and 15 are physically lcd_data14 and 15.

“Table 12. Expansion Header P8 Pinout” shows that lcd_data14 and 15 are GPIO0[10] and GPIO0[11] in MODE0.

Section “8.1.1 LCD Pins” contains the warning:

“These pins are also the SYSBOOT pins. DO NOT drive them before the SYS_RESETN signal goes high. If you do, the board may not boot because you would be changing the boot order of the processor.”

In Fig 39, I see that SYSBOOT[15:14] == 01b results in 24 MHz, whereas 11b results in 26MHz, whose 8% difference may account for your ~5 sec offset per minute. (If 24MHz is the default, I’m not sure.)


That brings tears to my eyes seeing someone quoting the manual.

Yes, don’t screw up the SYS_BOOT pins.


Thanks Gerald! Did I reference the correct version (CircuitCo’s GitHub)?


That is the correct document. It is there, at least for now.