Hello,
I have an application where I need to modify a CanHwObject/CanHwFilter/Code (CAN ID) after deployment for a distributed system. Using a mask and then applying software filtering would be less than ideal given the amount of traffic on the network. Currently, the only way I see of accomplishing this is to modify the instantiated "Can_aHwFilter_Objectx[]" in the FLASH image (or relocate it) and then issuing a software reset... This could occur as a part of the UDS flashing tool process. I would prefer to store this CAN ID data in eeprom and modify the code/mask directly with a real-time software function (before CAN initialization). The new ID assignment would occur very rarely (end-of-line)...
Any direction here would be greatly appreciated!
Hi matnerd,
As my understand about your idea, that you already have a bin file flashed to the current board. Then you don't want to change it by flashing another bin file, you want to change Can_aHwFilter_Objectx[] by accessing to its memory location in Flash, by trying to use the UDS flashing tool
Theoredically, it might work if the size of your struct's location is large enough for changing. But i'm not sure about the memory location that you involved. It might impact to another location, which i'm not sure due to we do not have the UDS flashing tool or any similar kind of this testing.
From my opinion, you can try to reconfigure the CanHwObject, re-generate code, re-compile the project and observe the memory change related to the Can_aHwFilter_Objectx. When you increase the size of Can_aHwFilter_Objectx, i think the memory is impossible to expand with just your action. If you just change some params inside the struct, it might works.
Unfortunately, i already asked my collegues about this and we don't have any other ideas.
Thank you,
Nam.
Unless someone has a better solution, I will modify the board_init function and pass in my own