linux如何與處理器周圍的硬體通訊?

linux如何與處理器周圍的硬體通訊?

我的問題與 Unix/Linux 開發相關,而不是管理本身。

我認為它是針對 Unix/Linux 低階系統程式設計師而不是管理員。它將幫助我開始核心開發和/或了解 Linux 系統開發

我需要哪些關於硬體的具體資訊才能開始學習 Linux 如何與硬體週邊和模組互動。例如總線架構以及如何與控制器通訊。

另外,我想提一下,現在大多數環境中 Linux 都在虛擬機器上運作。所以,下面的作業系統所看到的就是我的意思。

我需要一些參考資料,或是如何開始學習。

我了解基本的 x86 指令,但我的問題更多是關於處理器本身周圍的記憶體和匯流排控制器;我指的是現代平行程式設計環境中的程式設計師模型。

答案1

它的工作原理在很大程度上取決於架構/機器。 Linux(核心)建立一個樹,映射可用裝置及其在啟動時的連線(以及插入裝置出現/消失時)。資訊來自哪裡取決於底層硬體。

在同一台機器上運行的其他作業系統將有自己的方法來執行此操作,如果它們的目的是非常可移植的,那麼它們可能會使用類似的方法。

使用原始 PC(或模擬器)等工具可以讓您存取許多固定的設備,在某些情況下訪問固定的(或幾乎)方式。我很高興為一些 Unices 提供系統目標程式碼,添加/重新配置設備意味著編輯一些 C 文件,重新編譯和重新連結核心。非常有趣。

答案2

為自己找一個類似 z80 原型板的東西,嘗試從串行端口中取出東西,或者用 dos 運行模擬的 ibm PC,並使用 DOS irq 做同樣的事情。

在具有記憶體映射文字顯示器的舊 Z80 機器中,至少可以輕鬆顯示文字。

可以(輕鬆或有點困難或不切實際)使用以下語言來做這樣的事情:彙編器、Pascal、Ada、C(為什麼要使用 C++)、BASIC 和相當多的其他語言,期待很多工作的 !

對於可以支援相當大內存量的相當現代的處理器,如果您想用 C/彙編器/Ada 編程(i想想帕斯卡。)我這樣說是因為該系列處理器具有相當簡單的內存架構。

查看 grub 的源碼!

如果您對如何在啟動時加載程式(引導程式)感興趣,或者查看 grub 化的遊戲,例如太空入侵者(在裸機上運行的太空入侵者的克隆)。

您可以在虛擬機器中啟動 grub-invaders查看幼蟲入侵者

相關內容