ISM43903 DCT Read Failure Due to External SFLASH

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
jbakerLS
Level 1
Level 1
5 questions asked 5 replies posted 5 sign-ins

I am working with on a project that is ported from ISM43362 to ISM43903.

One of the changes to the ISM43903 is the usage of External SFLASH. In this case the #define for #EXTERNAL_DCT is enabled. 

After flashing the ISM43903, I've observed repeated resets. Upon investigation,  calling the function wiced_dct_read_unlock( &dct, WICED_FALSE ) is leading to the reset. 

The code indicates that it will do

UNUSED_PARAMETER( ptr_is_writable );

free( info_ptr );

I've tried to change my read unlock call to 

wiced_dct_read_unlock( &dct, WICED_TRUE )

as suggested in the WICED-DCT.pdf document that is located in the documents folder in the path:

WICED-Studio-6.6\43xxx_Wi-Fi\doc.

One change that resolves the reset is to apply the same code when if #EXTERNAL_DCT is not enabled.

if ( ptr_is_writable == WICED_TRUE )
{
free( info_ptr );
}

However, this change would result in a changed to internal WICED code 43xxx_Wi-Fi/WICED/internal/waf.c. 

If anyone can indicate the root cause of this, or if this is an issue with the SDK, any help would be appreciated.

Jason

0 Likes
1 Solution
Murali_R
Moderator
Moderator
Moderator
250 sign-ins 250 replies posted 100 solutions authored

Hello Jason

Looks like there might be some issue with your platform file. can you try with the standard snip.dct_read_write example and see if the issue persists. I just tried this on a 43907 board which more or less same as the 43903 and uses an external flash too for the DCT and the code worked fine.

Thanks

View solution in original post

0 Likes
3 Replies
Murali_R
Moderator
Moderator
Moderator
250 sign-ins 250 replies posted 100 solutions authored

Hello Jason

Looks like there might be some issue with your platform file. can you try with the standard snip.dct_read_write example and see if the issue persists. I just tried this on a 43907 board which more or less same as the 43903 and uses an external flash too for the DCT and the code worked fine.

Thanks

0 Likes
jbakerLS
Level 1
Level 1
5 questions asked 5 replies posted 5 sign-ins

Thanks for the reply MuraliR_36.

I was succesfully able to run the snip.dct_read_write example and it looks like the code gets past the wiced_dct_read_unlock correctly. 

I'll use this as a comparison for my current implementation, as I've already noticed one or two differences. (I'll provide more details if I removing these differences resolves the problem entirely.

Jason

0 Likes
jbakerLS
Level 1
Level 1
5 questions asked 5 replies posted 5 sign-ins

It turns out there was a mistake in the function that called wiced_dct_read_lock, and subsequently wiced_dct_read_unlock. 

wiced_dct_read_unlock expects the info_ptr to be the same one created with wiced_dct_read_lock. The mistake here was that the code it wasn't sending the same info_ptr. This apparently didn't impact the previous platform we ported from, ISM43362 since the code was also writing the parameter ptr_is_writable as WICED_FALSE. 

Thanks again MuraliR_36 for pointing out the demo to give me a frame of reference to find this difference.

Jason

 

0 Likes