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.


Part Number: TM4C1294NCPDT


I struggled to find references in TI document and FATFS website to explain the difference between FATSD and FASDRAW.

The fatsdusbcopy which is based on?



  • Hello Richard,

    I am not certain either for that - I don't think that is part of TivaWare. If it's part of TI-RTOS for Tiva-C we were not involved in building that and the offering provided isn't something I can help answer. Though I don't really know who to direct this to either.

    As far as:

    The fatsdusbcopy which is based on?

    From what I can see it it is using the USBMSCHFatFs driver and that driver seems to be using just standard FatFs:

     *  The USBMSCHFatFs header file should be included in an application as follows:
     *  @code
     *  #include <ti/drivers/USBMSCHFatFs.h>
     *  @endcode
     *  # Operation #
     *  The USBMSCHFatFs driver is a driver designed to hook into FatFs. It
     *  implements a set of functions that FatFs needs to call to perform basic
     *  block data transfers.
     *  This driver is designed to work with the USB Library. Because it is running
     *  in host mode, we need to add protection when accessing the USB Library. A
     *  gate was added to prevent the task servicing the USB library to preempt any
     *  other task accessing the USB Library.
     *  Once the driver has been opened, the application may used the FatFs APIs or
     *  the standard C runtime file I/O calls (fopen, fclose, etc...). Once the
     *  driver has been closed, ensure the application does NOT make any file I/O
     *  calls.
     *  ## Opening the driver #
     *  @code
     *  USBMSCHFatFs_Handle      handle;
     *  USBMSCHFatFs_Params      params;
     *  USBMSCHFatFs_Params_init(&params);
     *  params.servicePriority  = somePriority;
     *  handle = USBMSCHFatFs_open(someUSBMSCHFatFs_configIndexValue, &params);
     *  if (!handle) {
     *      System_printf("USBMSCHFatFs did not open");
     *  }
     *  @endcode
     *  # Implementation #
     *  This module serves as the main interface for TI-RTOS
     *  applications. Its purpose is to redirect the module's APIs to specific
     *  peripheral implementations which are specified using a pointer to a
     *  USBMSCHFatFs_FxnTable.
     *  The USBMSCHFatFs driver interface module is joined (at link
     *  time) to a NULL-terminated array of USBMSCHFatFs_Config data structures
     *  named *USBMSCHFatFs_config*. *USBMSCHFatFs_config* is implemented in the
     *  application with each entry being an instance of a USBMSCHFatFs peripheral.
     *  Each entry in *USBMSCHFatFs_config* contains a:
     *  - (USBMSCHFatFs_FxnTable *) to a set of functions that implement a
     *    USBMSCHFatFs peripheral
     *  - (void *) data object that is associated with the USBMSCHFatFs_FxnTable
     *  - (void *) hardware attributes that are associated to the
     *    USBMSCHFatFs_FxnTable

    Best Regards,

    Ralph Jacobi

  • The FATFS use STDIO.h file command where FATFSRAW access to FATFS command not STDIO.h within the TI demo code. This issue not related to FATFS 

    The USBMSCHFatFs use stdio file command not FATFS direct command. 

    Not sure what is pro and con doing this. 

  • Hi Richard,

    Unfortunately I don't either - I just don't have experience with SD cards or FATFS, and I've never looked into the TI-RTOS demos for SD cards.

    Sorry for my lack of ability to help here...

    Best Regards,

    Ralph Jacobi