日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WINCE6.0支持Multiple XIP

發布時間:2025/4/16 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WINCE6.0支持Multiple XIP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

********************************LoongEmbedded********************************

作者:LoongEmbedded(kandi)

時間:2012.02.29

類別:WINCE系統開發

********************************LoongEmbedded********************************

?

1.??? Multiple XIP support

XIP(eXecute-In-Place)是本地執行,允許在ROM芯片內執行XIP區域(region)的應用代碼,而不必再把代碼讀取到RAM中來執行。WINCE支持我們在單個系統中構建(construct)多個XIP區域,基于下面的理由使用多個XIP區域來代替單個區域:

⑴可以把應用(application)分成實用的子集(functional subsets),并且支持從OS內核中分開安裝。

⑵增加新特征(feature)時,不需要替換整個運行時鏡像(run-time image)。

⑶當解決掉一個bug后的更新不需要替換整個運行時鏡像。

⑷用戶可以更新運行時鏡像。

⑸更新運行時鏡像是永久性(permanent)的,在冷啟動時不容易受影響。

閃存(flash memory)作為掩膜只讀存儲器(masked ROM)的替代品日益廣泛使用,是一種支持多個XIP區域的芯片技術。在這個討論多個XIP區域的幫助主題中,和ROM相關的閃存用于保存系統鏡像(system image)。

多個XIP區域把ROM鏡像分成分離的和地址逐漸遞增的單元,在此借用下圖來說明,

?

圖1

那如何劃分XIP鏡像呢?要考慮區域中模塊(module)和文件(files)的所有者,并且要考慮這些模塊和文件的功能,基于這樣的思想來劃分。

需要注意的是XIP不能跨過不連續的物理區域,盡管虛擬地址連續,當跨越不同物理區域的代碼在本地執行時,一些設備沒有響應(unresponsive)。沒有壓縮并且跨越不連續物理區域的文件和模塊在沒有經過復制的情況下被直接映射或是訪問,但是內核(kernel)只處理物理連續的文件。

2.??? Multiple XIP Regions

因為我們可以在單個系統中構造多個XIP區域,從這點上,在使用多個存儲區(memory area,比如設計中同時使用ROM、flash等多個存儲器)的應用場合,我們可以使用XIP的功能。比如,我們可以安裝OS的內核部分在ROM中,和把OS的其他部分安裝在閃存(flash memory)中。XIP應用能夠在兩個地方執行,我們可以根據需要逐漸以地址遞增的方式規劃閃存區域(flash region),但是存儲器中的XIP區域必須使只讀的,比如圖1中的XIPKERNEL.NBO在NAND Flash中必須使只讀的。

?????? 我們可以根據自己的需要把多個ROM區域鏈接(chain)起來,在通過usb下載XIP鏡像的時候,就是通過下載chain.lst,接著eboot根據此lst文件自動下載XIPKERNEL.bin、NK.bin和chain.bin文件,然后啟動WINCE操作系統的。我們每次增加一個ROM區域時,內核可以替代另一個ROM區域,這里內核不是物理上替換這個模塊,而是用一個不同的ROM區域中的模塊來代替它的功能性(Each time you add a ROM region, the kernel may replace another ROM region. The kernel does not physically replace the module, but replaces its functionality with a new module in a separate ROM region)。我們定義ROM區域的順序決定了OS在上面寫入模塊的次序。包含NK.exe的ROM區域位于管理多個ROM區域的目錄清單底部,見圖1,我們的nk.exe就是包含在XIPKERNEL.bin中的。內核增加新的特征在目錄清單頂部,也就是圖1的NK.nb0部分,這樣可以讓我們通過連接其他的ROM區域來替換除了nk.exe之外的原始鏡像的模塊。

?

為了增加一個ROM區域(可以理解為xxx.bin)到一個已經存在的運行時鏡像中,創建一個列新的.bib文件,此文件列舉我們要增加到或是替換一個已經存在的OS設計中的模塊。如果要增加一個新的.exe文件或者替換一個已經存在的一個,只需要增加一個.exe文件到.bib文件中。

?

如果我們增加或是修個一個DLL,那必須在.bib文件中制定一個增加的入口。在WINCE中,所有的DLL文件從虛擬內存進程空間自上到下加載(all DLLs load from the top down in the virtual memory process space)。因為WINCE在相同的的地址位置為一個指定的.exe文件裝載所有DLL文件,.bin文件的MODULES部分為所有DLL文件預留相同大小的虛擬內存空間。對于任何指定的進程,系統不是裝載同樣的DLL文件到進程地址空間中,就是為后來的裝載預留空間(For any specified process, the system either loads the same DLLs to the process address space or reserves space to load later)。當使用Makeimg.exe來編譯一個ROM鏡像(比如nk.bin)時,它會生成鏡像中DLL的開始地址和最后的地址,如下:

First DLL Address:?? 01f90000h

Last DLL Address:??? 02000000h

?

?????? 我們必須在新.bib文件的CONFIG部分包含一個入口,使用DLLHIGHADDR來指定關聯的ROM鏡像的DLL地址空間的起始地址。此起始地址是原來(original).bin文件中為DLL分配的虛擬內存空間的最低地址。在新的.bin文件中,Makeimg.exe從系統可以開始預留和裝載的虛擬內存中列出開始地址,系統從起始地址開始預留存儲空間(The system reserves memory from the starting address down),下面的示例代碼解釋了一個新的.bin文件生成一個示例DLL的開始地址:

DLLHIGHADDR=0x01f90000

?

