diff options
| -rw-r--r-- | demos/bsp/boards/board.c | 1 | ||||
| -rw-r--r-- | demos/bsp/boards/printf_retarget.c | 35 | ||||
| -rw-r--r-- | demos/host/host_os_none/.cproject | 1 | ||||
| -rw-r--r-- | demos/host/host_os_none/.project | 9 | ||||
| -rw-r--r-- | demos/host/host_os_none/host_os_none.uvopt | 132 | ||||
| -rw-r--r-- | demos/host/host_os_none/host_os_none.uvproj | 32 | ||||
| -rw-r--r-- | demos/host/src/msc_app.c | 13 | ||||
| -rw-r--r-- | vendor/fatfs/diskio.c | 116 | ||||
| -rw-r--r-- | vendor/fatfs/diskio.h | 29 | ||||
| -rw-r--r-- | vendor/fatfs/ffconf.h | 2 | ||||
| -rw-r--r-- | vendor/fatfs/integer.h | 3 |
11 files changed, 308 insertions, 65 deletions
diff --git a/demos/bsp/boards/board.c b/demos/bsp/boards/board.c index c411176da..4a423c5d2 100644 --- a/demos/bsp/boards/board.c +++ b/demos/bsp/boards/board.c @@ -46,6 +46,7 @@ void SysTick_Handler (void) system_ticks++; tusb_tick_tock(); // TODO temporarily } + #endif #if 0 diff --git a/demos/bsp/boards/printf_retarget.c b/demos/bsp/boards/printf_retarget.c index 12303c89e..f940836fd 100644 --- a/demos/bsp/boards/printf_retarget.c +++ b/demos/bsp/boards/printf_retarget.c @@ -38,11 +38,19 @@ #include "board.h" -//-------------------------------------------------------------------- + -// LPCXpresso printf redirection + -//-------------------------------------------------------------------- + #if CFG_PRINTF_TARGET != PRINTF_TARGET_DEBUG_CONSOLE +#if CFG_PRINTF_TARGET == PRINTF_TARGET_UART + #define retarget_getchar() board_uart_getchar() +#elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO + #define retarget_getchar() ITM_ReceiveChar() +#else + #error Target is not implemented yet +#endif + +//--------------------------------------------------------------------+ +// LPCXPRESSO / RED SUITE +//--------------------------------------------------------------------+ #if defined __CODE_RED // Called by bottom level of printf routine within RedLib C library to write // a character. With the default semihosting stub, this would write the character @@ -87,33 +95,20 @@ int __sys_write (int iFileHandle, char *pcBuffer, int iLength) // the character from the UART. int __sys_readc (void) { - uint8_t c; - -#if CFG_PRINTF_TARGET == PRINTF_TARGET_UART - board_uart_recv(&c, 1); -#elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO - c = ITM_ReceiveChar(); -#else - #error Thach, did you forget something -#endif - - return (int)c; + return (int) retarget_getchar(); } +//--------------------------------------------------------------------+ +// KEIL +//--------------------------------------------------------------------+ #elif defined __CC_ARM // keil #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART #define retarget_putc(c) board_uart_send( (uint8_t*) &c, 1); - #define retarget_getchar() board_uart_getchar() #elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO #define retarget_putc(c) ITM_SendChar(c) - #define retarget_getchar() ITM_ReceiveChar() -#else - #error Thach, did you forget something #endif - - struct __FILE { uint32_t handle; }; diff --git a/demos/host/host_os_none/.cproject b/demos/host/host_os_none/.cproject index e7a18e701..2f9eb024a 100644 --- a/demos/host/host_os_none/.cproject +++ b/demos/host/host_os_none/.cproject @@ -1150,6 +1150,7 @@ <option id="gnu.c.compiler.option.misc.other.740032111" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections" valueType="string"/> <option id="gnu.c.compiler.option.include.paths.967143576" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/bsp/lpc43xx/CMSIS_LPC43xx_DriverLib/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/fatfs}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lwip/lwip/src/include/ipv4}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lwip/lpclwip}""/> <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lwip/lwip/src/include}""/> diff --git a/demos/host/host_os_none/.project b/demos/host/host_os_none/.project index d69907840..9060e5541 100644 --- a/demos/host/host_os_none/.project +++ b/demos/host/host_os_none/.project @@ -86,6 +86,11 @@ <locationURI>PARENT-2-PROJECT_LOC/bsp</locationURI> </link> <link> + <name>fatfs</name> + <type>2</type> + <locationURI>PARENT-3-PROJECT_LOC/vendor/fatfs</locationURI> + </link> + <link> <name>lwip</name> <type>2</type> <locationURI>PARENT-3-PROJECT_LOC/vendor/lwip</locationURI> @@ -103,7 +108,7 @@ </linkedResources> <filteredResources> <filter> - <id>1379572492985</id> + <id>1380040598945</id> <name></name> <type>26</type> <matcher> @@ -112,7 +117,7 @@ </matcher> </filter> <filter> - <id>1379572492997</id> + <id>1380040598970</id> <name></name> <type>26</type> <matcher> diff --git a/demos/host/host_os_none/host_os_none.uvopt b/demos/host/host_os_none/host_os_none.uvopt index 1dd238145..f6140d21f 100644 --- a/demos/host/host_os_none/host_os_none.uvopt +++ b/demos/host/host_os_none/host_os_none.uvopt @@ -158,7 +158,24 @@ <Name>-O975 -S0 -C0 -FO7 -FD10000000 -FC800 -FN2 -FF0LPC18xx43xx_512_BA -FS01A000000 -FL080000 -FF1LPC18xx43xx_512_BB -FS11B000000 -FL180000)</Name> </SetRegEntry> </TargetDriverDllRegistry> - <Breakpoint/> + <Breakpoint> + <Bp> + <Number>0</Number> + <Type>0</Type> + <LineNumber>131</LineNumber> + <EnabledFlag>1</EnabledFlag> + <Address>0</Address> + <ByteObject>0</ByteObject> + <HtxType>0</HtxType> + <ManyObjects>0</ManyObjects> + <SizeOfObject>0</SizeOfObject> + <BreakByAccess>0</BreakByAccess> + <BreakIfRCount>0</BreakIfRCount> + <Filename>C:\Users\hathach\Dropbox\tinyusb\workspace\tinyusb\demos\host\src\main.c</Filename> + <ExecCommand></ExecCommand> + <Expression></Expression> + </Bp> + </Breakpoint> <WatchWindow1> <Ww> <count>0</count> @@ -390,7 +407,24 @@ <Name>-O975 -S0 -C0 -FO7 -FD10000000 -FC800 -FN2 -FF0LPC18xx43xx_512_BA -FS01A000000 -FL080000 -FF1LPC18xx43xx_512_BB -FS11B000000 -FL180000)</Name> </SetRegEntry> </TargetDriverDllRegistry> - <Breakpoint/> + <Breakpoint> + <Bp> + <Number>0</Number> + <Type>0</Type> + <LineNumber>131</LineNumber> + <EnabledFlag>1</EnabledFlag> + <Address>0</Address> + <ByteObject>0</ByteObject> + <HtxType>0</HtxType> + <ManyObjects>0</ManyObjects> + <SizeOfObject>0</SizeOfObject> + <BreakByAccess>0</BreakByAccess> + <BreakIfRCount>0</BreakIfRCount> + <Filename>C:\Users\hathach\Dropbox\tinyusb\workspace\tinyusb\demos\host\src\main.c</Filename> + <ExecCommand></ExecCommand> + <Expression></Expression> + </Bp> + </Breakpoint> <WatchWindow1> <Ww> <count>0</count> @@ -434,7 +468,7 @@ <Group> <GroupName>app</GroupName> - <tvExp>1</tvExp> + <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <cbSel>0</cbSel> <RteFlg>0</RteFlg> @@ -444,10 +478,10 @@ <FileType>1</FileType> <tvExp>0</tvExp> <Focus>0</Focus> - <ColumnNumber>0</ColumnNumber> + <ColumnNumber>1</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>1</TopLine> - <CurrentLine>1</CurrentLine> + <TopLine>189</TopLine> + <CurrentLine>200</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\main.c</PathWithFileName> <FilenameWithoutPath>main.c</FilenameWithoutPath> @@ -462,7 +496,7 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>127</TopLine> + <TopLine>94</TopLine> <CurrentLine>145</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\cdc_serial_app.c</PathWithFileName> @@ -478,7 +512,7 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>169</TopLine> + <TopLine>136</TopLine> <CurrentLine>180</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\keyboard_app.c</PathWithFileName> @@ -524,10 +558,10 @@ <FileType>1</FileType> <tvExp>0</tvExp> <Focus>0</Focus> - <ColumnNumber>20</ColumnNumber> + <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> <TopLine>1</TopLine> - <CurrentLine>6</CurrentLine> + <CurrentLine>1</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\msc_app.c</PathWithFileName> <FilenameWithoutPath>msc_app.c</FilenameWithoutPath> @@ -540,10 +574,10 @@ <FileType>1</FileType> <tvExp>0</tvExp> <Focus>0</Focus> - <ColumnNumber>2</ColumnNumber> + <ColumnNumber>30</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>62</TopLine> - <CurrentLine>72</CurrentLine> + <TopLine>63</TopLine> + <CurrentLine>75</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\src\cli.c</PathWithFileName> <FilenameWithoutPath>cli.c</FilenameWithoutPath> @@ -580,10 +614,10 @@ <FileType>1</FileType> <tvExp>0</tvExp> <Focus>0</Focus> - <ColumnNumber>2</ColumnNumber> + <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>0</TopLine> - <CurrentLine>0</CurrentLine> + <TopLine>136</TopLine> + <CurrentLine>142</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\bsp\boards\embedded_artists\board_ea4357.c</PathWithFileName> <FilenameWithoutPath>board_ea4357.c</FilenameWithoutPath> @@ -596,10 +630,10 @@ <FileType>1</FileType> <tvExp>0</tvExp> <Focus>0</Focus> - <ColumnNumber>0</ColumnNumber> + <ColumnNumber>25</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>0</TopLine> - <CurrentLine>0</CurrentLine> + <TopLine>100</TopLine> + <CurrentLine>132</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\bsp\boards\printf_retarget.c</PathWithFileName> <FilenameWithoutPath>printf_retarget.c</FilenameWithoutPath> @@ -734,7 +768,7 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>58</TopLine> + <TopLine>25</TopLine> <CurrentLine>76</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\..\tinyusb\tusb.c</PathWithFileName> @@ -798,7 +832,7 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>494</TopLine> + <TopLine>483</TopLine> <CurrentLine>501</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\..\tinyusb\host\usbh.c</PathWithFileName> @@ -814,7 +848,7 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>598</TopLine> + <TopLine>599</TopLine> <CurrentLine>605</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\..\tinyusb\host\ehci\ehci.c</PathWithFileName> @@ -974,7 +1008,7 @@ <Focus>0</Focus> <ColumnNumber>47</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>2</TopLine> + <TopLine>3</TopLine> <CurrentLine>13</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\..\tinyusb\class\msc_host.c</PathWithFileName> @@ -998,8 +1032,8 @@ <Focus>0</Focus> <ColumnNumber>0</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>0</TopLine> - <CurrentLine>0</CurrentLine> + <TopLine>533</TopLine> + <CurrentLine>553</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\bsp\lpc43xx\CMSIS_LPC43xx_DriverLib\src\lpc43xx_uart.c</PathWithFileName> <FilenameWithoutPath>lpc43xx_uart.c</FilenameWithoutPath> @@ -1090,7 +1124,7 @@ <Group> <GroupName>startup</GroupName> - <tvExp>1</tvExp> + <tvExp>0</tvExp> <tvExpOptDlg>0</tvExpOptDlg> <cbSel>0</cbSel> <RteFlg>0</RteFlg> @@ -1100,10 +1134,10 @@ <FileType>2</FileType> <tvExp>0</tvExp> <Focus>0</Focus> - <ColumnNumber>0</ColumnNumber> + <ColumnNumber>26</ColumnNumber> <tvExpOptDlg>0</tvExpOptDlg> - <TopLine>144</TopLine> - <CurrentLine>158</CurrentLine> + <TopLine>145</TopLine> + <CurrentLine>154</CurrentLine> <bDave2>0</bDave2> <PathWithFileName>..\..\bsp\lpc43xx\startup_keil\startup_LPC43xx.s</PathWithFileName> <FilenameWithoutPath>startup_LPC43xx.s</FilenameWithoutPath> @@ -1112,4 +1146,44 @@ </File> </Group> + <Group> + <GroupName>fatfs</GroupName> + <tvExp>1</tvExp> + <tvExpOptDlg>0</tvExpOptDlg> + <cbSel>0</cbSel> + <RteFlg>0</RteFlg> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>41</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>56</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>1</TopLine> + <CurrentLine>20</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\vendor\fatfs\diskio.c</PathWithFileName> + <FilenameWithoutPath>diskio.c</FilenameWithoutPath> + <RteFlg>0</RteFlg> + <bShared>0</bShared> + </File> + <File> + <GroupNumber>6</GroupNumber> + <FileNumber>42</FileNumber> + <FileType>1</FileType> + <tvExp>0</tvExp> + <Focus>0</Focus> + <ColumnNumber>0</ColumnNumber> + <tvExpOptDlg>0</tvExpOptDlg> + <TopLine>0</TopLine> + <CurrentLine>0</CurrentLine> + <bDave2>0</bDave2> + <PathWithFileName>..\..\..\vendor\fatfs\ff.c</PathWithFileName> + <FilenameWithoutPath>ff.c</FilenameWithoutPath> + <RteFlg>0</RteFlg> + <bShared>0</bShared> + </File> + </Group> + </ProjectOpt> diff --git a/demos/host/host_os_none/host_os_none.uvproj b/demos/host/host_os_none/host_os_none.uvproj index ab31f7945..a88a9e2af 100644 --- a/demos/host/host_os_none/host_os_none.uvproj +++ b/demos/host/host_os_none/host_os_none.uvproj @@ -350,7 +350,7 @@ <MiscControls>--gnu --c99 --diag_suppress=66</MiscControls> <Define>CORE_M4 MCU=MCU_LPC43XX BOARD=BOARD_EA4357 TUSB_CFG_OS=TUSB_OS_NONE</Define> <Undefine></Undefine> - <IncludePath>..\src;..\..\bsp\lpc43xx\CMSIS_LPC43xx_DriverLib\inc;..\..\bsp;..\..\..\tinyusb</IncludePath> + <IncludePath>..\src;..\..\bsp\lpc43xx\CMSIS_LPC43xx_DriverLib\inc;..\..\bsp;..\..\..\tinyusb;..\..\..\vendor\fatfs</IncludePath> </VariousControls> </Cads> <Aads> @@ -613,6 +613,21 @@ </File> </Files> </Group> + <Group> + <GroupName>fatfs</GroupName> + <Files> + <File> + <FileName>diskio.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\vendor\fatfs\diskio.c</FilePath> + </File> + <File> + <FileName>ff.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\vendor\fatfs\ff.c</FilePath> + </File> + </Files> + </Group> </Groups> </Target> <Target> @@ -1262,6 +1277,21 @@ </File> </Files> </Group> + <Group> + <GroupName>fatfs</GroupName> + <Files> + <File> + <FileName>diskio.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\vendor\fatfs\diskio.c</FilePath> + </File> + <File> + <FileName>ff.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\vendor\fatfs\ff.c</FilePath> + </File> + </Files> + </Group> </Groups> </Target> </Targets> diff --git a/demos/host/src/msc_app.c b/demos/host/src/msc_app.c index 76b53147f..1006ad168 100644 --- a/demos/host/src/msc_app.c +++ b/demos/host/src/msc_app.c @@ -47,6 +47,9 @@ #if TUSB_CFG_HOST_MSC +#include "ff.h" +#include "diskio.h" + //--------------------------------------------------------------------+ // MACRO CONSTANT TYPEDEF //--------------------------------------------------------------------+ @@ -54,6 +57,7 @@ //--------------------------------------------------------------------+ // INTERNAL OBJECT & FUNCTION DECLARATION //--------------------------------------------------------------------+ +static FATFS fatfs[TUSB_CFG_HOST_DEVICE_MAX] TUSB_CFG_ATTR_USBRAM; //--------------------------------------------------------------------+ // tinyusb callback (ISR context) @@ -62,6 +66,7 @@ void tusbh_msc_mounted_cb(uint8_t dev_addr) { printf("an msc device is mounted\n"); + //------------- Disk Information -------------// // SCSI VendorID[8] & ProductID[16] from Inquiry Command uint8_t const* p_vendor = tusbh_msc_get_vendor_name(dev_addr); uint8_t const* p_product = tusbh_msc_get_product_name(dev_addr); @@ -77,6 +82,14 @@ void tusbh_msc_mounted_cb(uint8_t dev_addr) tusbh_msc_get_capacity(dev_addr, &last_lba, &block_size); printf("Disk Size: %d MB\n", (last_lba+1)/ ((1024*1024)/block_size) ); printf("LBA 0-0x%X Block Size: %d\n", last_lba, block_size); + + //------------- file system (only 1 LUN support) -------------// + DSTATUS stat = disk_initialize(0); + + if ( disk_is_ready(0) ) + { + f_mount(0, &fatfs[dev_addr-1]); + } } //--------------------------------------------------------------------+ diff --git a/vendor/fatfs/diskio.c b/vendor/fatfs/diskio.c new file mode 100644 index 000000000..85862e47a --- /dev/null +++ b/vendor/fatfs/diskio.c @@ -0,0 +1,116 @@ +/**************************************************************************/ +/*! + @file diskio.c + @author hathach (tinyusb.org) + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2013, hathach (tinyusb.org) + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + This file is part of the tinyusb stack. +*/ +/**************************************************************************/ + +#include "boards/board.h" +#include "tusb.h" + +#include "diskio.h" + +//--------------------------------------------------------------------+ +// INCLUDE +//--------------------------------------------------------------------+ + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ +static volatile DSTATUS disk_state = STA_NOINIT; + +//--------------------------------------------------------------------+ +// INTERNAL OBJECT & FUNCTION DECLARATION +//--------------------------------------------------------------------+ + +//--------------------------------------------------------------------+ +// IMPLEMENTATION +//--------------------------------------------------------------------+ + +//pdrv Specifies the physical drive number. +DSTATUS disk_initialize ( BYTE pdrv ) +{ + return disk_state; +} + +DSTATUS disk_status (BYTE pdrv) +{ + return disk_state; +} + +//pdrv +// Specifies the physical drive number. +//buff +// Pointer to the byte array to store the read data. The size of buffer must be in sector size * sector count. +//sector +// Specifies the start sector number in logical block address (LBA). +//count +// Specifies number of sectors to read. The value can be 1 to 128. Generally, a multiple sector transfer request +// must not be split into single sector transactions to the device, or you may not get good read performance. +DRESULT disk_read (BYTE pdrv, BYTE*buff, DWORD sector, BYTE count) +{ + +} + + +DRESULT disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, BYTE count) +{ + +} + +DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff) +{ + +} + +//DWORD get_fattime (void) +//{ +// union { +// struct { +// DWORD second : 5; +// DWORD minute : 6; +// DWORD hour : 5; +// DWORD day_in_month : 5; +// DWORD month : 4; +// DWORD year : 7; +// }; +// +// DWORD value +// } timestamp = +// { +// .year = (2013-1980), +// .month = 10, +// .day_in_month = 21, +// }; +//} diff --git a/vendor/fatfs/diskio.h b/vendor/fatfs/diskio.h index 580fbf747..5a69f69d6 100644 --- a/vendor/fatfs/diskio.h +++ b/vendor/fatfs/diskio.h @@ -13,7 +13,7 @@ extern "C" { #define _USE_IOCTL 1 /* 1: Enable disk_ioctl fucntion */ #include "integer.h" - +#include <stdbool.h> /* Status of Disk Functions */ typedef BYTE DSTATUS; @@ -28,17 +28,6 @@ typedef enum { } DRESULT; -/*---------------------------------------*/ -/* Prototypes for disk control functions */ - - -DSTATUS disk_initialize (BYTE pdrv); -DSTATUS disk_status (BYTE pdrv); -DRESULT disk_read (BYTE pdrv, BYTE*buff, DWORD sector, BYTE count); -DRESULT disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, BYTE count); -DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff); - - /* Disk Status Bits (DSTATUS) */ #define STA_NOINIT 0x01 /* Drive not initialized */ #define STA_NODISK 0x02 /* No medium in the drive */ @@ -80,6 +69,22 @@ DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff); #define CT_SDC (CT_SD1|CT_SD2) /* SD */ #define CT_BLOCK 0x08 /* Block addressing */ +/*---------------------------------------*/ +/* Prototypes for disk control functions */ + + +DSTATUS disk_initialize (BYTE pdrv); +DSTATUS disk_status (BYTE pdrv); +DRESULT disk_read (BYTE pdrv, BYTE*buff, DWORD sector, BYTE count); +DRESULT disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, BYTE count); +DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff); + +static inline bool disk_is_ready(BYTE pdrv); +static inline bool disk_is_ready(BYTE pdrv) +{ + return (disk_status(pdrv) & (STA_NOINIT | STA_NODISK)) == 0; +} + #ifdef __cplusplus } diff --git a/vendor/fatfs/ffconf.h b/vendor/fatfs/ffconf.h index c5cbfa88f..87af580a9 100644 --- a/vendor/fatfs/ffconf.h +++ b/vendor/fatfs/ffconf.h @@ -20,7 +20,7 @@ / data transfer. This reduces memory consumption 512 bytes each file object. */ -#define _FS_READONLY 0 /* 0:Read/Write or 1:Read only */ +#define _FS_READONLY 1 /* 0:Read/Write or 1:Read only */ /* Setting _FS_READONLY to 1 defines read only configuration. This removes / writing functions, f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename, / f_truncate and useless f_getfree. */ diff --git a/vendor/fatfs/integer.h b/vendor/fatfs/integer.h index 16ad40823..37cda0e07 100644 --- a/vendor/fatfs/integer.h +++ b/vendor/fatfs/integer.h @@ -17,7 +17,10 @@ typedef int INT; typedef unsigned int UINT; /* These types must be 8-bit integer */ +#ifndef LPC_TYPES_H // avoid typedef redefinition in lpc_types.h typedef char CHAR; +#endif + typedef unsigned char UCHAR; typedef unsigned char BYTE; |
