DA14706 reporting an incompatible SWC level of 0

I am brining up a prototype board with a DA14706 A1 cpu.  Serial and jtag loading to qspi both fail after the initial bootloader is loaded.   Loading an example application to RAM and debugging it results in an error in pre startup here:

bool hw_sys_is_compatible_chip(void)
{
#ifndef POPULATE_DEVICE_INFO
        return true;
#else
        if (hw_sys_device_info_check(DEVICE_CHIP_ID_MASK, DEVICE_CHIP_ID_2798)) {
                if (hw_sys_device_info_check(DEVICE_REVISION_MASK, DEVICE_REV_A) &&
                    hw_sys_device_info_check(DEVICE_SWC_MASK, DEVICE_SWC_1)) {
                        return true;
                }
        } else if (hw_sys_device_info_check(DEVICE_CHIP_ID_MASK, DEVICE_CHIP_ID_3107)) {
                if (hw_sys_device_info_check(DEVICE_REVISION_MASK, DEVICE_REV_A) &&
                    hw_sys_device_info_check(DEVICE_SWC_MASK, DEVICE_SWC_0)) {
                        return true;
                }
        }

        return false;
#endif
}

This is called from SystemInitPre()

When this is executed the chip id evaluates to 2798 and the revision mask to A.  However, the SWC evaluates to SWC_0 which causes the assertion to fail and the device to hang.  Forcing it to return true always causes it to hang later on in an NMI.

I am at a loss.

  • Hi There,

    Thank you for posting your question online.
    I have reach out to you directly via Personal Message.
    Please check your inbox.

    Best Regards,
    OV_Renesas

  • Hi There,

    We saw that you are using SDK v10.4.2 which is the old SDK version.
    Could you please test this on your side, with the latest SDK v10.2.6.49.
    As for the assertion, this implies that the chip variant used is not supported by SDK. Maybe you are using an old chip variant which is no longer available. Could you please check on top of the IC the written chip variant?
    Running the SDK on a non-supported chip variant might end up crashing the device as most of the settings applied should not match.
    The chip ID 2798 corresponds to revision AA which is quite old. When did you order this chip?

    Best Regards,
    OV_Renesas

  • I am using 10.2.6.49,  I do not have 10.4.2 installed.  

    The chip is marked as an DA14706 A1 2104NGA8

    We ordered about 3 months ago.

    Do i need an older version of the SDK to bring these chips up?  If so, where can I get it.  These are prototype dev boards...there are only 5 and swapping out the chip at this point would not be plausible...they were also VERY expensive to had made and reworking them would be difficult.  

    Any advice would be appreciated.  I do not need a production ready solution...just something to validate the pcb layout and I can source newer chips with the production verison.


  • Hi There,

    Thank you for the reply.

    I am using 10.2.6.49,  I do not have 10.4.2 installed.  

    Thank you for the clarification.
    Let me check on this with our BLE team and I will get back to you as soon as possible.

    Best Regards,
    OV_Renesas

  • I have solved the issue.  The first is a bug in the sdk.  The compatibility check incorrectly rejects a SWC_0 when the chip ID is 2798.    Correcting this allows the device to execute.  I actually fixed this over a week ago but there is another issue in the SDK in that if you have qspi flash enabled but not connected it just spins in a config loop (instead of timing out and reporting an error).  

    If there is a repository for the SDK i can do a PR.   

  • In order to fully correct the issue I had to rebuild the uartboot.bin with the fix, and then figure out how to get the python scripts to actually use it instead of the embedded one.  

  • HI There,

    Thank you for the reply.
    Glad you were able to solve your issue. 
    Could you please share with us the fix/changes you did in order to solve your issue?

    Best Regards,
    OV_Renesas

  • in the SDK:

    bool hw_sys_is_compatible_chip(void)
    {
    #ifndef POPULATE_DEVICE_INFO
    return true;
    #else
    if (hw_sys_device_info_check(DEVICE_CHIP_ID_MASK, DEVICE_CHIP_ID_2798)) {
    if (hw_sys_device_info_check(DEVICE_REVISION_MASK, DEVICE_REV_A)
    //&& hw_sys_device_info_check(DEVICE_SWC_MASK, DEVICE_SWC_1) <--since we dont know what SWC are actually okay this check is nonsensical
    ) 
    {
    return true;
    }
    } else if (hw_sys_device_info_check(DEVICE_CHIP_ID_MASK, DEVICE_CHIP_ID_3107)) {
    if (hw_sys_device_info_check(DEVICE_REVISION_MASK, DEVICE_REV_A) &&
    hw_sys_device_info_check(DEVICE_SWC_MASK, DEVICE_SWC_0)) {
    return true;
    }
    }
    
    return false;
    #endif
    }


    I did not attempt to implement a proper timeout in the flash detection

    I then rebuilt the uart boot loader using this change.

    Because the cli / python flash tool uses the embedded uartboot.bin (instead of the one in the folder) I also had to edit the python to default to the one in the folder so it would use it with my change.

  • Hi There,

    Thank you for the reply.
    Glad you were able to solve this issue on your side.
    After further checking I have found out that I have shared wrong information. 
    We checked the older revisions of the Datasheet and found out:
    All TSMC chip versions are 'A' as far as we can see (DS Rev 1.2 to DS Rev 3.0).
    But the SWC code has changed from 0x0 (DS Rev 1.2) to 0x01 (DS Rev 2.0 and higher)

    From the screenshot below, it appears that the TSMC (D2798) SWC =0x0 indeed is not supported anymore by the SDK
    Only SWC = 0x01 is supported by the SDK.
    It has changed somewhere mid 2021
    Looking at the chip's Datecode (2104), it probably has SWC = 0x0.
    The other available SDK (SDK-10.2.4.44) on the Renesas site also doesn't support TSMC SWC 0x0. 

    Please check the following REG contents of the used chip:


    With your workaround (not checking the SWC code) it seems to work, but we have not tested/validated the SDK with this chip variant. So, it cannot be supported by our side.
    Please make sure that any other devices you will create with the DA14706 will not have the same chip variant. 
    If you have ordered a lot of DA14706 devices with the TSMC (D2798) chip variant, please contact your local distributor or sales spokesman.
    Please refer here: Sales & Distributor Directory | Renesas

    Apologies for any incovience.

    Best Regards,
    OV_Renesas


  • Yes, as stated at the beginning its SWC version on the die is 0.   

    "we have not tested/validated the SDK with this chip variant. So, it cannot be supported by our side." I am not sure this is the answer you want to put on a public forum.

    An SDK change should not break compatibility with a chip and a chip should not be in distribution without sdk support.

    You are going to end up with serious reputation damaging quality control issues (these chips have the same part number as "good" ones).  

    What are the chip markings and date ranges I need to ensure the chip is functioning?