S32K344 CanHardwareObject/CanHwFilter Code/Mask Modifications in Real-Time (post build)

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

S32K344 CanHardwareObject/CanHwFilter Code/Mask Modifications in Real-Time (post build)

398 次查看
matnerd
Contributor II

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!

 

标记 (5)
0 项奖励
回复
2 回复数

324 次查看
NamLee
NXP Employee
NXP Employee

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.

 

0 项奖励
回复

364 次查看
matnerd
Contributor II

Unless someone has a better solution, I will modify the board_init function and pass in my own 

Can_43_FLEXCAN_ConfigType object into:
void Can_43_FLEXCAN_Init(const Can_43_FLEXCAN_ConfigType * Config)
during initialization...
0 项奖励
回复