We've been designing products for > 5 years with the iMX28, and have many thousands deployed in harsh environments on multiple continents (and off-shore) with great success.
But recently, we've started using the battery as a means to avoid brown-out issues. (more specifically, cold-cranking voltage drop-outs)
The battery works great ... when it works.
However, we have an issue with new systems with un-charged batteries.
We're using a raw single Li-Ion cell, with the (Seiko) protection chip on our board.
As you know, the protection chips cut-off current below 2 volts.
We have a resistor in parallel with the chip to allow a fresh board to be trickle-charged till the battery voltage comes up safely to a level for normal charging.
When powering up a fresh (new) system with an uncharged battery, the charger is not turned on.
The protection circuit adds a high-impedance between the battery and GND, causing the battery-detection circuit to fail.
If the unit is power-cycled after the battery is charged, then its OK. Trouble is, our systems are buried in heavy trucks, operating 24/7 with union drivers, and they're hard-wired to the battery to run always, forever (the Ignition signal is an Input we monitor, not a power source). You can't say "just go disconnect the battery for a minute and re-connect". To power-cycle the unit, it must be booked into a service facility. Not easy. Not cheap.
We need to force the charger ON regardless of whether it detects the battery or not.
I bet its just flipping one bit.
I hope there's a library of run-time battery management utilities that includes such things as battery control, reading the battery voltage, etc.
(We're fine with the startup configurations, and setting the charge current limits and charge threshold.)
But I've been searching for days and can't find it/one.
I wrote SW for 3 decades, but never advanced to Linux programming.
I'm posting this on behalf of my lead system programmer.
I hope the information is clear enough.