Here's a question that's been fermenting in my mind for the last year or so...
It appears with the advent of XScale (I assume this isn't related to CE 3.0 to 4.X) there exists a choice between ARM4V and ARM4VI. I've ascertained that ARM4VI means ARM with "Thumb Interworking", which means that it can execute Thumb instructions. So, two questions:
1) Am I required to use ARM4VI for XScale? (don't think I am) 2) What are the pros/cons of ARM4V vs ARM4VI?
ARMv4 Use 32-bit ARM v4 instructions only ARMv4T Use 16-bit ARM v4 instructions only ARMv4I Use 32-bit ARM v4 instructions when necessary, 16-bit when available
In theory v4I will produce smaller and faster binaries than v4 alone or because of the ability to use only 16-bit instructions when available. The difference is typically only seen at a "whole OS" level though, considering that if the OS is compiled for ARMv4 the limited gains from the app being v4I are probably negligible.
v4T is limited in that it can't even use 32-bit instructions and therefore tends to be larger and slower than v4I. The XScale processor supports all 3 modes. ADS has chosen to build for v4I for all of our systems.