我們要確保XIP區域不能重疊,如果重疊會導致系統不能正常啟動。為了避免引起系統問題,需要在DLL區域之間留下一定的內存空間,但這樣會減少一個進程中可用虛擬內存的大小。因為內核為所有ROM預留同樣大小的虛擬內存空間來裝載DLL,內核從不使用DLL之間的內存空間。在不需要重新安排緊接著其后的ROM鏡像的情況下,使用這個內存空間來擴大ROM鏡像的DLL空間。

?

內核許可一個DLL從一個鏡像完全剝離出來,即使這個DLL與其他的模塊隱式關聯。Romimage.exe打印一個缺少DLL的警告,但仍然創建這個鏡像文件。這樣使我們可以從RAM文件系統或是目標控制框架(target control shell)中裝載這個找不到的DLL。

?

3.??? Booting an image with Multiple XIP Regions

如要引導(boot)一個multiple XIP的鏡像,bootloader必須裝載數據到flash存儲器或者RAM中,接著OEMInit函數必須處理XIP鏈(chain)中的每個入口,增加每個入口到OEMRomChain結構體中,此結構體的定義如下圖所示:

?

圖2

OEM在config.bib中能夠制定所有XIP的ROMChain次序,比如圖1所示,依次是xipkernel、chain和nk。如果遍歷(traverse)OEMRomChain結構體的鏈表且在內核(在此為xipkernel.bin)存儲的位置上又找不到內核,那么內核自動附加ROM到OEMRomChain鏈表中。

4.??? Building an image with Multiple XIP Regions

創建一個由多個XIP區域組成的鏡像,是由config.bib和IMGMULTIBIN(但實際上是IMGMULTIXIP)環境變量來控制,此變量必須設置為1,如在smdk6410.bat中設置如下:

set IMGMULTIXIP=1

多個XIP成功編譯將生成下面的文件:

⑴為每個XIP區域生成一個對應的.bin文件,比如xipkernel.bin、chain.bin和nk.bin。

⑵一個單獨的xip.bin文件,此文件包含所有的xip區域文件,比如xip.bin=xipkernel.bin+chain.bin+nk.bin。

⑶一個XIP鏈的bin文件,為chain.bin文件。

⑷如果config.bib文件中設置了ROMSTART,ROMWIDTH或是ROMSIZE,那么會生成xip.nb0文件。Xip.nb0文件時所有的.bin文件的布局,如圖1所示,包含chain.bin,因為它們(xipkernel.bin、chain.bin和nk.bin)應保存在ROM中。

?

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的WINCE6.0支持Multiple XIP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜在线视频播放 | 国产精选中文字幕 | 亚洲欧洲精品一区二区三区 | 亚洲美女视频在线观看 | 一区二区三区免费播放 | 性插动态视频 | 日日草夜夜操 | 国产农村妇女毛片精品久久 | www.欧美一区二区三区 | 亚洲自拍中文 | 另类小说欧美 | 影音先锋亚洲一区 | bbbbbxxxxx性欧美| 铠甲勇士猎铠 | 图片区偷拍区小说区 | 国产情侣一区二区三区 | 国产亚洲欧美视频 | 激情综合激情五月 | 天天插日日干 | 国产一区二区三区色淫影院 | 欧美久久精品 | 国产毛片不卡 | 日韩av中文字幕在线播放 | av成人毛片| 在线观看福利片 | 午夜爽视频 | 黄页嫩草 | 1000亚洲裸体人体 | 99色网| 成人羞羞在线观看网站 | 成人精品在线观看视频 | 久久精品国产亚洲AV高清综合 | 黄色成人av | 天堂av免费看 | 中文字幕三级 | 欧美日韩国产图片 | 日韩欧美视频在线 | 寂寞d奶大胸少妇 | missav|免费高清av在线看 | 亚洲精品69 | 日韩国产欧美一区二区三区 | 性午夜| 午夜影院免费 | 亚洲成av人片在线观看无码 | 欧美成人午夜免费视在线看片 | 日韩三级久久 | 成人片黄网站久久久免费 | 日韩欧美福利 | 日韩成人在线视频 | 亚洲国产精品综合久久久 | 男女一级黄色 | 少妇高潮一区二区三区四区 | 亚洲一线二线在线观看 | 制服.丝袜.亚洲.中文.综合懂 | 人人干人人干 | 2023国产精品 | 欧美伊人 | 91免费短视频 | 激情福利社 | 亚洲天堂资源 | 久久精品国产一区二区 | 91在线观看免费 | 我们的生活第五季在线观看免费 | 国产免费91 | 久久久久久久av | 麻豆久久久午夜一区二区 | 色香蕉av| 国产在线1区 | 午夜免费福利小电影 | 精品香蕉一区二区三区 | 亚洲天堂二区 | 欧美视频一二区 | 日日操狠狠干 | 性――交――性――乱睡觉 | 亚洲综合成人网 | 亚洲精品久久久久久久久久久 | 日韩性猛交ⅹxxx乱大交 | 国产91免费看 | 噜噜噜色| 欧美成人精品一区二区免费看片 | 国产福利在线看 | 久久涩 | 一区二区欧美视频 | 最新国产毛片 | 亚洲AV无码久久精品国产一区 | 国产精品视频看看 | 三级黄色免费片 | 一级黄色在线视频 | 一本大道久久a久久精二百 琪琪色在线视频 | 美女爽爽爽 | 国产做受69| 亚洲人成在线观看 | 奇米四色7777 | 大地资源中文在线观看免费版 | 第一章豪妇荡乳黄淑珍 | 日本精品人妻无码免费大全 | 神马久久影院 | 午夜丁香网| 男女瑟瑟视频 |