青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

string

string
posts - 27, comments - 177, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

UEFI實戰(zhàn)(1)

Posted on 2011-10-02 01:46 djx_zh 閱讀(18781) 評論(16)  編輯 收藏 引用
本篇為UEFI實戰(zhàn)系列第一部分。
UEFI實戰(zhàn)前10個部分計劃如下:
UEFI 實戰(zhàn)(1) 開發(fā)環(huán)境 
講述如何配置開發(fā)環(huán)境。
UEFI 實戰(zhàn)(2)  HelloWorld
講述dsc, inf文件的格式, application常用的變量,數(shù)據結構和函數(shù)。
UEFI 實戰(zhàn)(3) C++
講述如何用C++開發(fā)UEFI程序。
UEFI 實戰(zhàn)(4) protocol
講述UEFI中protocol的概念
UEFI實戰(zhàn)(5) driver
講述UEFI中driver模型
UEFI實戰(zhàn)(6) 文件讀寫
UEFI實戰(zhàn)(7) Hii interface 之 Form
UEFI實戰(zhàn)(8) Hii interface 之 String 和Font
UEFI實戰(zhàn)(9) GUI
UEFI實戰(zhàn)(10) Network

UEFI 實戰(zhàn)(1)
配置開發(fā)環(huán)境
1. 下載 Windows SDK
2. 下載EDK2 
3. 打開visual studio 2008 command prompt 
    cd EDK2
    edksetup.bat
4. 編輯Conf\taget.txt, 修改 編譯工具TOOL_CHAIN_TAG        為
   TOOL_CHAIN_TAG        = VS2008x86
5. build
    build命令有兩個參數(shù), -a 和-p, -a 用來選擇平臺(IA32 X64,...) -p用來選擇要編譯的package,默認的package是Nt32Pkg, 所以build命令與 build -a IA32 -p Nt32Pkg\Nt32Pkg.dsc 等同,用來編譯UEFI模擬器。
6. build run
    與build -a IA32 -p Nt32Pkg\Nt32Pkg.dsc run 命令等同,用來運行UEFI模擬器。
 
制作UEFI USB啟動盤
分兩種情況,如果目標平臺是UEFI平臺,按如下步驟來做:
1。 格式化U盤為FAT(FAT,FAT16, FAT32)格式 
2。 在U盤上建立目錄 efi\boot
3。 將efi的應用程序 copy到 efi\boot 目錄,并改名為bootx64.efi 或者bootia32.efi。
      因為UEFI的啟動文件是FAT盤內efi\boot目錄里的bootx64.efi 或bootia32.efi, 與legacy bios需要MBR來引導OS不同。
如果目標平臺是legacy bios, 需要在U盤中制作MBR和引導文件, 按如下步驟來做:
1。 編譯duet package
      build -a IA32 -p DuetPkg\DuetPkgIa32.dsc 或者
      build -a X64 -p DuetPkg\DuetPkgX64.dsc
2。 生成引導文件
      cd DuetPkg
      postbuild.bat Ia32 或者 postbuild.bat X64
3。 插入U盤,假設J:是U盤, 向U盤寫入MBR
      createbootdisk usb J: FAT32 IA32 或者 createbootdisk usb J: FAT32 X64     
4。拔出并重新插入U盤, 向U盤copy UEFI文件
      createbootdisk usb J: FAT32 IA32 step2 或者 createbootdisk usb J: FAT32 X64 step2
      此命令向U盤根目錄copy了efildr20, 該文件用于引導系統(tǒng)進入UEFI環(huán)境,并向efi\boot目錄copy了引導文件bootia32.efi或bootx64.efi
接下來就可以用U盤來運行UEFI了。
 
如何Debug
UEFI有兩種debug方式,一是在模擬環(huán)境Nt32Pkg下debug,另一種是通過串口調試真實環(huán)境中的UEFI程序。我從來沒見過傳說中的利用串口調試,所以下面只能說說Nt32Pkg下的debug。
在需要調試的代碼前面加入_asm int 3; 編譯,然后再模擬環(huán)境中(Nt32Pkg)中運行該程序,當模擬器執(zhí)行到int 3;指令時,會彈出對話框,然后就可以調試了。

