• <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的實(shí)現(xiàn)

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

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

            Multi-xip的實(shí)現(xiàn):
            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的函數(shù):
            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中拷貝過來的。


            通過上面的設(shè)置,romimage會生成3個bin,nk.bin,app.bin,chain.bin,還有一個xip.bin,是上面三個bin的集合體。我們download是要download xip.bin,這樣就可以實(shí)現(xiàn)multibin。通過調(diào)試發(fā)現(xiàn),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(別人的文章技巧總結(jié))

            導(dǎo)航

            統(tǒng)計

            公告

            隨筆皆原創(chuàng),文章乃轉(zhuǎn)載. 歡迎留言!

            常用鏈接

            留言簿(37)

            隨筆分類(104)

            隨筆檔案(101)

            文章分類(51)

            文章檔案(53)

            wince牛人

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            精品国产日韩久久亚洲| 国产精自产拍久久久久久蜜| 午夜人妻久久久久久久久| 久久精品国产一区二区三区日韩| 99热热久久这里只有精品68| 久久久青草久久久青草| 国产精品中文久久久久久久| 久久亚洲2019中文字幕| 国产一久久香蕉国产线看观看| 久久99国产精品99久久| 久久这里只有精品18| 日韩精品久久无码人妻中文字幕| 久久一本综合| 一本色道久久88综合日韩精品| 99久久精品免费看国产| 午夜精品久久久久久影视777| 国产福利电影一区二区三区久久久久成人精品综合 | 一本久久免费视频| 国产成人久久精品麻豆一区| 久久黄视频| 久久se精品一区二区影院 | 久久久久se色偷偷亚洲精品av| 免费一级欧美大片久久网| 国产精自产拍久久久久久蜜| 国产99久久久国产精免费| 国产精品VIDEOSSEX久久发布| 久久人人爽人人爽AV片| 区久久AAA片69亚洲| 久久久国产精品亚洲一区| 国产精品久久久久国产A级| 品成人欧美大片久久国产欧美...| 久久精品18| 亚洲成色WWW久久网站| 人妻精品久久无码区| 久久国产免费直播| 久久久久亚洲av综合波多野结衣| 人妻久久久一区二区三区| 色综合色天天久久婷婷基地| 国产精品中文久久久久久久| 色诱久久久久综合网ywww| 久久亚洲国产精品五月天婷|