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

            導航

            統計

            公告

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

            常用鏈接

            留言簿(37)

            隨筆分類(104)

            隨筆檔案(101)

            文章分類(51)

            文章檔案(53)

            wince牛人

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            AAA级久久久精品无码区| 99久久超碰中文字幕伊人| 久久国产三级无码一区二区 | 亚洲综合久久夜AV | 日韩欧美亚洲国产精品字幕久久久| 亚洲国产成人久久综合野外 | 久久精品国产91久久麻豆自制| 国产日韩久久久精品影院首页| 一本一道久久a久久精品综合| 无码人妻久久一区二区三区| 94久久国产乱子伦精品免费| 99精品久久精品一区二区| 亚洲国产二区三区久久| 亚洲国产精品无码久久| 久久人人爽人人澡人人高潮AV | 国内精品久久人妻互换| 亚洲国产精品无码久久久久久曰| 精品久久久久久久久午夜福利| 久久精品亚洲男人的天堂| 国产精品9999久久久久| 久久久www免费人成精品| 国产精品狼人久久久久影院| 国内精品久久久久影院日本| 久久精品国产亚洲av麻豆图片| 久久99精品国产麻豆宅宅| 久久亚洲私人国产精品| 中文成人久久久久影院免费观看 | 国产精品免费福利久久| 免费精品久久天干天干| 国产成人99久久亚洲综合精品 | 国内精品九九久久久精品| 2021国产精品午夜久久| 久久综合色之久久综合| 99热精品久久只有精品| 久久99精品国产麻豆蜜芽| 热久久国产精品| 国产高潮久久免费观看| 久久精品国产精品亚洲艾草网美妙| 国产精品一区二区久久精品无码 | 亚洲精品无码久久久久AV麻豆| 狠狠精品干练久久久无码中文字幕 |