Feedback

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2011-12-05 14:15 by 王子
您好,看到你寫UEFI,知道你是這方面的專家,我這里有個問題需要請教 :怎么得到GPT分區(qū)表? 怎么讀寫里面的數(shù)據? 能用vs實現(xiàn)嗎?

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2011-12-06 00:00 by djx_zh
UEFI會為每一個分區(qū)創(chuàng)建一個controller, 也會為每個硬盤創(chuàng)建一個controller. 通過安裝到controller上的DiskIo protocol可以讀寫每一個扇區(qū)。
每個controller上有DevicePath protocol, 你可以通過DevicePath判斷該controller是一個扇區(qū),還是一個硬盤。扇區(qū)的DevicePath的的最后一個有效Node是HD(SPEC 9.3.6.1)。
當你獲得了GPT硬盤的DiskIo之后,可以利用DiskIo讀第一個扇區(qū)(第0個是MBR或者Protective MBR)得到GPT header,第2~33分區(qū)存放的是EFI_PARTITION_ENTRY。 GPT用到的數(shù)據結構在MdePkg/Include/Uefi/UefiGpt.h中,GPT的格式可以參考UEFI SPEC 第5章。
可以用VS實現(xiàn)。

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2012-03-09 14:54 by ningle
very very good,希望博主能把2、5、7、9、10部分也一同貼上來,特別第2,5部分,因為我沒有入門了,這方面的中文資料太少了,難得遇到博主這么精通的

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2012-03-12 07:20 by djx_zh
@ningle
謝謝關注。這幾部分還沒寫,我盡快寫吧。如果看到寫的有不準確的地方,也請告訴我啊。

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2012-10-04 15:05 by zboydong
博主能不能寫一篇關于duet的

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2013-01-24 08:00 by howard
Hi 博主,你的文章讓我受益匪淺!我按照你的流程做UEFI 的USB啟動盤,現(xiàn)在boot 成功了,可是發(fā)現(xiàn)shell 少了一些commands, 比如devices.之前我在OS上直接build run就可以看到那些指令,這是為什么?請博主指點!

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2013-01-24 09:24 by howard
補充下,我的目標平臺是legacy bios

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2013-01-24 22:15 by djxzh
@howard
你用的是EDK2預先編譯好的shell,這個shell比較老。 你可以自己編譯ShellPKg,然后用shell.efi 覆蓋掉U盤上的bootx64.efi

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2013-01-25 06:23 by howard
贊! 現(xiàn)在可以了。可是UEFI找不到設備,只能看到這個USB盤,其他attached的drives 和Pcie device 都看不到,是device驅動不對嗎?

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2013-01-25 22:36 by djxzh
@howard
不知你想找什么設備呢? EDK2 只提供了有限的幾種device driver, 部分網卡的driver可以到intel網站上下載。

# re: UEFI實戰(zhàn)(1)[未登錄]  回復  更多評論   

2013-11-12 15:15 by Jerry
樓主是這方面的專家,我想問一下樓主,GPT磁盤中有MBR中所謂的活動分區(qū)概念嗎,GPT磁盤的系統(tǒng)啟動和MBR磁盤的啟動有什么區(qū)別嗎,GPT不是尋找活動分區(qū)來啟動操作系統(tǒng)嗎?謝謝樓主!

# re: UEFI實戰(zhàn)(1)[未登錄]  回復  更多評論   

