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

📄 interrupts.html

📁 ADI 公司blackfin系列的用户使用文挡。
💻 HTML
📖 第 1 页 / 共 5 页
字号:
		<td class="leftalign">11      </td><td>General Interrupt 11</td><td class="leftalign">IVG11    </td>	</tr>	<tr>		<td class="leftalign">12      </td><td>General Interrupt 12</td><td class="leftalign">IVG12    </td>	</tr>	<tr>		<td class="leftalign">13      </td><td>General Interrupt 13</td><td class="leftalign">IVG13    </td>	</tr>	<tr>		<td class="leftalign">14      </td><td>General Interrupt 14</td><td class="leftalign">IVG14    </td>	</tr>	<tr>		<td class="leftalign">15      </td><td>General Interrupt 15</td><td class="leftalign">IVG15    </td>	</tr></table><br /><p> For reference here is the default mapping by the SIC </p><table class="inline">	<tr>		<th class="leftalign">Event          </th><th>Event ID</th><th>Default Mapping</th>	</tr>	<tr>		<td>Real-Time Clock</td><td class="leftalign">0       </td><td class="leftalign">IVG7           </td>	</tr>	<tr>		<td class="leftalign">Reserved       </td><td class="leftalign">1       </td><td class="rightalign">               </td>	</tr>	<tr>		<td class="leftalign">USB            </td><td class="leftalign">2       </td><td class="leftalign">IVG7           </td>	</tr>	<tr>		<td class="leftalign">PCI Interrupt  </td><td class="leftalign">3       </td><td class="leftalign">IVG7           </td>	</tr>	<tr>		<td>SPORT 0 RX DMA </td><td class="leftalign">4       </td><td class="leftalign">IVG8           </td>	</tr>	<tr>		<td>SPORT 0 TX DMA </td><td class="leftalign">5       </td><td class="leftalign">IVG8           </td>	</tr>	<tr>		<td>SPORT 1 RX DMA </td><td class="leftalign">6       </td><td class="leftalign">IVG8           </td>	</tr>	<tr>		<td>SPORT 1 TX DMA </td><td class="leftalign">7       </td><td class="leftalign">IVG8           </td>	</tr>	<tr>		<td class="leftalign">SPI 0 DMA      </td><td class="leftalign">8       </td><td class="leftalign">IVG9           </td>	</tr>	<tr>		<td class="leftalign">SPI 1 DMA      </td><td class="leftalign">9       </td><td class="leftalign">IVG9           </td>	</tr>	<tr>		<td class="leftalign">UART 0 Rx      </td><td class="leftalign">10      </td><td class="leftalign">IVG10          </td>	</tr>	<tr>		<td class="leftalign">UART 0 Tx      </td><td class="leftalign">11      </td><td class="leftalign">IVG10          </td>	</tr>	<tr>		<td class="leftalign">UART 1 Rx      </td><td class="leftalign">12      </td><td class="leftalign">IVG10          </td>	</tr>	<tr>		<td class="leftalign">UART 1 Tx      </td><td class="leftalign">13      </td><td class="leftalign">IVG10          </td>	</tr>	<tr>		<td class="leftalign">Timer 0        </td><td class="leftalign">14      </td><td class="leftalign">IVG11          </td>	</tr>	<tr>		<td class="leftalign">Timer 1        </td><td class="leftalign">15      </td><td class="leftalign">IVG11          </td>	</tr>	<tr>		<td class="leftalign">Timer 2        </td><td class="leftalign">16      </td><td class="leftalign">IVG11          </td>	</tr>	<tr>		<td class="leftalign">GPIO Int A     </td><td class="leftalign">17      </td><td class="leftalign">IVG12          </td>	</tr>	<tr>		<td class="leftalign">GPIO Int B     </td><td class="leftalign">18      </td><td class="leftalign">IVG12          </td>	</tr>	<tr>		<td class="leftalign">MEM DMA        </td><td class="leftalign">19      </td><td class="leftalign">IVG13          </td>	</tr>	<tr>		<td class="leftalign">SW Wdog        </td><td class="leftalign">20      </td><td class="leftalign">IVG13          </td>	</tr>	<tr>		<td class="leftalign">Reserved       </td><td class="leftalign">21-26   </td><td class="rightalign">               </td>	</tr>	<tr>		<td class="leftalign">SWI 1          </td><td class="leftalign">27      </td><td class="leftalign">IVG14          </td>	</tr>	<tr>		<td class="leftalign">SWI 2          </td><td class="leftalign">28      </td><td class="leftalign">IVG15          </td>	</tr></table><br /><p>Some brief notes</p><p>Interrupt priorities are all set up in <strong>linux-2.6.x/arch/blackfin/mach-bf533/ints-priority.c</strong></p><pre class="code c">  <span class="kw4">void</span> __init program_IAR<span class="br0">&#40;</span><span class="br0">&#41;</span>                                             <span class="br0">&#123;</span>                                                                             <span class="coMULTI">/* Program the IAR0 Register with the configured priority */</span>       *pSIC_IAR0 =  <span class="br0">&#40;</span><span class="br0">&#40;</span>CONFIG_PLLWAKE_ERROR<span class="nu0">-7</span><span class="br0">&#41;</span> &lt;&lt; PLLWAKE_ERROR_POS<span class="br0">&#41;</span> |                      <span class="br0">&#40;</span><span class="br0">&#40;</span>CONFIG_DMA_ERROR   <span class="nu0">-7</span><span class="br0">&#41;</span> &lt;&lt;    DMA_ERROR_POS<span class="br0">&#41;</span> |                       <span class="br0">&#40;</span><span class="br0">&#40;</span>CONFIG_PPI_ERROR   <span class="nu0">-7</span><span class="br0">&#41;</span> &lt;&lt;    PPI_ERROR_POS<span class="br0">&#41;</span> |                       <span class="br0">&#40;</span><span class="br0">&#40;</span>CONFIG_SPORT0_ERROR<span class="nu0">-7</span><span class="br0">&#41;</span> &lt;&lt; SPORT0_ERROR_POS<span class="br0">&#41;</span> |                       <span class="br0">&#40;</span><span class="br0">&#40;</span>CONFIG_SPI_ERROR   <span class="nu0">-7</span><span class="br0">&#41;</span> &lt;&lt;    SPI_ERROR_POS<span class="br0">&#41;</span> |                       <span class="br0">&#40;</span><span class="br0">&#40;</span>CONFIG_SPORT1_ERROR<span class="nu0">-7</span><span class="br0">&#41;</span> &lt;&lt; SPORT1_ERROR_POS<span class="br0">&#41;</span> |                       <span class="br0">&#40;</span><span class="br0">&#40;</span>CONFIG_UART_ERROR  <span class="nu0">-7</span><span class="br0">&#41;</span> &lt;&lt;   UART_ERROR_POS<span class="br0">&#41;</span> |                       <span class="br0">&#40;</span><span class="br0">&#40;</span>CONFIG_RTC_ERROR   <span class="nu0">-7</span><span class="br0">&#41;</span> &lt;&lt;    RTC_ERROR_POS<span class="br0">&#41;</span>;                     asm<span class="br0">&#40;</span><span class="st0">"ssync;"</span><span class="br0">&#41;</span>;                                                <span class="br0">&#91;</span>...<span class="br0">&#93;</span>                                                                 <span class="br0">&#125;</span></pre></div><!-- SECTION [2982-6485] --><h3><a name="interrupt_discovery" id="interrupt_discovery">Interrupt Discovery</a></h3><div class="level3"><p> Each System interrupt is assigned to a number of possible uClinux interrupts. A vector table is set up for each possible system interrupt and the interrupt status register is checked to see if that interrupt has triggered. Following a successful match the correct linux interrupt can be determined. </p><pre class="code c">       <span class="kw1">if</span> <span class="br0">&#40;</span>vec &gt; IRQ_CORETMR<span class="br0">&#41;</span>                                                 <span class="br0">&#123;</span>                                                                    <span class="kw4">struct</span> ivgx *ivg = ivg7_13<span class="br0">&#91;</span>vec<span class="br0">&#93;</span>.<span class="me1">ifirst</span>;                            <span class="kw4">struct</span> ivgx *ivg_stop = ivg7_13<span class="br0">&#91;</span>vec<span class="br0">&#93;</span>.<span class="me1">istop</span>;                     <span class="kw4">unsigned</span> <span class="kw4">long</span> sic_status;                                                                                                                     asm<span class="br0">&#40;</span><span class="st0">"ssync;"</span><span class="br0">&#41;</span>;                                                       &nbsp;         sic_status = *pSIC_IMASK &amp; *pSIC_ISR;                                                                                                    <span class="kw1">for</span><span class="br0">&#40;</span>;; ivg++<span class="br0">&#41;</span> <span class="br0">&#123;</span>                                                               <span class="kw1">if</span> <span class="br0">&#40;</span>ivg &gt;= ivg_stop<span class="br0">&#41;</span>  <span class="br0">&#123;</span>                                            <span class="coMULTI">/* printk(&quot;unregistered interrupt ivg=%d\n&quot;,vec);*/</span>                  <span class="kw1">return</span>;                                                          <span class="br0">&#125;</span>                                                                  <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>sic_status &amp; ivg-&gt;isrflag<span class="br0">&#41;</span> != <span class="nu0">0</span><span class="br0">&#41;</span>                           <span class="kw2">break</span>;                                                      <span class="br0">&#125;</span>                                                                vec = ivg-&gt;irqno;                                                       <span class="br0">&#125;</span></pre></div><!-- SECTION [6486-8290] --><h3><a name="blackfin_interrupt_set_up" id="blackfin_interrupt_set_up">Blackfin Interrupt Set up</a></h3><div class="level3"><p> The following code sets up the initial vectors</p><pre class="code c">  <span class="kw4">int</span> __init  bfin_init_IRQ<span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>                                             <span class="br0">&#123;</span>                                                                                                                                                            <span class="kw4">int</span> i;       <span class="kw4">unsigned</span> <span class="kw4">long</span> ilat = <span class="nu0">0</span>;       <span class="coMULTI">/*  Disable all the peripheral intrs  - page 4-29 HW Ref manual */</span>       *pSIC_IMASK = SIC_UNMASK_ALL;       asm<span class="br0">&#40;</span><span class="st0">"ssync;"</span><span class="br0">&#41;</span>;&nbsp;       local_irq_disable<span class="br0">&#40;</span><span class="br0">&#41;</span>;&nbsp;  <span class="co2">#ifndef CONFIG_KGDB</span>       *pEVT0 = evt_nmi;       asm<span class="br0">&#40;</span><span class="st0">"csync;"</span><span class="br0">&#41;</span>;  <span class="co2">#endif</span>&nbsp;       *pEVT2  = evt_evt2;       asm<span class="br0">&#40;</span><span class="st0">"csync;"</span><span class="br0">&#41;</span>;       *pEVT3  = trap;       asm<span class="br0">&#40;</span><span class="st0">"csync;"</span><span class="br0">&#41;</span>;       *pEVT5  = evt_ivhw;       asm<span class="br0">&#40;</span><span class="st0">"csync;"</span><span class="br0">&#41;</span>;       *pEVT6  = evt_timer;       asm<span class="br0">&#40;</span><span class="st0">"csync;"</span><span class="br0">&#41;</span>;       *pEVT7  = evt_evt7;       asm<span class="br0">&#40;</span><span class="st0">"csync;"</span><span class="br0">&#41;</span>;  <span class="br0">&#91;</span>...<span class="br0">&#93;</span>  

⌨️ 快捷键说明

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