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.

RTOS/CC2640: Hard Fault: FORCED: BUSFAULT: PRECISERR.Data Access Error. Address = 0xffffffff

Part Number: CC2640

Tool/software: TI-RTOS

Can anyone tell me how to further proceed with fixing this error in my ProjectZero based project, after you analyze the below screen shots?

From what I see, why is it pointing to 0xffffffff?

I have lots of free space in project (optimized at level 4) as shown below and the BLE 2.2.1 stack project does too:

Thanks,

Dale

  • Hi,

    Can you elaborate what additional code have you added on top of project zero?
  • Hi Christin,

    I have done the following:

    1. Added the ability to access external flash for data purposes as per:
    2. Removed Data and LED services.
    3. Renamed Button service to Halo service and modified it so that there are a total of 19 characteristics.
    4. Added GATT_PROP_WRITE to all 19 of those characteristics.
    5. Modified the board files to match the pcb I designed for a CC2640 precertified daughterboard
    6. Added functions to monitor two digital inputs and write to external flash and turn Advertising On and OFF based on the status of those inputs.
    7. Changed stack sizes as above
    8. Disabled DGAP_BOND_MGR and uart logging to save space as per item 1 above
    9. Added code in user_HaloService_ValueChangeHandler to handle various communications with an ios App I wrote.
    10. //in cfg file
      //m3Hwi.enableException = true;
      m3Hwi.enableException = false; //dale to false
      //m3Hwi.excHandlerFunc = null;
      m3Hwi.excHookFunc = "&execHandlerHook"; //dale added

    That is pretty much it.

    Dale

  • Any more ideas to get me going again on this?   I am at a standstill :(

    Thanks,
    Dale

  • Is it possible for you to just do one modification at a time and check what's causing it?

    Ex: instead of add all 19 char at a time, try to add 3 and 3...etc and see when will it break.
  • Hi Christin,

    Looks like that was the issue, I finally found this in ble_user_config.h:

    // Make sure there's enough heap needed for BLE connection Tx buffers, which
    // is based on MAX_PDU_SIZE and MAX_NUM_PDU configured by the application.
    // The heap memory needed for BLE connection Tx buffers should not be more
    // that 1/3 of the total ICall heap size (HEAPMGR_SIZE).
    //
    //  Notes: Over the Air (OTA) PDU Size = 27, and LL Header Size = 14
    //         If HEAPMGR_SIZE = 0 then auto-size heap is being used
    //
    #if ( MAX_NUM_BLE_CONNS > 0 ) && !defined( NO_HEAPSIZE_VALIDATE ) && ( HEAPMGR_SIZE != 0 )
      #if  ( ( ( ( ( MAX_PDU_SIZE / 27 ) + 1 ) * MAX_NUM_PDU ) * ( 27 + 14 ) ) > ( HEAPMGR_SIZE / 3 ) )
        #warning Not enough heap for configured MAX_NUM_PDU and MAX_PDU_SIZE! Adjust HEAPMGR_SIZE.
      #endif
    #endif

    I ended up deciding to reduce my number of characteristics to 4 and not have to change the heapsize from its default.  Getting all my data to the ios device is a little more complicated but I do save some memory on the CC2640 this way.

    Thanks,

    Dale