簡體   English   中英

在啟動時,ARM Linux內核如何將控制台輸出映射到硬件設備?

[英]How does the ARM Linux kernel map console output to a hardware device on boot?

我目前正在努力確定如何通過QEMU獲得仿真環境,以在命令行上正確顯示輸出。 我有一個環境,可以使用virt參考板, cortex-a9 CPU和為ARM交叉編譯的4.1 Linux內核完美顯示。 但是,如果我將4.1內核換成2.6或3.1,突然我將看不到控制台輸出。

解決這個問題是我的主要目標,但我覺得我對Linux和硬件如何在通過引導腳本進行用戶空間配置之前進行初始集成以及如何執行沒有足夠的了解。 我知道設備樹,並對它的工作原理有一個松散的了解。 但是我遇到的一個問題是,另一個內核版本破壞了控制台的可用性,這完全使我感到困惑。 有人可以解釋Linux最初如何將控制台輸出映射到ARM體系結構上的硬件設備嗎?

謝謝!

答案很大程度上取決於哪個內核版本,設置了哪些配置選項,什么硬件以及可能還取決於內核命令行參數。

對於現代內核,答案是它在設備樹blob中查找以傳遞設備描述,其中一些將是串行端口,並對其進行初始化。 內核配置或命令行將指定將哪個控制台用於控制台。 對於較早的內核,尤其是如果您一直回到2.6,則使用設備樹的通用性較差,對於某些硬件,引導加載程序只是說“這是一個通用的Express Board”(例如),並且內核已編譯-數據結構告訴它所支持的每個板卡的設備位置。 隨着向設備樹的過渡,電路板被一個接一個地轉換,有時一次被轉換成幾個設備,因此,對於任何特定內核版本,確切的情況取決於您使用的是哪個板。

我寧願懷疑您遇到的另一件事是,如果內核在啟動早期崩潰(即在根本找不到串行端口之前崩潰),那么它將永遠不會輸出任何東西。 因此,如果內核為時過早以至於不能完全正確地支持“ virt”板,或者內核配置缺少重要內容,那么很有可能在早期啟動時崩潰而無法打印有用的消息。 (有時“ earlycon”或“ earlyprintk”內核參數可以在這里提供幫助,但並非總是如此。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM