Linux kernel 如何设置SoC';在Linux内核和U-boot中注册值?

Linux kernel 如何设置SoC';在Linux内核和U-boot中注册值?,linux-kernel,embedded,arm,u-boot,Linux Kernel,Embedded,Arm,U Boot,我已经获得了所有寄存器值,如SRAM窗口0控制寄存器、PCI Express配置地址寄存器和Armada 370 SoC的许多其他寄存器值。 现在对于board bringup,我必须在U-boot和Linux内核中设置所有这些寄存器值。 有什么方法可以轻松做到这一点吗? 例如,如果要设置PCI Express配置地址寄存器,如何启动? 任何指向好资源的方向都会有帮助。谢谢。1)在u-boot中,查看/board子目录:应该找到您的板特定文件。这里有几个Marvell平台,但没有armada 3

我已经获得了所有寄存器值,如SRAM窗口0控制寄存器、PCI Express配置地址寄存器和Armada 370 SoC的许多其他寄存器值。
现在对于board bringup,我必须在U-boot和Linux内核中设置所有这些寄存器值。
有什么方法可以轻松做到这一点吗?
例如,如果要设置PCI Express配置地址寄存器,如何启动?
任何指向好资源的方向都会有帮助。谢谢。

1)在u-boot中,查看/board子目录:应该找到您的板特定文件。这里有几个Marvell平台,但没有armada 370,所以看起来您应该自己添加它。也许,你已经有了适当的分配? 检查现有代码,我想您应该使用GT_REG_WRITE宏(在/board/Marvell/common/core.h中定义)。但无敌舰队370的情况可能有所不同

2) 在linux内核中,也有一个放置板特定代码的地方:look In/arch子目录。Armada 370基于ARM,因此它应该放在/arch/ARM中。所有ARM平台都有一块通用代码,以及名为“mach-”和“plat-”的特定子目录。你的代码应该像这样排列。在“mach-”子目录中查找“board-”文件,它们包含在linux内核启动时执行的代码。

1)在u-boot中,查看/board子目录:应该找到特定于板的文件。这里有几个Marvell平台,但没有armada 370,所以看起来您应该自己添加它。也许,你已经有了适当的分配? 检查现有代码,我想您应该使用GT_REG_WRITE宏(在/board/Marvell/common/core.h中定义)。但无敌舰队370的情况可能有所不同


2) 在linux内核中,也有一个放置板特定代码的地方:look In/arch子目录。Armada 370基于ARM,因此它应该放在/arch/ARM中。所有ARM平台都有一块通用代码,以及名为“mach-”和“plat-”的特定子目录。你的代码应该像这样排列。在“mach-”子目录中查找“board-”文件,它们包含在linux内核启动时执行的代码。

您应该查看arch/arm/mach mvebu!(我指的是3.16内核)

自由电子在SoC家族中也发挥了很大作用。您可以在此处查看他们的git:

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

自由电子在SoC家族中也发挥了很大作用。您可以在此处查看他们的git:

在您的u-boot中,实际上必须从引导加载程序设置它们。大多数设置都是很早编写的,可能是通过汇编编写的。其中一些值可能已经由引导加载程序设置,您需要检查是否有任何不同的设置。设置这些寄存器没有什么特别之处,只是要小心依赖关系。实际上,您必须从引导加载程序(在您的u-boot中)设置它们。大多数设置都是很早编写的,可能是通过汇编编写的。其中一些值可能已经由引导加载程序设置,您需要检查是否有任何不同的设置。设置这些寄存器没有什么特别之处,只是要小心依赖关系。