⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample_gpio_driver.html

📁 ADI 公司blackfin系列的用户使用文挡。
💻 HTML
📖 第 1 页 / 共 3 页
字号:
    len = pflags_proc_output <span class="br0">&#40;</span>page<span class="br0">&#41;</span>;  <span class="kw1">if</span> <span class="br0">&#40;</span>len &lt;= off + count<span class="br0">&#41;</span>    *eof = <span class="nu0">1</span>;  *start = page + off;  len -= off;  <span class="kw1">if</span> <span class="br0">&#40;</span>len &gt; count<span class="br0">&#41;</span>    len = count;  <span class="kw1">if</span> <span class="br0">&#40;</span>len &lt; <span class="nu0">0</span><span class="br0">&#41;</span>    len = <span class="nu0">0</span>;  <span class="kw1">return</span> len;<span class="br0">&#125;</span>&nbsp;<span class="co1">// simpler vesion</span>&nbsp;<span class="kw4">static</span> <span class="kw4">int</span>pflags_simper_read_proc <span class="br0">&#40;</span><span class="kw4">char</span> *page, <span class="kw4">char</span> **start, off_t off,                  <span class="kw4">int</span> count, <span class="kw4">int</span> *eof, <span class="kw4">void</span> *data<span class="br0">&#41;</span><span class="br0">&#123;</span>  <span class="kw4">int</span> len = <span class="nu0">0</span>;    <span class="kw1">if</span> <span class="br0">&#40;</span> off == <span class="nu0">0</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>      len = pflags_proc_output <span class="br0">&#40;</span>page<span class="br0">&#41;</span>;  <span class="br0">&#125;</span>&nbsp;  <span class="kw1">return</span> len;<span class="br0">&#125;</span>&nbsp;&nbsp;</pre><p> The code to write the data into the <strong>page</strong> buffer follows</p><pre class="code c"><span class="kw4">static</span> <span class="kw4">int</span>pflags_proc_output <span class="br0">&#40;</span><span class="kw4">char</span> *buf<span class="br0">&#41;</span><span class="br0">&#123;</span>  <span class="kw4">char</span> *p;  <span class="kw4">unsigned</span> <span class="kw4">short</span> i, data,dir,maska,maskb,polar,edge,inen,both;&nbsp;  p = buf;&nbsp;  data = *pFIO_FLAG_D;  dir = *pFIO_DIR;  maska = *pFIO_MASKA_D;  maskb = *pFIO_MASKB_D;  polar = *pFIO_POLAR;  both = *pFIO_BOTH;  edge = *pFIO_EDGE;  inen = *pFIO_INEN;&nbsp;&nbsp;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"FIO_DIR <span class="es0">\t</span>: = 0x%X<span class="es0">\n</span>"</span>, dir<span class="br0">&#41;</span>;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"FIO_MASKA<span class="es0">\t</span>: = 0x%X<span class="es0">\n</span>"</span>, maska<span class="br0">&#41;</span>;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"FIO_MASKB<span class="es0">\t</span>: = 0x%X<span class="es0">\n</span>"</span>, maskb<span class="br0">&#41;</span>;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"FIO_POLAR<span class="es0">\t</span>: = 0x%X<span class="es0">\n</span>"</span>, polar<span class="br0">&#41;</span>;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"FIO_EDGE <span class="es0">\t</span>: = 0x%X<span class="es0">\n</span>"</span>, edge<span class="br0">&#41;</span>;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"FIO_INEN <span class="es0">\t</span>: = 0x%X<span class="es0">\n</span>"</span>, inen<span class="br0">&#41;</span>;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"FIO_BOTH <span class="es0">\t</span>: = 0x%X<span class="es0">\n</span>"</span>, both<span class="br0">&#41;</span>;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"FIO_FLAG_D<span class="es0">\t</span>: = 0x%X<span class="es0">\n</span>"</span>, data<span class="br0">&#41;</span>;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"PIN<span class="es0">\t</span>:DATA DIR INEN EDGE BOTH POLAR MASKA MASKB<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;  p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"   <span class="es0">\t</span>:H/L  O/I D/E  E/L  B/S   L/H   S/C   S/C<span class="es0">\n</span>"</span><span class="br0">&#41;</span>;&nbsp;  <span class="kw1">for</span> <span class="br0">&#40;</span>i = <span class="nu0">0</span>; i &lt; <span class="nu0">16</span>; i++<span class="br0">&#41;</span>    p += sprintf <span class="br0">&#40;</span>p, <span class="st0">"PF%d<span class="es0">\t</span>: %d....%d....%d....%d....%d....%d.....%d.....%d <span class="es0">\n</span>"</span>,                      i,                      <span class="br0">&#40;</span><span class="br0">&#40;</span>data &gt;&gt; i<span class="br0">&#41;</span> &amp; <span class="nu0">1</span><span class="br0">&#41;</span>,                      <span class="br0">&#40;</span><span class="br0">&#40;</span>dir &gt;&gt; i<span class="br0">&#41;</span> &amp; <span class="nu0">1</span><span class="br0">&#41;</span>,                     <span class="br0">&#40;</span><span class="br0">&#40;</span>inen &gt;&gt; i<span class="br0">&#41;</span> &amp; <span class="nu0">1</span><span class="br0">&#41;</span>,                     <span class="br0">&#40;</span><span class="br0">&#40;</span>edge &gt;&gt; i<span class="br0">&#41;</span> &amp; <span class="nu0">1</span><span class="br0">&#41;</span>,                     <span class="br0">&#40;</span><span class="br0">&#40;</span>both &gt;&gt; i<span class="br0">&#41;</span> &amp; <span class="nu0">1</span><span class="br0">&#41;</span>,                     <span class="br0">&#40;</span><span class="br0">&#40;</span>polar &gt;&gt; i<span class="br0">&#41;</span> &amp; <span class="nu0">1</span><span class="br0">&#41;</span>,                     <span class="br0">&#40;</span><span class="br0">&#40;</span>maska &gt;&gt; i<span class="br0">&#41;</span> &amp; <span class="nu0">1</span><span class="br0">&#41;</span>,                     <span class="br0">&#40;</span><span class="br0">&#40;</span>maskb &gt;&gt; i<span class="br0">&#41;</span> &amp; <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;&nbsp;&nbsp;   <span class="kw1">return</span> p - buf;<span class="br0">&#125;</span>&nbsp;</pre></div><!-- SECTION [8125-10514] --><h3><a name="test_the_driver" id="test_the_driver">Test the Driver</a></h3><div class="level3"><p>There is an existing test program now. In order to successfully build and run the PFLAGS Test Application, following kernel and user space adjustments needs to be done.</p><p>1) In your uClinux-dist folder enter:</p><p>#make menuconfig </p><pre class="code">       [ ] Default all settings (lose changes)       [*] Customize Kernel Settings (NEW)       [*] Customize Vendor/User Settings (NEW)       [ ] Update Default Vendor Settings</pre><p>Check Customize Kernel Settings and Customize Vendor/User Settings, then save and exit During kernel configuration under &lsquo;Character devices&rsquo;, Blackfin BF533/2/1 Programmable Flags Driver&rsquo;. </p><pre class="code">           [ ] Blackfin BF533/2/1 SPI port support           [ ] Blackfin BF533/2/1 ADSP SPI ADC support           [*] Blackfin BF533/2/1 Programmable Flags Driver           [ ] Virtual terminal           [ ] Non-standard serial port support               Serial drivers  ---&gt;           [*] Unix98 PTY support           [*] Legacy (BSD) PTY support           (256) Maximum number of legacy PTY in use           [ ] QIC-02 tape support               IPMI  ---&gt;               Watchdog Cards  ---&gt;           [ ] Enhanced Real Time Clock Support           [ ] Generic /dev/rtc emulation           [*] Blackfin Real Time Clock Support           [*] Blackfin Power Management support           [ ] Double Talk PC internal speech card support           [ ] Siemens R3964 line discipline               Ftape, the floppy tape device driver  ---&gt;           [ ] /dev/agpgart (AGP Support)           [ ] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)           [ ] RAW driver (/dev/raw/rawN) (OBSOLETE)</pre><p> Save and exit. We are now leaving kernel configuration and enter user space configuration. Here we need to enable &lsquo;PFLAGS test program&rsquo; under &lsquo;Blackfin test programs&rsquo;. </p><pre class="code">                         Core Applications  ---&gt;                         Library Configuration  ---&gt;                         Flash Tools  ---&gt;                         Filesystem Applications  ---&gt;                         Network Applications  ---&gt;                         Miscellaneous Applications  ---&gt;                         BusyBox  ---&gt;                         Tinylogin  ---&gt;                         MicroWindows  ---&gt;                         Games  ---&gt;                         Miscellaneous Configuration  ---&gt;                         Debug Builds  ---&gt;                         Blackfin test programs  ---&gt;                         Blackfin app programs  ---&gt;</pre><pre class="code">                                      [ ] RTC test program                                      [ ] DPMC test program                                      [ ] AUDIO test program                                      [ ] VIDEO test program                                      [*] PFLAGS test program                                      [ ] Still to write</pre><p> Save and exit</p><p>2) Recompile kernel and user space</p><p>3) Starting the Application: From the shell, input cmd :pflags_test </p><pre class="code"> root:~&gt; pflags_test</pre><p> ########################## PFLAGS TEST ############################### open success /dev/pf2 open success /dev/pf5</p><p>Press BTN1 to EXIT root:~&gt;</p><p>This will toggle STAMP board LED1 until Button1 is pressed.</p><p>4) Test PROC filesystem interface</p><p>From the shell type: cat /proc/driver/pflags</p></div><!-- SECTION [10515-13904] --><h3><a name="sample_proc_output" id="sample_proc_output">Sample Proc Output</a></h3><div class="level3"><p>Here is an example of the <strong>/proc</strong> output</p><pre class="code">FIO_DIR         : = 0x1FFIO_MASKA       : = 0x0FIO_MASKB       : = 0x80FIO_POLAR       : = 0x160FIO_EDGE        : = 0x0FIO_INEN        : = 0x1E0FIO_BOTH        : = 0x0FIO_FLAG_D      : = 0x1DPIN     :DATA DIR INEN EDGE BOTH POLAR MASKA MASKB        :H/L  O/I D/E  E/L  B/S   L/H   S/C   S/CPF0     : 1....1....0....0....0....0.....0.....0PF1     : 0....1....0....0....0....0.....0.....0PF2     : 1....1....0....0....0....0.....0.....0PF3     : 1....1....0....0....0....0.....0.....0PF4     : 1....1....0....0....0....0.....0.....0PF5     : 0....0....1....0....0....1.....0.....0PF6     : 0....0....1....0....0....1.....0.....0PF7     : 0....0....1....0....0....0.....0.....1PF8     : 0....0....1....0....0....1.....0.....0PF9     : 0....0....0....0....0....0.....0.....0PF10    : 0....0....0....0....0....0.....0.....0PF11    : 0....0....0....0....0....0.....0.....0PF12    : 0....0....0....0....0....0.....0.....0PF13    : 0....0....0....0....0....0.....0.....0PF14    : 0....0....0....0....0....0.....0.....0PF15    : 0....0....0....0....0....0.....0.....0</pre></div><!-- SECTION [13905-] --></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -