原创 UEFI Relocation 原理

本文主要介紹的是UEFI Relocation的原理,以及主要的代碼流程。 首先:爲什麼要重定位? UEFI和傳統的BIOS不一樣,運行的特點也不一樣,在編譯階段,每個模塊都被編譯成.efi的文件,然後將多個efi文件又生成Fv,最後又生

原创 uefi的幾種文件格式(.fdf .dec .dsc .inf)

在uefi 中fdf文件和dsc文件以及dec文件還有inf文件是每一個做uefi的人最開始接觸的文件,那麼這些文件到底有什麼作用?以及文件中每個字段的意義又是什麼呢?現在就讓我們一個文件一個文件的看吧!(本文的所有內容都來自於uefi

原创 UEFI中的Option ROM 驅動詳解

最近在調試UEFI中 option rom 的支持,板卡使用的是南京神易的網絡隔離卡,在他們的板卡上適配的。在這個過程中,收貨還是挺多的,個人感覺咋遇到bug的時候,首先要做的是冷靜仔細的分析,定位問題的方向很重要,只有找對了方向

原创 如何查看內核的調用棧

如何查看函數的調用棧 也就是根據當前cpu內寄存器的值,如何反推函數的調用棧,這種調試方法在內核調試過程中是很常見的,也算是常用的技巧。這個在追查死機等問題,可以用的上。 (1)通過ejtag來讀取當前pc的地址以及sp,ra寄存

原创 調試 intel 82580網卡在intel 8632 switch下掃不到的問題的收穫

最近在調試intel 82580這款網卡在8632 switch下掃不到的問題。耗時了三個星期的時間,在這個過程中真的是學到了很多,所以還是決定將這些都記錄下來吧。因爲漫漫長河中,我們終將會將一些事遺忘。 問題現象 硬件環境:

原创 UEFI下如何在C語言嵌入彙編

UEFI下如何在C語言內嵌入彙編 有兩種方法:分別是以內嵌彙編的形式和直接就是彙編的形式存在,內嵌彙編不夠靈活,而且代碼的可讀性和維護性都比較差,強烈推薦第二種方式。 內嵌彙編的形式 __asm__ __volatile__(

原创 龍芯平臺如何BIOS下如何讀取pcie擴展配置空間

讀取peie擴展配置空間中的信息 硬件環境: G1控制器(00:11:00) | 8632橋(03:00:00) |

原创 反彙編及連接工具

  ###################################################################### # # this is a disassembly tool,convenient to

原创 32位和64位的那些事

32位和64位的那些事 在我們日常使用和在編程中,常常涉及到32位機器64位機器以及32位操作系統和64位操作系統還有32位編譯器和64位編譯器等等相關的問題。這些問題經常讓人迷糊,現在就這些問題,做一個簡單的總結,希望對讀者們有

原创 讀書筆記之PCI Express體系結構導讀

第一章 PCI總線的基本知識 PCI總線概念 PCI(Peripheral Componnent Interconnect)在處理器體系結構中屬於局部總線,局部總線作爲系統總線的延伸,其主要的功能就是連接外部設備。隨着處理器主頻的

原创 UEFI中的PCI設備掃描及分配Mem/Io空間過程

最近在調試解決PCI設備相關的問題,然後對UEFI下面的這部分實現有了初步的瞭解,爲了防止後面慢慢的又忘記了,所以還是決定將最近的收穫都記錄起來,各位讀者如果發現哪裏記錄或者總結的不對,歡迎留言指正。 PciHostBridgeD

原创 Grub調試總結

最近在龍芯平臺調研Grub的實現,在這過程中仔細研究了Grub的代碼,就做個總結吧! 首先Grub在uefi上也是以一個Grub.efi的方式運行的,但是這個efi是放在操作系統下面的boot/EFI/下面的,uefi在運行過程總後期

原创 讀書筆記之計算機體系結構

知識要點 此文章內容摘抄自計算機體系結構基礎(胡偉武著),有些地方可能介紹的不是很詳細,如果讀者想仔細的瞭解,請自己閱讀原著。 第二章 指令系統 無論是在什麼架構上,都有自己的指令系統,如x86採用的是複雜指令集,而ARM/Power

原创 計算機系統啓動過程分析

本文基於MIPS架構龍芯3號處理器爲例,介紹啓動過程。 啓動過程分析 無論採用何種指令系統的處理器,復位後的第一條指令都會從一個預先定義好的特定地址去取指。處理器的執行就從這條指令開始。處理器的啓動過程實際上就是一個特定程序的執行過程

原创 start_kernel()之setup_arch()函數詳解

該函數主要是根據處理器硬件平臺具體的機器型號來設置系統。解析Linux系統的命令行,設置0號jin cheng 的內存描述結構init_mm,系統內存管理初始化,統計並註冊系統各種資源,以及其他雜項的初始化功能。注意這個函數在具體的硬件平