2013-11-17 23:12 by djx_zh
@Jerry
UEFI 完成硬件初始化后,會遍歷GPT硬盤中的FAT分區(qū),從FAT分區(qū)找到efi/boot/bootia32.efi 或efi/boot/bootx64.efi, 操作系統(tǒng)的啟動由bootx64.efi或bootia32.efi完成。
MBR硬盤啟動代碼以二進制形式放在活動分區(qū)指定的地方。GPT硬盤的啟動代碼是完整的應用程序,存放在啟動分區(qū)即FAT分區(qū)的efi/boot目錄下

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2015-10-21 13:44 by 馬天橫
我通過 build -a X64 -p Nt32Pkg\Nt32Pkg.dsc 命令創(chuàng)建但是出錯了!錯誤信息是:MSVCRTD.lib(crtexe.obj):error LNK2001:無法解析的外部符號__imp_EncodePointer

# re: UEFI實戰(zhàn)(1)[未登錄]  回復  更多評論   

2015-10-21 21:59 by djx_zh
@馬天橫
Nt32Pkg只支持-a IA32

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2015-12-21 12:20 by daisy
為什么我build x64就成功了~build -p NT32Pkg\NT32Pkg.dsc -a X64

# re: UEFI實戰(zhàn)(1)  回復  更多評論   

2016-03-19 17:59 by yayake
我運行 build命令沒報錯,可運行 build -a X64 -p Nt32Pkg\Nt32Pkg.dsc 命令時,出現(xiàn)了兩個uefi模擬器的窗口,而且shell階段打印了大量的亂碼,之后直接卡死了, 我用的edk版本是“UDK2015.Complete.MyWorkSpace”。

