• <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 閱讀(2295) 評論(0)  編輯 收藏 引用 所屬分類: wince(別人的文章技巧總結)

            導航

            統計

            公告

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

            常用鏈接

            留言簿(37)

            隨筆分類(104)

            隨筆檔案(101)

            文章分類(51)

            文章檔案(53)

            wince牛人

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久久极精品久久久| AV无码久久久久不卡蜜桃| 99精品国产在热久久无毒不卡| 久久久久国产精品麻豆AR影院| 丰满少妇高潮惨叫久久久| 精品国产乱码久久久久软件| 亚洲国产欧美国产综合久久| 国产69精品久久久久9999APGF | 久久综合综合久久97色| 久久只有这精品99| 无码国内精品久久人妻| 精品人妻伦九区久久AAA片69| 国产亚洲精午夜久久久久久| 久久精品国产精品国产精品污| 色偷偷久久一区二区三区| 狠狠综合久久AV一区二区三区| 精品综合久久久久久97| 日韩人妻无码精品久久久不卡 | 久久99国产综合精品| 亚洲va中文字幕无码久久不卡| 久久久精品人妻一区二区三区蜜桃 | 国产成人久久精品一区二区三区| 三级三级久久三级久久| 久久亚洲中文字幕精品一区| 久久亚洲国产精品123区| 久久有码中文字幕| 91麻豆国产精品91久久久| 久久综合九色综合网站| 亚洲另类欧美综合久久图片区| 久久99精品久久久久久野外| 欧美激情一区二区久久久| av色综合久久天堂av色综合在| 久久99精品久久久久久久久久| 久久精品国产免费| 欧美激情精品久久久久久久九九九| 亚洲午夜久久久影院| 91麻豆精品国产91久久久久久| 国产成人精品久久| 人人狠狠综合久久亚洲高清| 亚洲AV无码久久精品蜜桃| 99久久亚洲综合精品成人|