﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客--随笔分类-BSP &amp; Platform Builder</title><link>http://www.cppblog.com/hkingSP/category/5165.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 27 Feb 2019 13:20:47 GMT</lastBuildDate><pubDate>Wed, 27 Feb 2019 13:20:47 GMT</pubDate><ttl>60</ttl><item><title>[转载]PB5.0试用期过期的破解方法</title><link>http://www.cppblog.com/hkingSP/archive/2014/11/03/208756.html</link><dc:creator>宋鹏</dc:creator><author>宋鹏</author><pubDate>Sun, 02 Nov 2014 23:09:00 GMT</pubDate><guid>http://www.cppblog.com/hkingSP/archive/2014/11/03/208756.html</guid><wfw:comment>http://www.cppblog.com/hkingSP/comments/208756.html</wfw:comment><comments>http://www.cppblog.com/hkingSP/archive/2014/11/03/208756.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/hkingSP/comments/commentRss/208756.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hkingSP/services/trackbacks/208756.html</trackback:ping><description><![CDATA[<div>PB5.0试用期过期的破解方法</div><div>"在PB安装目录下有个C:/Program Files/Windows CE Platform Builder/5.00/etkremov.inf，试用期是以此文件的创建日期来计算的。将其删除，然后在其他目录新建一个文件，再重命名为etkremov.inf，再拷贝过来，不要直接新建这个文件，否则由于filesystem tunnel，会导致新建的文件总是沿用老文件的创建时间。<br /><br />转载前测试：有效。。</div><img src ="http://www.cppblog.com/hkingSP/aggbug/208756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hkingSP/" target="_blank">宋鹏</a> 2014-11-03 07:09 <a href="http://www.cppblog.com/hkingSP/archive/2014/11/03/208756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Wince中寄存器的访问1－Wince驱动基础</title><link>http://www.cppblog.com/hkingSP/archive/2007/09/22/32656.html</link><dc:creator>宋鹏</dc:creator><author>宋鹏</author><pubDate>Sat, 22 Sep 2007 02:36:00 GMT</pubDate><guid>http://www.cppblog.com/hkingSP/archive/2007/09/22/32656.html</guid><wfw:comment>http://www.cppblog.com/hkingSP/comments/32656.html</wfw:comment><comments>http://www.cppblog.com/hkingSP/archive/2007/09/22/32656.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/hkingSP/comments/commentRss/32656.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hkingSP/services/trackbacks/32656.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 12pt">我们长看到BSP包中有这样的表达<br>1、<br>#define rRTCCON&nbsp;&nbsp;&nbsp; (*(volatile unsigned char *)0x57000043) //RTC control<br><br>这有点类似absacc.h中XBYTE的定义<br>2、<br>＃define XBYTE&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt">((unsigned char volatile <font color=#cc0033>xdata</font> *) 0) <br><br>其中volatile英文愿意为易变的，此处为易变量，是可能指由外部因素改变的变量，如外部设备的寄存器<br><br>(volatile unsigned char *)0x57000043这个表达式是强制转换0x57000043为易变的无符号指针类型，将其作为地址来使用。<br>相当于<br>&nbsp;volatile unsigned char *p;<br>p = 0x57000043;<br>然后对p进行引用<br>*(volatile unsigned char *)0x57000043<br><br>也就是指向了寄存器绝对地址为0x57000043，然后按照定义宏的习惯，将之用括号小心的包起来。<br><br>然后就可以对寄存器进行读写啦。<br></span>
<img src ="http://www.cppblog.com/hkingSP/aggbug/32656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hkingSP/" target="_blank">宋鹏</a> 2007-09-22 10:36 <a href="http://www.cppblog.com/hkingSP/archive/2007/09/22/32656.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Wince 串口驱动详解－未完</title><link>http://www.cppblog.com/hkingSP/archive/2007/09/17/32377.html</link><dc:creator>宋鹏</dc:creator><author>宋鹏</author><pubDate>Mon, 17 Sep 2007 14:30:00 GMT</pubDate><guid>http://www.cppblog.com/hkingSP/archive/2007/09/17/32377.html</guid><wfw:comment>http://www.cppblog.com/hkingSP/comments/32377.html</wfw:comment><comments>http://www.cppblog.com/hkingSP/archive/2007/09/17/32377.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/hkingSP/comments/commentRss/32377.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hkingSP/services/trackbacks/32377.html</trackback:ping><description><![CDATA[<p>1、(oalintr.h)注册串口中断<br>//SP-A1<br>/*<br>打开oalintr.h文件，我们添加一个新的串口，并定义中断号。<br>添加： <br>//SP-A8没什么说的就是注册中断<br>#define SYSINTR_SERIAL1&nbsp; (SYSINTR_FIRMWARE+19)</p>
<p><br>这里，我们可以看到SYSINTR_SERIAL1定义到16+19=35=0x23，与注册表中一致。<br>然后修改下这个地方：<br>MapIrq2SysIntr(DWORD _Irq)<br>{<br>&nbsp;&nbsp; if( _Irq&lt;=19 )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ( SYSINTR_FIRMWARE + _Irq );<br>&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (0xffffffff);<br>}&nbsp; <br>*/</p>
<p>2、(armint.c)在ISR中进行中断判断，中断使能<br>//SP-A2<br>/*<br>//SP-A9其中IntPendVal= s2410INT-&gt;rINTOFFSET<br>//INTOFFSET是中断偏移寄存器，显示中断请求源，跟SRCPND一样//在IRQ模式中，该寄存器显示INTPND寄存器中的中断请求</p>
<p>搜索：else if(IntPendVal == INTSRC_UART0)<br>在其后面添加： </p>
<p>&nbsp;//SP-A10此处进行中断请求源的判断。INTSRC_UART1被定义为UART1的中断号，即SRCPND==23<br>&nbsp;else if(IntPendVal == INTSRC_UART1)<br>&nbsp;{<br>&nbsp;&nbsp; //SP-A11 SUBSRCPND中包含一些中断请求的细节，对于串口就是INT_ERR、INT_RXD、INT_TXD<br>&nbsp;&nbsp; //用于进一步判断中断类型<br>&nbsp;&nbsp; SubIntPendVal = s2410INT-&gt;rSUBSRCPND;</p>
<p>&nbsp;&nbsp; // Note that we only mask the sub source interrupt - the serial driver will clear the<br>&nbsp;&nbsp; // sub source pending register.<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //SP-A11.1如果是ERR1则该位置0，解除该位中断屏蔽INTSUBMSK<br>&nbsp;&nbsp; if(SubIntPendVal &amp; INTSUB_ERR1) <br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK |= INTSUB_ERR1;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; else if(SubIntPendVal &amp; INTSUB_RXD1) &nbsp;//SP-A11.2 RXD1，解除该位中断屏蔽INTSUBMSK<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK |= INTSUB_RXD1;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; else if(SubIntPendVal &amp; INTSUB_TXD1) &nbsp;//SP-A11.3 TXD1,<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK |= INTSUB_TXD1;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; else<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; return(SYSINTR_NOP);&nbsp;&nbsp;&nbsp;//SP-A11.4什么都没发生<br>&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp; // NOTE: Don't clear INTSRC:UART1 here - serial driver does that.<br>&nbsp;&nbsp; //<br>&nbsp;&nbsp; //SP-A12解放对应位的总中断屏蔽，此时中断请求IRQ已经传达给CPU<br>&nbsp;&nbsp; s2410INT-&gt;rINTMSK |= BIT_UART1;</p>
<p>&nbsp;&nbsp; //SP-A13 INTPND显示哪个中断处于非屏蔽且等待服务的状态，即&#8220;该中断被确定了（asserted 1）&#8221;，&#8220;相对于pending（待定）&#8221;<br>&nbsp;&nbsp; //现在判断完成，即&#8220;该中断被确定了，所以向它发1，将之置0，清除中断请求<br>&nbsp;&nbsp; if (s2410INT-&gt;rINTPND &amp; BIT_UART1) s2410INT-&gt;rINTPND&nbsp; = BIT_UART1; </p>
<p>&nbsp;&nbsp; //SP-A14向Wince发出对应的逻辑中断处理请求<br>&nbsp;&nbsp; return(SYSINTR_SERIAL1);<br>&nbsp;&nbsp; <br>&nbsp;} <br>*/</p>
<p>3、(cfw.c)在IST中进行对应中断的使能和禁止<br>/*<br>//SP-A15此处是串行中断初始化，将所有串行中断屏蔽unmask,将所有串行中断残留pending清除。<br>BOOL <br>OEMInterruptEnable(DWORD&nbsp; idInt,&nbsp; // @parm Interrupt ID to be enabled. See &lt;l Interrupt ID's.Interrupt ID's&gt;&nbsp; for a list of possble values.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPVOID pvData,&nbsp; // @parm ptr to data passed in in the &lt;f InterruptInitialize&gt; call<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; cbData)&nbsp; // @parm Size of data pointed to be &lt;p pvData&gt;<br>找到这一句：case SYSINTR_SERIAL:<br>在其后面添加： </p>
<p>&nbsp;case SYSINTR_SERIAL1:&nbsp; // Serial port1.<br>&nbsp;&nbsp; s2410INT-&gt;rSUBSRCPND&nbsp; = (INTSUB_RXD1 | INTSUB_TXD1 | INTSUB_ERR1);&nbsp;<br>&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK &amp;= ~INTSUB_RXD1; &nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK &amp;= ~INTSUB_TXD1;<br>&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK &amp;= ~INTSUB_ERR1;<br>&nbsp;&nbsp; s2410INT-&gt;rSRCPND&nbsp;&nbsp;&nbsp;&nbsp; = BIT_UART1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp; // S3C2410X Developer Notice (page 4) warns against writing a 1 to a 0 bit in the INTPND register.<br>&nbsp;&nbsp; if (s2410INT-&gt;rINTPND &amp; BIT_UART1) s2410INT-&gt;rINTPND = BIT_UART1;<br>&nbsp;&nbsp; s2410INT-&gt;rINTMSK&nbsp;&nbsp;&nbsp; &amp;= ~BIT_UART1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp; break; </p>
<p>//SP-A16此处是串行中断禁止，即屏蔽所有串行中断位<br>搜索：<br>void <br>OEMInterruptDisable(DWORD idInt)&nbsp; // @parm Interrupt ID to be disabled. See &lt;t Interrupt ID's&gt;<br>还是这一句：case SYSINTR_SERIAL:<br>在其后面添加： </p>
<p>&nbsp;case SYSINTR_SERIAL1: <br>&nbsp;&nbsp; s2410INT-&gt;rINTMSK&nbsp;&nbsp;&nbsp; |= BIT_UART1;<br>&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK |= INTSUB_RXD1;<br>&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK |= INTSUB_TXD1;<br>&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK |= INTSUB_ERR1;<br>&nbsp;&nbsp; break; </p>
<p>//SP-A17解除屏蔽？<br>搜索：<br>void <br>OEMInterruptDone(DWORD idInt)&nbsp; // @parm Interrupt ID. See &lt;t Interrupt ID's&gt;<br>依旧找到case SYSINTR_SERIAL:<br>在其后面添加： </p>
<p>&nbsp;case SYSINTR_SERIAL1: <br>&nbsp;&nbsp; s2410INT-&gt;rINTMSK&nbsp;&nbsp;&nbsp; &amp;= ~BIT_UART1;<br>&nbsp;&nbsp; s2410INT-&gt;rINTSUBMSK &amp;= ~INTSUB_RXD1;<br>&nbsp;&nbsp; break; </p>
<p>*/</p>
<p>4、(ser2410_hw.c)驱动程序进行处理<br>//SP-A4<br>/*<br>打开串口源文件中ser2410_hw.c文件。<br>搜索：<br>S2410_SetSerialIOP(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PVOID&nbsp;&nbsp; pHead // @parm points to device head<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br>将其函数改为： </p>
<p>{<br>&nbsp;//SP-A18 2410串口信息结构体<br>&nbsp;PS2410_UART_INFO&nbsp;&nbsp; pHWHead&nbsp;&nbsp; = (PS2410_UART_INFO)pHead;<br>&nbsp;PSER_INFO&nbsp;&nbsp;&nbsp;&nbsp; pHWHead1&nbsp; = (PSER_INFO)pHead; </p>
<p>&nbsp;RETAILMSG(DEBUGMODE, (TEXT("S2410_SetSerialIOP \r\n")));<br>&nbsp;if(pHWHead1-&gt;dwIOBase == 0x50004000) &nbsp;//SP-UART1 LINE CONTROL<br>&nbsp;{<br>&nbsp;#if USEVIRTUAL<br>&nbsp;&nbsp; EnterCriticalSection(&amp;(pHWHead-&gt;RegCritSec));<br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHCON &amp;= ~(0x3&lt;&lt;8 | 0x3&lt;&lt;10 /*| 0x3&lt;&lt;12 | 0x3&lt;&lt;14*/); // clear uart 1 - rx, tx<br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHCON |= (0x2&lt;&lt;8 | 0x2&lt;&lt;10 /*| 0x1&lt;&lt;12 | 0x0&lt;&lt;14*/); <br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHCON |= (0x2&lt;&lt;0 | 0x2&lt;&lt;2 );<br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHUP&nbsp; |= 0x03;<br>&nbsp;&nbsp; pHWHead-&gt;rDTRport = (volatile unsigned int *)&amp;(v_pIOPregs-&gt;rGPHDAT);<br>&nbsp;&nbsp; pHWHead-&gt;rDSRport = (volatile unsigned int *)&amp;(v_pIOPregs-&gt;rGPHDAT);<br>&nbsp;&nbsp; pHWHead-&gt;DtrPortNum = 0;<br>&nbsp;&nbsp; pHWHead-&gt;DsrPortNum = 1;<br>&nbsp;#else<br>&nbsp;&nbsp; volatile IOPreg *s2410IOP;<br>&nbsp;&nbsp; s2410IOP&nbsp;&nbsp; = (volatile IOPreg *)IOP_BASE;<br>&nbsp;<br>&nbsp;&nbsp; EnterCriticalSection(&amp;(pHWHead-&gt;RegCritSec));<br>&nbsp;&nbsp; //SP-A19 IO口设置<br>&nbsp;&nbsp; s2410IOP-&gt;rGPHCON &amp;= ~(0x3&lt;&lt;8 | 0x3&lt;&lt;10/* | 0x3&lt;&lt;12 | 0x3&lt;&lt;14*/); // clear uart 1 - rx, tx<br>&nbsp;&nbsp; s2410IOP-&gt;rGPHCON |= (0x2&lt;&lt;8 | 0x2&lt;&lt;10 /*| 0x1&lt;&lt;12 | 0x0&lt;&lt;14*/); <br>&nbsp;&nbsp; s2410IOP-&gt;rGPHCON |= (0x2&lt;&lt;0 | 0x2&lt;&lt;2 );<br>&nbsp;&nbsp; s2410IOP-&gt;rGPHUP&nbsp; |= 0x03;<br>&nbsp;&nbsp; pHWHead-&gt;rDTRport = (volatile unsigned int *)(IOP_BASE+0x74); //s2410IOP-&gt;rGPHDAT<br>&nbsp;&nbsp; pHWHead-&gt;rDSRport = (volatile unsigned int *)(IOP_BASE+0x74);<br>&nbsp;&nbsp; pHWHead-&gt;DtrPortNum = 0;<br>&nbsp;&nbsp; pHWHead-&gt;DsrPortNum = 1;<br>&nbsp;#endif<br>&nbsp;}<br>&nbsp;else if(pHWHead1-&gt;dwIOBase == 0x50008000) &nbsp;//SP-UART2 LINE CONTROL<br>&nbsp;{<br>&nbsp;#if USEVIRTUAL<br>&nbsp;&nbsp; EnterCriticalSection(&amp;(pHWHead-&gt;RegCritSec));<br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHCON &amp;= ~( 0x3&lt;&lt;12 | 0x3&lt;&lt;14); // clear uart 2 - rx, tx<br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHCON |= ( 0x2&lt;&lt;12 | 0x2&lt;&lt;14); <br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHCON |= (0x2&lt;&lt;0 | 0x2&lt;&lt;2 );<br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHUP&nbsp; &amp;= ~0xc0;<br>&nbsp;&nbsp; pHWHead-&gt;rDTRport = (volatile unsigned int *)&amp;(v_pIOPregs-&gt;rGPHDAT);<br>&nbsp;&nbsp; pHWHead-&gt;rDSRport = (volatile unsigned int *)&amp;(v_pIOPregs-&gt;rGPHDAT);<br>&nbsp;&nbsp; pHWHead-&gt;DtrPortNum = 0;<br>&nbsp;&nbsp; pHWHead-&gt;DsrPortNum = 1;<br>&nbsp;#else<br>&nbsp;&nbsp; volatile IOPreg *s2410IOP;<br>&nbsp;&nbsp; s2410IOP&nbsp;&nbsp; = (volatile IOPreg *)IOP_BASE;<br>&nbsp;<br>&nbsp;&nbsp; EnterCriticalSection(&amp;(pHWHead-&gt;RegCritSec));<br>&nbsp;&nbsp; s2410IOP-&gt;rGPHCON &amp;= ~(0x3&lt;&lt;12 | 0x3&lt;&lt;14); // clear uart 2 - rx, tx<br>&nbsp;&nbsp; s2410IOP-&gt;rGPHCON |= ( 0x02&lt;&lt;12 | 0x02&lt;&lt;14); <br>&nbsp;&nbsp; s2410IOP-&gt;rGPHCON |= (0x2&lt;&lt;0 | 0x2&lt;&lt;2 );<br>&nbsp;&nbsp; s2410IOP-&gt;rGPHUP&nbsp; &amp;= ~0xc0;<br>&nbsp;&nbsp; pHWHead-&gt;rDTRport = (volatile unsigned int *)(IOP_BASE+0x74); //s2410IOP-&gt;rGPHDAT<br>&nbsp;&nbsp; pHWHead-&gt;rDSRport = (volatile unsigned int *)(IOP_BASE+0x74);<br>&nbsp;&nbsp; pHWHead-&gt;DtrPortNum = 0;<br>&nbsp;&nbsp; pHWHead-&gt;DsrPortNum = 1;<br>&nbsp;#endif&nbsp;&nbsp;&nbsp; <br>&nbsp;}<br>&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SP-UART? LINE CONTROL<br>&nbsp;{<br>&nbsp;#if USEVIRTUAL<br>&nbsp;&nbsp; EnterCriticalSection(&amp;(pHWHead-&gt;RegCritSec));<br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHCON &amp;= ~(0x3&lt;&lt;0 | 0x3&lt;&lt;2 | 0x3&lt;&lt;4 | 0x3&lt;&lt;6/* | 0x3&lt;&lt;12 | 0x3&lt;&lt;14*/); // clear uart 0 - rx, tx<br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHCON |= (0x2&lt;&lt;4 | 0x2&lt;&lt;6/* | 0x1&lt;&lt;12 | 0x0&lt;&lt;14*/); <br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHCON |= (0x2&lt;&lt;0 | 0x2&lt;&lt;2 );<br>&nbsp;&nbsp; v_pIOPregs-&gt;rGPHUP&nbsp; |= 0x03;<br>&nbsp;&nbsp; pHWHead-&gt;rDTRport = (volatile unsigned int *)&amp;(v_pIOPregs-&gt;rGPHDAT);<br>&nbsp;&nbsp; pHWHead-&gt;rDSRport = (volatile unsigned int *)&amp;(v_pIOPregs-&gt;rGPHDAT);<br>&nbsp;&nbsp; pHWHead-&gt;DtrPortNum = 0;<br>&nbsp;&nbsp; pHWHead-&gt;DsrPortNum = 1;<br>&nbsp;#else<br>&nbsp;&nbsp; volatile IOPreg *s2410IOP;<br>&nbsp;&nbsp; s2410IOP&nbsp;&nbsp; = (volatile IOPreg *)IOP_BASE;<br>&nbsp;<br>&nbsp;&nbsp; EnterCriticalSection(&amp;(pHWHead-&gt;RegCritSec));<br>&nbsp;&nbsp; s2410IOP-&gt;rGPHCON &amp;= ~(0x3&lt;&lt;0 | 0x3&lt;&lt;2 | 0x3&lt;&lt;4 | 0x3&lt;&lt;6 /*| 0x3&lt;&lt;12 | 0x3&lt;&lt;14*/); // clear uart 0 - rx, tx<br>&nbsp;&nbsp; s2410IOP-&gt;rGPHCON |= (0x2&lt;&lt;4 | 0x2&lt;&lt;6 /*| 0x1&lt;&lt;12 | 0x0&lt;&lt;14*/); <br>&nbsp;&nbsp; s2410IOP-&gt;rGPHCON |= (0x2&lt;&lt;0 | 0x2&lt;&lt;2 );<br>&nbsp;&nbsp; s2410IOP-&gt;rGPHUP&nbsp; |= 0x03;<br>&nbsp;&nbsp; pHWHead-&gt;rDTRport = (volatile unsigned int *)(IOP_BASE+0x74); //s2410IOP-&gt;rGPHDAT<br>&nbsp;&nbsp; pHWHead-&gt;rDSRport = (volatile unsigned int *)(IOP_BASE+0x74);<br>&nbsp;&nbsp; pHWHead-&gt;DtrPortNum = 0;<br>&nbsp;&nbsp; pHWHead-&gt;DsrPortNum =1;<br>&nbsp;#endif<br>&nbsp;}<br>&nbsp;LeaveCriticalSection(&amp;(pHWHead-&gt;RegCritSec));<br>} </p>
<p><br>接着搜索：<br>SL_Init(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PVOID&nbsp;&nbsp; pHead, // @parm points to device head<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PUCHAR&nbsp; pRegBase, // Pointer to 16550 register base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UINT8&nbsp;&nbsp; RegStride, // Stride amongst the 16550 registers<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EVENT_FUNC EventCallback, // This callback exists in MDD<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PVOID&nbsp;&nbsp; pMddHead,&nbsp;&nbsp; // This is the first parm to callback<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PLOOKUP_TBL&nbsp;&nbsp; pBaudTable&nbsp; // BaudRate Table<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br>在PS2410_UART_INFO&nbsp;&nbsp; pHWHead&nbsp;&nbsp; = (PS2410_UART_INFO)pHead;这一句后面添加： </p>
<p>PSER_INFO&nbsp;&nbsp;&nbsp;&nbsp; pHWHead1&nbsp; = (PSER_INFO)pHead; </p>
<p><br>再搜索：<br>&nbsp;if ( pHWHead-&gt;UseIrDA )<br>&nbsp;{<br>&nbsp;&nbsp; pHWHead-&gt;bINT = BIT_UART2;<br>&nbsp;&nbsp; pHWHead-&gt;bTxINT = INTSUB_TXD2;<br>&nbsp;&nbsp; pHWHead-&gt;bRxINT = INTSUB_RXD2;<br>&nbsp;&nbsp; pHWHead-&gt;bErrINT = INTSUB_ERR2;<br>#if USEVIRTUAL<br>&nbsp;&nbsp; pHWHead-&gt;s2410SerReg = (S2410_UART_REG *)v_pUART2regs;<br>&nbsp;&nbsp; pRegBase = (PUCHAR)pHWHead-&gt;s2410SerReg;<br>#else&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; pRegBase = (PUCHAR)UART2_BASE;<br>&nbsp;&nbsp; pHWHead-&gt;s2410SerReg = (S2410_UART_REG *)pRegBase;<br>#endif<br>&nbsp;}<br>&nbsp;else<br>&nbsp;{<br>&nbsp;把这其中的代码修改为以下代码<br>&nbsp;} </p>
<p>&nbsp;&nbsp; if(pHWHead1-&gt;dwIOBase == 0x50004000)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bINT = BIT_UART1;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bTxINT = INTSUB_TXD1;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bRxINT = INTSUB_RXD1;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bErrINT = INTSUB_ERR1;<br>&nbsp;&nbsp; #if USEVIRTUAL<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;s2410SerReg = (S2410_UART_REG *)v_pUART1regs;<br>&nbsp;&nbsp;&nbsp;&nbsp; pRegBase = (PUCHAR)pHWHead-&gt;s2410SerReg;<br>&nbsp;&nbsp; #else&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; pRegBase = (PUCHAR)UART1_BASE;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;s2410SerReg = (S2410_UART_REG *)pRegBase;<br>&nbsp;&nbsp; #endif<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; else if(pHWHead1-&gt;dwIOBase == 0x50008000)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bINT = BIT_UART2;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bTxINT = INTSUB_TXD2;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bRxINT = INTSUB_RXD2;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bErrINT = INTSUB_ERR2;<br>&nbsp;&nbsp; #if USEVIRTUAL<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;s2410SerReg = (S2410_UART_REG *)v_pUART2regs;<br>&nbsp;&nbsp;&nbsp;&nbsp; pRegBase = (PUCHAR)pHWHead-&gt;s2410SerReg;<br>&nbsp;&nbsp; #else&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; pRegBase = (PUCHAR)UART2_BASE;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;s2410SerReg = (S2410_UART_REG *)pRegBase;<br>&nbsp;&nbsp; #endif<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; else<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bINT = BIT_UART0;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bTxINT = INTSUB_TXD0;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bRxINT = INTSUB_RXD0;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;bErrINT = INTSUB_ERR0;<br>&nbsp;&nbsp; #if USEVIRTUAL<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;s2410SerReg = (S2410_UART_REG *)v_pUART0regs;<br>&nbsp;&nbsp;&nbsp;&nbsp; pRegBase = (PUCHAR)pHWHead-&gt;s2410SerReg;<br>&nbsp;&nbsp; #else&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; pRegBase = (PUCHAR)UART0_BASE;<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;s2410SerReg = (S2410_UART_REG *)pRegBase;<br>&nbsp;&nbsp; #endif<br>&nbsp;&nbsp; } </p>
<p><br>再搜索：<br>&nbsp;if ( pHWHead-&gt;UseIrDA )<br>&nbsp;{<br>&nbsp;&nbsp; pHWHead-&gt;pUFTXH = (volatile unsigned char *)&amp;(v_pUART2regs-&gt;rUTXH);<br>&nbsp;&nbsp; pHWHead-&gt;pUFRXH = (volatile unsigned char *)&amp;(v_pUART2regs-&gt;rURXH);&nbsp;&nbsp;&nbsp; <br>&nbsp;}<br>&nbsp;else<br>&nbsp;{<br>&nbsp;把这其中的代码修改为以下代码<br>&nbsp;} </p>
<p>&nbsp;&nbsp; if(pHWHead1-&gt;dwIOBase == 0x50004000)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;pUFTXH = (volatile unsigned char *)&amp;(v_pUART1regs-&gt;rUTXH);<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;pUFRXH = (volatile unsigned char *)&amp;(v_pUART1regs-&gt;rURXH); <br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; else if(pHWHead1-&gt;dwIOBase == 0x50008000)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;pUFTXH = (volatile unsigned char *)&amp;(v_pUART2regs-&gt;rUTXH);<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;pUFRXH = (volatile unsigned char *)&amp;(v_pUART2regs-&gt;rURXH);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; else<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;pUFTXH = (volatile unsigned char *)&amp;(v_pUART0regs-&gt;rUTXH);<br>&nbsp;&nbsp;&nbsp;&nbsp; pHWHead-&gt;pUFRXH = (volatile unsigned char *)&amp;(v_pUART0regs-&gt;rURXH);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; } </p>
<p>*/</p>
<p>5、(ser2410_ser.c)驱动程序进一步处理<br>//SP-A4<br>*/<br>搜索：<br>const HWOBJ IoObj = {<br>&nbsp;THREAD_AT_INIT,<br>&nbsp;SYSINTR_SERIAL,<br>&nbsp;(PHW_VTBL) &amp;IoVTbl<br>};<br>在其后面添加： </p>
<p>const HWOBJ Io1Obj = {<br>&nbsp;THREAD_AT_INIT,<br>&nbsp;SYSINTR_SERIAL1,<br>&nbsp;(PHW_VTBL) &amp;IoVTbl<br>}; </p>
<p>const HWOBJ Io2Obj = {<br>&nbsp;THREAD_AT_INIT,<br>&nbsp;SYSINTR_IR,<br>&nbsp;(PHW_VTBL) &amp;IoVTbl<br>}; </p>
<p><br>接着搜索：<br>const PCHWOBJ HWObjects[] = {<br>&nbsp;&amp;IoObj,<br>&nbsp;&amp;IrObj<br>};<br>将其修改为： </p>
<p>const PCHWOBJ HWObjects[] = {<br>&nbsp;&amp;IoObj,<br>&nbsp;&amp;Io1Obj,<br>&nbsp;&amp;Io2Obj<br>}; </p>
<p><br>再搜索：<br>GetSerialObject(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD DeviceArrayIndex<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br>将其函数改为： </p>
<p>{<br>&nbsp;PHWOBJ pSerObj; </p>
<p>&nbsp;DEBUGMSG(DEBUGMODE,(TEXT("GetSerialObject : DeviceArrayIndex = %d\r\n"), DeviceArrayIndex)); </p>
<p>&nbsp;// Now return this structure to the MDD.<br>&nbsp;if ( DeviceArrayIndex == 2 )<br>&nbsp;{&nbsp; <br>&nbsp;&nbsp; RETAILMSG(1,(TEXT("GetSerialObject Io2Obj\r\n")));<br>&nbsp;&nbsp; pSerObj = (PHWOBJ)(&amp;Io2Obj);<br>&nbsp;}<br>&nbsp;else if(DeviceArrayIndex == 1)<br>&nbsp;&nbsp; pSerObj = (PHWOBJ)(&amp;Io1Obj);<br>&nbsp;else <br>&nbsp;&nbsp; pSerObj = (PHWOBJ)(&amp;IoObj); </p>
<p>&nbsp;return (pSerObj);<br>} <br>*/</p>
<p>6、在CEC中增加特性<br>//SP-A6<br>/*<br>添加UART1这个feature。<br>搜索<br>ComponentType<br>(<br>&nbsp;Name ( "Serial" )<br>&nbsp;GUID ( {6563AD6C-E71C-11D4-B892-0050FC049781} )<br>&nbsp;MaxResolvedImpsAllowed( 999 )<br>&nbsp;Implementations<br>&nbsp;(<br>&nbsp;&nbsp; Implementation<br>&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp;&nbsp; Name ( "S32410 Serial UART" )<br>在其后面添加： </p>
<p>&nbsp;&nbsp; Implementation&nbsp; <br>&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp;&nbsp; Name ( "S32410 Serial UART1" )<br>&nbsp;&nbsp;&nbsp;&nbsp; GUID ( {7C4427A5-286C-4C7A-B687-4E3B364D079B} )<br>&nbsp;&nbsp;&nbsp;&nbsp; Description ( "Samsung S32410 serial UART controller." )<br>&nbsp;&nbsp;&nbsp;&nbsp; BSPPlatformDir ( "smdk2410" )<br>&nbsp;&nbsp;&nbsp;&nbsp; Version ( "5.0.0.0" )<br>&nbsp;&nbsp;&nbsp;&nbsp; Locale ( 0409 )<br>&nbsp;&nbsp;&nbsp;&nbsp; Vendor ( "Microsoft" )<br>&nbsp;&nbsp;&nbsp;&nbsp; Date ( "2003-1-13" )<br>&nbsp;&nbsp;&nbsp;&nbsp; SizeIsCPUDependent( 1 )<br>&nbsp;&nbsp;&nbsp;&nbsp; BuildMethods<br>&nbsp;&nbsp;&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BuildMethod<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GUID ( {07DA2083-6261-4ED6-B5BB-70CF4D930D68} )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Step ( BSP )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CPU ( "ARMV4" )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CPU ( "ARMV4I" )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Action ( '#BUILD(SOURCES,"$(_WINCEROOT)\PLATFORM\SMDK2410\drivers\serial")')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp;&nbsp; )<br>&nbsp;&nbsp; ) <br>*/</p>
<p>7、修改注册表<br>//SP-A7<br>/*<br>打开platform.reg文件，这个是WinCE注册表文件，在这里，我们要修改并添加串口。<br>搜索：[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SER2410]，这就是串口1。<br>将其下面的键值改为： </p>
<p>[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SER2410]<br>&nbsp; "DeviceArrayIndex"=dword:0<br>&nbsp; "Irq"=dword:13<br>&nbsp; "IoBase"=dword:50000000<br>&nbsp; "IoLen"=dword:2C<br>&nbsp; "Prefix"="COM"<br>&nbsp; "Dll"="SER2410.Dll"<br>&nbsp; "Order"=dword:0<br>&nbsp; "Priority"=dword:0<br>&nbsp; "Port"="COM1:"<br>&nbsp; "DeviceType"=dword:0<br>&nbsp; "FriendlyName"="Serial Cable on COM1:"<br>&nbsp; "Tsp"="Unimodem.dll"<br>&nbsp; "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00 </p>
<p><br>再在其后面添加串口2： </p>
<p>[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SER2410_2]<br>&nbsp; "DeviceArrayIndex"=dword:1<br>&nbsp; "Irq"=dword:23<br>&nbsp; "IoBase"=dword:50004000<br>&nbsp; "IoLen"=dword:2C<br>&nbsp; "Prefix"="COM"<br>&nbsp; "Dll"="SER2410.Dll"<br>&nbsp; "Order"=dword:1<br>&nbsp; "Priority"=dword:0<br>&nbsp; "Port"="COM2:"<br>&nbsp; "DeviceType"=dword:0<br>&nbsp; "FriendlyName"="Serial Cable on COM2:"<br>&nbsp; "Tsp"="Unimodem.dll"<br>&nbsp; "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00 </p>
<p>[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SER2410_2\Unimodem]<br>&nbsp; "Tsp"="Unimodem.dll"<br>&nbsp; "DeviceType"=dword:0<br>&nbsp; "FriendlyName"="SER2410_2 UNIMODEM"<br>&nbsp; "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00 </p>
<p><br>再搜索：[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IRDA2410]，这个是红外，也要修改下： </p>
<p>[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IRDA2410]<br>&nbsp; "DeviceArrayIndex"=dword:2<br>&nbsp; "Irq"=dword:19<br>&nbsp; "IoBase"=dword:50008000<br>&nbsp; "IoLen"=dword:2C<br>&nbsp; "Prefix"="COM"<br>&nbsp; "Dll"="IRDA2410.Dll"<br>&nbsp; "Order"=dword:0<br>&nbsp; "Priority"=dword:0<br>&nbsp; "Port"="COM3:"<br>&nbsp; "DeviceType"=dword:0&nbsp; ; IRDA modem, 0 -&gt; null modem<br>&nbsp; "FriendlyName"="S2410 IRDA2410"<br>&nbsp; "Index"=dword:2<br>&nbsp; "IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}" </p>
<p><br>好了，注册表就改到这里，以上要特别注意Irq的值，要和oalintr.h里面的中断定义对应，并且注意Order的顺序，DeviceArrayIndex的值以及IoBase，后面串口源代码中要用到该值作判断。</p>
<p>*/</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/hkingSP/aggbug/32377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hkingSP/" target="_blank">宋鹏</a> 2007-09-17 22:30 <a href="http://www.cppblog.com/hkingSP/archive/2007/09/17/32377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Wince 驱动与文件</title><link>http://www.cppblog.com/hkingSP/archive/2007/09/17/32376.html</link><dc:creator>宋鹏</dc:creator><author>宋鹏</author><pubDate>Mon, 17 Sep 2007 14:20:00 GMT</pubDate><guid>http://www.cppblog.com/hkingSP/archive/2007/09/17/32376.html</guid><wfw:comment>http://www.cppblog.com/hkingSP/comments/32376.html</wfw:comment><comments>http://www.cppblog.com/hkingSP/archive/2007/09/17/32376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hkingSP/comments/commentRss/32376.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hkingSP/services/trackbacks/32376.html</trackback:ping><description><![CDATA[<p>CEC特性目录集合文件－－－定义<br>定义要将哪些特性集成到开发环境中，并加入到操作系统镜像中</p>
<p>CEC文件简单的说，就是把自己编写的应用程序、驱动程序、第三方驱动加载到Wince.net特性目录中，使建立平台时可以像添加自带特性一样添加自己的特性。<br>而不是每建一个平台都要在Project.bib,Project.reg,Project.dat中重复写很多东西。</p>
<p>BIB文件 二进制镜像编译文件－－－加入<br>定义哪些模块与文件，如何包含在操作系统的镜像中。</p>
<p>REG文件 注册文件<br>系统冷启动时建立注册键与变量（注册表）</p>
<p>流接口驱动程序<br>流接口函数使得应用程序可以通过文件系统访问这些驱动程序。<br>流接口驱动程序几乎支持任何类型的可以连接到基于WINCE的平台的外部设备。<br>我理解为通过该驱动使得应用程序访问到任何ARM外的设备，比如一个IO，让灯亮</p>
<p>驱动分为：<br>本机驱动：WINCE专用驱动(如电源和LED),由GWES管理<br>流接口驱动：一般的 设备驱动程序，以DLL的形式出现<br>单片驱动<br>分层驱动：<br>&nbsp;上层是MDD，模块设备驱动程序model device driver<br>&nbsp;下层是PDD，平台设备驱动程序Platform Dependent Driver</p>
<p>armint.c<br>中断处理函数<br>cfw.c<br>中断使能<br>platform.reg<br>包含硬件访问地址的注册表项</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/hkingSP/aggbug/32376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hkingSP/" target="_blank">宋鹏</a> 2007-09-17 22:20 <a href="http://www.cppblog.com/hkingSP/archive/2007/09/17/32376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Wince驱动问答－－－Wince驱动开篇</title><link>http://www.cppblog.com/hkingSP/archive/2007/09/17/32373.html</link><dc:creator>宋鹏</dc:creator><author>宋鹏</author><pubDate>Mon, 17 Sep 2007 14:18:00 GMT</pubDate><guid>http://www.cppblog.com/hkingSP/archive/2007/09/17/32373.html</guid><wfw:comment>http://www.cppblog.com/hkingSP/comments/32373.html</wfw:comment><comments>http://www.cppblog.com/hkingSP/archive/2007/09/17/32373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hkingSP/comments/commentRss/32373.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hkingSP/services/trackbacks/32373.html</trackback:ping><description><![CDATA[<p>一、初级问答<br><br>1、wince驱动它以什么形式存在呢？<br>dll<br><br>2、怎么把它加到wince内核中呢？<br>platform.bib<br><br>3、如何在开机时自动加载内核里面的驱动呢？<br>platform.reg<br><br>4、XIP是什么？<br>Execute in place (XIP)，即本地执行。<br>本地执行区域中，程序可以在ROM中执行，而不用复制到RAM中，节省了系统资源。<br><br><br>二、中级问答<br>1、如何修改默认ip和网关呢？<br>platform.reg<br><br>2、如何快速编译Wince系统呢？<br>命令行编译：<br>"build -c" 命令<br>"buildrel" 命令<br>"makeimg"&nbsp;命令 or 点击build按钮<br><br></p>
<img src ="http://www.cppblog.com/hkingSP/aggbug/32373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hkingSP/" target="_blank">宋鹏</a> 2007-09-17 22:18 <a href="http://www.cppblog.com/hkingSP/archive/2007/09/17/32373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>