Machine type的匹配

來源:互聯網
上載者:User

在文章《ARM linux kernel從入口到start_kernel程式碼分析 -- 只到machine type選中為止》中,bootloader將machine type(是一個數字)放在了R5寄存器裡面,然後linux kernel枚舉所有machine type數字,找到匹配的,然後執行machine_desc結構中的一系列初始化函數。

那在編寫kernel driver的時候,如何給板子申明一個machine type的數字?

這個數字就是machine_desc結構中nr這個member的值。當使用MACHINE_START宏定義自己板子的machine_desc結構的時候,假設給自己的板子起名為AAA,那麼會自動產生一個常量宏定義MACH_TYPE_AAA,付給nr這個member。

所以問題就是這個MACH_TYPE_AAA是在哪裡定義的。grep一下代碼就可以發現是在目錄:include/generated/mach-types.h檔案中定義的。從目錄名字就可以看到這個檔案是自動產生的,我們需要填寫的設定檔位於:arch/arm/tools/mach-types。

在這個目錄下有個指令碼叫gen-mach-types,運行這個就會更新include/generated/mach-types.h了。

BTW:bootloader中有一些內容需要保證和kernel中的一致,比如這個machine type的數字,還有bootparam在記憶體中的地址等。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.