日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 检查mps版本,linux_mps启动流程_存储相关.doc

發布時間:2025/3/15 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 检查mps版本,linux_mps启动流程_存储相关.doc 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux_mps啟動流程_存儲相關

Linux-mips啟動流程

-存儲相關

linux內核啟動的第一個階段是從 /arch/mips/kernel/head.s文件開始的。而此處正是內核入口函數kernel_entry(),該函數定義在 /arch/mips/kernel/head.s文件里。kernel_entry()函數是體系結構相關的匯編語言,它首先初始化內核堆棧段,來為創建系統中的第一個進程進行準備,接著用一段循環將內核映像的未初始化數據段(bss段在_edata和_end之間)清零,最后跳轉到/arch/mips/kernel/setup.c 中的 start_kernel()初始化硬件平臺相關的代碼。下面講述start_kernel() 函數。在這個函數中跟內存初始化的函數是setup_arch()。

第一部分:以函數調用關系為線索

下面是函數之間調用關系的框圖:

第一章:start_kenel()->setup_arch()

setup_arch(&command_line);每種體系結構都有自己的 setup_arch() 函數,這些是體系結構相關的。【如何確定編譯那個體系結構的 setup_arch() 函數呢?主要由 linux 源碼樹頂層 Makefile 中 ARCH 變量來決定的。例如: MIPS 體系結構的。SUBARCH := mips

ARCH ?= $(SUBARCH)】。

void __init setup_arch(char **cmdline_p)

{

cpu_probe();

調用函數cpu_probe(),該函數通過MIPS CPU的PRID寄存器來確定CPU類型,

從而確定使用的指令集和其他一些CPU參數,如TLB等

prom_init();

prom_init() 函數是和硬件相關的,做一些低層的初始化,接受引導裝載程序傳給內核的參數,確定 mips_machgroup,mips_machtype 這兩個變量,這兩個變量分別對應著相應的芯片組合開發板;

cpu_report();

打印 cpu_probe() 函數檢測到的 CPU 的 Processor ID。如果有浮點處理器,也打印浮點處理器的 Processor ID。

【應用程序通過終端接口設備使用特定的接口規程與終端進行交互,與操作系統內核本身交互的終端稱為控制臺,

它可以是內核本身的內部顯示終端,也可以是通過串口連接的外部啞終端。

由于大多數情況下控制臺都是內核顯示終端,因此內核顯示終端也常常直接稱為控制臺。

內核終端對用戶來說具有若干個虛擬終端子設備,它們共享同一物理終端,

但同一時刻只能有一個虛擬終端操作硬件屏幕。

宏 CONFIG_VT 的意思是否支持虛擬終端。

當配置了宏 CONFIG_VGA_CONSOLE 時為內核本身的內部顯示終端。

當配置了宏 CONFIG_DUMMY_CONSOLE 時為通過串口連接的外部啞終端。

用變量 conswitchp 來進行指定。

#if defined(CONFIG_VT)

#if defined(CONFIG_VGA_CONSOLE)

conswitchp = &vga_con;

#elif defined(CONFIG_DUMMY_CONSOLE)

conswitchp = &dummy_con;

#endif

#endif】

arch_mem_init(cmdline_p);

對內存進行初始化。

resource_init();

這個函數遍歷每一個內存空間范圍(物理地址),在資源管理器中進行資源申請,并對內核代碼和數據段進行資源申請。

#ifdef CONFIG_SMP

plat_smp_setup();

#endif

} / /start_kernel函數到此結束(以下均是)。

以下圖片是截自版本linux-2.6.34內核版本。

第二章:start_kenel()->setup_arch()->arch_mem_init()

接下來我們看看arch_mem_init()函數中的函數調用關系及各自的功能。

static void __init arch_mem_init(char **cmdline_p)

{

plat_mem_setup();

這個函數是平臺具體相關的,移植內核需要自己手動編寫。對于開發板的 CPU 和 board 的初始化都是在這個函數中進行的。detects the memory configuration and wi

總結

以上是生活随笔為你收集整理的linux 检查mps版本,linux_mps启动流程_存储相关.doc的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。