只有注冊用戶登錄后才能發(fā)表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产欧美日韩一区二区三区| 亚洲精品在线免费观看视频| 国产真实乱偷精品视频免| 久久一区二区三区国产精品 | 久久综合影视| 欧美主播一区二区三区美女 久久精品人| 亚洲欧洲在线一区| 在线色欧美三级视频| 国产亚洲精品bt天堂精选| 国产精品亚洲激情| 国产精品久久久一区二区| 欧美日韩国产bt| 欧美电影免费观看大全| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲免费观看高清在线观看 | 久久精品99| 午夜在线一区| 亚洲欧美日韩第一区| 亚洲综合精品一区二区| 亚洲欧美精品在线观看| 亚洲视频免费在线| 一区二区欧美在线观看| 一区二区三区在线免费观看 | 亚洲欧洲av一区二区三区久久| 亚洲视频自拍偷拍| 午夜宅男久久久| 久久天堂精品| 免费日韩成人| 欧美日韩免费| 国产精品久久久久久亚洲毛片| 国产精品免费观看视频| 国产精品午夜春色av| 国产一区二区毛片| 在线免费观看日本一区| 日韩一级裸体免费视频| 性欧美videos另类喷潮| 乱人伦精品视频在线观看| 亚洲欧洲精品一区| 一区二区三区www| 欧美制服丝袜第一页| 欧美a级大片| 国产精品入口尤物| 在线电影一区| 亚洲摸下面视频| 免费毛片一区二区三区久久久| 日韩视频一区二区在线观看| 午夜精品在线视频| 欧美—级a级欧美特级ar全黄| 欧美久久成人| 欧美特黄a级高清免费大片a级| 欧美亚州韩日在线看免费版国语版| 国产精品日本精品| 国产精品网曝门| 国产精品久久福利| 亚洲国产精品一区| 午夜欧美精品| 欧美国产一区二区在线观看| 亚洲免费影视| 欧美日本网站| 亚洲国产第一页| 99亚洲视频| 久久精品日产第一区二区三区| 久久五月激情| 在线观看日韩| 亚洲在线观看| 亚洲国产欧洲综合997久久| 欧美在线日韩精品| 欧美成年人视频| 国产欧美一区二区精品性色| 久久久久欧美| 亚洲精品久久久久久下一站 | 亚洲欧美国产精品va在线观看| 欧美精品亚洲二区| 亚洲激情在线观看| 久久中文字幕一区| 欧美一区二区三区成人| 欧美偷拍一区二区| 一区二区动漫| 亚洲人成77777在线观看网| 久久免费偷拍视频| 国产曰批免费观看久久久| 性做久久久久久久久| 在线亚洲免费视频| 国产精品国产三级国产普通话99 | 久久黄色级2电影| 国产午夜精品一区二区三区视频 | 免费成人网www| 久久精品免视看| 国内久久精品视频| 久久网站热最新地址| 制服丝袜激情欧洲亚洲| 久久男女视频| 国产精品免费看久久久香蕉| 一区二区三区欧美| 99在线热播精品免费| 欧美日韩高清免费| 亚洲视频香蕉人妖| 一区二区三区四区五区精品视频| 欧美日韩不卡| 亚洲自拍偷拍一区| 亚洲已满18点击进入久久| 国产九九精品视频| 可以免费看不卡的av网站| 久久网站免费| 亚洲精品一区中文| 中文一区在线| 狠狠做深爱婷婷久久综合一区| 欧美a级一区| 农夫在线精品视频免费观看| 亚洲人成精品久久久久| 中国成人黄色视屏| 黄色精品免费| 亚洲成人在线网| 老色鬼精品视频在线观看播放| 亚洲精品三级| 国产一区二区三区视频在线观看| 欧美日韩中文字幕综合视频| a4yy欧美一区二区三区| 黄色精品一区| 国产日韩精品一区二区三区在线 | 99re6热在线精品视频播放速度| 亚洲视频自拍偷拍| 亚洲人成在线观看| 国产日韩欧美在线播放不卡| 欧美另类在线播放| 老司机午夜免费精品视频| 亚洲激情成人| 亚洲中字在线| 在线免费观看成人网| 亚洲一区二区三区四区五区黄| 在线观看福利一区| 亚洲麻豆一区| 精品不卡一区二区三区| 夜夜嗨av一区二区三区四季av| 激情文学综合丁香| 一区二区三区日韩精品| 91久久精品国产91久久性色| 亚洲神马久久| 亚洲精品在线视频观看| 久久精品夜色噜噜亚洲a∨| 亚洲欧美日韩中文在线制服| 欧美aaaaaaaa牛牛影院| 久久夜色精品国产噜噜av| 欧美日韩三级| 亚洲午夜视频在线观看| 久久久久久午夜| 久久精品91久久香蕉加勒比| 欧美日韩一区二区免费视频| 亚洲第一狼人社区| 有码中文亚洲精品| 久久久久久久久久久成人| 久久精品国产成人| 国产精品日韩一区| 亚洲午夜av| 亚洲主播在线播放| 欧美视频三区在线播放| 99精品热6080yy久久| 一区二区三区免费网站| 亚洲国产精品成人综合色在线婷婷 | 亚洲精品日韩一| 极品尤物一区二区三区| 亚洲欧美日韩在线观看a三区| 亚洲一区二区欧美日韩| 欧美日韩免费高清| 9l视频自拍蝌蚪9l视频成人| 一本色道久久综合一区| 欧美日韩日韩| 日韩亚洲欧美成人| 亚洲一区二区三| 国产精品美女久久久久久2018| 亚洲精品黄网在线观看| 国产欧美丝祙| 欧美日韩三级视频| 欧美一区二区三区四区夜夜大片| 中文在线资源观看视频网站免费不卡| 亚洲第一二三四五区| 免费在线观看日韩欧美| 亚洲美女毛片| 国产精品一区二区在线观看| 久久久视频精品| 一本久道久久综合狠狠爱| 久久青青草原一区二区| 亚洲婷婷综合久久一本伊一区| 精品999久久久| 国产精品v欧美精品v日本精品动漫| 久久福利一区| 亚洲一二区在线| 亚洲欧洲日产国码二区| 久久久久成人网| 亚洲一区视频在线观看视频| 亚洲国产精品久久久久秋霞不卡 | 亚洲乱码国产乱码精品精98午夜| 欧美中文在线视频| 99re8这里有精品热视频免费| 国产亚洲综合精品| 欧美丝袜一区二区| 欧美久久久久久久久| 久久美女艺术照精彩视频福利播放| 一区二区三区导航| 亚洲精品字幕|