This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

issue realted to start address of hex

Hi, I have created a project with Keil 5.15 The simply blink app works. Now I want to play with softdevice.

The only problem is... no matter what I do, my hex file always is being flashed at 0x0 Even though I updated the IROM settings in Keil.

This means, If I flash softdevice and then try to flash the application I get error.

Please help me to debug this ? If you need more detail, please let me know.

image description image description

==============EDIT=====================

Here is the scatter file

As mentioned now I checked the option use memory layout from the target...

Here is scatter file.

LR_IROM1 0x00016000 0x00029000  {    ; load region size_region
  ER_IROM1 0x00016000 0x00029000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
    main.o (+RO)
    RTT_Syscalls_KEIL.o (+RO)
    SEGGER_RTT.o (+RO)
    SEGGER_RTT_printf.o (+RO)
    nrf_delay.o (+RO)
    pstorage.o (+RO)
    arm_startup_nrf51.o (+RO)
    system_nrf51.o (+RO)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00004000  {  ; RW data
    main.o (+ZI)
   .ANY (+RW +ZI)
  }
}

But now I'm getting these warnings :

.\Objects\M0.sct(10): warning: L6329W: Pattern RTT_Syscalls_KEIL.o(RO) only matches removed unused sections.
.\Objects\M0.sct(11): warning: L6329W: Pattern SEGGER_RTT.o(RO) only matches removed unused sections.
.\Objects\M0.sct(12): warning: L6329W: Pattern SEGGER_RTT_printf.o(RO) only matches removed unused sections.
.\Objects\M0.sct(20): warning: L6314W: No section matches pattern main.o(ZI).

And the application doesn't even run...

I can confirm the application is now flashed at 0x16000. I have checked it with JMem and viewed the memory.

But the application is not running. I have even programmed the softdevice version s110_nrf51822_7.0.0_softdevice.hex

Parents
  • One more quick question based on my M0 knowledge on the same lines, since my code is at 0x16000 the vector table has to be at 0x0 of our application.so how this will work ? does softdevice has its own vector table which initates a jump to our application vector table or Noridc M0 takes care of this and automatically jumps to application start of application "0x16000" ?

Reply
  • One more quick question based on my M0 knowledge on the same lines, since my code is at 0x16000 the vector table has to be at 0x0 of our application.so how this will work ? does softdevice has its own vector table which initates a jump to our application vector table or Noridc M0 takes care of this and automatically jumps to application start of application "0x16000" ?

Children
No Data
Related