After a little bit of debugging, I found out why UART3 fails to load when enabling it (by removing BSP_NOCOM3 environment variable) in my OS image. The base address specified in the registry is incorrect.
Currently it is:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Uart3]
"MemBase"=multi_sz:"4806E000", "FFFED800"
Per the UART section in the TI-OMAP user guide (
http://focus.ti.com/docs/...rint/omap3530.html), it should actually be this:
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Uart3]
"MemBase"=multi_sz:"49020000", "FFFED800"
I think the original error came from the assumption there was a constant stride across each UART base address. But UART3 has a gap, probably because it is the only port that supports IRDA/SIR.
Granted, I haven't tested it out by actually pushing data across serial. But at least it loads now <!-- s:) -->
<!-- s:) -->