This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR2243: CPU Fault during RF Init calibration

Part Number: AWR2243
Other Parts Discussed in Thread: AWR1243

Hi TI,

 

During recent testing with ES1.1 AWR2243 MMIC, we ran into BSS CPU fault that resulted in initial calibration failure as well as Host IRQ timeout for Profile config.

 

I have attached the variable watch data that provides the CPU fault details as well as results of initial calibration.

 

The calibration results also indicate SYNTH VCO1 calibration failed along with PD and TX power. Is there a possibility that the BSS CPU fault triggered by SYNTH VCO calibration failure like we saw with AWR1243 MMICs? The sensor went through AB swap as it had originally failed for EDMA BIST failure. However, after the AB swap we started seeing this issue with the RF board that has the good MMIC.

 The sensors are running with DFP 2.2.1.2 and have factory calibration done with same FW version.

 Could you please take a look at the CPU fault and let us know what you find?

 

Thanks,

Kaushal

gDeviceSpiBootUpComp.unsigned char.1 Byte(s).1 .0x01  - .
gDevicePowerUpComp.unsigned char.1 Byte(s).1 .0x01  - .
BssCpuFaultReport.rlCpuFault.32 Byte(s)..
faultType.unsigned char.1 Byte(s).3 .0x03  - .
errorCode.unsigned char.1 Byte(s).0 .0x00 .
lineNum.unsigned short int.2 Byte(s).1702 .0x06A6 .
faultLR.unsigned int.4 Byte(s).103962 .0x0001961A .
faultPrevLR.unsigned int.4 Byte(s).0 .0x00000000 .
faultSpsr.unsigned int.4 Byte(s).536871199 .0x2000011F .
faultSp.unsigned int.4 Byte(s).134281472 .0x0800F900 .
faultAddr.unsigned int.4 Byte(s).0 .0x00000000 .
faultErrStatus.unsigned short int.2 Byte(s).65535 .0xFFFF .
faultErrSrc.unsigned char.1 Byte(s).255 .0xFF  - ÿ.
faultAxiErrType.unsigned char.1 Byte(s).255 .0xFF  - ÿ.
faultAccType.unsigned char.1 Byte(s).255 .0xFF  - ÿ.
faultRecovType.unsigned char.1 Byte(s).255 .0xFF  - ÿ.
reserved1.unsigned short int.2 Byte(s).0 .0x0000 .
measRing.rfInit..80 Byte(s)..
elements[3]..60 Byte(s)..
elements[0].RFC_RfInit.20 Byte(s)..
un_calibStatus..4 Byte(s)..
bitfield..4 Byte(s)..
RESERVED_1.unsigned char.1 Bits.0 .0x00 .
APLL_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO1_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO2_tuning.unsigned char.1 Bits.0 .0x00 .
LODIST_calibration.unsigned char.1 Bits.0 .0x00 .
RX_ADC_DC_offset_calibration.unsigned char.1 Bits.0 .0x00 .
HPF_cutoff_calibration.unsigned char.1 Bits.0 .0x00 .
LPF_cutoff_calibration.unsigned char.1 Bits.0 .0x00 .
Peak_detector_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Power_calibration.unsigned char.1 Bits.0 .0x00 .
RX_gain_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Phase_calibration.unsigned char.1 Bits.0 .0x00 .
RX_IQMM_calibration.unsigned char.1 Bits.0 .0x00 .
RESERVED_3.unsigned int.19 Bits.0 .0x00000000 .
u32_value.unsigned int.4 Byte(s).0 .0x00000000 .
un_calibUpdate..4 Byte(s)..
bitfield..4 Byte(s)..
RESERVED_1.unsigned char.1 Bits.0 .0x00 .
APLL_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO1_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO2_tuning.unsigned char.1 Bits.0 .0x00 .
LODIST_calibration.unsigned char.1 Bits.0 .0x00 .
RX_ADC_DC_offset_calibration.unsigned char.1 Bits.0 .0x00 .
HPF_cutoff_calibration.unsigned char.1 Bits.0 .0x00 .
LPF_cutoff_calibration.unsigned char.1 Bits.0 .0x00 .
Peak_detector_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Power_calibration.unsigned char.1 Bits.0 .0x00 .
RX_gain_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Phase_calibration.unsigned char.1 Bits.0 .0x00 .
RX_IQMM_calibration.unsigned char.1 Bits.0 .0x00 .
RESERVED_3.unsigned int.19 Bits.0 .0x00000000 .
u32_value.unsigned int.4 Byte(s).0 .0x00000000 .
temperature.short int.2 Byte(s).0 .0x0000 .
reserved0.unsigned short int.2 Byte(s).0 .0x0000 .
timeStamp.unsigned int.4 Byte(s).0 .0x00000000 .
reserved1.unsigned int.4 Byte(s).0 .0x00000000 .
elements[1].RFC_RfInit.20 Byte(s)..
un_calibStatus..4 Byte(s)..
bitfield..4 Byte(s)..
RESERVED_1.unsigned char.1 Bits.0 .0x00 .
APLL_tuning.unsigned char.1 Bits.1 .0x01  - .
SYNTH_VCO1_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO2_tuning.unsigned char.1 Bits.0 .0x00 .
LODIST_calibration.unsigned char.1 Bits.0 .0x00 .
RX_ADC_DC_offset_calibration.unsigned char.1 Bits.1 .0x01  - .
HPF_cutoff_calibration.unsigned char.1 Bits.1 .0x01  - .
LPF_cutoff_calibration.unsigned char.1 Bits.1 .0x01  - .
Peak_detector_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Power_calibration.unsigned char.1 Bits.0 .0x00 .
RX_gain_calibration.unsigned char.1 Bits.1 .0x01  - .
TX_Phase_calibration.unsigned char.1 Bits.0 .0x00 .
RX_IQMM_calibration.unsigned char.1 Bits.1 .0x01  - .
RESERVED_3.unsigned int.19 Bits.262144 .0x00040000 .
u32_value.unsigned int.4 Byte(s).2147488994 .0x800014E2 .
un_calibUpdate..4 Byte(s)..
bitfield..4 Byte(s)..
RESERVED_1.unsigned char.1 Bits.0 .0x00 .
APLL_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO1_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO2_tuning.unsigned char.1 Bits.0 .0x00 .
LODIST_calibration.unsigned char.1 Bits.0 .0x00 .
RX_ADC_DC_offset_calibration.unsigned char.1 Bits.1 .0x01  - .
HPF_cutoff_calibration.unsigned char.1 Bits.1 .0x01  - .
LPF_cutoff_calibration.unsigned char.1 Bits.1 .0x01  - .
Peak_detector_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Power_calibration.unsigned char.1 Bits.0 .0x00 .
RX_gain_calibration.unsigned char.1 Bits.1 .0x01  - .
TX_Phase_calibration.unsigned char.1 Bits.0 .0x00 .
RX_IQMM_calibration.unsigned char.1 Bits.1 .0x01  - .
RESERVED_3.unsigned int.19 Bits.0 .0x00000000 .
u32_value.unsigned int.4 Byte(s).5344 .0x000014E0 .
temperature.short int.2 Byte(s).27 .0x001B .
reserved0.unsigned short int.2 Byte(s).0 .0x0000 .
timeStamp.unsigned int.4 Byte(s).0 .0x00000000 .
reserved1.unsigned int.4 Byte(s).15 .0x0000000F .
elements[2].RFC_RfInit.20 Byte(s)..
un_calibStatus..4 Byte(s)..
bitfield..4 Byte(s)..
RESERVED_1.unsigned char.1 Bits.0 .0x00 .
APLL_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO1_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO2_tuning.unsigned char.1 Bits.0 .0x00 .
LODIST_calibration.unsigned char.1 Bits.0 .0x00 .
RX_ADC_DC_offset_calibration.unsigned char.1 Bits.0 .0x00 .
HPF_cutoff_calibration.unsigned char.1 Bits.0 .0x00 .
LPF_cutoff_calibration.unsigned char.1 Bits.0 .0x00 .
Peak_detector_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Power_calibration.unsigned char.1 Bits.0 .0x00 .
RX_gain_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Phase_calibration.unsigned char.1 Bits.0 .0x00 .
RX_IQMM_calibration.unsigned char.1 Bits.0 .0x00 .
RESERVED_3.unsigned int.19 Bits.0 .0x00000000 .
u32_value.unsigned int.4 Byte(s).0 .0x00000000 .
un_calibUpdate..4 Byte(s)..
bitfield..4 Byte(s)..
RESERVED_1.unsigned char.1 Bits.0 .0x00 .
APLL_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO1_tuning.unsigned char.1 Bits.0 .0x00 .
SYNTH_VCO2_tuning.unsigned char.1 Bits.0 .0x00 .
LODIST_calibration.unsigned char.1 Bits.0 .0x00 .
RX_ADC_DC_offset_calibration.unsigned char.1 Bits.0 .0x00 .
HPF_cutoff_calibration.unsigned char.1 Bits.0 .0x00 .
LPF_cutoff_calibration.unsigned char.1 Bits.0 .0x00 .
Peak_detector_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Power_calibration.unsigned char.1 Bits.0 .0x00 .
RX_gain_calibration.unsigned char.1 Bits.0 .0x00 .
TX_Phase_calibration.unsigned char.1 Bits.0 .0x00 .
RX_IQMM_calibration.unsigned char.1 Bits.0 .0x00 .
RESERVED_3.unsigned int.19 Bits.0 .0x00000000 .
u32_value.unsigned int.4 Byte(s).0 .0x00000000 .
temperature.short int.2 Byte(s).0 .0x0000 .
reserved0.unsigned short int.2 Byte(s).0 .0x0000 .
timeStamp.unsigned int.4 Byte(s).0 .0x00000000 .
reserved1.unsigned int.4 Byte(s).0 .0x00000000 .
ctrl..20 Byte(s)..
spCount[3]..12 Byte(s)..
spCount[0].unsigned int.4 Byte(s).0 .0x00000000 .
spCount[1].unsigned int.4 Byte(s).1 .0x00000001 .
spCount[2].unsigned int.4 Byte(s).0 .0x00000000 .
filledElements.unsigned int.4 Byte(s).1 .0x00000001 .
currIdx.unsigned int.4 Byte(s).1 .0x00000001 .
ar12Cfg.mmicInitCalibStatus..1 Byte(s).1 .INIT_CALIB_FAIL .
ar12Cfg.factoryCalibDone.unsigned char.1 Byte(s).1 .0x01  - .

  • Hi Kaushal,

    Is IQMM Calibration is enabled in the Factory calibration data or during the RF_init call?

    Based on the given CPU fault log and if it occurs during the ProfileConfig API then at that point BSS is trying to update IQMM LUT based on profile (if pfCalLutUpdate is set in profileConfig API).

    Regards,

    Jitendra

    1. FW version seems to to old 2.2.1.x (not RTM version)
    2. What is the status of calibration store, restore AE report ? RX IQMM cal is passed ?
    3. looks like there is an issue with calibration data store and restore format used by the customer. AWR2243 calibData is not backward compatible with 1243. 
    4. Please provide the sequence so we can reproduce at our end.
    5. Request customer to share the calibration stored data so we can analyse here. 
  • Jitendra,

    Please see the configuration of calibration from Veoneer. IQMM calibration is restored and not done at RF Init

     

    The RF Init at factory is done with the following calibrations ON:

       .CalibMask.u.Elem.un_InitMask.bitfield.LODIST           = 1u,

       .CalibMask.u.Elem.un_InitMask.bitfield.RX_ADC_DC_OFFSET = 1u,

       .CalibMask.u.Elem.un_InitMask.bitfield.HPF_CUTOFF       = 1u,

       .CalibMask.u.Elem.un_InitMask.bitfield.LPF_CUTOFF       = 1u,

       .CalibMask.u.Elem.un_InitMask.bitfield.PEAK_DETECTOR    = 1u,

       .CalibMask.u.Elem.un_InitMask.bitfield.TX_PWR           = 1u,

       .CalibMask.u.Elem.un_InitMask.bitfield.RX_GAIN          = 1u,

       .CalibMask.u.Elem.un_InitMask.bitfield.TX_PHASE         = 1u,

       .CalibMask.u.Elem.un_InitMask.bitfield.RX_IQMM          = 1u,

     

    The RF Init Configuration on field is done with following calibrations ON: This is because of factory calibration restore.

       .CalibMask.u.Elem.un_InitMask.bitfield.LODIST           = 1u,   .CalibMask.u.Elem.un_InitMask.bitfield.RX_ADC_DC_OFFSET = 0u,   .CalibMask.u.Elem.un_InitMask.bitfield.HPF_CUTOFF       = 0u,   .CalibMask.u.Elem.un_InitMask.bitfield.LPF_CUTOFF       = 0u,   .CalibMask.u.Elem.un_InitMask.bitfield.PEAK_DETECTOR    = 1u,   .CalibMask.u.Elem.un_InitMask.bitfield.TX_PWR           = 1u,   .CalibMask.u.Elem.un_InitMask.bitfield.RX_GAIN          = 0u,   .CalibMask.u.Elem.un_InitMask.bitfield.TX_PHASE         = 1u,   .CalibMask.u.Elem.un_InitMask.bitfield.RX_IQMM          = 0u,

     

    The Calibration Data store structure is as follows:

     

    Chunk

    Offset

    Length (Bytes)

    Value

    AWR2243 (LODIST Enable)

    0

    0

    4

    0x000014E0u

    0x000014F0u

    4

    4

    0x000014E0u

    0x000014F0u

    8

    4

    0x0000000Fu

    0x0000000Fu

    12

    4

    0x00000000u

    0x00000000u

    16

    2

    CAL_TEMPERATURE value from store

    CAL_TEMPERATURE value from store

    18

    14

    Reserved = 0x0

    Reserved = 0x0

    32

    20

    20 bytes as is from store

    20 bytes as is from store //Includes LODIST codes

    52

    48

    Reserved = 0x0

    Reserved = 0x0

    100

    112

    112 bytes as is from store

    112 bytes as is from store

    212

    12

    Reserved 0

    Reserved 0

    1

    224

    224

    Reserved 0

    Reserved 0

    2

    448

    224

    Reserved 0

    Reserved 0

     

     Can you check if this structure is changed between AWR1243 and AWR2243. I compared it and didn't see but probably the size of calibration structure is bigger in AWR2243.

    Please note that Veoneer is using optimized calibration structure and sets reserved bytes to 0 as per the table below, so if any of the reserved bytes are now used to store calibration structure, this could be a problem.

    Satyajit,

    Did the RF Init after Calib restore had RX IQMM calibration status as failed?

    Regards,

    Kaushal

  • THanks, Kaushal. I'll follow this internally with the team.