This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM623:如何在 SPL 中使用 GPIO 输入工作

Guru**** 2487425 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1437810/am623-how-to-use-gpio-input-in-spl-working

器件型号:AM623

工具与软件:

您好!

我使用 SDK 09_00_00_03并想在 common/spl/spl_mc.c 下读取 SPL 中的 GPIO 输入 spl_mcu_load_image ()

我在下面添加了代码来读取 GPIO0_64。

int spl_mmc_load_image(struct spl_image_info *spl_image,
		       struct spl_boot_device *bootdev)
{
	#if 1
	unsigned long sw = 0, delay = 1000000;

	writel(0xF4104, 0x60007);
	while (delay--) {}
	sw = readl(0x00600070) & (1 << 0);
	if (sw == 0) {
		puts("*** TypeA Boot\n");
	} else {
		puts("*** TypeB Boot\n");
	}
	#endif

但 SPL 在 writel()代码挂起。

请参阅其他票证、我认为 GPIO0模块在此时序未运行。

在此时序中是否可以读取 GPIO 引脚?

或者我必须手动初始化 GPIO0、电源和时钟?


谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我尚未自行尝试、但让我看一下代码中的寄存器设置并发布更多注释。

    此致、
    Aparna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能解释一下使用 writel()完成的设置是什么吗?

    我在 GPIO 寄存器集中找不到任何寄存器地址- 0x60007

    下一个部分是在这里执行 GPIO_IN_DATA45 (GPIO0_64:组4)的 readl ()、并使用该寄存器的位0来查找状态、我觉得这是正确的。

    理论上、在 SPL 阶段也应该可以读取 GPIO 寄存器的状态。

    此致、
    Aparna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好

    我很抱歉、但我犯了非常容易的错误。

    我的误解是 writel()论点。 在正确的位置、第一个是值、接下来是地址、但我将其视为第一个地址、接下来是值、作为该代码。

    我解决了这个问题、现在可以读取 GPIO 输入。

    我很高兴你的意见,希望我花你的时间。

    谢谢你