原创 IA32體系結構8(x86過程調用)

直觀感受及疑問 正常情況下,CPU執行指令都是一條條順序往下執行。所謂過程調用,就是CPU停止執行下一條指令,轉而去執行其它地方的指令。當這些指令執行完畢之後,CPU回到之前暫停的下一條指令,重新開始執行。有點類似C語言的“函數調用”。那

原创 IA32體系結構6(x86加電啓動過程概述)

第一條指令物理地址 加電啓動過程非常精妙,道理很簡單,加電時刻,所有的硬件部件基本都是沒法工作的狀態。至少內存裏什麼有用的東西也沒有,CPU的寄存器還是初始狀態,各種地址轉換表也沒有建立好。 首先我們來看下,CPU從上電到正常工作,在地址

原创 IA32體系結構1(x86寄存器)

Intel Architecture 32位處理器,主要以80386爲參考。包括以下幾類寄存器: 1.通用寄存器 2.段寄存器 3.狀態和控制寄存器 4.指令指針寄存器EIP 5.內存管理寄存器 6.控制寄存器 通用寄存器 通用寄存器有

原创 IA32體系結構2(x86尋址方式)

數據尋址方式 8086~80286微處理器的數據尋址方式包括: 1.寄存器尋址 2.立即尋址 3.直接尋址 4.寄存器間接尋址 5.基址加變址尋址 6.寄存器相對尋址 7.相對基址加變址尋址 80386以上處理器還包括: 8.比例變址方式

原创 IA32體系結構4(x86常見指令概述)

IA32(x86)體系結構指令種類比較多,但是常見的一般也還行,一下總結linux0.11內核中使用到的所有指令,概述這些指令的基本用法,因指令的使用跟尋址方式都有關係,篇幅所限,不詳細展開所有細節,看內核代碼,瞭解基本情況已經足夠。 1

原创 linux內核研究筆記7(minix文件系統總結)

《linux內核完全註釋》第12章對minix文件系統已經作了比較詳細的說明。本文做些簡單的總結並且做些實踐的記錄。 以12章360k的存儲磁盤爲例,如下圖: 該圖基本上還是包含了minix文件系統的各個成分,但是有些東西說得還是不夠。

原创 IA32體系結構3(x86機器碼概述)

歸根結底,處理器只認識機器語言,處理器會按照機器碼的指示進行動作。 x86體系結構使用指令長度可變的機器語言,一條機器碼指令可以從1字節到13字節不等。這個跟ARM還是有很大區別,ARM32位處理器的話,是定長指令,是32位長度。 808

原创 uboot構建框架4-make *defconfig命令的過程追蹤

引入 還記得我們在文章《uboot構建框架1-總覽》裏面提到的米爾開發板uboot編譯三個命令中的的第二個嗎?就是: sunke@droresrv:~/work/MYiR-iMX-Uboot$ make mys_imx6ull_14x1

原创 uboot構建框架7-u-boot.imx生成過程追蹤

還是先找到入口 上文《u-boot.bin生成過程追蹤》,我們探討了u-boot.bin的生成過程。在文章開頭的地方,我們講到終極目標,並且找到了主Makefile的終極目標所在。本文探討u-boot.imx文件的生成,因很多內容跟上文都

原创 IA32體系結構5(x86程序控制指令)

轉移指令 轉移指令(JMP)允許程序員跳過一段程序,跳轉到存儲器的任何位置執行下一條指令。條件轉移則允許程序員根據對數值的測試做出決定。這些數值測試的結果保存在標誌位中,再由條件轉移指令檢測它們。 1.無條件轉移指令 可以分爲短轉移、近轉

原创 uboot構建框架2-kbuild框架簡要分析

其實網絡上介紹kbuild框架的資料書籍一大把,有的介紹非常詳細,大家不妨可以參考。本文試圖從一些線索來簡要分析kbuild框架,好讓我們從一個方面瞭解一條線,不至於陷入kbuild框架的各種大坑裏面。 kbuild是個什麼鬼? kbui

原创 IA32體系結構7(x86中斷和異常調用過程)

中斷和異常概況 處理器提供了兩種中斷程序執行的機制:中斷和異常。 儘管處理過程類似,但兩種機制有很大區別。其中,中斷(interrupt)是一種異步事件,由I/O設備觸發;異常(exception)是一種同步事件,當處理器運行指令時檢測到

原创 uboot構建框架8-built-in.o的編譯過程追蹤

找入口 追蹤的第一件事情,還是找入口,就跟看C代碼我們需要先找到main函數一樣。 我在《u-boot.bin生成過程追蹤》一文中提到了"u-boot-dirs"變量,這個變量展開之後,是一系列的目錄。然後這些目錄作爲目標,有如下的生成規

原创 uboot構建框架5-配置文件和make過程是如何聯繫起來的

什麼是配置? 還是從編譯uboot的第二個命令開始我們的旅程,如下命令: sunke@droresrv:~/work/MYiR-iMX-Uboot$ make mys_imx6ull_14x14_nand_defconfig 這個命令會

原创 uboot構建框架1-總覽

uboot版本:2016.03 開發板:米爾科技imx6ull單板機 編譯器:arm-poky-linux-gnueabi-gcc,version5.3.0。由yocto SDK編譯生成。 編譯器的安裝和生效,請參考米爾開發板的手冊。安裝