1

The compiler for WEC7 generates ARMv7 code. The compiler for WEC2013 generates Thumb2 code.

Is there some mechanism for the OS to detect if an application is not Thumb2 code? i.e. Will any/all code built for WEC7 need to be rebuilt for WEC2013 before it can run on the 2013 OS?

How difficult was it to port your WEC7 to WEC2013? (opinion)

Some porting info/articles: BSP porting, Instruction set change, marcos for porting, Thumb2 porting

Doug
  • 2,783
  • 6
  • 33
  • 37
  • what is your target architecture? – old_timer Jul 13 '18 at 14:14
  • Target: NXP i.MX6 (cortex-A9) I gather your "out of the gate" refers to the very first instruction. It is off topic, but is explained in the last link: "Thumb2 porting". – Doug Jul 13 '18 at 17:40
  • Links are bad form on stackoverflow in questions or answers, they can change at any time making the question or answer useless for this site. – old_timer Jul 13 '18 at 23:37
  • Looks like the misuse of the term thumb2 stems back to Microsoft, not solely e-con not understanding the term. The e-con thumb2 porting page implies the toolchain is a disaster, the toolchain should be handing your mode switches, and no reason to talk about the T bit you talk about the instructions that you are limited to for the transitions. You are ARMv7 now with your hardware so your from and to should be fine other than this terminology confusion and issues if the toolchain is clueless on how to target arm code. – old_timer Jul 13 '18 at 23:39
  • What happened when you tried it? I would try just taking your code assuming it is just C or C++ and just compile it and see what happens, if you have inline asm or something like that then sure you will have to deal with that. – old_timer Jul 13 '18 at 23:41
  • If you are manually linking to shared libraries, then before actually calling any print the address being provided by the tools, is the lsbit set or not for arm vs thumb modules? You might have to do the ORR with one thing. An easy way to make that transition is a few lines of asm in the callee instruction set that you let the compiler produce the call and thus return address. HOP(address|1); in asm "HOP: bx r0" the compiled call will/should do a BL to HOP. thats just basic arm stuff going back to armv4t, nothing new. – old_timer Jul 13 '18 at 23:43

0 Answers0