KW38 HardFault

cancel
Showing results for 
Search instead for 
Did you mean: 

KW38 HardFault

248 Views
Contributor I

Hello,

Request your kind support for solving HardFault issue on FRDM KW38 board during BLE operations of a custom app (GAP central) with a mobile app (peripheral).

Target hardware: FRDM KW38

SDK: MKW38A512xxx4  version: 2.6.5

Pairing/Bonding and NVM support are enabled: gAppUseBonding_d is 1, gAppUsePairing_is 1, gAppUseNvm_d is 1.

Pairing security mode: gSecurityMode_1_Level_1_c

Operation sequence:

1. KW38 target app scans and connects/bonds with the phone

2. Phone transfers some app data

3. Initiate disconnect from KW38. After disconnection de-bond the phone at KW38.

After a couple of repeated sequence above, the Hardfault happens (screenshot attached). Any issues at BLE stack side?

KW38A_HardFault.jpg

Thank you.

Labels (4)
0 Kudos
7 Replies

8 Views
NXP TechSupport
NXP TechSupport

Hi Prince, I hope you're doing well!

 

I tried replicating the issue, but wasn't able to cause it on purpose. Could you please provide some more information about the program you're running on the KW38? Is it based on a existent SDK example?

 

Take care, best regards,

Sebastian

0 Kudos

8 Views
Contributor I

Hi Sebastian,

Thank you for your time, analyzing this issue.

I used the KW38 Wireless UART example project as the base (the connection handling part is almost the same, except that I have enabled the pairing/bonding). but added with my custom app code. The app works fine/stable on FRDM KW36 (with KW36 SDK/APIs). RAM and Flash usages are within 50% of total space.

Do I need  to refresh SDK components every time, when the SW is build in different PCs? (SDK versions are the same)

Best regards,

Prince

0 Kudos

8 Views
NXP TechSupport
NXP TechSupport

Hi Prince,

 

Thank you for providing more information.

 

I performed another test, this time with two FRDM-KW38 with the wireless UART SDK example configured with Pairing, Bonding, NVM, and Security Mode 1 and Level 1:

 pastedImage_1.png

 

I unfortunately, didn't see the behavior you're reporting, as I tried replicating is as much as possible with these two devices by connecting, sending data through the WUART (first from Central to Peripheral, then from Peripheral to Central), and then triggering a disconnection from the Central Device, and reconnecting.

 

The problem could be related to the version of the SDK being used, as the current latest version for the KW38 is 2.6.5, while the current version for the KW36 is 2.2.3.

Is the code for the two boards exactly the same?

 

Best regards,

Sebastian

0 Kudos

8 Views
Contributor I

Hi Sebastian,

The application code used at both boards are the same. Also, I use latest SDK versions.

I tested again with isolating some parts of my app code, then the issue is not happening. So, the problem could be in the app code. I will analyze it.

Thank you for your support.

0 Kudos

8 Views
NXP TechSupport
NXP TechSupport

Hi Prince,

Please let us know if you have any further issues or need any more information!

Take care, best regards,

Sebastian

0 Kudos

8 Views
Contributor I

Hi Sebastian,

Thank you.

In continuation with testing on FRDM KW38 and KW36, I have one more observation/issue related scan and connect. Test setup is the same as before (reproducible on Wireless UART sample app as well):

1. The peer (phone app) is advertising; FRDM KW36/KW38 gets scan callback and about to connect  to the peer with App_Connect().

2. Now, in peer/phone switch off the BLE

3. App_Connect() call returns success in KW36/38

4. KW36 always gets GenericCallback with event type: gInternalError_c

5. But, in KW38 rarely gets GenericCallback/gInternalError_c in this case. No responses/callbacks from stack side, for most of the times.

Queries:

1. Why is KW38 not responding in this case?

2. Once I get GenericCallback/gInternalError_c (in KW36) what is the right procedure for further/normal operation (further scanning/connect)? I tried BleApp_Start(gGapCentral_c) in KW36, but it did not help finding any devices any more (even when the peer was advertising)

Thanks,

Prince

0 Kudos

8 Views
NXP TechSupport
NXP TechSupport

Hi Prince,

 

I again performed some tests, but did not see the behavior you're reporting.

 

My test procedure was the following, with the pairing, bonding, NVM and security settings you described initially:

 

  • Modify the Wireless UART SDK example to change gKBD_EventPressPB2_c to initiate connection with the scanned device, instead of changing role. This W UART will be used as the Central device (Which will be referred to as "Device A").
  • Programmed another KW38 (which will be referred to as "Device B") with a newly imported Wireless UART, unmodified other than the pairing, bonding, NVM use, and Security settings.
  • Changed role on device B, and started advertising. I started scanning on Device A, and saved Device B's information to a global variable.
  • Removed power from Device B. Tried initiating connection from Device A by pressing PB2.
  • Device A just keeps waiting for Device B to be available and advertising again; when it sees it finally sees Device B again, it automatically connects to it, but the Generic Event being returned is gInternalError_c:
    pastedImage_2.png

 

I attached my modified wireless_uart.c source file to this post.

 

Please let me know if you continue to have issues.

 

Take care, best regards,

Sebastian

0 Kudos