EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

updated axf image in flash

Started by victorlu January 18, 2007
Hi all,

I am a newbie of ARM embedded programming, only worked with ARM mcu for a
little more than 3 months. I had a problem that at this stage am unable to
solve 
and would appreciate if anyone can help or give suggestion.

In my application, I had a bootloader that, on device reset, it detects on
network (via Lonwork's MIP) if the axf inmage should be updated. 
If the axf needs update, the bootloader receives and assembles the packets
of the new axf file sent to it via a separate application to a RAM area, 
then CRC checks the file before write the updated axf image to flash ROM
area starts a fixed address.

The bootloader handles vectors setup, remap, and read/write to and from
the flash and start the application etc. 
The axf file is compiled and linked separately using ARM Project Manager
from C codes without any ARM asssembly remapping and setup as this has
already 
been done by the bootloader


So far, I have the bootloader works as intended and verified that the
updated axf image has been correctly written to the flash area as
intended.
However when the bootloader jumps to the address where the (updated) axf
file begin to execute the application, nothing happens. 
That is the application does not run. If anyone has any solution or
suggestion, it would be greatly appreciated.

Thanks,
Victor


Hi all
I found out what the problem was. The entry point to the image of my
application which I compiled separately was almost always NOT at the start
of the image as I assumed (dangerous assumption). Every time the
application recompiled with minor alteration, the address of entry point
of its image changes and is indicated at the end of the listing. What I do
is to pass this entry point address from the external app and stored it in
a location in flash. When I am ready to execute the application, I read
the entry point address from this location and jump to it. It works ok
now.

Cheers,
Victor Lu


>Hi all, > >I am a newbie of ARM embedded programming, only worked with ARM mcu for
a
>little more than 3 months. I had a problem that at this stage am unable
to
>solve >and would appreciate if anyone can help or give suggestion. > >In my application, I had a bootloader that, on device reset, it detects
on
>network (via Lonwork's MIP) if the axf inmage should be updated. >If the axf needs update, the bootloader receives and assembles the
packets
>of the new axf file sent to it via a separate application to a RAM area,
>then CRC checks the file before write the updated axf image to flash ROM >area starts a fixed address. > >The bootloader handles vectors setup, remap, and read/write to and from >the flash and start the application etc. >The axf file is compiled and linked separately using ARM Project Manager >from C codes without any ARM asssembly remapping and setup as this has >already >been done by the bootloader > > >So far, I have the bootloader works as intended and verified that the >updated axf image has been correctly written to the flash area as >intended. >However when the bootloader jumps to the address where the (updated) axf >file begin to execute the application, nothing happens. >That is the application does not run. If anyone has any solution or >suggestion, it would be greatly appreciated. > >Thanks, >Victor > > >

The 2024 Embedded Online Conference