Skip to content

[out-cs-bim112] Save time with application load state LS_LOADED#92

Open
Darthyson wants to merge 1 commit intoselfbus:mainfrom
Darthyson:dev/out-cs-save-prog-time
Open

[out-cs-bim112] Save time with application load state LS_LOADED#92
Darthyson wants to merge 1 commit intoselfbus:mainfrom
Darthyson:dev/out-cs-save-prog-time

Conversation

@Darthyson
Copy link
Member

@Darthyson Darthyson commented Nov 19, 2025

During application programming, the ETS checks the current load state of the application. If this is not LS_LOADED, the complete firmware (0x4B20-0x75ED) ~10 kB is transferred. This firmware is neither used nor stored by our application, so we simply do not need it. This change saves us ~2 minutes and 17 seconds of programming time during the first ETS application programming.

During application programming, the ETS checks the current load state of the application.
If this is not `LS_LOADED`, the complete firmware (0x4B20-0x75ED) ~10 kB is transferred.
This firmware is neither used nor stored by our application, so we simply do not need it.
This change saves us ~2 minutes and 17 seconds of programming time during the first ETS application programming.
@dallmair
Copy link
Member

Does this only affect out-cs-bim112, or do other apps have the same issue?

@Darthyson
Copy link
Member Author

Theoretically, any app with a mask version >= 0x0701 that defines a memory segment for its firmware in its .knxprod could benefit from this change. In our case, this is only the out-cs-bim112. Since this behavior is not spec. compliant, I wanted to get some "field experience" with the out-cs-bim112 as a first step.

application memory start (hex) end (hex) size (hex) usage firmware
MultiSensorAktor AS-4000 0x4000 0x4200 0x201 AddressTable
AS-4201 0x4201 0x43FF 0x1FF AssociationTable
AS-0700 0x700 0x751 0x52 RAM cleared
AS-4400 0x4400 0x47FE 0x3FF ComObjectTable
AS-0752 0x752 0x752 0x1 RAM cleared
AS-4800 0x4800 0x4AFF 0x300 eeprom
AS-6000 0x6000 0x6EFF 0xF00 eeprom
rol-jal-bim112 AS-0700 0x700 0x7CD 0xCE RAM cleared
AS-07CE 0x7CE 0x7CE 0x1 RAM cleared
AS-4000 0x4000 0x4200 0x201 AddressTable
AS-4201 0x4201 0x43FF 0x1FF AssociationTable
AS-4400 0x4400 0x4761 0x362 ComObjectTable
dim4-bim112 AS-0700 0x700 0x7E7 0xE8 RAM cleared
AS-07E8 0x7E8 0x7E8 0x1 RAM cleared
AS-4000 0x4000 0x4200 0x201 AddressTable
AS-4201 0x4201 0x43FF 0x1FF AssociationTable
AS-4400 0x4400 0x48FF 0x500 ComObjectTable
led-4-channels-bim112 AS-0700 0x700 0x7E7 0xE8 RAM cleared
AS-07E8 0x7E8 0x7E8 0x1 RAM cleared
AS-4000 0x4000 0x4200 0x201 AddressTable
AS-4201 0x4201 0x43FF 0x1FF AssociationTable
AS-4400 0x4400 0x48FF 0x500 ComObjectTable
out-cs-bim112 AS-4000 0x4000 0x41FE 0x1FF AddressTable
AS-4200 0x4200 0x43FE 0x1FF AssociationTable
AS-4400 0x4400 0x46AA 0x2AB ComObjectTable (LITTLE_ENDIAN)
AS-4800 0x4800 0x4B1F 0x320 parameter (0x4B01-0x04B1F mapped via memMapperMod)
AS-4B20 0x4B20 0x75ED 0x2ACE firmware download by ETS (thrown away via memMapperMod) x
0x3FC 0x6FF 0x304 RAM cleared (userRam start address set in setup()
weatherstation-bim112 AS-0700 0x700 0x78F 0x90 RAM cleared
AS-0790 0x790 0x790 0x1 RAM cleared
AS-4000 0x4000 0x4200 0x201 AddressTable
AS-4201 0x4201 0x43FF 0x1FF AssociationTable
AS-4400 0x4400 0x45BB 0x1BC ComObjectTable
in16-bim112 AS-0700 0x700 0x877 0x178 RAM cleared
AS-0878 0x878 0x878 0x1 RAM cleared
AS-4000 0x4000 0x4200 0x201 AddressTable
AS-4201 0x4201 0x43FF 0x1FF AssociationTable
AS-4400 0x4400 0x4905 0x506 ComObjectTable
rain-bim112 AS-0700 0x700 0x71A 0x1B RAM cleared
AS-071B 0x71B 0x71B 0x1 RAM cleared
AS-4000 0x4000 0x4200 0x201 AddressTable
AS-4201 0x4201 0x43FF 0x1FF AssociationTable
AS-4400 0x4400 0x445F 0x60 ComObjectTable

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR optimizes the ETS (Engineering Tool Software) programming process by setting the application load state to LS_LOADED, preventing unnecessary firmware downloads during the first application programming.

Key Changes:

  • Added setApplicationLoadState() function to manage the application load state in EEPROM
  • Set load state to LS_LOADED at the end of setup() and during callback notifications
  • Saves approximately 2 minutes and 17 seconds of programming time by avoiding ~10 kB firmware transfer

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants