• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            春暖花開
            雪化了,花開了,春天來了
            posts - 149,comments - 125,trackbacks - 0
            WinCE驅(qū)動開發(fā)問題精華集錦-1
            摘自: http://hi.baidu.com/mcu%5Fspaces/blog/item/12662a088108f9d563d9867b.html

            近日越來越發(fā)現(xiàn)知識的匱乏,所以需要好好努力才可以.

            加油,加油!

            精華集錦1__內(nèi)容如下
            1、在應(yīng)用程序中,如何向修改本機的ip 地址等網(wǎng)絡(luò)參數(shù),并使之立即生效?  
                   網(wǎng)絡(luò)設(shè)置保存在注冊表中,位置[HKEY_LOCAL_MACHINE\Comm\網(wǎng)卡名稱\Parms\TcpIp],例如常見的CS8900網(wǎng)卡設(shè)置:  
            [HKEY_LOCAL_MACHINE\Comm\CS89001\Parms\TcpIp]  
               "EnableDHCP"=dword:0  
               "DefaultGateway"="192.168.0.1"  
               "DNS"="111.111.111.111"  
               "UseZeroBroadcast"=dword:0  
               "IpAddress"="192.168.0.2"  
               "Subnetmask"="255.255.255.0"  
                 設(shè)置之后要生效有兩種辦法:一種熱啟動,調(diào)用KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL),熱啟動時間很短暫;另外一種調(diào)用DevieceIoControl API,傳遞IOCTL=IOCTL_NDIS_REBIND_ADAPTER。  
              
            2、如何向控制面板中那樣,修改系統(tǒng)聲音的音量  
                 調(diào)用API waveOutSetVolume(HWAVEOUT, dwVolume ),一般參數(shù)1為0。在[HKEY_CURRENT_USER\ControlPanel\Volume]下是系統(tǒng)聲音的注冊表設(shè)置。  
              
            3、在應(yīng)用程序中如何實現(xiàn)jpg、gif圖片的顯示  
            有幾種辦法:  
            1)、在MSDN中搜索標(biāo)題為“Windows CE .NET Technical Frequently Asked Questions”的文檔,其中有一個問題“How can I display JPEG, GIF, and other graphics files?”,下面就是答案。  
            2)、如果安裝了Windows CE 5.0,一個例子源碼位于WINCE500\PUBLIC\GDIEX\SDK\SAMPLES\SIMPLE。  
            3)、用IWebBrowser組件實現(xiàn)。  

            4、 在應(yīng)用程序中如何實現(xiàn)系統(tǒng)待機  
            void GwesPowerOffSystem(void);  

            5、   在WINCE中如何得到網(wǎng)卡MAC地址  
                 事實證明,獲得物理網(wǎng)卡的MAC地址并沒有被統(tǒng)一成一個API或者IOCTL,如果網(wǎng)卡驅(qū)動程序沒有提供接口的話只能直接訪問寄存器獲得。讀者可以參考目錄WINCE500\PUBLIC\COMMON\OAK\DRIVERS\NETCARD里的一些驅(qū)動源碼。  
              
            6、Windows XP Embedded 和Windows CE有何區(qū)別  
                 簡單地說Windows XP Embedded采用Windows XP內(nèi)核,只能運行在x86處理器上,優(yōu)點是能夠運行PC上現(xiàn)有的應(yīng)用軟件,缺點是授權(quán)費太高,標(biāo)價¥900元;Windows CE采用Windows CE內(nèi)核,能夠運行在多種處理器上,如x86、ARM、SHX、MIPS等,優(yōu)點是授權(quán)費低,最低Core版標(biāo)價¥30元。缺點是需要單獨開發(fā)應(yīng)用軟件、定制內(nèi)核,甚至開發(fā)BSP、Driver。  

            7、 wince下只是把調(diào)制解調(diào)器的驅(qū)動掛接在了com1,如何將器驅(qū)動掛接在com2上?  
                 1)、在HLM\drivers\buildin\com2\unimodem下復(fù)制和com1一樣的數(shù)據(jù)
                 2)、在HLM\ExtModems\HayesCompat下改寫Port為COM2:,再改寫FriendlyName為"Hayes Compatible 在 COM2:"。  
              
            8、如何定制自己的外殼  
               1)、先開發(fā)一個外殼軟件,假設(shè)名稱為MyShell.exe  
               2)、刪除注冊表[HKEY_LOCAL_MACHINE\init]下如下一行:  
                       "Launch50"="explorer.exe"  
                 3)、在注冊表[HKEY_LOCAL_MACHINE\init]下添加如下一行:  
                       "Launch50"="MyShell.exe"  
                 上述的“LaunchXX”中的XX為序列數(shù),內(nèi)核依據(jù)這個序列數(shù)按由小到大的順序來分別執(zhí)行所有子鍵列出的應(yīng)用程序,具體數(shù)值應(yīng)該為多少請參考幫助文檔的說明。  
                 如果原來的內(nèi)核中添加了標(biāo)準(zhǔn)外殼(standard shell)組件,或者添加了其它組件而這些組件需要依賴標(biāo)準(zhǔn)外殼,那么在PB中是無法刪除標(biāo)準(zhǔn)外殼組件的,解決辦法一是保留explorer.exe在內(nèi)核中,二是刪除依賴標(biāo)準(zhǔn)外殼的組件。  

            9、我原來的工程是x86版本的,編譯選項只有x86,我如何能夠編譯ARM版本的  
            兩種辦法:  
               1)、用EVC新建一個工程的時候,建議復(fù)選“CPUs”列表,這樣發(fā)生了這種事情也能夠輕易通過選擇“WCE Configuration”工具欄中的CPU列表來編譯不同CPU版本的軟件  
                 2)、如果打開工程后CPU列表中只有x86,而此時已經(jīng)安裝了ARM版本的SDK,那么單擊EVC菜單“build”-“configurations”,然后單擊“add”按鈕來添加CPU。  

              
            10、通常情況下WINCE采用串口1作為調(diào)試時輸出信息用途,要正式出產(chǎn)品前如何去掉串口1的調(diào)試功能,正常情況下串口1只有在編譯debug版本的內(nèi)核時才在BootLoader中初始化串口1用于輸出信息,而編譯release版本會跳過此代碼。而有些BSP設(shè)計成沒有宏定義,也就是說無論什么版本都會在BootLoader中初始化串口1,這樣造成WINCE啟動后串口1無法被應(yīng)用程序使用。對于這種情況只能在BootLoader源碼中刪除初始化代碼,如OEMInitDebugSerial。  
              
            11、基于wince的應(yīng)用程序能建成console project么?  
                   不能  

            12、ARM系統(tǒng)外擴一片512K RAM,驅(qū)動程序經(jīng)過映射可以使用這一段RAM。1、應(yīng)用系統(tǒng)如何使用這一段RAM?要加一層驅(qū)動嗎?2、如果要將這一段RAM當(dāng)作RAM盤存儲系統(tǒng),該如何作呢?應(yīng)該要加文件系統(tǒng)吧,如何加呢?
               解答這個問題前,先要說一下WINCE的地址映射機制。對于包含MMU(存儲器管理單元)的處理器來說,如ARM和x86,WINCE要求OEM在定制內(nèi)核的時候填寫一個虛擬地址與物理地址映射關(guān)系的表,稱為OEMAddressTable,在這個表中定義了所有物理設(shè)備的起始物理地址,對應(yīng)的起始虛擬地址,地址空間大小,RAM就包括在其中(如果是x86平臺還要求RAM起始虛擬地址從0x80000000開始)。如果有多片RAM,應(yīng)該在OEMAddressTable中將它們定義在一起,使之地址連續(xù)。對于非OEM的開發(fā)者來說,他們拿到的是定制好的內(nèi)核,不能做任何修改,如果在產(chǎn)品中外擴一片RAM,只能通過API函數(shù)通知操作系統(tǒng)增加一條虛擬地址與物理地址映射關(guān)系表項。相關(guān)API函數(shù)有兩個,分別是CreateStaticMapping和VirtualCopy。它們的相同之處是都用于建立物理地址和虛擬地址的映射關(guān)系。它們的不同之處是CreateStaticMapping映射的虛擬地址范圍在0xC400 0000 到 0xE000 0000之間,這個范圍只能由內(nèi)核訪問,一般用于ISR訪問,因為ISR只能訪問靜態(tài)映射的虛擬地址空間,不能用VirtualCopy。VirtualCopy通常和VirtualAlloc配合使用,映射的虛擬地址空間在0x8000 0000以下,一般用于驅(qū)動程序和應(yīng)用程序訪問。  
            1)、應(yīng)用程序要訪問這片RAM,和驅(qū)動程序訪問方法一樣,調(diào)用VirtualAlloc和VirtualCopy。  
            2)、可以做一個流驅(qū)動程序?qū)iT用于讀寫這片RAM,這樣所有應(yīng)用程序就可以通過調(diào)用流驅(qū)動接口函數(shù)來訪問,非要加文件系統(tǒng)也是可行的,通過修改注冊表就可以做到,但是麻煩一些。  

            13、我怎么能在PB左邊的定制平臺加進我的驅(qū)動呢?  
            兩種辦法:  
            1)、在platform.bib或者project.bib的MODULES部分添加一條語句,例如:  
            MyDriver.dll       C:\Driver\MyDriver.dll                     NK SH  
            這樣編譯內(nèi)核的時候就會把你的驅(qū)動DLL文件添加到內(nèi)核中,如果有注冊表需要設(shè)置,在platform.reg或者project.reg中添加注冊表內(nèi)容。  
            2)、通過制作.cec文件來添加驅(qū)動,制作.cec文件的優(yōu)點是只需制作一次,以后就可以通過將.cec文件導(dǎo)入到PB的Catalog中,象PB自帶的feature一樣通過菜單“Add to OS Design”添加到左邊的內(nèi)核工程中。  

            14、 WINCE有沒有相對路徑概念?如果沒有如何得到當(dāng)前模塊的路徑?  
                 1) 、WINCE沒有相對路徑概念,只有絕對路徑,所以凡是涉及到路徑均為絕對路徑。  
                 2)、調(diào)用API GetModuleFileName,傳遞一個模塊的實例句柄就能夠得到模塊的絕對路徑。  

            15、   怎樣讓 POCKET WORD打開*.dat格式(里面都是數(shù)據(jù))的文件?
                 兩種辦法:  
                 1)、調(diào)用API ShellExecuteEx,在結(jié)構(gòu)體SHELLEXECUTEINFO中添加.dat文件的路徑。  
                 2)、調(diào)用API CreateProcess,在第二個參數(shù)中設(shè)置.dat文件的路徑。  

            16、 x86 Rom Boot Loader真的可以實現(xiàn)嗎?它確實能代替BIOS啟動計算機?  
               Rom Boot 被設(shè)計存放在Flash/EEPROM中,也就是原來BIOS的位置,這樣當(dāng)上電后CPU到固定地址執(zhí)行代碼,也就是執(zhí)行了Rom Boot的代碼,它對整個硬件系統(tǒng)進行初始化和檢測,并且支持通過網(wǎng)卡從遠程機器上下載nk.bin或者從本地IDE/ATA 硬盤的活動分區(qū)中尋找nk.bin文件加載。Rom Boot的優(yōu)點就是引導(dǎo)并且加載速度快,而且它自身完成了所有的操作,這樣就不用BIOS、MSDOS,更不用Loadcepc了。  
              
            17、 對于x86 Rom Boot Loader,如何Build得到Romboot.rom?  
               1)、在PB中打開一個內(nèi)核工程(x86的)
               2)、單擊PB菜單“Build”-“Open Build Release Directory”
               30 、用cd命令進入 %_WINCEROOT%\Platform\Geode\Romboot 4、build  
              
            18、如何設(shè)置、更改顯示分辨率  
                 能否設(shè)置、更改顯示分辨率由顯示驅(qū)動程序決定,而沒有統(tǒng)一的標(biāo)準(zhǔn)。例如CEPC,在啟動的時候可以通過設(shè)置loadcepc.exe的參數(shù) /L來決定WINCE啟動后的顯示分辨率,這是由于顯示驅(qū)動“VGA Linear Framebuffer”支持,而Geode可以通過在定制內(nèi)核時修改注冊表項來決定WINCE啟動后的顯示分辨率。  
              
            19、 幾個硬件使用同一個IRQ,那么發(fā)生中斷的時候系統(tǒng)怎么判斷到底是哪一個硬件發(fā)生的中斷呢?ISR里面又應(yīng)該怎么控制呢?  
                 Windows CE支持多個設(shè)備中斷共享一個IRQ,當(dāng)一個共享IRQ發(fā)生時,CE內(nèi)核的異常處理程序檢測設(shè)備特定的寄存器,因為大多數(shù)設(shè)備都有一個單獨的寄存器用于表示設(shè)備的活動狀態(tài),所以通過遍歷共享這個IRQ的所有設(shè)備的寄存器就可以判斷哪個設(shè)備發(fā)生中斷。nk.exe加載一個giisr.dll,這個.dll是微軟提供的,它其實是第一個可安裝ISR。默認(rèn)CE內(nèi)核就是調(diào)用這個dll來檢測寄存器狀態(tài)的,當(dāng)然OEM可以編寫自己的.dll。  
                 CE內(nèi)部有一個ISR鏈,也就是可安裝ISR。因為CE允許OEM添加自己的ISR處理程序,所以ISR被設(shè)計成一個鏈表。排在前面的ISR比后面的ISR優(yōu)先處理中斷,如果當(dāng)前ISR能夠處理當(dāng)前中斷,那就返回中斷ID由IST處理或者返回SYSINTR_NOP,如果當(dāng)前ISR不能夠處理當(dāng)前中斷,那就返回SYSINTR_CHAIN讓下一個ISR處理。  
              
            20、請問在wince中如何在內(nèi)核中增加一個與\windows同級的目錄?  
                 在platform.dat或者project.dat中添加語句。例如要創(chuàng)建根目錄下子目錄Program Files,語句如下:  
                 root:-Directory("Program Files")
            posted on 2009-07-16 15:34 Sandy 閱讀(533) 評論(0)  編輯 收藏 引用 所屬分類: Windows Mobile
            青青热久久国产久精品| 久久精品国产色蜜蜜麻豆| 99久久国产免费福利| 日韩va亚洲va欧美va久久| 亚洲精品午夜国产va久久| 亚洲AV日韩AV永久无码久久| 久久被窝电影亚洲爽爽爽| 欧美麻豆久久久久久中文| 2021国产精品久久精品| 国产激情久久久久影院老熟女免费 | 久久人人爽人人爽人人片AV不| 丁香五月网久久综合| 波多野结衣久久一区二区| 99久久国产热无码精品免费| 欧美性猛交xxxx免费看久久久| 一本色道久久HEZYO无码| 一本色综合久久| 欧美国产精品久久高清| 国产精品99久久久久久董美香| 久久婷婷五月综合97色直播| 久久99精品久久久久久噜噜| 久久精品成人免费网站| 人妻少妇久久中文字幕| 少妇精品久久久一区二区三区| 久久成人精品| 国产精品内射久久久久欢欢| 精品久久久久久综合日本| 国产99久久久国产精品小说| 麻豆国内精品久久久久久| 狠狠人妻久久久久久综合蜜桃| 国产亚洲欧美精品久久久| 亚洲精品午夜国产VA久久成人 | 国产精品99久久99久久久| 国色天香久久久久久久小说| 日韩AV毛片精品久久久| 婷婷久久精品国产| 亚洲国产天堂久久久久久| 一日本道伊人久久综合影| 亚州日韩精品专区久久久| 久久精品中文字幕大胸| 久久久久久久久久久|