This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

uVision Project Upgrade Nuance

A project is being upgraded fro uVision 3.60 to uVision 5.10. The code is relocated for use with an on-chip bootloader using an LPC2136. A flash header is located at 0x8000 in memory and then the RESET code is located at 0x8020. In uVision 3.60 the following is generated and works fine as per .map file:

0x00008000   0x00000020   Data   RO         1301    .ARM.__AT_0x00008000  codeheader.o
0x00008020   0x0000010c   Code   RO            3  * RESET               startup.o


When creating the same with uVision 5.10 we get the following:

 CodeHeader  0x00008000   Data          32  codeheader.o(.ARM.__AT_0x00008000)
    Long ARM to Thumb Veneer to QueueFreeBuffer 0x00008020   ARM Code      12  anon$$obj.o(Veneer$$Code)
    Long ARM to Thumb Veneer to SoftTimerGetRunningCount 0x0000802c   ARM Code      12  anon$$obj.o(Veneer$$Code)
    Long ARM to Thumb Veneer to Spi1TimeoutReset 0x00008038   ARM Code      12  anon$$obj.o(Veneer$$Code)
Reset_Handler 0x00008088   ARM Code       0  startup.o(RESET)


Clearly, this is NOT what is intended. How can the veneer be relocated to allow RESET to exist at 0x8020 as before? Preferably, I would NOT care to jump through multiple 'hoops' to correct this issue. The scatterfile shows:

LR_IROM1 0x00008000 0x00017FE0  {    ; load region size_region
  ER_IROM1 0x00008000 0x00017FE0  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x40000040 0x00007FC0  {  ; RW data
   .ANY (+RW +ZI)
  }
}

0