• <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>

            milkyway的窩

            最初想法的誕生地

             

            multi-xip的實現

            來自 http://www.cnblogs.com/yakin/archive/2005/07/20/196572.aspx
            作者: yakin

            multi-xip實際上很有用,但是現在有一個為難的事情:就是OS起來之后無法寫flash,這個很讓人苦惱。所以這也導致升級程序無法設置標志位。只能用GPIO口。

            Multi-xip的實現:
            1) Bib文件的修改:
            ?? MEMORY

            ??? RSVD???? 80000000? 000FF000? RESERVED
            ??? ARGS???? 800FF000? 00001000? RESERVED
            ??? NK?????? 9C600000? 01000000?? RAMIMAGE
            ??? APP????? 9D600000? 00500000?? RAMIMAGE
            ??? CHAIN??? 9DB00000? 00002000?? RESERVED
            ??? RAM????? 80100000? 01F00000? RAM
            ??? pdwXIPLoc 00000000 9DB00000? FIXUPVAR

            CONFIG

            ??? AUTOSIZE=ON
            ??? ROM_AUTOSIZE=OFF
            ??? RAM_AUTOSIZE=OFF
            ??? DLLADDR_AUTOSIZE=ON
            ??? XIPSCHAIN=9DB00000
            ??? ROMSTART=9C600000
            ??? ROMWIDTH=32
            ??? ROMSIZE=01600000

            ??? KERNELFIXUPS=ON

            2) 在OEMInit加一個連接各個bin的函數:
            void InitRomChain()
            {
            ?// Added for MultiXIP stuff
            ?static? ROMChain_t s_pNextRom[MAX_ROM] = {0};
            ?DWORD? dwRomCount = 0;
            ??? DWORD?????? dwChainCount = 0;
            ??? DWORD *???? pdwCurXIP;
            ??? DWORD?????? dwNumXIPs;
            ??? PXIPCHAIN_ENTRY pChainEntry = NULL;
            ??? if(pdwXIPLoc == NOT_FIXEDUP){
            ??????? return;? // no chain or not fixed up properly
            ??? }
            ??? // set the top bit to mark it as a virtual address
            ??? pdwCurXIP = (DWORD*)(((DWORD)pdwXIPLoc) | 0x80000000);
            ??? // first DWORD is number of XIPs
            ??? dwNumXIPs = (*pdwCurXIP);
            ?? if(dwNumXIPs > MAX_ROM){
            ????? OALMSG(TRUE, (L"ERROR: Number of XIPs exceeds MAX\r\n"));
            ????? //lpWriteDebugStringFunc(TEXT("ERROR: Number of XIPs exceeds MAX\n"));
            ????? return;
            ??? }
            ??? pChainEntry = (PXIPCHAIN_ENTRY)(pdwCurXIP + 1);
            ??? while(dwChainCount < dwNumXIPs)
            ??? {
            ??????? if ((pChainEntry->usFlags & ROMXIP_OK_TO_LOAD) &&? // flags indicates valid XIP
            ??????????? *(LPDWORD)(((DWORD)(pChainEntry->pvAddr)) + ROM_SIGNATURE_OFFSET) == ROM_SIGNATURE)
            ??????? {
            ??????????? s_pNextRom[dwRomCount].pTOC = *(ROMHDR **)(((DWORD)(pChainEntry->pvAddr)) + ROM_SIGNATURE_OFFSET + 4);
            ??????????? s_pNextRom[dwRomCount].pNext = NULL;
            ??????????? if (dwRomCount != 0)
            ??????????? {
            ??????????????? s_pNextRom[dwRomCount-1].pNext = &s_pNextRom[dwRomCount];
            ??????????? }
            ??????????? else
            ??????????? {
            ??????????????? OEMRomChain = s_pNextRom;
            ??????????? }
            ??????????? dwRomCount++;
            ??????? }
            ??????? else
            ??????? {
            ??????????? OALMSG(TRUE, (L"Invalid XIP found\r\n"));
            ??????????? //lpWriteDebugStringFunc( _T("Invalid XIP found\n") );
            ??????? }
            ??????? ++pChainEntry;
            ? dwChainCount++;
            ?}
            }
            ? 這是從CEPC中拷貝過來的。


            通過上面的設置,romimage會生成3個bin,nk.bin,app.bin,chain.bin,還有一個xip.bin,是上面三個bin的集合體。我們download是要download xip.bin,這樣就可以實現multibin。通過調試發現,InitRomChain就是利用chain.bin來連接各個bin的。
            這樣我們也理解了bib文件中這個語句的含義:
            pdwXIPLoc 00000000 9DB00000? FIXUPVAR
            也就是FIXUPVAR的含義。我們看到在代碼中我們同樣定義了pdwXIPLoc,這樣romimage時,就將9DB00000賦給pdwXIPLoc。這就是FIXUPVAR的作用。正如pTOC也是由romimage賦值一樣。

            posted on 2007-01-16 09:29 milkyway 閱讀(2310) 評論(0)  編輯 收藏 引用 所屬分類: wince(別人的文章技巧總結)

            導航

            統計

            公告

            隨筆皆原創,文章乃轉載. 歡迎留言!

            常用鏈接

            留言簿(37)

            隨筆分類(104)

            隨筆檔案(101)

            文章分類(51)

            文章檔案(53)

            wince牛人

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品国产久精国产一老狼| 三上悠亚久久精品| 天天做夜夜做久久做狠狠| 亚洲AV伊人久久青青草原| 一本一道久久综合狠狠老| 91精品国产色综合久久| 久久亚洲2019中文字幕| 日产精品久久久一区二区| 香港aa三级久久三级| 亚洲综合日韩久久成人AV| 国产精品欧美久久久久天天影视| 伊人色综合久久天天网| 国产综合久久久久| 思思久久精品在热线热| 狠狠人妻久久久久久综合| 婷婷久久香蕉五月综合加勒比| 国产精品免费看久久久香蕉| 久久精品国产亚洲AV香蕉| 中文成人无码精品久久久不卡| 情人伊人久久综合亚洲| 久久久久久午夜成人影院| 久久亚洲精品国产亚洲老地址| 一级做a爰片久久毛片人呢| 国产午夜福利精品久久2021| 国产精品久久久久久久久软件| 国产真实乱对白精彩久久| 国产99久久精品一区二区| 亚洲中文字幕无码一久久区| 久久亚洲熟女cc98cm| 天天做夜夜做久久做狠狠| 日韩久久久久中文字幕人妻| 精品久久久无码中文字幕天天| 精品国产91久久久久久久| 久久99国产精品二区不卡| 久久成人精品视频| 亚洲午夜久久久精品影院| 久久96国产精品久久久| 国产日韩久久免费影院| 九九久久精品国产| 国产精品99久久久久久宅男小说| 久久亚洲中文字幕精品一区四 |