Brown out issues on ConnectCard (Wi)i.mx28 modules

Description of the problem

Occasionally, there are customers complaining ,targets not booting after receiving modules with the latest U-Boot firmware. The only thing they see at the serial port is:

Battery Voltage = 0.00V
5V source detected. Booting from 5V. Battery powered operation disabled.
Battery Voltage = 0.00V
5V source detected. Booting from 5V. Battery powered operation disabled.
Battery Voltage = 0.00V
5V source detected. Booting from 5V. Battery powered operation disabled.
Battery Voltage = 0.00V
5V source detected. Booting from 5V. Battery powered operation disabled.

in an endless loop.

This message denotes that the CPU has detected a brownout (a sudden voltage drop of a monitored power rail) and causes a controlled reset.

The bootlets code

What are the bootlets?

The bootlets is a Secondary Program Loader (SPL), that is a piece of code that executes right after the CPU's ROM loader and before the primary U-Boot boot loader. It configures the SDRAM controller, the Debug UART (DUART) and the Power Management Unit (PMU or PMIC) of the CPU.

This source code is provided by Freescale.

Where are they?

The source code is provided as a toolchain package with DEL LiveDVD in tgz format. It is important to note that:

  • The source code is not installed with DigiEL installation, so it is not copied to the development PC. It's only on the LiveDVD.
  • The bootlets source code is not upgraded with DigiEL hotfixes releases (since it is not installed on the PC, it cannot upgraded either).
  • Binary precompiled files with the bootlets are installed with DigiEL installation at /usr/local/DigiEL-5.9/x-tools/arm-unknown-linux-gnueabi/imx-bootlets/ccardwmx28js.
  • The bootlets binaries can be upgraded with DigiEL hotfixes

The bootlets are merged into U-Boot image during U-Boot compilation. A final step merges the U-Boot binary image (u-boot.bin) with the bootlets to produce an image the iMX28 CPU can boot (u-boot-ivt.sb).

Why & How brown out is caused?

In the previous bootlet versions, VDDD brownout detector was disabled and in newer version it is enabled for better protection.

The DUART MAX232 on Digi's JSK is powered at +3.3V while on certain customers designs, the MAX232 of the DUART is powered at +5V. The i.mx28 lines support a max voltage of 3.3V. When the DUART MAX232 is powered at 5V the DUART_RX input line is exceeding the 3.3 voltage (it can be configured to 1.8 or 3.3V) and this is causing VDDD brownout to trigger a CPU reset.

For this reason, the design of a customer may work fine if using old bootlets (the VDDD brownout was not enabled).

 

Solution

The MAX232 of the customer board must be powered at 3.3V or a voltage limitator introduced on the input lines (like RX).

The same is applicable to other UARTs or input lines.

 

Last updated: Oct 31, 2024

Filed Under

Embedded

Recently Viewed

No recently viewed articles

Did you find this article helpful?