📄 storage_8c-source.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>VLSI Solution Oy Evaluation MP3 Player Source Code Documentation</title><link href="doxygen.css" rel="stylesheet" type="text/css"><img src="vlsi_small.gif" hspace="20" bordercolor="#ffffff" alt="VLSI Solution Oy"><b>VLSI Solution Oy Evaluation MP3 Player Source Code Documentation</b><p></p></head><body><!-- Generated by Doxygen 1.3.7 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div><h1>storage.c</h1><a href="storage_8c.html">Go to the documentation of this file.</a><pre class="fragment"><div>00001 00019 <span class="preprocessor">#include "<a class="code" href="storage_8h.html">storage.h</a>"</span>00020 <span class="preprocessor">#include "<a class="code" href="board_8h.html">board.h</a>"</span>00021 <span class="preprocessor">#include "console.h"</span>00022 <span class="preprocessor">#include "<a class="code" href="mmc_8h.html">mmc.h</a>"</span>00023 <span class="preprocessor">#include "<a class="code" href="buffer_8h.html">buffer.h</a>"</span>00024 00025 00026 <span class="comment">//#define MMCDEBUG</span>00027 00028 <a name="l00034"></a><a class="code" href="storage_8c.html#a0">00034</a> xdata <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="mmc_8h.html#a0">storageFlags</a> = 0;00035 00036 00037 <a name="l00043"></a><a class="code" href="storage_8h.html#a0">00043</a> <a class="code" href="board_8h.html#a45">Public</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="storage_8c.html#a1">InitStorage</a>(){00044 00045 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> result;00046 00047 ConsoleWrite (<span class="stringliteral">"Init: Storage v2: supports: MMC,SD,miniSD in SPI mode\r"</span>);00048 00049 result=<a class="code" href="mmc_8c.html#a5">InitMMC</a>();00050 <span class="keywordflow">if</span> (result==0x0e){ <span class="comment">//ok, no support for seek-before-read</span>00051 ConsoleWrite(<span class="stringliteral">"Storage initialized in seek-and-read mode.\r"</span>);00052 <a class="code" href="mmc_8h.html#a0">storageFlags</a> = 1;00053 <span class="keywordflow">return</span> 0;00054 }00055 00056 <span class="keywordflow">if</span> (result){ <span class="comment">//error resulted in MMC startup</span>00057 ConsoleWrite(<span class="stringliteral">"InitStorage: Can't start MMC. "</span>);00058 ConsolePutHex8(result);00059 ConsolePutChar(13);00060 <a class="code" href="mmc_8h.html#a0">storageFlags</a> = 4;00061 <span class="keywordflow">return</span> 1; <span class="comment">//MMC Init Error</span>00062 }00063 00064 ConsoleWrite(<span class="stringliteral">"InitStorage ok.\r"</span>);00065 <a class="code" href="mmc_8h.html#a0">storageFlags</a> = 0;00066 <span class="keywordflow">return</span> 0;00067 00068 }00069 00070 <a name="l00071"></a><a class="code" href="storage_8h.html#a1">00071</a> <a class="code" href="board_8h.html#a45">Public</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="storage_8h.html#a1">PrepareToReadDiskSector</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sectorN){00072 00073 <span class="preprocessor">#ifdef MMCDEBUG</span>00074 <span class="preprocessor"></span> ConsoleWrite(<span class="stringliteral">"<strategy:"</span>);00075 ConsolePutUInt(sectorN);00076 ConsoleWrite(<span class="stringliteral">" Flags:"</span>);00077 ConsolePutHex8(<a class="code" href="mmc_8h.html#a0">storageFlags</a>);00078 <span class="preprocessor">#endif</span>00079 <span class="preprocessor"></span>00080 <span class="keywordflow">if</span> (!<a class="code" href="mmc_8h.html#a0">storageFlags</a>){00081 <span class="comment">//Storage device supports seek-before-read</span>00082 <span class="keywordflow">if</span> (<a class="code" href="mmc_8h.html#a2">SeekSector</a>(sectorN)){00083 00084 <span class="preprocessor">#ifdef MMCDEBUG</span>00085 <span class="preprocessor"></span> ConsoleWrite(<span class="stringliteral">"Seek Error. strategy>"</span>); 00086 <span class="preprocessor">#endif</span>00087 <span class="preprocessor"></span>00088 <span class="keywordflow">return</span> 0x0f; <span class="comment">//seek error code</span>00089 }00090 <a class="code" href="mmc_8h.html#a0">storageFlags</a> |= 0x02; <span class="comment">//flag: a sector is seeked for reading</span>00091 00092 <span class="preprocessor">#ifdef MMCDEBUG</span>00093 <span class="preprocessor"></span> ConsoleWrite(<span class="stringliteral">"Seeked. strategy>"</span>);00094 <span class="preprocessor">#endif</span>00095 <span class="preprocessor"></span>00096 <span class="keywordflow">return</span> 0; <span class="comment">//ok return</span>00097 }00098 00099 <span class="preprocessor">#ifdef MMCDEBUG</span>00100 <span class="preprocessor"></span> ConsoleWrite(<span class="stringliteral">"strategy>"</span>);00101 <span class="preprocessor">#endif</span>00102 <span class="preprocessor"></span>00103 <span class="keywordflow">return</span> 0; <span class="comment">//ok return</span>00104 }00105 00106 <a name="l00110"></a><a class="code" href="storage_8h.html#a2">00110</a> <a class="code" href="board_8h.html#a45">Public</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="storage_8h.html#a2">ReadDiskSector</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sectorN){00111 00112 00113 <span class="preprocessor">#ifdef MMCDEBUG</span>00114 <span class="preprocessor"></span> ConsoleWrite(<span class="stringliteral">"<read"</span>); <span class="comment">//Read called (strategy, not yet actual read)</span>00115 <span class="preprocessor">#endif</span>00116 <span class="preprocessor"></span>00117 <span class="comment">//if a sector has not already been seeked, seek now.</span>00118 <span class="keywordflow">if</span> (!(<a class="code" href="mmc_8h.html#a0">storageFlags</a>&0x02)){ 00119 <span class="preprocessor">#ifdef MMCDEBUG</span>00120 <span class="preprocessor"></span> ConsoleWrite(<span class="stringliteral">"F"</span>);00121 <span class="preprocessor">#endif</span>00122 <span class="preprocessor"></span> <span class="keywordflow">if</span> (<a class="code" href="mmc_8h.html#a2">SeekSector</a>(sectorN)) <span class="keywordflow">return</span> 0x0f; <span class="comment">//seek error</span>00123 }00124 00125 <a class="code" href="mmc_8h.html#a0">storageFlags</a> &= 0xfd; <span class="comment">//clear sector-already-seeked flag</span>00126 <span class="keywordflow">if</span> (<a class="code" href="mmc_8c.html#a9">ReadPhysicalSector</a>()){00127 ConsoleWrite(<span class="stringliteral">"error read>"</span>);00128 <span class="keywordflow">return</span> 0x10; <span class="comment">//read error</span>00129 }00130 00131 <span class="preprocessor">#ifdef MMCDEBUG</span>00132 <span class="preprocessor"></span> ConsoleWrite(<span class="stringliteral">"read>"</span>);00133 <span class="preprocessor">#endif</span>00134 <span class="preprocessor"></span>00135 <span class="keywordflow">return</span> 0; <span class="comment">/* All OK return */</span>00136 }00137 00138 00139 <a name="l00141"></a><a class="code" href="storage_8h.html#a3">00141</a> <a class="code" href="board_8h.html#a45">Public</a> <span class="keywordtype">void</span> <a class="code" href="storage_8c.html#a4">DumpDiskSector</a>(){00142 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ha,la;00143 00144 ConsoleWrite(<span class="stringliteral">"\rDiskBlock "</span>);00145 ConsolePutUInt(<a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a>);00146 ConsoleWrite(<span class="stringliteral">":\r"</span>);00147 <span class="keywordflow">for</span> (ha=0; ha<32; ha++){00148 ConsolePutHex16 ((ha<<4));00149 ConsoleWrite(<span class="stringliteral">": "</span>);00150 <span class="keywordflow">for</span> (la=0; la<16; la++){00151 ConsolePutHex8(<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>[(ha<<4)+la]);00152 ConsolePutChar(<span class="charliteral">' '</span>);00153 <span class="keywordflow">if</span> (la==7){ 00154 ConsolePutChar(<span class="charliteral">' '</span>);00155 }00156 }00157 ConsolePutChar(<span class="charliteral">' '</span>);00158 <span class="keywordflow">for</span> (la=0; la<16; la++){00159 <span class="keywordflow">if</span> ((<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>[(ha<<4)+la]) > 30){00160 ConsolePutChar(<a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>[(ha<<4)+la]);00161 }<span class="keywordflow">else</span>{00162 ConsolePutChar(<span class="charliteral">'.'</span>);00163 }00164 }00165 ConsolePutChar(<span class="charliteral">'\r'</span>);00166 } 00167 }00168 00169 00170 00171 00172 00173 00174 00175 00176 <a name="l00183"></a><a class="code" href="storage_8h.html#a4">00183</a> <a class="code" href="board_8h.html#a45">Public</a> <span class="keywordtype">void</span> <a class="code" href="storage_8h.html#a4">WriteDiskSector</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> sectorN){00184 <a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a> = sectorN;00185 <a class="code" href="buffer_8c.html#a1">dataBufPtr</a> = <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>;00186 <a class="code" href="mmc_8c.html#a10">WritePhysicalSector</a>();00187 }</div></pre><hr><FONT SIZE="-1">All software copyright 2000-2004 <a href="http://www.vlsi.fi/"> VLSI Solution OY.</a>Redistribution of these software modules are limited to promotional use onlyand only with the VS1011 / VS1002 / VS1003 MP3-Evakit evaluation boards. Free orcommercial use of these software modules in MP3 players is ok if theproduct includes MP3 decoder chip(s) from VLSI. You can request the complete(compilable) package from mp3@vlsi.fi</FONT>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -