我得到了所有的寄存器值,例如SRAM窗口0控制寄存器,PCI Express配置地址寄存器以及Armada 370 SoC的許多其他寄存器值。
現在開機啓動,我必須在U-boot和Linux內核中設置所有這些寄存器值。
有沒有辦法輕鬆做到這一點?
例如,如果我想設置PCI Express配置地址寄存器,我該如何啓動?
任何方向良好的資源將是有益的。謝謝。如何在Linux內核和U-boot中設置SoC的寄存器值?
1
A
回答
2
1)在u-boot中,查看/ board子目錄:應該找到您的電路板專用文件。有幾個Marvell平臺提出,但沒有armada 370,所以看起來你應該自己添加它。也許,你已經有適當的分佈? 檢查現有的代碼,我想你應該使用GT_REG_WRITE宏(在/board/Marvell/common/core.h中定義)。但是對於armada 370來說可能會有所不同。
2)在Linux內核中,還有一個用於板子特定代碼的地方:在/ arch子目錄中查找。 Armada 370基於ARM,因此應該放置在/ arch/arm中。所有ARM平臺都有一個通用代碼塊,以及名爲「mach-」和「plat-」的特定子目錄。你的代碼應該像這樣安排。在「mach-」子目錄中查找「board-」文件,它們包含在linux內核啓動時執行的代碼。
2
你應該看看arch/arm/mach-mvebu! (我指的是3.16內核)。
自由電子在這個SoC系列上也做了很多工作。你可以在這裏看看他們的git: https://github.com/MISL-EBU-System-SW/mainline-public/commits/3.16/cpuidle-v3
相關問題
- 1. Linux內核操作系統寄存器
- 2. 如何從linux內核模塊寫入寄存器(cpu:ARM)
- 3. 在所有內核上設置控制寄存器
- 4. 如何設置寄存器中的位?
- 5. 如何從內核代碼打印當前寄存器值?
- 6. 在Linux內核模塊中設置處理器親和力
- 7. AT91SAM9261EK上的Linux Uboot,Busybox stdout/stderr設置
- 8. CPU和內存(值,寄存器)
- 9. 什麼時候esp寄存器在linux中設置?
- 10. 如何在Buildroot中配置Linux內核?
- 11. 如何設置寄存器值來啓用中斷?
- 12. Linux的QEMU重置寄存器
- 13. 複製內核和uboot到SD卡
- 14. 如何在ARM Linux上檢查網卡的寄存器值?
- 15. 如何讀取特定內核(性能計數器)寄存器?
- 16. Linux在哪裏設置其內核和用戶空間段選擇器值?
- 17. 計算機如何將寄存器設置爲常量值?
- 18. 爲linux內核配置物理內存
- 19. CUDA,在運行時查找內核中寄存器的數量
- 20. LC3,將寄存器的值存儲到內存位置
- 21. 使用Hi Tech PICC在PIC16F876中設置寄存器值
- 22. 在PCB類中創建寄存器設置值
- 23. 爲舊的Linux內核設置Buildroot
- 24. 設置Netbeans/Eclipse的Linux內核開發
- 25. JB和值寄存器
- 26. 如何設置數據斷點,當EAX寄存器設置爲特定值
- 27. linux內核模塊內存檢查器
- 28. 如何設置和恢復FPU CTRL寄存器?
- 29. 如何在MIPS中將浮點寄存器設置爲0(或清除其值)。
- 30. 如何PCI設備讀取存儲在Linux內核
你實際上必須從bootloader中設置它們,在你的情況下是u-boot。大多數設置都是很早寫入的,並且可能通過彙編。其中一些值已經由引導加載程序設置,您需要檢查是否有任何不同的設置。設置這些寄存器沒有什麼特別之處,只需要謹慎依賴。 –