Windows Mobile平台智能系統儲存空間ROM和RAM解釋

來源:互聯網
上載者:User

WM6 ROM OS分區原理:128MB ROM包括IPL、SPL、OS(35MB)、EXTROM(10MB)、RADIO、STORAGE(65MB)等分區,其中OS分區又分為XIP、IMGFS兩部分。系統啟動時SPL載入OS分區的XIP到RAM執行,XIP部分大約3MB,包括nk.exe、device.exe等核心程式,就像PC上的ntoskrnl.exe等。IMGFS就像一個壓縮的GHOST檔案,包括了WM的所有系統檔案。CE核心啟動後就可以訪問IMGFS檔案系統上的OS需要的所有檔案了,IMGFS是XPR或LZX壓縮格式,系統訪問上面的檔案會自動解壓到RAM。因為普通PE檔案調入RAM執行要進行地址重定位,為了提高效率,IMGFS中的檔案可以是重定位好的模組形式,這些程式運行就不用再重定位了,直接調入RAM中保留的PagePool執行

 

WM的RAM一般是64MB,系統中顯示的少,是除去了PAGEPOOL(快取預設6MB)、RADIO、DMA、螢幕緩衝區等系統核心的部分。WM不支援虛擬記憶體PAGEFILE。

 

ROM 128MB位於DiskOnChip晶片,顧名思義就是把儲存晶片類比成了磁碟,用的FAT檔案系統,所以就有分區,一般用的是OS分區(就是刷機要刷的分區)和extended_rom分區(放恢復出廠預設值後自動安裝的OEM安裝包)。還有IPL(BIOS)、SPL(載入OS,顯示第2屏開機畫面,如果刷機刷壞了就停這了,這時還可以利用三色屏或SD卡重新刷官方ROM,所以只要IPL、SPL不壞就不怕,而一般刷機是不刷這2部分的)、RADIO模組。剩下的就是使用者可以使用的儲存區(大概40多MB,FLASH ROM和隨身碟一樣是可讀寫的,只是沒電不丟資料)。ROM分NAND和NOR兩種,現在一般用的NAND,就是製作儲存卡和隨身碟的那種,不能直接運行代碼,要調入RAM才能運行。NOR是可以直接運行代碼的。

 

總結一下就是RAM = 程式記憶體 + 快取 + RADIO + DMA + 螢幕緩衝區 + 。。

                  ROM =  OS分區 +  extended_rom分區(OEM的程式區) + IPL(BIOS) + SPL  + 儲存記憶體

 

擴充儲存卡如T卡等都屬於NAND ROM ,的情況:

 

 

 

 

快閃記憶體大小256MB指的是機上的ROM。

 

所以刷機就是重寫OS分區了,用PDOCREAD可以把整個OS分區讀成一個NB鏡象檔案,然後把鏡象解開到DUMP檔案夾,就是所有ROM的檔案了。檔案分2種,一種是普通檔案,另一種是XIP(ExecInPlace)模組,這是為了加快OS運行設計的,就是這些檔案可以不調入RAM而直接在ROM執行,但因為現在都是NAND ROM,所以XIP模組其實還是要調入RAM的PAGEPOOL執行。

 

但是由於XIP模組有很多地址資訊,所以移植OS最難的就是這了。XiP全稱為(eXecute In Place),翻譯成中文就是:就地執行。XIP即就地執行的意思,作業系統核心直接在Flash中運行,不需要拷貝到RAM。但是,Flash的儲存空間訪問周期要比RAM大得多,在使用XIP技術後可能會降低程式的運行速度,不過由於CPU的指令預取機制以及Cache機制,實際使用起來並不會明顯降低應用程式的運行速度。XIP的原理很簡單,即指作業系統或應用程式直接從非易失性儲存空間中執行。就當前的技術來說,這裡的非易失性儲存空間特指NOR型Flash,因為只有N0R型的Flash才可以隨機存取。另有一種通過增加Cache使NAND Flash也可以進行XIP的方案,但需要增加硬體電路,不是一個通用的解決方案。

 

