每個cpu,都有它固定的id号,id号就是這個cpu唯一的辨別,它可能隐含着cpu的生産日期,版本号,型号等等,那麼,在我們的這款友善之臂tiny4412的闆子上,我的這個cpu的id又是多少呢?從我在CD光牒裡拿到的linux-3.5核心其實已經将id相關的驅動開發好了,我們在核心啟動的過程中就可以看到闆子cpu的id:
看下圖,我們看到cpu exynos4412 (id 0xe4412011)。這個就是我闆子上cpu的id号。其它跟我相同的闆子,雖然cpu也是相同的,但是闆子的id号會不一樣,不信可以試試
那麼,現在我不加載linux-3.5這個核心上的id,我自己寫一個驅動程式來将這個id讀出來,能否實作?
驗證結果:如果我寫的驅動程式讀出來的id和linux核心3.5啟動過程中的id:0xe4412011相同的話,那麼就證明我讀對了。
好,我們來看看具體如何來實作這個驅動程式。
還是一樣的,和以前的步驟相同,但是這裡的話就不用看電路圖了,因為id号是cpu内部的,我們隻需要去看手冊配置寄存器就可以得到相應的id号了。
1、看手冊
從手冊上看到,大概的意思就是,如果要讀出cpu的id号,那麼就需要先把pro_id的實體位址映射為虛拟位址,然後再讀pro_id即可得到cpu的id号。
接下來來看看驅動程式如何編寫:
2、編寫驅動程式
3、編寫測試程式
4、makefile(略)
5、編譯
6、插入子產品,顯示子產品,檢視主裝置号,建立裝置節點(略)
7、運作結果:
果然,讀出來的id号正是核心啟動時的id:cpu exynos4412 (id 0xe4412011) .
驅動驗證成功!
成功擷取闆子cpu_id号!