- added support for booting from SD-card for the DK-TM4C123G demo.
git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@74 5dc33758-31d5-4daf-9ae8-b24bf3d40d73
This commit is contained in:
parent
603dbb19e2
commit
754d8ecb5c
Binary file not shown.
Binary file not shown.
|
@ -108,15 +108,15 @@
|
|||
* firmware update is completed by the bootloader.
|
||||
*/
|
||||
/** \brief Enable/disable support for firmware updates from a locally attached storage.*/
|
||||
#define BOOT_FILE_SYS_ENABLE (0)
|
||||
#define BOOT_FILE_SYS_ENABLE (1)
|
||||
/** \brief Enable/disable logging messages during firmware updates. */
|
||||
#define BOOT_FILE_LOGGING_ENABLE (0)
|
||||
#define BOOT_FILE_LOGGING_ENABLE (1)
|
||||
/** \brief Enable/disable a hook function that is called upon detection of an error. */
|
||||
#define BOOT_FILE_ERROR_HOOK_ENABLE (0)
|
||||
#define BOOT_FILE_ERROR_HOOK_ENABLE (1)
|
||||
/** \brief Enable/disable a hook function that is called at the start of the update. */
|
||||
#define BOOT_FILE_STARTED_HOOK_ENABLE (0)
|
||||
#define BOOT_FILE_STARTED_HOOK_ENABLE (1)
|
||||
/** \brief Enable/disable a hook function that is called at the end of the update. */
|
||||
#define BOOT_FILE_COMPLETED_HOOK_ENABLE (0)
|
||||
#define BOOT_FILE_COMPLETED_HOOK_ENABLE (1)
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
|
|
|
@ -230,7 +230,7 @@ void CopServiceHook(void)
|
|||
* Constant data declarations
|
||||
****************************************************************************************/
|
||||
/** \brief Firmware filename. */
|
||||
static const blt_char firmwareFilename[] = "/demoprog_ek_lm3s6965.srec";
|
||||
static const blt_char firmwareFilename[] = "/demoprog_dk_tm4c123g.srec";
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<Factory>Workspace</Factory>
|
||||
<Session>
|
||||
|
||||
<NodeDict><ExpandedNode>tm4c123g</ExpandedNode><ExpandedNode>tm4c123g/Boot</ExpandedNode><ExpandedNode>tm4c123g/Libraries</ExpandedNode><ExpandedNode>tm4c123g/Output</ExpandedNode><ExpandedNode>tm4c123g/Source</ExpandedNode><ExpandedNode>tm4c123g/Source/ARMCM4_TM4C</ExpandedNode><ExpandedNode>tm4c123g/Source/ARMCM4_TM4C/IAR</ExpandedNode></NodeDict></Session>
|
||||
<NodeDict><ExpandedNode>tm4c123g</ExpandedNode><ExpandedNode>tm4c123g/Boot</ExpandedNode><ExpandedNode>tm4c123g/Boot/lib</ExpandedNode><ExpandedNode>tm4c123g/Boot/lib/fatfs</ExpandedNode><ExpandedNode>tm4c123g/Libraries</ExpandedNode><ExpandedNode>tm4c123g/Output</ExpandedNode><ExpandedNode>tm4c123g/Source</ExpandedNode></NodeDict></Session>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
|
@ -35,14 +35,14 @@
|
|||
|
||||
|
||||
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>52</YPos2><SelStart2>3081</SelStart2><SelEnd2>3081</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\ARMCM4_TM4C\flash.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>18</YPos2><SelStart2>1435</SelStart2><SelEnd2>1435</SelEnd2></Tab><ActiveTab>1</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\blt_conf.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>48</YPos2><SelStart2>4103</SelStart2><SelEnd2>4103</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\ARMCM4_TM4C\IAR\vectors.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>42</YPos2><SelStart2>2414</SelStart2><SelEnd2>2414</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\xcp.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>1219</YPos2><SelStart2>43432</SelStart2><SelEnd2>43439</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\ARMCM4_TM4C\uart.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>111</YPos2><SelStart2>6242</SelStart2><SelEnd2>6242</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\assert.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>17</YPos2><SelStart2>3091</SelStart2><SelEnd2>3091</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\backdoor.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>116</YPos2><SelStart2>6882</SelStart2><SelEnd2>6882</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\com.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>143</YPos2><SelStart2>7570</SelStart2><SelEnd2>7570</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\ARMCM4_TM4C\nvm.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>174</YPos2><SelStart2>8038</SelStart2><SelEnd2>8038</SelEnd2></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\main.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>52</YPos2><SelStart2>3130</SelStart2><SelEnd2>3130</SelEnd2></Tab><ActiveTab>0</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\ARMCM4_TM4C\flash.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>87</YPos2><SelStart2>2281</SelStart2><SelEnd2>2281</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\blt_conf.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>96</YPos2><SelStart2>7138</SelStart2><SelEnd2>7138</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\ARMCM4_TM4C\IAR\vectors.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>42</YPos2><SelStart2>2414</SelStart2><SelEnd2>2414</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\xcp.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>1219</YPos2><SelStart2>43432</SelStart2><SelEnd2>43439</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\ARMCM4_TM4C\uart.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>111</YPos2><SelStart2>6242</SelStart2><SelEnd2>6242</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\assert.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>17</YPos2><SelStart2>3091</SelStart2><SelEnd2>3091</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\backdoor.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>116</YPos2><SelStart2>6882</SelStart2><SelEnd2>6882</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\com.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>143</YPos2><SelStart2>7570</SelStart2><SelEnd2>7570</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\..\..\Source\ARMCM4_TM4C\nvm.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>160</YPos2><SelStart2>8038</SelStart2><SelEnd2>8038</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\lib\fatfs\mmc.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>164</YPos2><SelStart2>6505</SelStart2><SelEnd2>6505</SelEnd2></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\hooks.c</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>0</SelStart><SelEnd>0</SelEnd><XPos2>0</XPos2><YPos2>231</YPos2><SelStart2>10763</SelStart2><SelEnd2>10763</SelEnd2></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
|
||||
<Positions>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<Top><Row0><Sizes><Toolbar-02a5fc58><key>iaridepm.enu1</key></Toolbar-02a5fc58></Sizes></Row0><Row1><Sizes/></Row1><Row2><Sizes/></Row2></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>579</Bottom><Right>418</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>104167</sizeHorzCX><sizeHorzCY>198413</sizeHorzCY><sizeVertCX>218750</sizeVertCX><sizeVertCY>576389</sizeVertCY></Rect></Wnd2><Wnd3><Rect><Top>0</Top><Left>0</Left><Bottom>0</Bottom><Right>7</Right><x>-2</x><y>577</y><xscreen>1924</xscreen><yscreen>200</yscreen><sizeHorzCX>1002083</sizeHorzCX><sizeHorzCY>198413</sizeHorzCY><sizeVertCX>218750</sizeVertCX><sizeVertCY>382937</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes/></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
<Top><Row0><Sizes><Toolbar-029cfc58><key>iaridepm.enu1</key></Toolbar-029cfc58></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>579</Bottom><Right>418</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>104167</sizeHorzCX><sizeHorzCY>198413</sizeHorzCY><sizeVertCX>218750</sizeVertCX><sizeVertCY>576389</sizeVertCY></Rect></Wnd2><Wnd3><Rect><Top>0</Top><Left>0</Left><Bottom>6881384</Bottom><Right>7536751</Right><x>-2</x><y>577</y><xscreen>1924</xscreen><yscreen>200</yscreen><sizeHorzCX>1002083</sizeHorzCX><sizeHorzCY>198413</sizeHorzCY><sizeVertCX>218750</sizeVertCX><sizeVertCY>382937</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes/></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
</Desktop>
|
||||
</Workspace>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -323,7 +323,7 @@
|
|||
</option>
|
||||
<option>
|
||||
<name>CCOptLevel</name>
|
||||
<state>0</state>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CCOptStrategy</name>
|
||||
|
@ -332,7 +332,7 @@
|
|||
</option>
|
||||
<option>
|
||||
<name>CCOptLevelSlave</name>
|
||||
<state>0</state>
|
||||
<state>1</state>
|
||||
</option>
|
||||
<option>
|
||||
<name>CompilerMisraRules98</name>
|
||||
|
@ -1096,6 +1096,15 @@
|
|||
<name>$PROJ_DIR$\..\lib\driverlib\watchdog.h</name>
|
||||
</file>
|
||||
</group>
|
||||
<group>
|
||||
<name>fatfs</name>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\lib\fatfs\ffconf.h</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\lib\fatfs\mmc.c</name>
|
||||
</file>
|
||||
</group>
|
||||
<group>
|
||||
<name>inc</name>
|
||||
<file>
|
||||
|
@ -1238,6 +1247,27 @@
|
|||
<name>$PROJ_DIR$\..\..\..\..\Source\ARMCM4_TM4C\uart.h</name>
|
||||
</file>
|
||||
</group>
|
||||
<group>
|
||||
<name>third_party</name>
|
||||
<group>
|
||||
<name>fatfs</name>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\diskio.h</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\ff.c</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\ff.h</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\integer.h</name>
|
||||
</file>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\Source\third_party\fatfs\src\option\unicode.c</name>
|
||||
</file>
|
||||
</group>
|
||||
</group>
|
||||
<file>
|
||||
<name>$PROJ_DIR$\..\..\..\..\Source\assert.c</name>
|
||||
</file>
|
||||
|
|
|
@ -0,0 +1,192 @@
|
|||
/*---------------------------------------------------------------------------/
|
||||
/ FatFs - FAT file system module configuration file R0.09b (C)ChaN, 2013
|
||||
/----------------------------------------------------------------------------/
|
||||
/
|
||||
/ CAUTION! Do not forget to make clean the project after any changes to
|
||||
/ the configuration options.
|
||||
/
|
||||
/----------------------------------------------------------------------------*/
|
||||
#ifndef _FFCONF
|
||||
#define _FFCONF 82786 /* Revision ID */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------/
|
||||
/ Functions and Buffer Configurations
|
||||
/----------------------------------------------------------------------------*/
|
||||
|
||||
#define _FS_TINY 0 /* 0:Normal or 1:Tiny */
|
||||
/* When _FS_TINY is set to 1, FatFs uses the sector buffer in the file system
|
||||
/ object instead of the sector buffer in the individual file object for file
|
||||
/ data transfer. This reduces memory consumption 512 bytes each file object. */
|
||||
|
||||
|
||||
#define _FS_READONLY 0 /* 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. */
|
||||
|
||||
|
||||
#define _FS_MINIMIZE 0 /* 0 to 3 */
|
||||
/* The _FS_MINIMIZE option defines minimization level to remove some functions.
|
||||
/
|
||||
/ 0: Full function.
|
||||
/ 1: f_stat, f_getfree, f_unlink, f_mkdir, f_chmod, f_truncate and f_rename
|
||||
/ are removed.
|
||||
/ 2: f_opendir and f_readdir are removed in addition to 1.
|
||||
/ 3: f_lseek is removed in addition to 2. */
|
||||
|
||||
|
||||
#define _USE_STRFUNC 2 /* 0:Disable or 1-2:Enable */
|
||||
/* To enable string functions, set _USE_STRFUNC to 1 or 2. */
|
||||
|
||||
|
||||
#define _USE_MKFS 0 /* 0:Disable or 1:Enable */
|
||||
/* To enable f_mkfs function, set _USE_MKFS to 1 and set _FS_READONLY to 0 */
|
||||
|
||||
|
||||
#define _USE_FASTSEEK 0 /* 0:Disable or 1:Enable */
|
||||
/* To enable fast seek feature, set _USE_FASTSEEK to 1. */
|
||||
|
||||
|
||||
#define _USE_LABEL 0 /* 0:Disable or 1:Enable */
|
||||
/* To enable volume label functions, set _USE_LAVEL to 1 */
|
||||
|
||||
|
||||
#define _USE_FORWARD 0 /* 0:Disable or 1:Enable */
|
||||
/* To enable f_forward function, set _USE_FORWARD to 1 and set _FS_TINY to 1. */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------/
|
||||
/ Locale and Namespace Configurations
|
||||
/----------------------------------------------------------------------------*/
|
||||
|
||||
#define _CODE_PAGE 437
|
||||
/* The _CODE_PAGE specifies the OEM code page to be used on the target system.
|
||||
/ Incorrect setting of the code page can cause a file open failure.
|
||||
/
|
||||
/ 932 - Japanese Shift-JIS (DBCS, OEM, Windows)
|
||||
/ 936 - Simplified Chinese GBK (DBCS, OEM, Windows)
|
||||
/ 949 - Korean (DBCS, OEM, Windows)
|
||||
/ 950 - Traditional Chinese Big5 (DBCS, OEM, Windows)
|
||||
/ 1250 - Central Europe (Windows)
|
||||
/ 1251 - Cyrillic (Windows)
|
||||
/ 1252 - Latin 1 (Windows)
|
||||
/ 1253 - Greek (Windows)
|
||||
/ 1254 - Turkish (Windows)
|
||||
/ 1255 - Hebrew (Windows)
|
||||
/ 1256 - Arabic (Windows)
|
||||
/ 1257 - Baltic (Windows)
|
||||
/ 1258 - Vietnam (OEM, Windows)
|
||||
/ 437 - U.S. (OEM)
|
||||
/ 720 - Arabic (OEM)
|
||||
/ 737 - Greek (OEM)
|
||||
/ 775 - Baltic (OEM)
|
||||
/ 850 - Multilingual Latin 1 (OEM)
|
||||
/ 858 - Multilingual Latin 1 + Euro (OEM)
|
||||
/ 852 - Latin 2 (OEM)
|
||||
/ 855 - Cyrillic (OEM)
|
||||
/ 866 - Russian (OEM)
|
||||
/ 857 - Turkish (OEM)
|
||||
/ 862 - Hebrew (OEM)
|
||||
/ 874 - Thai (OEM, Windows)
|
||||
/ 1 - ASCII only (Valid for non LFN cfg.)
|
||||
*/
|
||||
|
||||
|
||||
#define _USE_LFN 1 /* 0 to 3 */
|
||||
#define _MAX_LFN 255 /* Maximum LFN length to handle (12 to 255) */
|
||||
/* The _USE_LFN option switches the LFN support.
|
||||
/
|
||||
/ 0: Disable LFN feature. _MAX_LFN and _LFN_UNICODE have no effect.
|
||||
/ 1: Enable LFN with static working buffer on the BSS. Always NOT reentrant.
|
||||
/ 2: Enable LFN with dynamic working buffer on the STACK.
|
||||
/ 3: Enable LFN with dynamic working buffer on the HEAP.
|
||||
/
|
||||
/ The LFN working buffer occupies (_MAX_LFN + 1) * 2 bytes. To enable LFN,
|
||||
/ Unicode handling functions ff_convert() and ff_wtoupper() must be added
|
||||
/ to the project. When enable to use heap, memory control functions
|
||||
/ ff_memalloc() and ff_memfree() must be added to the project. */
|
||||
|
||||
|
||||
#define _LFN_UNICODE 0 /* 0:ANSI/OEM or 1:Unicode */
|
||||
/* To switch the character code set on FatFs API to Unicode,
|
||||
/ enable LFN feature and set _LFN_UNICODE to 1. */
|
||||
|
||||
|
||||
#define _FS_RPATH 0 /* 0 to 2 */
|
||||
/* The _FS_RPATH option configures relative path feature.
|
||||
/
|
||||
/ 0: Disable relative path feature and remove related functions.
|
||||
/ 1: Enable relative path. f_chdrive() and f_chdir() are available.
|
||||
/ 2: f_getcwd() is available in addition to 1.
|
||||
/
|
||||
/ Note that output of the f_readdir fnction is affected by this option. */
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------/
|
||||
/ Physical Drive Configurations
|
||||
/----------------------------------------------------------------------------*/
|
||||
|
||||
#define _VOLUMES 1
|
||||
/* Number of volumes (logical drives) to be used. */
|
||||
|
||||
|
||||
#define _MAX_SS 512 /* 512, 1024, 2048 or 4096 */
|
||||
/* Maximum sector size to be handled.
|
||||
/ Always set 512 for memory card and hard disk but a larger value may be
|
||||
/ required for on-board flash memory, floppy disk and optical disk.
|
||||
/ When _MAX_SS is larger than 512, it configures FatFs to variable sector size
|
||||
/ and GET_SECTOR_SIZE command must be implememted to the disk_ioctl function. */
|
||||
|
||||
|
||||
#define _MULTI_PARTITION 0 /* 0:Single partition, 1:Enable multiple partition */
|
||||
/* When set to 0, each volume is bound to the same physical drive number and
|
||||
/ it can mount only first primaly partition. When it is set to 1, each volume
|
||||
/ is tied to the partitions listed in VolToPart[]. */
|
||||
|
||||
|
||||
#define _USE_ERASE 0 /* 0:Disable or 1:Enable */
|
||||
/* To enable sector erase feature, set _USE_ERASE to 1. CTRL_ERASE_SECTOR command
|
||||
/ should be added to the disk_ioctl functio. */
|
||||
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------/
|
||||
/ System Configurations
|
||||
/----------------------------------------------------------------------------*/
|
||||
|
||||
#define _WORD_ACCESS 0 /* 0 or 1 */
|
||||
/* Set 0 first and it is always compatible with all platforms. The _WORD_ACCESS
|
||||
/ option defines which access method is used to the word data on the FAT volume.
|
||||
/
|
||||
/ 0: Byte-by-byte access.
|
||||
/ 1: Word access. Do not choose this unless following condition is met.
|
||||
/
|
||||
/ When the byte order on the memory is big-endian or address miss-aligned word
|
||||
/ access results incorrect behavior, the _WORD_ACCESS must be set to 0.
|
||||
/ If it is not the case, the value can also be set to 1 to improve the
|
||||
/ performance and code size.
|
||||
*/
|
||||
|
||||
|
||||
/* A header file that defines sync object types on the O/S, such as
|
||||
/ windows.h, ucos_ii.h and semphr.h, must be included prior to ff.h. */
|
||||
|
||||
#define _FS_REENTRANT 0 /* 0:Disable or 1:Enable */
|
||||
#define _FS_TIMEOUT 1000 /* Timeout period in unit of time ticks */
|
||||
#define _SYNC_t HANDLE /* O/S dependent type of sync object. e.g. HANDLE, OS_EVENT*, ID and etc.. */
|
||||
|
||||
/* The _FS_REENTRANT option switches the reentrancy (thread safe) of the FatFs module.
|
||||
/
|
||||
/ 0: Disable reentrancy. _SYNC_t and _FS_TIMEOUT have no effect.
|
||||
/ 1: Enable reentrancy. Also user provided synchronization handlers,
|
||||
/ ff_req_grant, ff_rel_grant, ff_del_syncobj and ff_cre_syncobj
|
||||
/ function must be added to the project. */
|
||||
|
||||
|
||||
#define _FS_LOCK 0 /* 0:Disable or >=1:Enable */
|
||||
/* To enable file lock control feature, set _FS_LOCK to 1 or greater.
|
||||
The value defines how many files can be opened simultaneously. */
|
||||
|
||||
|
||||
#endif /* _FFCONFIG */
|
|
@ -0,0 +1,665 @@
|
|||
/*------------------------------------------------------------------------/
|
||||
/ MMCv3/SDv1/SDv2 (in SPI mode) control module
|
||||
/-------------------------------------------------------------------------/
|
||||
/
|
||||
/ Copyright (C) 2013, ChaN, all right reserved.
|
||||
/
|
||||
/ * This software is a free software and there is NO WARRANTY.
|
||||
/ * No restriction on use. You can use, modify and redistribute it for
|
||||
/ personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY.
|
||||
/ * Redistributions of source code must retain the above copyright notice.
|
||||
/
|
||||
/-------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/*
|
||||
* This file was modified from a sample available from the FatFs
|
||||
* web site. It was modified to work with a Stellaris EK-LM3S6965
|
||||
* evaluation board.
|
||||
*
|
||||
* Note that the SSI port is shared with the osram display. The code
|
||||
* in this file does not attempt to share the SSI port with the osram,
|
||||
* it assumes the osram is not being used.
|
||||
*/
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include "inc/hw_memmap.h"
|
||||
#include "inc/hw_types.h"
|
||||
#include "driverlib/gpio.h"
|
||||
#include "driverlib/ssi.h"
|
||||
#include "driverlib/sysctl.h"
|
||||
#include "diskio.h"
|
||||
#include "boot.h"
|
||||
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
|
||||
Module Private Functions
|
||||
|
||||
---------------------------------------------------------------------------*/
|
||||
|
||||
/* Definitions for MMC/SDC command */
|
||||
#define CMD0 (0) /* GO_IDLE_STATE */
|
||||
#define CMD1 (1) /* SEND_OP_COND */
|
||||
#define ACMD41 (41|0x80) /* SEND_OP_COND (SDC) */
|
||||
#define CMD8 (8) /* SEND_IF_COND */
|
||||
#define CMD9 (9) /* SEND_CSD */
|
||||
#define CMD10 (10) /* SEND_CID */
|
||||
#define CMD12 (12) /* STOP_TRANSMISSION */
|
||||
#define ACMD13 (13|0x80) /* SD_STATUS (SDC) */
|
||||
#define CMD16 (16) /* SET_BLOCKLEN */
|
||||
#define CMD17 (17) /* READ_SINGLE_BLOCK */
|
||||
#define CMD18 (18) /* READ_MULTIPLE_BLOCK */
|
||||
#define CMD23 (23) /* SET_BLOCK_COUNT */
|
||||
#define ACMD23 (23|0x80) /* SET_WR_BLK_ERASE_COUNT (SDC) */
|
||||
#define CMD24 (24) /* WRITE_BLOCK */
|
||||
#define CMD25 (25) /* WRITE_MULTIPLE_BLOCK */
|
||||
#define CMD41 (41) /* SEND_OP_COND (ACMD) */
|
||||
#define CMD55 (55) /* APP_CMD */
|
||||
#define CMD58 (58) /* READ_OCR */
|
||||
|
||||
/* Peripheral definitions for DK-TM4C123G board */
|
||||
// SSI port
|
||||
#define SDC_SSI_BASE SSI0_BASE
|
||||
#define SDC_SSI_SYSCTL_PERIPH SYSCTL_PERIPH_SSI0
|
||||
|
||||
// GPIO for SSI pins
|
||||
#define SDC_GPIO_PORT_BASE GPIO_PORTA_BASE
|
||||
#define SDC_GPIO_SYSCTL_PERIPH SYSCTL_PERIPH_GPIOA
|
||||
#define SDC_SSI_CLK GPIO_PIN_2
|
||||
#define SDC_SSI_TX GPIO_PIN_5
|
||||
#define SDC_SSI_RX GPIO_PIN_4
|
||||
#define SDC_SSI_FSS GPIO_PIN_3
|
||||
#define SDC_SSI_PINS (SDC_SSI_TX | SDC_SSI_RX | SDC_SSI_CLK)
|
||||
|
||||
/* Control signals (Platform dependent) */
|
||||
#define CS_LOW() GPIOPinWrite(SDC_GPIO_PORT_BASE, SDC_SSI_FSS, 0) /* MMC CS = L */
|
||||
#define CS_HIGH() GPIOPinWrite(SDC_GPIO_PORT_BASE, SDC_SSI_FSS, SDC_SSI_FSS) /* MMC CS = H */
|
||||
|
||||
#define FCLK_SLOW() /* Set slow clock (100k-400k) */
|
||||
#define FCLK_FAST() set_max_speed() /* Set fast clock (depends on the CSD) */
|
||||
|
||||
static volatile
|
||||
DSTATUS Stat = STA_NOINIT; /* Disk status */
|
||||
|
||||
static
|
||||
UINT CardType;
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Send 80 or so clock transitions with CS and DI held high. This is */
|
||||
/* required after card power up to get it into SPI mode */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
static
|
||||
void send_initial_clock_train(void)
|
||||
{
|
||||
unsigned int i;
|
||||
DWORD dat;
|
||||
|
||||
/* Ensure CS is held high. */
|
||||
CS_HIGH();
|
||||
|
||||
/* Switch the SSI TX line to a GPIO and drive it high too. */
|
||||
GPIOPinTypeGPIOOutput(SDC_GPIO_PORT_BASE, SDC_SSI_TX);
|
||||
GPIOPinWrite(SDC_GPIO_PORT_BASE, SDC_SSI_TX, SDC_SSI_TX);
|
||||
|
||||
/* Send 10 bytes over the SSI. This causes the clock to wiggle the */
|
||||
/* required number of times. */
|
||||
for(i = 0 ; i < 10 ; i++)
|
||||
{
|
||||
/* Write DUMMY data. SSIDataPut() waits until there is room in the */
|
||||
/* FIFO. */
|
||||
SSIDataPut(SDC_SSI_BASE, 0xFF);
|
||||
|
||||
/* Flush data read during data write. */
|
||||
SSIDataGet(SDC_SSI_BASE, (uint32_t*)&dat);
|
||||
}
|
||||
|
||||
/* Revert to hardware control of the SSI TX line. */
|
||||
GPIOPinTypeSSI(SDC_GPIO_PORT_BASE, SDC_SSI_TX);
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Power Control (Platform dependent) */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* When the target system does not support socket power control, there */
|
||||
/* is nothing to do in these functions. */
|
||||
|
||||
static
|
||||
void power_on (void)
|
||||
{
|
||||
/*
|
||||
* This doesn't really turn the power on, but initializes the
|
||||
* SSI port and pins needed to talk to the card.
|
||||
*/
|
||||
|
||||
/* Enable the peripherals used to drive the SDC on SSI, and the CS */
|
||||
SysCtlPeripheralEnable(SDC_SSI_SYSCTL_PERIPH);
|
||||
SysCtlPeripheralEnable(SDC_GPIO_SYSCTL_PERIPH);
|
||||
|
||||
/* Configure the appropriate pins to be SSI instead of GPIO */
|
||||
GPIOPinTypeSSI(SDC_GPIO_PORT_BASE, SDC_SSI_TX | SDC_SSI_RX | SDC_SSI_CLK);
|
||||
GPIOPinTypeGPIOOutput(SDC_GPIO_PORT_BASE, SDC_SSI_FSS);
|
||||
GPIOPadConfigSet(SDC_GPIO_PORT_BASE, SDC_SSI_RX, GPIO_STRENGTH_4MA,
|
||||
GPIO_PIN_TYPE_STD_WPU);
|
||||
GPIOPadConfigSet(SDC_GPIO_PORT_BASE, SDC_SSI_CLK | SDC_SSI_TX | SDC_SSI_FSS,
|
||||
GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
|
||||
|
||||
/* Configure the SSI0 port */
|
||||
SSIConfigSetExpClk(SDC_SSI_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0,
|
||||
SSI_MODE_MASTER, 400000, 8);
|
||||
SSIEnable(SDC_SSI_BASE);
|
||||
|
||||
/* Set DI and CS high and apply more than 74 pulses to SCLK for the card */
|
||||
/* to be able to accept a native command. */
|
||||
send_initial_clock_train();
|
||||
|
||||
}
|
||||
// set the SSI speed to the max setting
|
||||
static
|
||||
void set_max_speed(void)
|
||||
{
|
||||
unsigned long i;
|
||||
|
||||
/* Disable the SSI */
|
||||
SSIDisable(SDC_SSI_BASE);
|
||||
|
||||
/* Set the maximum speed as half the system clock, with a max of 12.5 MHz. */
|
||||
i = SysCtlClockGet() / 2;
|
||||
if(i > 12500000)
|
||||
{
|
||||
i = 12500000;
|
||||
}
|
||||
|
||||
/* Configure the SSI0 port */
|
||||
SSIConfigSetExpClk(SDC_SSI_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0,
|
||||
SSI_MODE_MASTER, i, 8);
|
||||
|
||||
/* Enable the SSI */
|
||||
SSIEnable(SDC_SSI_BASE);
|
||||
}
|
||||
|
||||
static
|
||||
void power_off (void)
|
||||
{
|
||||
Stat |= STA_NOINIT; /* Force uninitialized */
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Transmit/Receive data to/from MMC via SPI (Platform dependent) */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
static
|
||||
BYTE xchg_spi (BYTE dat)
|
||||
{
|
||||
DWORD rcvdat;
|
||||
|
||||
SSIDataPut(SDC_SSI_BASE, dat); /* write data */
|
||||
|
||||
SSIDataGet(SDC_SSI_BASE, (uint32_t*)&rcvdat); /* read data frm rx fifo */
|
||||
|
||||
return (BYTE)rcvdat;
|
||||
}
|
||||
|
||||
static
|
||||
void rcvr_spi_m (BYTE *dst)
|
||||
{
|
||||
*dst = xchg_spi(0xFF);
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Wait for card ready */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
static
|
||||
int wait_ready (void)
|
||||
{
|
||||
BYTE d;
|
||||
ULONG timeOutTime;
|
||||
|
||||
/* set timeout for 500 ms from now */
|
||||
timeOutTime = TimerGet() + 500;
|
||||
|
||||
do {
|
||||
d = xchg_spi(0xFF);
|
||||
} while ((d != 0xFF) && (TimerGet() < timeOutTime));
|
||||
|
||||
return (d == 0xFF) ? 1 : 0;
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Deselect the card and release SPI bus */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
static
|
||||
void deselect (void)
|
||||
{
|
||||
CS_HIGH();
|
||||
xchg_spi(0xFF); /* Dummy clock (force DO hi-z for multiple slave SPI) */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Select the card and wait ready */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
static
|
||||
int select (void) /* 1:Successful, 0:Timeout */
|
||||
{
|
||||
CS_LOW();
|
||||
xchg_spi(0xFF); /* Dummy clock (force DO enabled) */
|
||||
|
||||
if (wait_ready()) return 1; /* OK */
|
||||
deselect();
|
||||
return 0; /* Timeout */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Receive a data packet from MMC */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
static
|
||||
int rcvr_datablock ( /* 1:OK, 0:Failed */
|
||||
BYTE *buff, /* Data buffer to store received data */
|
||||
UINT btr /* Byte count (must be multiple of 4) */
|
||||
)
|
||||
{
|
||||
BYTE token;
|
||||
ULONG timeOutTime;
|
||||
|
||||
/* set timeout for 100 ms from now */
|
||||
timeOutTime = TimerGet() + 100;
|
||||
|
||||
do { /* Wait for data packet in timeout of 100ms */
|
||||
token = xchg_spi(0xFF);
|
||||
} while ((token == 0xFF) && (TimerGet() < timeOutTime));
|
||||
|
||||
if(token != 0xFE) return 0; /* If not valid data token, retutn with error */
|
||||
|
||||
do { /* Receive the data block into buffer */
|
||||
rcvr_spi_m(buff++);
|
||||
rcvr_spi_m(buff++);
|
||||
} while (btr -= 2);
|
||||
xchg_spi(0xFF); /* Discard CRC */
|
||||
xchg_spi(0xFF);
|
||||
|
||||
return 1; /* Return with success */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Send a data packet to MMC */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
#if _USE_WRITE
|
||||
static
|
||||
int xmit_datablock ( /* 1:OK, 0:Failed */
|
||||
const BYTE *buff, /* 512 byte data block to be transmitted */
|
||||
BYTE token /* Data token */
|
||||
)
|
||||
{
|
||||
BYTE resp;
|
||||
UINT wc;
|
||||
|
||||
|
||||
if (!wait_ready()) return 0;
|
||||
|
||||
xchg_spi(token); /* Xmit a token */
|
||||
if (token != 0xFD) { /* Not StopTran token */
|
||||
wc = 512;
|
||||
do { /* Xmit the 512 byte data block to MMC */
|
||||
xchg_spi(*buff++);
|
||||
xchg_spi(*buff++);
|
||||
} while (wc -= 2);
|
||||
xchg_spi(0xFF); /* CRC (Dummy) */
|
||||
xchg_spi(0xFF);
|
||||
resp = xchg_spi(0xFF); /* Receive a data response */
|
||||
if ((resp & 0x1F) != 0x05) /* If not accepted, return with error */
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Send a command packet to MMC */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
static
|
||||
BYTE send_cmd (
|
||||
BYTE cmd, /* Command byte */
|
||||
DWORD arg /* Argument */
|
||||
)
|
||||
{
|
||||
BYTE n, res;
|
||||
|
||||
|
||||
if (cmd & 0x80) { /* ACMD<n> is the command sequense of CMD55-CMD<n> */
|
||||
cmd &= 0x7F;
|
||||
res = send_cmd(CMD55, 0);
|
||||
if (res > 1) return res;
|
||||
}
|
||||
|
||||
/* Select the card and wait for ready */
|
||||
deselect();
|
||||
if (!select()) return 0xFF;
|
||||
|
||||
/* Send command packet */
|
||||
xchg_spi(0x40 | cmd); /* Start + Command index */
|
||||
xchg_spi((BYTE)(arg >> 24)); /* Argument[31..24] */
|
||||
xchg_spi((BYTE)(arg >> 16)); /* Argument[23..16] */
|
||||
xchg_spi((BYTE)(arg >> 8)); /* Argument[15..8] */
|
||||
xchg_spi((BYTE)arg); /* Argument[7..0] */
|
||||
n = 0x01; /* Dummy CRC + Stop */
|
||||
if (cmd == CMD0) n = 0x95; /* Valid CRC for CMD0(0) + Stop */
|
||||
if (cmd == CMD8) n = 0x87; /* Valid CRC for CMD8(0x1AA) + Stop */
|
||||
xchg_spi(n);
|
||||
|
||||
/* Receive command response */
|
||||
if (cmd == CMD12) xchg_spi(0xFF); /* Skip a stuff byte on stop to read */
|
||||
n = 10; /* Wait for a valid response in timeout of 10 attempts */
|
||||
do
|
||||
res = xchg_spi(0xFF);
|
||||
while ((res & 0x80) && --n);
|
||||
|
||||
return res; /* Return with the response value */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
|
||||
Public Functions
|
||||
|
||||
---------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Initialize Disk Drive */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
DSTATUS disk_initialize (
|
||||
BYTE pdrv /* Physical drive nmuber (0) */
|
||||
)
|
||||
{
|
||||
BYTE n, cmd, ty, ocr[4];
|
||||
ULONG timeOutTime;
|
||||
|
||||
|
||||
if (pdrv) return STA_NOINIT; /* Supports only single drive */
|
||||
if (Stat & STA_NODISK) return Stat; /* No card in the socket */
|
||||
|
||||
power_on(); /* Force socket power on */
|
||||
|
||||
CS_LOW(); /* CS = L */
|
||||
|
||||
ty = 0;
|
||||
if (send_cmd(CMD0, 0) == 1) { /* Enter Idle state */
|
||||
timeOutTime = TimerGet() + 1000; /* Initialization timeout of 1000 msec */
|
||||
|
||||
if (send_cmd(CMD8, 0x1AA) == 1) { /* SDv2? */
|
||||
for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF); /* Get trailing return value of R7 resp */
|
||||
if (ocr[2] == 0x01 && ocr[3] == 0xAA) { /* The card can work at vdd range of 2.7-3.6V */
|
||||
while ((TimerGet() < timeOutTime) && send_cmd(ACMD41, 0x40000000)); /* Wait for leaving idle state (ACMD41 with HCS bit) */
|
||||
if ((TimerGet() < timeOutTime) && send_cmd(CMD58, 0) == 0) { /* Check CCS bit in the OCR */
|
||||
for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF);
|
||||
ty = (ocr[0] & 0x40) ? CT_SD2|CT_BLOCK : CT_SD2; /* SDv2 */
|
||||
}
|
||||
}
|
||||
} else { /* SDv1 or MMCv3 */
|
||||
if (send_cmd(ACMD41, 0) <= 1) {
|
||||
ty = CT_SD1; cmd = ACMD41; /* SDv1 */
|
||||
} else {
|
||||
ty = CT_MMC; cmd = CMD1; /* MMCv3 */
|
||||
}
|
||||
while ((TimerGet() < timeOutTime) && send_cmd(cmd, 0)); /* Wait for leaving idle state */
|
||||
if (!(TimerGet() < timeOutTime) || send_cmd(CMD16, 512) != 0) /* Set read/write block length to 512 */
|
||||
ty = 0;
|
||||
}
|
||||
}
|
||||
CardType = ty;
|
||||
deselect();
|
||||
|
||||
if (ty) { /* Initialization succeded */
|
||||
Stat &= ~STA_NOINIT; /* Clear STA_NOINIT */
|
||||
FCLK_FAST();
|
||||
} else { /* Initialization failed */
|
||||
power_off();
|
||||
}
|
||||
|
||||
return Stat;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Get Disk Status */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
DSTATUS disk_status (
|
||||
BYTE pdrv /* Physical drive nmuber (0) */
|
||||
)
|
||||
{
|
||||
if (pdrv) return STA_NOINIT; /* Supports only single drive */
|
||||
return Stat;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Read Sector(s) */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
DRESULT disk_read (
|
||||
BYTE pdrv, /* Physical drive nmuber (0) */
|
||||
BYTE *buff, /* Pointer to the data buffer to store read data */
|
||||
DWORD sector, /* Start sector number (LBA) */
|
||||
BYTE count /* Sector count (1..255) */
|
||||
)
|
||||
{
|
||||
if (pdrv || !count) return RES_PARERR;
|
||||
if (Stat & STA_NOINIT) return RES_NOTRDY;
|
||||
|
||||
if (!(CardType & CT_BLOCK)) sector *= 512; /* Convert to byte address if needed */
|
||||
|
||||
if (count == 1) { /* Single block read */
|
||||
if ((send_cmd(CMD17, sector) == 0) /* READ_SINGLE_BLOCK */
|
||||
&& rcvr_datablock(buff, 512))
|
||||
count = 0;
|
||||
}
|
||||
else { /* Multiple block read */
|
||||
if (send_cmd(CMD18, sector) == 0) { /* READ_MULTIPLE_BLOCK */
|
||||
do {
|
||||
if (!rcvr_datablock(buff, 512)) break;
|
||||
buff += 512;
|
||||
} while (--count);
|
||||
send_cmd(CMD12, 0); /* STOP_TRANSMISSION */
|
||||
}
|
||||
}
|
||||
deselect();
|
||||
|
||||
return count ? RES_ERROR : RES_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Write Sector(s) */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
#if _USE_WRITE
|
||||
DRESULT disk_write (
|
||||
BYTE pdrv, /* Physical drive nmuber (0) */
|
||||
const BYTE *buff, /* Pointer to the data to be written */
|
||||
DWORD sector, /* Start sector number (LBA) */
|
||||
BYTE count /* Sector count (1..255) */
|
||||
)
|
||||
{
|
||||
if (pdrv || !count) return RES_PARERR;
|
||||
if (Stat & STA_NOINIT) return RES_NOTRDY;
|
||||
if (Stat & STA_PROTECT) return RES_WRPRT;
|
||||
|
||||
if (!(CardType & CT_BLOCK)) sector *= 512; /* Convert to byte address if needed */
|
||||
|
||||
if (count == 1) { /* Single block write */
|
||||
if ((send_cmd(CMD24, sector) == 0) /* WRITE_BLOCK */
|
||||
&& xmit_datablock(buff, 0xFE))
|
||||
count = 0;
|
||||
}
|
||||
else { /* Multiple block write */
|
||||
if (CardType & CT_SDC) send_cmd(ACMD23, count);
|
||||
if (send_cmd(CMD25, sector) == 0) { /* WRITE_MULTIPLE_BLOCK */
|
||||
do {
|
||||
if (!xmit_datablock(buff, 0xFC)) break;
|
||||
buff += 512;
|
||||
} while (--count);
|
||||
if (!xmit_datablock(0, 0xFD)) /* STOP_TRAN token */
|
||||
count = 1;
|
||||
}
|
||||
}
|
||||
deselect();
|
||||
|
||||
return count ? RES_ERROR : RES_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
/* Miscellaneous Functions */
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
#if _USE_IOCTL
|
||||
DRESULT disk_ioctl (
|
||||
BYTE pdrv, /* Physical drive nmuber (0) */
|
||||
BYTE cmd, /* Control code */
|
||||
void *buff /* Buffer to send/receive data block */
|
||||
)
|
||||
{
|
||||
DRESULT res;
|
||||
BYTE n, csd[16], *ptr = buff;
|
||||
DWORD csz;
|
||||
|
||||
|
||||
if (pdrv) return RES_PARERR;
|
||||
if (Stat & STA_NOINIT) return RES_NOTRDY;
|
||||
|
||||
res = RES_ERROR;
|
||||
switch (cmd) {
|
||||
case CTRL_SYNC : /* Flush write-back cache, Wait for end of internal process */
|
||||
if (select()) res = RES_OK;
|
||||
break;
|
||||
|
||||
case GET_SECTOR_COUNT : /* Get number of sectors on the disk (WORD) */
|
||||
if ((send_cmd(CMD9, 0) == 0) && rcvr_datablock(csd, 16)) {
|
||||
if ((csd[0] >> 6) == 1) { /* SDv2? */
|
||||
csz = csd[9] + ((WORD)csd[8] << 8) + ((DWORD)(csd[7] & 63) << 16) + 1;
|
||||
*(DWORD*)buff = csz << 10;
|
||||
} else { /* SDv1 or MMCv3 */
|
||||
n = (csd[5] & 15) + ((csd[10] & 128) >> 7) + ((csd[9] & 3) << 1) + 2;
|
||||
csz = (csd[8] >> 6) + ((WORD)csd[7] << 2) + ((WORD)(csd[6] & 3) << 10) + 1;
|
||||
*(DWORD*)buff = csz << (n - 9);
|
||||
}
|
||||
res = RES_OK;
|
||||
}
|
||||
break;
|
||||
|
||||
case GET_BLOCK_SIZE : /* Get erase block size in unit of sectors (DWORD) */
|
||||
if (CardType & CT_SD2) { /* SDv2? */
|
||||
if (send_cmd(ACMD13, 0) == 0) { /* Read SD status */
|
||||
xchg_spi(0xFF);
|
||||
if (rcvr_datablock(csd, 16)) { /* Read partial block */
|
||||
for (n = 64 - 16; n; n--) xchg_spi(0xFF); /* Purge trailing data */
|
||||
*(DWORD*)buff = 16UL << (csd[10] >> 4);
|
||||
res = RES_OK;
|
||||
}
|
||||
}
|
||||
} else { /* SDv1 or MMCv3 */
|
||||
if ((send_cmd(CMD9, 0) == 0) && rcvr_datablock(csd, 16)) { /* Read CSD */
|
||||
if (CardType & CT_SD1) { /* SDv1 */
|
||||
*(DWORD*)buff = (((csd[10] & 63) << 1) + ((WORD)(csd[11] & 128) >> 7) + 1) << ((csd[13] >> 6) - 1);
|
||||
} else { /* MMCv3 */
|
||||
*(DWORD*)buff = ((WORD)((csd[10] & 124) >> 2) + 1) * (((csd[11] & 3) << 3) + ((csd[11] & 224) >> 5) + 1);
|
||||
}
|
||||
res = RES_OK;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MMC_GET_TYPE : /* Get card type flags (1 byte) */
|
||||
*ptr = CardType;
|
||||
res = RES_OK;
|
||||
break;
|
||||
|
||||
case MMC_GET_CSD : /* Receive CSD as a data block (16 bytes) */
|
||||
if ((send_cmd(CMD9, 0) == 0) /* READ_CSD */
|
||||
&& rcvr_datablock(buff, 16))
|
||||
res = RES_OK;
|
||||
break;
|
||||
|
||||
case MMC_GET_CID : /* Receive CID as a data block (16 bytes) */
|
||||
if ((send_cmd(CMD10, 0) == 0) /* READ_CID */
|
||||
&& rcvr_datablock(buff, 16))
|
||||
res = RES_OK;
|
||||
break;
|
||||
|
||||
case MMC_GET_OCR : /* Receive OCR as an R3 resp (4 bytes) */
|
||||
if (send_cmd(CMD58, 0) == 0) { /* READ_OCR */
|
||||
for (n = 0; n < 4; n++)
|
||||
*((BYTE*)buff+n) = xchg_spi(0xFF);
|
||||
res = RES_OK;
|
||||
}
|
||||
break;
|
||||
|
||||
case MMC_GET_SDSTAT : /* Receive SD statsu as a data block (64 bytes) */
|
||||
if ((CardType & CT_SD2) && send_cmd(ACMD13, 0) == 0) { /* SD_STATUS */
|
||||
xchg_spi(0xFF);
|
||||
if (rcvr_datablock(buff, 64))
|
||||
res = RES_OK;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
res = RES_PARERR;
|
||||
}
|
||||
|
||||
deselect();
|
||||
|
||||
return res;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*---------------------------------------------------------*/
|
||||
/* User Provided Timer Function for FatFs module */
|
||||
/*---------------------------------------------------------*/
|
||||
/* This is a real time clock service to be called from */
|
||||
/* FatFs module. Any valid time must be returned even if */
|
||||
/* the system does not support a real time clock. */
|
||||
/* This is not required in read-only configuration. */
|
||||
|
||||
DWORD get_fattime (void)
|
||||
{
|
||||
/* No RTC supprt. Return a fixed value 2013/5/10 0:00:00 */
|
||||
return ((DWORD)(2013 - 1980) << 25) /* Y */
|
||||
| ((DWORD)5 << 21) /* M */
|
||||
| ((DWORD)10 << 16) /* D */
|
||||
| ((DWORD)0 << 11) /* H */
|
||||
| ((DWORD)0 << 5) /* M */
|
||||
| ((DWORD)0 >> 1); /* S */
|
||||
}
|
||||
|
||||
|
||||
|
Binary file not shown.
|
@ -1,308 +1,308 @@
|
|||
S01C000064656D6F70726F675F646B5F746D3463313233672E73726563A9
|
||||
S11320005804002089320000A1320000A1320000EF
|
||||
S1132010A1320000A1320000A1320000A132000070
|
||||
S1132020A1320000A1320000A1320000A132000060
|
||||
S1132030A1320000A1320000A1320000AB2A00004E
|
||||
S1132040A1320000A1320000A1320000A132000040
|
||||
S1132050A1320000A1320000A1320000A132000030
|
||||
S1132060A1320000A1320000A1320000A132000020
|
||||
S1132070A1320000A1320000A1320000A132000010
|
||||
S1132080A1320000A1320000A1320000A132000000
|
||||
S1132090A1320000A1320000A1320000A1320000F0
|
||||
S11320A0A1320000A1320000A1320000A1320000E0
|
||||
S11320B0A1320000A1320000A1320000A1320000D0
|
||||
S11320C0A1320000A1320000A1320000A1320000C0
|
||||
S11320D0A1320000A1320000A1320000A1320000B0
|
||||
S11320E0A1320000A1320000A1320000A1320000A0
|
||||
S11320F0A1320000A1320000A1320000A132000090
|
||||
S1132100A1320000A1320000A1320000A13200007F
|
||||
S1132110A1320000A1320000A1320000A13200006F
|
||||
S1132120A1320000A1320000A1320000A13200005F
|
||||
S1132130A1320000A1320000A1320000A13200004F
|
||||
S1132140A1320000A1320000A1320000A13200003F
|
||||
S1132150A1320000A1320000A1320000A13200002F
|
||||
S1132160A1320000A1320000A1320000A13200001F
|
||||
S1132170A1320000A1320000A1320000A13200000F
|
||||
S1132180A1320000A1320000A1320000A1320000FF
|
||||
S1132190A1320000A1320000A1320000A1320000EF
|
||||
S11321A0A1320000A1320000A1320000A1320000DF
|
||||
S11321B0A1320000A1320000A1320000A1320000CF
|
||||
S11321C0A1320000A1320000A1320000A1320000BF
|
||||
S11321D0A1320000A1320000A1320000A1320000AF
|
||||
S11321E0A1320000A1320000A1320000A13200009F
|
||||
S11321F0A1320000A1320000A1320000A13200008F
|
||||
S1132200A1320000A1320000A1320000A13200007E
|
||||
S1132210A1320000A1320000A1320000A13200006E
|
||||
S1132220A1320000A1320000A1320000A13200005E
|
||||
S1132230A1320000A1320000A1320000A13200004E
|
||||
S1132240A1320000A1320000A1320000A13200003E
|
||||
S1132250A1320000A1320000A1320000A13200002E
|
||||
S1132260A1320000A1320000A1320000EE11AA55F3
|
||||
S1132270DFF81015884200F02E81DFF80C15884233
|
||||
S113228000F02981DFF80415884200F02481DFF88A
|
||||
S11322900015884200F01F81DFF8F814884200F02E
|
||||
S11322A01A81DFF8F414884200F01581DFF8EC1489
|
||||
S11322B0884200F01081DFF8E814884200F00B81B6
|
||||
S11322C0DFF8E014884200F00681DFF8DC1488426D
|
||||
S11322D000F00181DFF8D414884200F0FC80DFF8BC
|
||||
S11322E0D014884200F0F780DFF8C814884200F068
|
||||
S11322F0F280DFF8C414884200F0ED80DFF8BC14EB
|
||||
S1132300884200F0E880DFF8B814884200F0E380E7
|
||||
S1132310DFF8B014884200F0DE80DFF8AC148842A5
|
||||
S113232000F0D980DFF8A414884200F0D480DFF8EC
|
||||
S1132330A014884200F0CF80DFF89814884200F09F
|
||||
S1132340CA80DFF89414884200F0C580DFF88C144A
|
||||
S1132350884200F0C080DFF88814884200F0BB8017
|
||||
S1132360DFF88014884200F0B680DFF87C148842DD
|
||||
S113237000F0B180DFF87414884200F0AC80DFF81C
|
||||
S11323807014884200F0A780DFF86814884200F0D7
|
||||
S1132390A280DFF86414884200F09D80DFF85C14AA
|
||||
S11323A0884200F09880DFF85814884200F0938047
|
||||
S11323B0DFF85014884200F08E80DFF84C14884215
|
||||
S11323C000F08980DFF84414884200F08480DFF84C
|
||||
S11323D04014884200F07F80DFF8381488427AD0B5
|
||||
S11323E0DFF83414884276D0DFF83014884272D093
|
||||
S11323F0DFF82C1488426ED0DFF8281488426AD0A3
|
||||
S1132400DFF82414884266D0DFF82014884262D0B2
|
||||
S1132410DFF81C1488425ED0DFF8181488425AD0C2
|
||||
S1132420DFF81414884256D0DFF81014884252D0D2
|
||||
S1132430DFF80C1488424ED0DFF8081488424AD0E2
|
||||
S1132440DFF80414884246D0DFF80014884242D0F2
|
||||
S1132450DFF8FC1388423ED0DFF8F81388423AD004
|
||||
S1132460DFF8F413884236D0DFF8F013884232D014
|
||||
S1132470DFF8EC1388422ED0DFF8E81388422AD024
|
||||
S1132480DFF8E413884226D0DFF8E013884222D034
|
||||
S1132490DFF8DC1388421ED010F1805F1BD0DFF818
|
||||
S11324A0D413884217D0DFF8D013884213D0DFF852
|
||||
S11324B0CC1388420FD0DFF8C81388420BD0DFF862
|
||||
S11324C0C413884207D0DFF8C013884203D0DFF872
|
||||
S11324D0BC13884201D1012000E00020C0B2704743
|
||||
S11324E010B504002000FFF7C3FE002805D140F218
|
||||
S11324F04321DFF89C0300F00EFAC4F30720DFF851
|
||||
S113250094130818E1B2890051EA401050F0844055
|
||||
S11325100121016010BDDFF88C03DFF88C1301602A
|
||||
S1132520FEE700000138FDD17047704770B5040024
|
||||
S1132530DFF864030568DFF87403066855F4006582
|
||||
S113254035F4800556F40066DFF84C030560DFF8C7
|
||||
S11325505C03066015F0010014F0010191F0010123
|
||||
S1132560C0B208421ED074F001000540DFF8280311
|
||||
S11325700560002E07D516F07000302809D016F03B
|
||||
S11325807000702805D0002E08D415F030003028D3
|
||||
S113259004D14FF48050FFF7C5FF03E05FF400203F
|
||||
S11325A0FFF7C0FF35F4FE6514F4FE600543DFF861
|
||||
S11325B000030640DFF8FC022040064314F0080044
|
||||
S11325C056EAC006DFF8D0020560DFF8E0020660D4
|
||||
S11325D01020FFF7A7FF35F4005514F4005005430D
|
||||
S11325E036F4005614F400500643DFF8B0024021DC
|
||||
S11325F00160002E06D5DFF8B4020660DFF8980209
|
||||
S1132600056005E0DFF890020560DFF8A0020660CF
|
||||
S1132610DFF8A4020540DFF8A4022040054336F0A9
|
||||
S1132620FC5614F0FC500643600008D555F48005B0
|
||||
S113263036F48006DFF888022040064301E036F0D5
|
||||
S1132640804620050ED44FF4004000E0401E0028D0
|
||||
S113265004D0DFF84C1209684906F7D535F4006553
|
||||
S113266036F40066DFF830020560DFF840020660E9
|
||||
S11326701020FFF757FF70BD38B5DFF84802006837
|
||||
S1132680DFF844120840DFF84412884205D040F2D3
|
||||
S11326909761DFF8FC0100F03EF9DFF8FC01016806
|
||||
S11326A0DFF808020268002A02D512F0700001E087
|
||||
S11326B011F03000002808D0102849D020284AD032
|
||||
S11326C030284BD070284CD04EE0C1F38410DFF892
|
||||
S11326D0003253F82000DFF8FC31134013F1004FAF
|
||||
S11326E003D0002A1DD40B051BD4DFF8EC311B6882
|
||||
S11326F0DFF8E8412468C4F304256D1C14F01F04BA
|
||||
S1132700641C04FB05F46400B0FBF4F09C05A40D08
|
||||
S1132710C3F3892303FB00F39B0A04FB003051F449
|
||||
S113272080014B022DD5002A26D553001ED5DFF893
|
||||
S1132730A431134013F1004F03D0002A16D4090525
|
||||
S113274014D44000C2F38651491CB0FBF1F018E0E8
|
||||
S1132750DFF88C01BFE7DFF88C01BCE747F23050AB
|
||||
S1132760B9E74FF40040B6E700200AE0C2F3C551D0
|
||||
S1132770491CB0FBF1F004E0C1F3C351491CB0FBA8
|
||||
S1132780F1F032BD003800F0013800F0003400F000
|
||||
S1132790013400F0023400F0003C00F0013C00F091
|
||||
S11327A0023C00F0005800F0005400F0000800F073
|
||||
S11327B0010800F0020800F0030800F0040800F02B
|
||||
S11327C0050800F0060800F0070800F0080800F00B
|
||||
S11327D0090800F00A0800F00B0800F00C0800F0EB
|
||||
S11327E00D0800F00E0800F00F0800F0100800F0CB
|
||||
S11327F0001400F0002000F0012000F0022000F09E
|
||||
S1132800032000F0042000F0052000F0004800F050
|
||||
S1132810005000F0004000F0014000F0004400F0DF
|
||||
S1132820014400F0001C00F0011C00F0021C00F048
|
||||
S1132830031C00F0000400F0010400F0020400F0A6
|
||||
S1132840030400F0040400F0050400F0001800F094
|
||||
S1132850011800F0021800F0031800F0041800F04A
|
||||
S1132860051800F0061800F0071800F0000C00F03E
|
||||
S1132870002800F0010000F0005C00F0015C00F0B2
|
||||
S1132880025C00F0035C00F0045C00F0055C00F006
|
||||
S1132890B430000000E60F4060E00F4058E00F4005
|
||||
S11328A050E00F400CED00E00400FA0570E00F402A
|
||||
S11328B08FFFFF7F30000080FEFF3FF80100C0075C
|
||||
S11328C00000404000E00F400000FF7000000510D1
|
||||
S11328D0483000000008008060E10F4064E10F40D0
|
||||
S11328E00024F40000093D0080B500F007F800F072
|
||||
S11328F021F800F08FF800F033F8FAE780B500F023
|
||||
S1132900B3F80748FFF712FE00F076F800F0B6F8C7
|
||||
S113291000F0D4F801BD034A106003480160FEE7EB
|
||||
S11329204005C001480000204C00002080B5FFF79E
|
||||
S1132930F2FD01BD80B52A48FFF7D2FD2948FFF713
|
||||
S1132940CFFD03215FF0402000F03DFAFFF794FE35
|
||||
S113295060234FF461420100234800F0A4FA01BD52
|
||||
S113296080B52248007800280BD1214800F02BF8CC
|
||||
S1132970012827D11D48012101701E480021017042
|
||||
S113298020E01C4800781A494018401C00F01BF84D
|
||||
S1132990012817D117480078401C164908701548BB
|
||||
S11329A000781349097888420CD11048002101703D
|
||||
S11329B00F484078FF2805D10D488078002801D1C0
|
||||
S11329C0FFF7B4FF01BD10B50400074800F0E1FAB9
|
||||
S11329D010F1010F02D02070012000E0002010BD92
|
||||
S11329E0001800F0000800F000C00040550000206E
|
||||
S11329F0000000205400002080B51748FFF770FD48
|
||||
S1132A000421164800F0C3F900220421134800F001
|
||||
S1132A10AAF901BD10B500F045F80400104800689B
|
||||
S1132A20201AB0F5FA7F16D30E480078002808D192
|
||||
S1132A300C480121017004220421084800F093F994
|
||||
S1132A4007E008480021017000220421034800F037
|
||||
S1132A508AF90348046010BD060800F000600240D3
|
||||
S1132A6044000020560000200348006850F0404015
|
||||
S1132A70014908607047000034EF00E080B5FFF7BB
|
||||
S1132A80FBFD4FF47A71B0FBF1F000F0B9FA00F0FD
|
||||
S1132A90A9FA00F0AEFA002000F001F801BD0649E1
|
||||
S1132AA00860704704480068704703480068401C89
|
||||
S1132AB001490860704700005000002080B500F014
|
||||
S1132AC0B5FA01BDB0F1402F5BD0DFF83013884276
|
||||
S1132AD057D0DFF82C13884253D0DFF828138842EC
|
||||
S1132AE04FD0DFF8241388424BD0DFF820138842FC
|
||||
S1132AF047D0DFF81C13884243D0DFF8181388420C
|
||||
S1132B003FD0DFF8141388423BD0DFF8101388421B
|
||||
S1132B1037D0DFF80C13884233D0DFF8081388422B
|
||||
S1132B202FD0DFF8041388422BD0DFF8001388423B
|
||||
S1132B3027D0DFF8FC12884223D0DFF8F81288424D
|
||||
S1132B401FD0DFF8F41288421BD0DFF8F01288425D
|
||||
S1132B5017D0DFF8EC12884213D0DFF8E81288426D
|
||||
S1132B600FD0DFF8E41288420BD0DFF8E01288427D
|
||||
S1132B7007D0DFF8DC12884203D0DFF8D81288428D
|
||||
S1132B8001D1012000E00020C0B2704770B50400FC
|
||||
S1132B900D0016002000FFF795FF002804D1FB214B
|
||||
S1132BA0DFF8B402FFF7B7FE002E08D0012E06D0DE
|
||||
S1132BB0022E04D0FE21DFF8A002FFF7ACFEF007DE
|
||||
S1132BC005D514F580600068EDB2284304E014F5DF
|
||||
S1132BD080600068EDB2A84314F580610860B00716
|
||||
S1132BE005D514F584600068EDB2284304E014F5BB
|
||||
S1132BF084600068EDB2A84314F58461086070BD78
|
||||
S1132C00F8B504000D0017001E002000FFF75AFF5E
|
||||
S1132C10002805D140F2E111DFF83C02FFF77BFE0A
|
||||
S1132C20012F0BD0022F09D0042F07D00C2F05D071
|
||||
S1132C3040F2E511DFF82002FFF76DFE082E0DD0FB
|
||||
S1132C400A2E0BD00C2E09D0092E07D0002E05D049
|
||||
S1132C504FF4F571DFF80002FFF75DFEF80705D5C4
|
||||
S1132C6014F5A0600068EDB2284304E014F5A060F8
|
||||
S1132C700068EDB2A84314F5A0610860B80704D554
|
||||
S1132C80D4F80405EDB2284303E0D4F80405EDB20A
|
||||
S1132C90A843C4F80405780705D514F5A1600068B5
|
||||
S1132CA0EDB2284304E014F5A1600068EDB2A84336
|
||||
S1132CB014F5A1610860380705D514F5A360006810
|
||||
S1132CC0EDB2284304E014F5A3600068EDB2A84314
|
||||
S1132CD014F5A3610860F00704D5D4F80C05EDB22F
|
||||
S1132CE0284303E0D4F80C05EDB2A843C4F80C055E
|
||||
S1132CF0B00705D514F5A2600068EDB2284304E0DE
|
||||
S1132D0014F5A2600068EDB2A84314F5A26108604E
|
||||
S1132D10700704D5D4F81405EDB2284303E0D4F8C1
|
||||
S1132D201405EDB2A843C4F81405300704D5D4F84B
|
||||
S1132D301C05EDB2284303E0D4F81C05EDB2A8430A
|
||||
S1132D40C4F81C05002E05D114F5A5600068EDB289
|
||||
S1132D50284304E014F5A5600068EDB2A84314F517
|
||||
S1132D60A5610860F1BD70B504000D0016002000D7
|
||||
S1132D70FFF7A8FE002805D140F28531DFF8D8001E
|
||||
S1132D80FFF7C9FDEDB2F6B244F8256070BD38B561
|
||||
S1132D9004000D002000FFF795FE002805D14FF434
|
||||
S1132DA09E61DFF8B400FFF7B6FD08230122290075
|
||||
S1132DB0C9B22000FFF724FF01222900C9B2200074
|
||||
S1132DC0FFF7E4FE31BD38B504000D002000FFF725
|
||||
S1132DD079FE002804D14FF4D7611F48FFF79BFD0B
|
||||
S1132DE002222900C9B22000FFF7D0FE08230122E5
|
||||
S1132DF02900C9B22000FFF703FF31BD0080054060
|
||||
S1132E0000500040009005400060004000A00540D4
|
||||
S1132E100070004000B005400040024000C0054082
|
||||
S1132E200050024000D005400060024000E0054030
|
||||
S1132E300070024000F0054000D00340000006404E
|
||||
S1132E4000100640002006400030064000400640C6
|
||||
S1132E50005006400060064074310000DFF85C1149
|
||||
S1132E6088421BD0DFF85811884217D0DFF854117C
|
||||
S1132E70884213D0DFF8501188420FD0DFF84C118C
|
||||
S1132E8088420BD0DFF84811884207D0DFF844119C
|
||||
S1132E90884203D0DFF84011884201D1012000E0CC
|
||||
S1132EA00020C0B27047F8B504000F0016001D00E2
|
||||
S1132EB02000FFF7D3FF002805D14FF4B271DFF8EB
|
||||
S1132EC01C01FFF728FD002E05D140F26511DFF843
|
||||
S1132ED00C01FFF720FDB7EBC60F05D24FF4B37119
|
||||
S1132EE0DFF8F800FFF717FD200000F038F8B7EB23
|
||||
S1132EF0061F05D2206B50F020002063760803E003
|
||||
S1132F00206B30F020002063F800B0FBF6F0401C8A
|
||||
S1132F104008810961624021B0FBF1F202FB110219
|
||||
S1132F20A262E5620020A061200000F001F8F1BD7A
|
||||
S1132F3010B504002000FFF791FF002805D140F2EE
|
||||
S1132F40F511DFF89800FFF7E6FCE06A50F0100096
|
||||
S1132F50E062206B40F201310843206310BD10B5DC
|
||||
S1132F6004002000FFF77AFF002805D140F2152164
|
||||
S1132F70DFF86800FFF7CFFCA0690007FCD4E06A23
|
||||
S1132F8030F01000E062206BDFF85410084020633A
|
||||
S1132F9010BD10B504002000FFF760FF002805D124
|
||||
S1132FA04FF48D61DFF83400FFF7B5FCA069C0066B
|
||||
S1132FB001D4206801E05FF0FF3010BD00C0004084
|
||||
S1132FC000D0004000E0004000F00040000001405C
|
||||
S1132FD0001001400020014000300140D0310000C9
|
||||
S1132FE0FEFCFFFF0E48006850F005000C49086025
|
||||
S1132FF070470B48006850F00200094908607047A8
|
||||
S113300010B50400002C02D0B4F1807F03D9E22172
|
||||
S11330100448FFF780FC601E0349086010BD0000EF
|
||||
S113302010E000E01431000014E000E080B500F08E
|
||||
S113303007F8002801D0012000E00020C0B202BD42
|
||||
S1133040EFF3108062B6704740420F0000201C006E
|
||||
S113305080841E0000802500999E360000403800C0
|
||||
S113306000093D0000803E0000004B00404B4C0036
|
||||
S113307000204E00808D5B0000C05D000080700069
|
||||
S113308000127A0000007D0080969800001BB700B3
|
||||
S11330900080BB00C0E8CE00647ADA000024F400AB
|
||||
S11330A00000FA0080A81201002D310100366E01E3
|
||||
S11330B040787D01433A5C576F726B5C736F667442
|
||||
S11330C0776172655C4F70656E424C545C546172FA
|
||||
S11330D06765745C44656D6F5C41524D434D345F6C
|
||||
S11330E0544D34435F444B5F544D34433132334782
|
||||
S11330F05F4941525C50726F675C6C69625C6472D8
|
||||
S1133100697665726C69625C73797363746C2E633F
|
||||
S113311000000000433A5C576F726B5C736F667417
|
||||
S1133120776172655C4F70656E424C545C54617299
|
||||
S11331306765745C44656D6F5C41524D434D345F0B
|
||||
S1133140544D34435F444B5F544D34433132334721
|
||||
S11331505F4941525C50726F675C6C69625C647277
|
||||
S1133160697665726C69625C7379737469636B2EDA
|
||||
S113317063000000433A5C576F726B5C736F667454
|
||||
S1133180776172655C4F70656E424C545C54617239
|
||||
S11331906765745C44656D6F5C41524D434D345FAB
|
||||
S11331A0544D34435F444B5F544D344331323347C1
|
||||
S11331B05F4941525C50726F675C6C69625C647217
|
||||
S11331C0697665726C69625C6770696F2E63000072
|
||||
S11331D0433A5C576F726B5C736F667477617265A8
|
||||
S11331E05C4F70656E424C545C5461726765745CEC
|
||||
S11331F044656D6F5C41524D434D345F544D3443CF
|
||||
S11332005F444B5F544D3443313233475F4941523D
|
||||
S11332105C50726F675C6C69625C6472697665723B
|
||||
S11332206C69625C756172742E63000010B50749A5
|
||||
S113323079441831064C7C44163404E00A68081DAD
|
||||
S1133240511888470146A142F8D110BD2C00000056
|
||||
S11332503800000050F8041B61B150F8042BD30768
|
||||
S113326044BFA9F101039A18002342F8043B091F43
|
||||
S1133270FAD1EFE770470000DDFFFFFF58000000C0
|
||||
S1133280000000200000000080B50448006850F4ED
|
||||
S113329070000249086000F005F801BD88ED00E007
|
||||
S11332A0FEE70000034B9D46C046C04600F004F80C
|
||||
S11332B000F010F8580400204EF68851CEF20001B8
|
||||
S11332C0086840F4700008604FF00070E1EE100AE6
|
||||
S11332D07047000000F009F8002801D0FFF7A6FFAE
|
||||
S11332E00020FFF701FB00F002F80120704700F016
|
||||
S11332F001B800000746384600F002F8FBE700007A
|
||||
S113330080B5C046C046024A11001820ABBEFBE798
|
||||
S1073310260002008D
|
||||
S90332A525
|
||||
S11360005804002089720000A1720000A1720000EF
|
||||
S1136010A1720000A1720000A1720000A172000030
|
||||
S1136020A1720000A1720000A1720000A172000020
|
||||
S1136030A1720000A1720000A1720000AB6A00000E
|
||||
S1136040A1720000A1720000A1720000A172000000
|
||||
S1136050A1720000A1720000A1720000A1720000F0
|
||||
S1136060A1720000A1720000A1720000A1720000E0
|
||||
S1136070A1720000A1720000A1720000A1720000D0
|
||||
S1136080A1720000A1720000A1720000A1720000C0
|
||||
S1136090A1720000A1720000A1720000A1720000B0
|
||||
S11360A0A1720000A1720000A1720000A1720000A0
|
||||
S11360B0A1720000A1720000A1720000A172000090
|
||||
S11360C0A1720000A1720000A1720000A172000080
|
||||
S11360D0A1720000A1720000A1720000A172000070
|
||||
S11360E0A1720000A1720000A1720000A172000060
|
||||
S11360F0A1720000A1720000A1720000A172000050
|
||||
S1136100A1720000A1720000A1720000A17200003F
|
||||
S1136110A1720000A1720000A1720000A17200002F
|
||||
S1136120A1720000A1720000A1720000A17200001F
|
||||
S1136130A1720000A1720000A1720000A17200000F
|
||||
S1136140A1720000A1720000A1720000A1720000FF
|
||||
S1136150A1720000A1720000A1720000A1720000EF
|
||||
S1136160A1720000A1720000A1720000A1720000DF
|
||||
S1136170A1720000A1720000A1720000A1720000CF
|
||||
S1136180A1720000A1720000A1720000A1720000BF
|
||||
S1136190A1720000A1720000A1720000A1720000AF
|
||||
S11361A0A1720000A1720000A1720000A17200009F
|
||||
S11361B0A1720000A1720000A1720000A17200008F
|
||||
S11361C0A1720000A1720000A1720000A17200007F
|
||||
S11361D0A1720000A1720000A1720000A17200006F
|
||||
S11361E0A1720000A1720000A1720000A17200005F
|
||||
S11361F0A1720000A1720000A1720000A17200004F
|
||||
S1136200A1720000A1720000A1720000A17200003E
|
||||
S1136210A1720000A1720000A1720000A17200002E
|
||||
S1136220A1720000A1720000A1720000A17200001E
|
||||
S1136230A1720000A1720000A1720000A17200000E
|
||||
S1136240A1720000A1720000A1720000A1720000FE
|
||||
S1136250A1720000A1720000A1720000A1720000EE
|
||||
S1136260A1720000A1720000A1720000EE11AA55F3
|
||||
S1136270DFF81015884200F02E81DFF80C158842F3
|
||||
S113628000F02981DFF80415884200F02481DFF84A
|
||||
S11362900015884200F01F81DFF8F814884200F0EE
|
||||
S11362A01A81DFF8F414884200F01581DFF8EC1449
|
||||
S11362B0884200F01081DFF8E814884200F00B8176
|
||||
S11362C0DFF8E014884200F00681DFF8DC1488422D
|
||||
S11362D000F00181DFF8D414884200F0FC80DFF87C
|
||||
S11362E0D014884200F0F780DFF8C814884200F028
|
||||
S11362F0F280DFF8C414884200F0ED80DFF8BC14AB
|
||||
S1136300884200F0E880DFF8B814884200F0E380A7
|
||||
S1136310DFF8B014884200F0DE80DFF8AC14884265
|
||||
S113632000F0D980DFF8A414884200F0D480DFF8AC
|
||||
S1136330A014884200F0CF80DFF89814884200F05F
|
||||
S1136340CA80DFF89414884200F0C580DFF88C140A
|
||||
S1136350884200F0C080DFF88814884200F0BB80D7
|
||||
S1136360DFF88014884200F0B680DFF87C1488429D
|
||||
S113637000F0B180DFF87414884200F0AC80DFF8DC
|
||||
S11363807014884200F0A780DFF86814884200F097
|
||||
S1136390A280DFF86414884200F09D80DFF85C146A
|
||||
S11363A0884200F09880DFF85814884200F0938007
|
||||
S11363B0DFF85014884200F08E80DFF84C148842D5
|
||||
S11363C000F08980DFF84414884200F08480DFF80C
|
||||
S11363D04014884200F07F80DFF8381488427AD075
|
||||
S11363E0DFF83414884276D0DFF83014884272D053
|
||||
S11363F0DFF82C1488426ED0DFF8281488426AD063
|
||||
S1136400DFF82414884266D0DFF82014884262D072
|
||||
S1136410DFF81C1488425ED0DFF8181488425AD082
|
||||
S1136420DFF81414884256D0DFF81014884252D092
|
||||
S1136430DFF80C1488424ED0DFF8081488424AD0A2
|
||||
S1136440DFF80414884246D0DFF80014884242D0B2
|
||||
S1136450DFF8FC1388423ED0DFF8F81388423AD0C4
|
||||
S1136460DFF8F413884236D0DFF8F013884232D0D4
|
||||
S1136470DFF8EC1388422ED0DFF8E81388422AD0E4
|
||||
S1136480DFF8E413884226D0DFF8E013884222D0F4
|
||||
S1136490DFF8DC1388421ED010F1805F1BD0DFF8D8
|
||||
S11364A0D413884217D0DFF8D013884213D0DFF812
|
||||
S11364B0CC1388420FD0DFF8C81388420BD0DFF822
|
||||
S11364C0C413884207D0DFF8C013884203D0DFF832
|
||||
S11364D0BC13884201D1012000E00020C0B2704703
|
||||
S11364E010B504002000FFF7C3FE002805D140F2D8
|
||||
S11364F04321DFF89C0300F00EFAC4F30720DFF811
|
||||
S113650094130818E1B2890051EA401050F0844015
|
||||
S11365100121016010BDDFF88C03DFF88C130160EA
|
||||
S1136520FEE700000138FDD17047704770B50400E4
|
||||
S1136530DFF864030568DFF87403066855F4006542
|
||||
S113654035F4800556F40066DFF84C030560DFF887
|
||||
S11365505C03066015F0010014F0010191F00101E3
|
||||
S1136560C0B208421ED074F001000540DFF82803D1
|
||||
S11365700560002E07D516F07000302809D016F0FB
|
||||
S11365807000702805D0002E08D415F03000302893
|
||||
S113659004D14FF48050FFF7C5FF03E05FF40020FF
|
||||
S11365A0FFF7C0FF35F4FE6514F4FE600543DFF821
|
||||
S11365B000030640DFF8FC022040064314F0080004
|
||||
S11365C056EAC006DFF8D0020560DFF8E002066094
|
||||
S11365D01020FFF7A7FF35F4005514F400500543CD
|
||||
S11365E036F4005614F400500643DFF8B00240219C
|
||||
S11365F00160002E06D5DFF8B4020660DFF89802C9
|
||||
S1136600056005E0DFF890020560DFF8A00206608F
|
||||
S1136610DFF8A4020540DFF8A4022040054336F069
|
||||
S1136620FC5614F0FC500643600008D555F4800570
|
||||
S113663036F48006DFF888022040064301E036F095
|
||||
S1136640804620050ED44FF4004000E0401E002890
|
||||
S113665004D0DFF84C1209684906F7D535F4006513
|
||||
S113666036F40066DFF830020560DFF840020660A9
|
||||
S11366701020FFF757FF70BD38B5DFF848020068F7
|
||||
S1136680DFF844120840DFF84412884205D040F293
|
||||
S11366909761DFF8FC0100F03EF9DFF8FC010168C6
|
||||
S11366A0DFF808020268002A02D512F0700001E047
|
||||
S11366B011F03000002808D0102849D020284AD0F2
|
||||
S11366C030284BD070284CD04EE0C1F38410DFF852
|
||||
S11366D0003253F82000DFF8FC31134013F1004F6F
|
||||
S11366E003D0002A1DD40B051BD4DFF8EC311B6842
|
||||
S11366F0DFF8E8412468C4F304256D1C14F01F047A
|
||||
S1136700641C04FB05F46400B0FBF4F09C05A40DC8
|
||||
S1136710C3F3892303FB00F39B0A04FB003051F409
|
||||
S113672080014B022DD5002A26D553001ED5DFF853
|
||||
S1136730A431134013F1004F03D0002A16D40905E5
|
||||
S113674014D44000C2F38651491CB0FBF1F018E0A8
|
||||
S1136750DFF88C01BFE7DFF88C01BCE747F230506B
|
||||
S1136760B9E74FF40040B6E700200AE0C2F3C55190
|
||||
S1136770491CB0FBF1F004E0C1F3C351491CB0FB68
|
||||
S1136780F1F032BD003800F0013800F0003400F0C0
|
||||
S1136790013400F0023400F0003C00F0013C00F051
|
||||
S11367A0023C00F0005800F0005400F0000800F033
|
||||
S11367B0010800F0020800F0030800F0040800F0EB
|
||||
S11367C0050800F0060800F0070800F0080800F0CB
|
||||
S11367D0090800F00A0800F00B0800F00C0800F0AB
|
||||
S11367E00D0800F00E0800F00F0800F0100800F08B
|
||||
S11367F0001400F0002000F0012000F0022000F05E
|
||||
S1136800032000F0042000F0052000F0004800F010
|
||||
S1136810005000F0004000F0014000F0004400F09F
|
||||
S1136820014400F0001C00F0011C00F0021C00F008
|
||||
S1136830031C00F0000400F0010400F0020400F066
|
||||
S1136840030400F0040400F0050400F0001800F054
|
||||
S1136850011800F0021800F0031800F0041800F00A
|
||||
S1136860051800F0061800F0071800F0000C00F0FE
|
||||
S1136870002800F0010000F0005C00F0015C00F072
|
||||
S1136880025C00F0035C00F0045C00F0055C00F0C6
|
||||
S1136890B470000000E60F4060E00F4058E00F4085
|
||||
S11368A050E00F400CED00E00400FA0570E00F40EA
|
||||
S11368B08FFFFF7F30000080FEFF3FF80100C0071C
|
||||
S11368C00000404000E00F400000FF700000051091
|
||||
S11368D0487000000008008060E10F4064E10F4050
|
||||
S11368E00024F40000093D0080B500F007F800F032
|
||||
S11368F021F800F08FF800F033F8FAE780B500F0E3
|
||||
S1136900B3F80748FFF712FE00F076F800F0B6F887
|
||||
S113691000F0D4F801BD034A106003480160FEE7AB
|
||||
S11369204005C001480000204C00002080B5FFF75E
|
||||
S1136930F2FD01BD80B52A48FFF7D2FD2948FFF7D3
|
||||
S1136940CFFD03215FF0402000F03DFAFFF794FEF5
|
||||
S113695060234FF461420100234800F0A4FA01BD12
|
||||
S113696080B52248007800280BD1214800F02BF88C
|
||||
S1136970012827D11D48012101701E480021017002
|
||||
S113698020E01C4800781A494018401C00F01BF80D
|
||||
S1136990012817D117480078401C1649087015487B
|
||||
S11369A000781349097888420CD1104800210170FD
|
||||
S11369B00F484078FF2805D10D488078002801D180
|
||||
S11369C0FFF7B4FF01BD10B50400074800F0E1FA79
|
||||
S11369D010F1010F02D02070012000E0002010BD52
|
||||
S11369E0001800F0000800F000C00040550000202E
|
||||
S11369F0000000205400002080B51748FFF770FD08
|
||||
S1136A000421164800F0C3F900220421134800F0C1
|
||||
S1136A10AAF901BD10B500F045F80400104800685B
|
||||
S1136A20201AB0F5FA7F16D30E480078002808D152
|
||||
S1136A300C480121017004220421084800F093F954
|
||||
S1136A4007E008480021017000220421034800F0F7
|
||||
S1136A508AF90348046010BD060800F00060024093
|
||||
S1136A6044000020560000200348006850F04040D5
|
||||
S1136A70014908607047000034EF00E080B5FFF77B
|
||||
S1136A80FBFD4FF47A71B0FBF1F000F0B9FA00F0BD
|
||||
S1136A90A9FA00F0AEFA002000F001F801BD0649A1
|
||||
S1136AA00860704704480068704703480068401C49
|
||||
S1136AB001490860704700005000002080B500F0D4
|
||||
S1136AC0B5FA01BDB0F1402F5BD0DFF83013884236
|
||||
S1136AD057D0DFF82C13884253D0DFF828138842AC
|
||||
S1136AE04FD0DFF8241388424BD0DFF820138842BC
|
||||
S1136AF047D0DFF81C13884243D0DFF818138842CC
|
||||
S1136B003FD0DFF8141388423BD0DFF810138842DB
|
||||
S1136B1037D0DFF80C13884233D0DFF808138842EB
|
||||
S1136B202FD0DFF8041388422BD0DFF800138842FB
|
||||
S1136B3027D0DFF8FC12884223D0DFF8F81288420D
|
||||
S1136B401FD0DFF8F41288421BD0DFF8F01288421D
|
||||
S1136B5017D0DFF8EC12884213D0DFF8E81288422D
|
||||
S1136B600FD0DFF8E41288420BD0DFF8E01288423D
|
||||
S1136B7007D0DFF8DC12884203D0DFF8D81288424D
|
||||
S1136B8001D1012000E00020C0B2704770B50400BC
|
||||
S1136B900D0016002000FFF795FF002804D1FB210B
|
||||
S1136BA0DFF8B402FFF7B7FE002E08D0012E06D09E
|
||||
S1136BB0022E04D0FE21DFF8A002FFF7ACFEF0079E
|
||||
S1136BC005D514F580600068EDB2284304E014F59F
|
||||
S1136BD080600068EDB2A84314F580610860B007D6
|
||||
S1136BE005D514F584600068EDB2284304E014F57B
|
||||
S1136BF084600068EDB2A84314F58461086070BD38
|
||||
S1136C00F8B504000D0017001E002000FFF75AFF1E
|
||||
S1136C10002805D140F2E111DFF83C02FFF77BFECA
|
||||
S1136C20012F0BD0022F09D0042F07D00C2F05D031
|
||||
S1136C3040F2E511DFF82002FFF76DFE082E0DD0BB
|
||||
S1136C400A2E0BD00C2E09D0092E07D0002E05D009
|
||||
S1136C504FF4F571DFF80002FFF75DFEF80705D584
|
||||
S1136C6014F5A0600068EDB2284304E014F5A060B8
|
||||
S1136C700068EDB2A84314F5A0610860B80704D514
|
||||
S1136C80D4F80405EDB2284303E0D4F80405EDB2CA
|
||||
S1136C90A843C4F80405780705D514F5A160006875
|
||||
S1136CA0EDB2284304E014F5A1600068EDB2A843F6
|
||||
S1136CB014F5A1610860380705D514F5A3600068D0
|
||||
S1136CC0EDB2284304E014F5A3600068EDB2A843D4
|
||||
S1136CD014F5A3610860F00704D5D4F80C05EDB2EF
|
||||
S1136CE0284303E0D4F80C05EDB2A843C4F80C051E
|
||||
S1136CF0B00705D514F5A2600068EDB2284304E09E
|
||||
S1136D0014F5A2600068EDB2A84314F5A26108600E
|
||||
S1136D10700704D5D4F81405EDB2284303E0D4F881
|
||||
S1136D201405EDB2A843C4F81405300704D5D4F80B
|
||||
S1136D301C05EDB2284303E0D4F81C05EDB2A843CA
|
||||
S1136D40C4F81C05002E05D114F5A5600068EDB249
|
||||
S1136D50284304E014F5A5600068EDB2A84314F5D7
|
||||
S1136D60A5610860F1BD70B504000D001600200097
|
||||
S1136D70FFF7A8FE002805D140F28531DFF8D800DE
|
||||
S1136D80FFF7C9FDEDB2F6B244F8256070BD38B521
|
||||
S1136D9004000D002000FFF795FE002805D14FF4F4
|
||||
S1136DA09E61DFF8B400FFF7B6FD08230122290035
|
||||
S1136DB0C9B22000FFF724FF01222900C9B2200034
|
||||
S1136DC0FFF7E4FE31BD38B504000D002000FFF7E5
|
||||
S1136DD079FE002804D14FF4D7611F48FFF79BFDCB
|
||||
S1136DE002222900C9B22000FFF7D0FE08230122A5
|
||||
S1136DF02900C9B22000FFF703FF31BD0080054020
|
||||
S1136E0000500040009005400060004000A0054094
|
||||
S1136E100070004000B005400040024000C0054042
|
||||
S1136E200050024000D005400060024000E00540F0
|
||||
S1136E300070024000F0054000D00340000006400E
|
||||
S1136E400010064000200640003006400040064086
|
||||
S1136E50005006400060064074710000DFF85C11C9
|
||||
S1136E6088421BD0DFF85811884217D0DFF854113C
|
||||
S1136E70884213D0DFF8501188420FD0DFF84C114C
|
||||
S1136E8088420BD0DFF84811884207D0DFF844115C
|
||||
S1136E90884203D0DFF84011884201D1012000E08C
|
||||
S1136EA00020C0B27047F8B504000F0016001D00A2
|
||||
S1136EB02000FFF7D3FF002805D14FF4B271DFF8AB
|
||||
S1136EC01C01FFF728FD002E05D140F26511DFF803
|
||||
S1136ED00C01FFF720FDB7EBC60F05D24FF4B371D9
|
||||
S1136EE0DFF8F800FFF717FD200000F038F8B7EBE3
|
||||
S1136EF0061F05D2206B50F020002063760803E0C3
|
||||
S1136F00206B30F020002063F800B0FBF6F0401C4A
|
||||
S1136F104008810961624021B0FBF1F202FB1102D9
|
||||
S1136F20A262E5620020A061200000F001F8F1BD3A
|
||||
S1136F3010B504002000FFF791FF002805D140F2AE
|
||||
S1136F40F511DFF89800FFF7E6FCE06A50F0100056
|
||||
S1136F50E062206B40F201310843206310BD10B59C
|
||||
S1136F6004002000FFF77AFF002805D140F2152124
|
||||
S1136F70DFF86800FFF7CFFCA0690007FCD4E06AE3
|
||||
S1136F8030F01000E062206BDFF8541008402063FA
|
||||
S1136F9010BD10B504002000FFF760FF002805D1E4
|
||||
S1136FA04FF48D61DFF83400FFF7B5FCA069C0062B
|
||||
S1136FB001D4206801E05FF0FF3010BD00C0004044
|
||||
S1136FC000D0004000E0004000F00040000001401C
|
||||
S1136FD0001001400020014000300140D071000049
|
||||
S1136FE0FEFCFFFF0E48006850F005000C490860E5
|
||||
S1136FF070470B48006850F0020009490860704768
|
||||
S113700010B50400002C02D0B4F1807F03D9E22132
|
||||
S11370100448FFF780FC601E0349086010BD0000AF
|
||||
S113702010E000E01471000014E000E080B500F00E
|
||||
S113703007F8002801D0012000E00020C0B202BD02
|
||||
S1137040EFF3108062B6704740420F0000201C002E
|
||||
S113705080841E0000802500999E36000040380080
|
||||
S113706000093D0000803E0000004B00404B4C00F6
|
||||
S113707000204E00808D5B0000C05D000080700029
|
||||
S113708000127A0000007D0080969800001BB70073
|
||||
S11370900080BB00C0E8CE00647ADA000024F4006B
|
||||
S11370A00000FA0080A81201002D310100366E01A3
|
||||
S11370B040787D01433A5C576F726B5C736F667402
|
||||
S11370C0776172655C4F70656E424C545C546172BA
|
||||
S11370D06765745C44656D6F5C41524D434D345F2C
|
||||
S11370E0544D34435F444B5F544D34433132334742
|
||||
S11370F05F4941525C50726F675C6C69625C647298
|
||||
S1137100697665726C69625C73797363746C2E63FF
|
||||
S113711000000000433A5C576F726B5C736F6674D7
|
||||
S1137120776172655C4F70656E424C545C54617259
|
||||
S11371306765745C44656D6F5C41524D434D345FCB
|
||||
S1137140544D34435F444B5F544D344331323347E1
|
||||
S11371505F4941525C50726F675C6C69625C647237
|
||||
S1137160697665726C69625C7379737469636B2E9A
|
||||
S113717063000000433A5C576F726B5C736F667414
|
||||
S1137180776172655C4F70656E424C545C546172F9
|
||||
S11371906765745C44656D6F5C41524D434D345F6B
|
||||
S11371A0544D34435F444B5F544D34433132334781
|
||||
S11371B05F4941525C50726F675C6C69625C6472D7
|
||||
S11371C0697665726C69625C6770696F2E63000032
|
||||
S11371D0433A5C576F726B5C736F66747761726568
|
||||
S11371E05C4F70656E424C545C5461726765745CAC
|
||||
S11371F044656D6F5C41524D434D345F544D34438F
|
||||
S11372005F444B5F544D3443313233475F494152FD
|
||||
S11372105C50726F675C6C69625C647269766572FB
|
||||
S11372206C69625C756172742E63000010B5074965
|
||||
S113723079441831064C7C44163404E00A68081D6D
|
||||
S1137240511888470146A142F8D110BD2C00000016
|
||||
S11372503800000050F8041B61B150F8042BD30728
|
||||
S113726044BFA9F101039A18002342F8043B091F03
|
||||
S1137270FAD1EFE770470000DDFFFFFF5800000080
|
||||
S1137280000000200000000080B50448006850F4AD
|
||||
S113729070000249086000F005F801BD88ED00E0C7
|
||||
S11372A0FEE70000034B9D46C046C04600F004F8CC
|
||||
S11372B000F010F8580400204EF68851CEF2000178
|
||||
S11372C0086840F4700008604FF00070E1EE100AA6
|
||||
S11372D07047000000F009F8002801D0FFF7A6FF6E
|
||||
S11372E00020FFF701FB00F002F80120704700F0D6
|
||||
S11372F001B800000746384600F002F8FBE700003A
|
||||
S113730080B5C046C046024A11001820ABBEFBE758
|
||||
S1077310260002004D
|
||||
S90372A5E5
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<Build><ColumnWidth0>20</ColumnWidth0><ColumnWidth1>1395</ColumnWidth1><ColumnWidth2>372</ColumnWidth2><ColumnWidth3>93</ColumnWidth3></Build><Find-All-Declarations><ColumnWidth0>142</ColumnWidth0><ColumnWidth1>20</ColumnWidth1><ColumnWidth2>243</ColumnWidth2></Find-All-Declarations><TerminalIO/><Debug-Log><ColumnWidth0>18</ColumnWidth0><ColumnWidth1>371</ColumnWidth1></Debug-Log></Static>
|
||||
<Windows>
|
||||
|
||||
<Wnd2>
|
||||
<Wnd0>
|
||||
<Tabs>
|
||||
<Tab>
|
||||
<Identity>TabID-23736-13759</Identity>
|
||||
|
@ -29,7 +29,7 @@
|
|||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<SelectedTab>0</SelectedTab></Wnd2><Wnd3><Tabs><Tab><Identity>TabID-11003-23003</Identity><TabName>Build</TabName><Factory>Build</Factory><Session/></Tab><Tab><Identity>TabID-13665-29690</Identity><TabName>Find All Declarations</TabName><Factory>Find-All-Declarations</Factory><Session/></Tab><Tab><Identity>TabID-2562-1429</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd3></Windows>
|
||||
<SelectedTab>0</SelectedTab></Wnd0><Wnd1><Tabs><Tab><Identity>TabID-11003-23003</Identity><TabName>Build</TabName><Factory>Build</Factory><Session/></Tab><Tab><Identity>TabID-13665-29690</Identity><TabName>Find All Declarations</TabName><Factory>Find-All-Declarations</Factory><Session/></Tab><Tab><Identity>TabID-2562-1429</Identity><TabName>Debug Log</TabName><Factory>Debug-Log</Factory><Session/></Tab></Tabs><SelectedTab>0</SelectedTab></Wnd1></Windows>
|
||||
<Editor>
|
||||
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
|||
|
||||
|
||||
|
||||
<Top><Row0><Sizes><Toolbar-02a5fc58><key>iaridepm.enu1</key></Toolbar-02a5fc58></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>579</Bottom><Right>418</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>104167</sizeHorzCX><sizeHorzCY>198413</sizeHorzCY><sizeVertCX>218750</sizeVertCX><sizeVertCY>576389</sizeVertCY></Rect></Wnd2><Wnd3><Rect><Top>0</Top><Left>0</Left><Bottom>6881384</Bottom><Right>7536751</Right><x>-2</x><y>577</y><xscreen>1924</xscreen><yscreen>200</yscreen><sizeHorzCX>1002083</sizeHorzCX><sizeHorzCY>198413</sizeHorzCY><sizeVertCX>218750</sizeVertCX><sizeVertCY>382937</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes/></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
<Top><Row0><Sizes><Toolbar-02bbfc58><key>iaridepm.enu1</key></Toolbar-02bbfc58></Sizes></Row0></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>579</Bottom><Right>418</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>104167</sizeHorzCX><sizeHorzCY>198413</sizeHorzCY><sizeVertCX>218750</sizeVertCX><sizeVertCY>576389</sizeVertCY></Rect></Wnd0><Wnd1><Rect><Top>0</Top><Left>0</Left><Bottom>6881384</Bottom><Right>7536751</Right><x>-2</x><y>577</y><xscreen>1924</xscreen><yscreen>200</yscreen><sizeHorzCX>1002083</sizeHorzCX><sizeHorzCY>198413</sizeHorzCY><sizeVertCX>218750</sizeVertCX><sizeVertCY>382937</sizeVertCY></Rect></Wnd1></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes/></Row0></Bottom><Float><Sizes/></Float></Positions>
|
||||
</Desktop>
|
||||
</Workspace>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,7 @@
|
|||
/*-Specials-*/
|
||||
define symbol __ICFEDIT_intvec_start__ = 0x00002000;
|
||||
define symbol __ICFEDIT_intvec_start__ = 0x00006000;
|
||||
/*-Memory Regions-*/
|
||||
define symbol __ICFEDIT_region_ROM_start__ = 0x00002000;
|
||||
define symbol __ICFEDIT_region_ROM_start__ = 0x00006000;
|
||||
define symbol __ICFEDIT_region_ROM_end__ = 0x0003FFFF;
|
||||
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
|
||||
define symbol __ICFEDIT_region_RAM_end__ = 0x20007FFF;
|
||||
|
|
|
@ -273,7 +273,7 @@ blt_bool FlashWriteChecksum(void)
|
|||
{
|
||||
blt_int32u signature_checksum = 0;
|
||||
|
||||
/* for the STM32 target we defined the checksum as the Two's complement value of the
|
||||
/* for the EFM32 target we defined the checksum as the Two's complement value of the
|
||||
* sum of the first 7 exception addresses.
|
||||
*
|
||||
* Layout of the vector table:
|
||||
|
|
|
@ -284,17 +284,17 @@ blt_bool FlashWriteChecksum(void)
|
|||
{
|
||||
blt_int32u signature_checksum = 0;
|
||||
|
||||
/* for the STM32 target we defined the checksum as the Two's complement value of the
|
||||
/* for the LM3S target we defined the checksum as the Two's complement value of the
|
||||
* sum of the first 7 exception addresses.
|
||||
*
|
||||
* Layout of the vector table:
|
||||
* 0x08000000 Initial stack pointer
|
||||
* 0x08000004 Reset Handler
|
||||
* 0x08000008 NMI Handler
|
||||
* 0x0800000C Hard Fault Handler
|
||||
* 0x08000010 MPU Fault Handler
|
||||
* 0x08000014 Bus Fault Handler
|
||||
* 0x08000018 Usage Fault Handler
|
||||
* 0x00000000 Initial stack pointer
|
||||
* 0x00000004 Reset Handler
|
||||
* 0x00000008 NMI Handler
|
||||
* 0x0000000C Hard Fault Handler
|
||||
* 0x00000010 MPU Fault Handler
|
||||
* 0x00000014 Bus Fault Handler
|
||||
* 0x00000018 Usage Fault Handler
|
||||
*
|
||||
* signature_checksum = Two's complement of (SUM(exception address values))
|
||||
*
|
||||
|
|
|
@ -40,14 +40,25 @@
|
|||
/****************************************************************************************
|
||||
* Macro definitions
|
||||
****************************************************************************************/
|
||||
/** \brief Pointer to the user program's reset vector. Note that this needs to be
|
||||
* changed in case the reserved memory for the bootloader is more than 0x2000.
|
||||
*/
|
||||
#define CPU_USER_PROGRAM_STARTADDR_PTR ((blt_addr) 0x00002004)
|
||||
/** \brief Pointer to the user program's vector table. Note that this needs to be
|
||||
* changed in case the reserved memory for the bootloader is more than 0x2000.
|
||||
*/
|
||||
#define CPU_USER_PROGRAM_VECTABLE_OFFSET ((blt_int32u)0x00002000)
|
||||
#if (BOOT_FILE_SYS_ENABLE > 0)
|
||||
/** \brief Pointer to the user program's reset vector. Note that this needs to be
|
||||
* changed in case the reserved memory for the bootloader is more than 0x6000.
|
||||
*/
|
||||
#define CPU_USER_PROGRAM_STARTADDR_PTR ((blt_addr) 0x00006004)
|
||||
/** \brief Pointer to the user program's vector table. Note that this needs to be
|
||||
* changed in case the reserved memory for the bootloader is more than 0x6000.
|
||||
*/
|
||||
#define CPU_USER_PROGRAM_VECTABLE_OFFSET ((blt_int32u)0x00006000)
|
||||
#else
|
||||
/** \brief Pointer to the user program's reset vector. Note that this needs to be
|
||||
* changed in case the reserved memory for the bootloader is more than 0x2000.
|
||||
*/
|
||||
#define CPU_USER_PROGRAM_STARTADDR_PTR ((blt_addr) 0x00002004)
|
||||
/** \brief Pointer to the user program's vector table. Note that this needs to be
|
||||
* changed in case the reserved memory for the bootloader is more than 0x2000.
|
||||
*/
|
||||
#define CPU_USER_PROGRAM_VECTABLE_OFFSET ((blt_int32u)0x00002000)
|
||||
#endif
|
||||
|
||||
|
||||
/****************************************************************************************
|
||||
|
|
Loading…
Reference in New Issue