除了硬體提供支援以外,XIP還需要軟體的支援。作業系統核心和應用程式在運行時,它在記憶體中的映像可以分為三個部分:程式碼片段、資料區段和堆棧段。程式碼片段對應於執行程式中的Text Section,其中包括運行代碼和唯讀資料,這個段在記憶體中一般被標記為唯讀。資料區段對應於運行檔案中的Data Section和IkSS Section,其中存放的是各種資料(經過初始化的和未經初始化的)和靜態變數,而堆棧段存放的則用於儲存函數調用和局部變數。從以上分析可知,程式運行時在記憶體的映像分為兩類:一類是唯讀,如程式碼片段;另一類是可寫的,如資料區段。而Flash雖然是可寫的,但並不能像寫普通RAM一樣進行。因此,當程式在Flash中運行時,我們仍然需要把部分可寫的資料區段放在RAM 中。

 

因為WM6組建是WM5.2所以檔案結構和WM5是一樣的。對DUMP進行自己需要的修改後再打包會NB鏡像檔案然後用PDOCWRITE通過ACTIVESYNC串連整個寫入ROM的OS分區就刷機完成了。DUMP裡有default.hv(包括HKCR和HKLM)和user.hv(包括HKCU)是初始註冊表檔案,可以轉換成REG來編輯再轉回去。

 

當然直接對DUMP目錄進行操作太麻煩了,比如要去掉一個軟體,你要刪掉這個軟體用到的所有檔案和登錄機碼,要一個個找。所以就有了BUILDOS工具,他把每個軟體分成一個檔案夾,裡面有軟體的所有檔案和登錄機碼,檔案夾裡的RGU檔案就是這個軟體所要的登錄機碼,DSM檔案是關聯資訊,就是以後把DUMP反編成BUILDOS時根據DSM的內容來確定這個軟體需要哪些檔案。BUILDOS產生的DUMP目錄裡的RGU檔案可以刪掉,不過別人反向產生就沒有了單獨的登錄機碼。

 

刷機後首先要硬起(HARD RESET),出廠設定就是格式化ROM中的使用者分區,這樣就剩ROM檔案了,乾乾淨淨。ROM分區就是/windows,裡面的檔案除了刷機是不能修改的,所以如果OEM商在裡面裝了什麼軟體使用者是無法刪掉的,只能刪掉外面的快截方式。當使用者把檔案複製進windows時系統會把它放在使用者分區,然後隱藏掉windows裡的原始檔案,這樣看起來檔案就被覆蓋了,實際上ROM裡的檔案沒有變,有人想通過這樣複製一個小檔案覆蓋windows的大檔案想節省空間的是不可能的,這樣只是浪費了使用者分區的空間。OS分區的空間沒有節省的說法,因為OS分區的剩餘空間不能被使用者使用,除非重新對DOC分區,不過這個太複雜了,而且如果弄壞了RADIO部分資料就不能當電話用了。

 

所以在DUMP產生鏡像的時候盡量多放點東西才叫利用,不過那又不純了。所以硬啟所做的事就是把使用者分區格式化了,這樣就只剩一個沒有子目錄的windows目錄,然後系統執行initflashfiles.dat裡的命令建立子目錄和把一些需要的ROM檔案(比如註冊表)複製到使用者分區,因為這些檔案後期是可能要修改的。然後initflashfiles.dat運行checkautorun.exe來檢查windows/autorun.exe,然後這個autorun又執行/extended_rom/autorun.exe就是運行EXTROM分區的程式。EXTROM分區預設是防寫保護的,可以用程式解開,預設也沒有載入點顯示,可以改註冊表顯示為STORAGE,或者不顯示就直接在檔案管理工具輸入/extened_rom路徑進入。這個分區硬啟不會丟失,所以可以放入硬啟後想自動啟動並執行軟體

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.