如何在Linux内核和U-boot中设置SoC的寄存器值?

时间:2014-03-28 06:26:38

标签: linux-kernel embedded arm u-boot

我已获得所有寄存器值,如SRAM窗口0控制寄存器,PCI Express配置地址寄存器和Armada 370 SoC的许多其他寄存器值。
现在对于电路板启动,我必须在U-boot和Linux内核中设置所有这些寄存器值 有没有办法轻松做到这一点?
例如,如果我想设置PCI Express配置地址寄存器,我该如何启动?
任何良好资源的方向都会有所帮助。感谢。

2 个答案:

答案 0 :(得分: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 - "。你的代码应该像那里一样安排。在"马赫 - "子目录寻找" board - "文件,它们包含在linux内核启动时执行的代码。

答案 1 :(得分:2)

你应该看看arch / arm / mach-mvebu! (我指的是3.16内核)。

Free-Electrons在这个SoC系列上也有很多工作。你可以在这看看他们的git: https://github.com/MISL-EBU-System-SW/mainline-public/commits/3.16/cpuidle-v3