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

            導航

            統計

            公告

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

            常用鏈接

            留言簿(37)

            隨筆分類(104)

            隨筆檔案(101)

            文章分類(51)

            文章檔案(53)

            wince牛人

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            久久99九九国产免费看小说| 久久精品卫校国产小美女| 久久精品国产亚洲AV高清热| 久久Av无码精品人妻系列| 亚洲一本综合久久| 久久精品无码一区二区WWW| 久久国产精品国产自线拍免费| 日韩中文久久| 2021精品国产综合久久| 久久这里都是精品| 久久精品国产精品青草app| 中文成人无码精品久久久不卡| 精品久久香蕉国产线看观看亚洲 | 久久国产精品久久久| 国内精品久久久久久麻豆| 久久久久久久久久久久久久| 久久精品成人影院| 91精品国产综合久久久久久| 综合网日日天干夜夜久久| 久久99精品久久久久久秒播| 国产综合久久久久| 亚洲AV日韩AV天堂久久| 亚洲天堂久久久| 亚洲国产成人乱码精品女人久久久不卡| 国产精品久久久久aaaa| 天天爽天天狠久久久综合麻豆| 久久伊人色| 国产午夜精品理论片久久| 97久久超碰成人精品网站| 午夜不卡久久精品无码免费| 久久久久久国产精品无码下载| 久久99精品国产99久久6| 久久久中文字幕| 国产精品va久久久久久久| 久久精品国产秦先生| 亚洲国产精品人久久| 91精品国产91久久| 欧美性猛交xxxx免费看久久久| 久久久久国产视频电影| 亚洲精品视频久久久| 久久久久久精品免费免费自慰 |