我正面臨一個有趣的問題。我喜歡設置一個我的CPU的針。到目前爲止,我創建了一個控制引腳的模塊。該模塊設置默認引腳配置(高)。加載模塊時,默認的引腳配置變爲活動狀態。這工作正常。如何在嵌入式Linux的引導和模塊加載之間設置引腳?
現在我喜歡在啓動過程開始時啓用我的默認引腳配置。爲了存檔,我爲ATMEL bootloader(at91bootstrap)和uboot(u-boot-at91)寫了一個補丁。這工作正常,直到內核啓動。在內核啓動時,引腳被設置爲ATMEL默認值。它們的引腳在設備樹中定義爲gpios。
我想我有兩種可能性:
月1日 - 在「正確」的現場修補/init/main.c。正確的地點在哪裏?
第2步 - 修改設備樹以將GPIO設置爲其他默認值。如何「重新設置」一個gpio值?
忘掉第一個選項,這是一個醜陋的黑客。考慮只修改設備樹或加載一些設備樹覆蓋。另外,您提供的信息不足。您應該提供您正在使用的設備樹文件/文件(或LXR/kernel.org上這些文件的鏈接),並告訴我們您要修改哪個GPIO(詳細信息:默認值,在數據表/用戶中描述手冊等)。 –
所以我正在尋找一個例子來重置/覆蓋在dts的引腳值。任何想法在哪裏可以找到它?試圖使用「led」類。這導致與我的模塊衝突。 LED模塊和我的模塊試圖獲得相同的引腳。 –
在這種情況下,您應該只從驅動程序控制GPIO引腳狀態。我不太明白你爲什麼要從設備樹那裏做到這一點?只需從驅動程序中獲取該引腳(從設備樹中),並相應地更改其狀態。 –