cancel
Showing results for 
Search instead for 
Did you mean: 

Touchgfx can I set the asset base address programatically

c-abbott
Associate II

We would like to support a dual bank approach for background software updates.

This allows the TouchGFX assets to be flashed into the un-used bank in the background while original application is still running (using the other bank). Then the restart and bootloader re-flash of only the application is quick.

To do this we would need to set the "Base address of Assets" during startup, is this possible?

e.g.

- Current application has TouchGFX assets in Bank 2

a) background download of new package (application + assets)

a1) application -> external staging flash

a2) assets -> Bank 1 (the one not in use)

b) restart device

b1) staged application -> application internal flash

b2) header set to tell it to use Bank 1

c) application starts

c1) Sets TouchGFX asset base address to Bank 1 address

c2) Bank 2 is not in use for new time this process occurs

5 REPLIES 5
SofLit
ST Employee

Hello,

I find it hard to understand how to get TouchGFX assets to be flashed while the application is using them.

If you have dual bank config, you will have two applications one running and one getting updated. Each application has its own TouchGFX assets. Unless I'm missing something from your description.

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.
c-abbott
Associate II

Let me simplify things:

  • System has external flash divided into two sections A and B
  • Application is compiled assuming assets are in section A
  • Application is flashed into Internal Flash Memory
  • Assets are flashing into either A or B Memory (determined AFTER compilation of application)
  • Application is informed where it's assets are located (A or B), TouchGFX must be configured appropriately

When you ask is supported    NO

Is doable    Yes 

I mean this only is based on linker files. You prepare two and build for destination.

c-abbott
Associate II

Interesting Idea, however, not possible.

We generate a single compilation, and ship deliver to customers, the installation process makes the A or B decision, based on the previous installation, since version can be skipped there is no predictable pattern. Therefore, it has to be done in the application at run time during the TouchGFX initialization.

I have examined the TouchGFX output and certainly I can make it do this, but it's not a nicest of methods. I was just hoping I was not the first person requiring this, and that TouchGFX had some support mechanism already in-place.

MM..1
Chief III

@c-abbott wrote:

Then the restart and bootloader re-flash of only the application is quick.

 


Why not in bootloader determine what app required and distribute both?

For example bin1 file for asset update and bin2 file with appA and appB. Boot loader compare assets position and versions and skip appA when appB is required.