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.

[参考译文] AM67:AM67 SDK 10 GPIO in_data reg don't diaplay 右键值(在 u-boot 中)

Guru**** 2486065 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1541445/am67-am67-sdk-10-gpio-in_data-reg-don-t-diaplay-right-value-in-the-u-boot

器件型号:AM67


工具/软件:

大家好!

  当我 按 Enter 键进入 u-boot 时、运行 MD 0x600000、 GPIO in_data reg 不显示正确的值

当我运行 GPIO 状态命令、再次运行 MD 0x600000 命令时、 GPIO in_data 寄存器 diaplay 正确的值

为什么 GPIO in_data reg 在开始时不是 refrash 正确的值?

谢谢

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

    如何通过 THR 寄存器读取来获取 GPIO 值?

    我设置 PADCONFIG 为 0x40007、设置 GPIO_DIR、然后读取  GPIO IN_DATA、但无法获得正确的值。

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

    您好:

    您是否需要 U-Boot 中的值? 还是需要在内核中执行该操作? 我想了解 U-Boot 命令提示符下的 GPIO 用法。

    setup PADCONFIG 为 0x40007、设置 GPIO_DIR、然后读取  GPIO IN_DATA、但 c

    您可以分享什么寄存器地址?

    - Keerthy

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

    尊敬的 Keerthy:

      我想在 u-boot board_init_f 函数(例如 MAIN_GPIO1_9)中获取 GPIO 值、我使用引用地址为 0x601010/20/40 和 0xF0194 进行读取/写入。

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

    使用 readl 从 board_init_f 函数中读取时、您会看到正确的值吗?

    - Keerthy

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

    尊敬的 Keerthy:

      我无法获得正确的值、它始终为零。

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

    好的。 我将尝试从 U-Boot 读取 GPIO 寄存器并返回给您。

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

    Keerthy、

      能否在  board_init_f 函数中获得正确的值?

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

    只要模块被初始化、我们就应该能够读取寄存器的值。

    我还没有在 EVM 上进行测试。 对延迟深表歉意。 我会在几天内回来的。  

    此致、

    Keerthy

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

    您好、

    我尝试了相同的命令集:

    在进入 GPIO 状态之前未观察到任何重大变化。

    您应该能够读取 board_init_f 中的寄存器

    - Keerthy

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

    Keerthy、

      我‘读取 board_init_f 中的寄存器、但读取时出错。md 命令具有输入 board_rate_init、GPIO 驱动程序具有 init、那么您能否尝试读取 board_init_f 中 (而不是 u-boor cmd 中)的 GPIO 值?  

      谢谢

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

    您好:

    在初始化序列期间、这个时间看起来相当早。 GPIO 可能无法初始化。 我会检查一下、然后返回给您。

    - Keerthy

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

    您好、

    U-boot:

    MD 0x600000
    00600000: 44832905 00000001 00000000 00000000…………………………………………………………………
    00600010:FFFFFFFF 00000000 00000000 ............
    00600020:007f8000 00000000 00000000 ............
    00600030:00000000 00000000 ffffffff 00000000 ............

    Board_init_f 打印:

    diff --git a/arch/arm/mach-k3/j722s/j722s_init.c b/arch/arm/mach-k3/j722s/j722s_init.c
    index f48f5f64..218696d6 100644
    --- a/arch/arm/mach-k3/j722s/j722s_init.c
    +++ b/arch/arm/mach-k3/j722s/j722s_init.c
    @@ -175,7 +175,7 @@ static __maybe_unused void enable_mcu_esm_reset(void)
     
     void board_init_f(ulong dummy)
     {
    -       int ret;
    +       int ret, i = 0;
            struct udevice *dev;
     
            k3_spl_init();
    @@ -192,6 +192,12 @@ void board_init_f(ulong dummy)
                            printf("Failed to probe am65_cpsw_nuss driver\n");
            }
     
    +       printf("In board_init_f\n");
    +       while (i < 16) {
    +               printf("value of gpio 0x%x\n", readl(0x600000 + i *4));
    +               i++;
    +       }
    +
    

    GPIO 0x44832905 的值
    GPIO 0x1 的值
    GPIO 0x0 的值
    GPIO 0x0 的值
    GPIO 0xffffffff 的值
    GPIO 0x0 的值
    GPIO 0x0 的值
    GPIO 0x0 的值
    GPIO 0x7f8000 的值
    GPIO 0x0 的值
    GPIO 0x0 的值
    GPIO 0x0 的值
    GPIO 0x0 的值
    GPIO 0x0 的值
    GPIO 0xffffffff 的值
    GPIO 0x0 的值

    我看到相同的值。

    - Keerthy

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

    尊敬的 Keerthy:

      您能否在 board_init_f 中打印所有 GPIO1 值、然后输入 u-boot cmd 并运行 GPIO 状态-A、看看它是否相同?  

      谢谢

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

    您好:

    我可以看到 GPIO0 中发生了一位变化。 如果寄存器可访问、我们应该能够读取正确的值。

    - Keerthy

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

    Keerthy、ć

       我还期望读取的值正确、但 I Read 的值与实际测量 值不同。 您能否在 board_init_f 中打印所有 GPIO1 值、然后输入 u-boot cmd 并运行 GPIO 状态-A、看看它是否相同?  ? 谢谢

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

    您好、

    上面的寄存器读取 board_init_f 中的 0x100000、但读取 0x3c100000。 board_init_f 是 SPL 序列中的第一个函数之一。 这意味着在初始化各种模块设置引脚多路复用器和 GPIO 值时 SPL/U-boot。 这是 board_init_f 处的预期状态为 0x100000、但与 SPL 和 U-Boot 执行时一样、外设将改变状态。

    这是预期结果。 关闭此主题。

    - Keerthy

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

    尊敬的 Keerthy:

       board_init_f 或 md 0x600000 中的显示值相同、但该值不正确、当我运行 GPIO 状态-A 时、其值正确、所以我想知道如何在 spl_board_init 或 board_init_f 函数中获得正确的值?

    MD 0x601000

    GPIO 状态-A

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

    我已作出上述详细解释:

     回复:AM67:AM67 SDK 10 GPIO in_data reg 在 u-boot 中不显示正确的值 

    Board_init_f 是第一个函数之一。 然后、值会随着更多外设初始化而变化。

    此致、

    Keerthy  

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

    我已作出上述详细解释:

     回复:AM67:AM67 SDK 10 GPIO in_data reg 在 u-boot 中不显示正确的值 

    Board_init_f 是第一个函数之一。 然后、值会随着更多外设初始化而变化。

    此致、

    Keerthy  

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

    Keerthy、ć

      在 spl_board_init 函数中、也不正确、它不是第一个函数。 与 GPIO1_9 相同、它的值不会改变、但其回读值并不是首先正确的。 在第一次读取时获得正确的值是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    与 GPIO1_9 相同、其值不会更改、但回读值不是正确的第一个

    电路板上的某些外设是否使用 GPIO1_9?

    - Keerthy

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

    Keerthy、

      GPIO1_9 不被其他外设使用、它会将 10k 上拉

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

    Keerthy、

      如何在 spl_board_init 函数中加载 GPIO 驱动程序? 如果是加载 GPIO 驱动程序、则获取 GPIO 值是正确的。

      谢谢

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

    您好、  

    SPL 有一个流。 board_ini_f 是第一个函数。 因此、需要在 GPIO 初始化后读取其值。 当外设需要 GPIO 时、会根据需要调用 GPIO 驱动程序。 您可以随时在 spl 的末尾读取它。

    SPL 中的读取 GPIO 使用案例是什么?  

    此致、

    Keerthy  

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

    Keerthy、

      我想知道 SPL 上的 DDR 大小、因此我通过读取寄存器直接读取 GPIO1_9、但这并不正确、因此我想在 SPL 中加载 GPIO 驱动程序以读取 GPIO1_9、您是否已经建议或示例说明如何在 SPL 中加载 GPIO 驱动程序?  

      谢谢

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

    您好、

    例如:

    静态 void __they_unused detect_enable_spinand (void *blob)

    if (is_enabled (CONFIG_DM_GPIO)&& is_enabled (CONFIG_OF_LIBFDT){
    结构 gpio_desc desc ={0};
    char *ospi_mux_sel_GPIO =“GPIO@23_1“;
    int nand_offset、nor_offset;

    IF (dm_gpio_lookup_name (ospi_mux_sel_gpio、&desc))
    返回;

    if (dm_gpio_request (&desc、ospi_mux_sel_gpio))
    返回;

    if (dm_gpio_set_dir_flags (&desc、GPIOD_is_in))
    返回;

    NAND_OFFSET = FDT_NODE_OFFSET_BY_COMPatible (blob、–1、“spi-nand")“);
    if (nand_offset < 0)
    返回;

    NOR_OFFSET = FDT_NODE_OFFSET_BY_COMPatible (blob、
    fdt_parame_offset (blob、nand_offset)、
    “JEDEC、SPI-NOR“);

    文件: board/ti/j722s/evm.c

    - Keerthy

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

    Keerthy、

      我在、之前尝试过这种方法、但它打印在日志下方、因此我想直接通过读取寄存器、但 ii 也不正确、  

    U-Boot SPL 2024.04 (2025 年 8 月 08 日 — 17:51:11 +0800)
    SYSFW ABI:4.0(固件版本 0x000a '10.1.6--v10.01.06 (Fiery Fox)')
    ++K3_ddrss_probe
    ++DaVinci _GPIO_OF_TO_PLAT
    ++DaVinci _GPIO_probe
    ++DaVinci _GPIO_OF_TO_PLAT
    TI_power_domain_of_xlate:无效的 dev-id:78
    失败的 dm_gpio_lookup_name:–22

    +++板 ID:–2

    当输入 u-boot 而不是 SPL 时、就正确了:

    U-Boot 2024.04 (2025 年 8 月 08 日 — 17:51:30 +0800)

    SoC:J722S SR1.0 HS-SOC FS
    型号:Texas Instruments J722S EVM
    ++DaVinci _GPIO_OF_TO_PLAT
    ++DaVinci _GPIO_probe
    ++DaVinci _GPIO_OF_TO_PLAT
    ++DaVinci _GPIO_probe
    +++主板 ID:1.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ti_power_domain_of_xlate:无效的 dev-id:78
    失败的 dm_gpio_lookup_name:–22

    看起来有些从属节点未在 SPL 中启用。 您能否更深入地了解它在 lookup_name 函数中失败的原因?  

    此致、

    Keerthy  

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

    您好 Keerthy、

      这好像不是 arch/arm/mach-k3/r5/j722s/dev-data.c 文件中的 dev id 配置、但如何配置这个 dev id (78)?

    静态结构 ti_dev soc_dev_list[]={
    psc_dev (16、&soc_lpsc_list[0])、
    psc_dev (77、&soc_lpsc_list[0])、
    psc_dev (61、&soc_lpsc_list[0])、
    PSC_DEV (178、&soc_lpsc_list[1])、
    psc_dev (179、&soc_lpsc_list[2])、
    psc_dev (57、&soc_lpsc_list[3])、
    psc_dev (58、&soc_lpsc_list[4])、
    PSC_DEV (161、&soc_lpsc_list[5])、
    psc_dev (75、&soc_lpsc_list[6])、
    psc_dev (36、&soc_lpsc_list[7])、
    psc_dev (102、&soc_lpsc_list[7])、
    psc_dev (146、&soc_lpsc_list[7])、
    psc_dev (166、&soc_lpsc_list[8])、
    PSC_DEV (135、&soc_lpsc_list[9])、
    psc_dev (170、&soc_lpsc_list[10])、
    psc_dev (177、&soc_lpsc_list[11])、
    psc_dev (55、&soc_lpsc_list[12])、
    };

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

    您好、

    能够在 SPL 级读取寄存器这一事实意味着可以访问该模块。 为  GPIO1_9 设置的引脚多路复用器是什么?

    McASP0_AXR1 PADCONFIG PADCONFIG103 0x000F419C

    您能否读取值并在 SPL 阶段分享该值?

    - Keerthy

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

    Keerthy、ć

      我需要在 spl_board_init 函数中获取 GPIO1_9 值、我读取到 0x00F419C DIRECty、它如下所示

    ++val 0x8214007、reg=0xf419c

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

    您好、

    做一个有价值的令状 0x40007。 需要设置位 18 才能使引脚正确用作 GPIO。

    此致、
    Keerthy

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

    尊敬的 Keethy:

      写入 0x4007 还是 0x8254007? 当位 18 需要设置为 1 时、该位的范围为  0x8214007 至 0x82 5. 4007.

      你能给 rhe  0x000F419C 注册手册?  

      谢谢

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

    您好、

    TRM 链接: https://www.ti.com/de/lit/zip/sprujb3

    寄存器映射 Excel 工作表: 90_PADCFG_CTRL0 选项卡

    - Keerthy

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

    尊敬的 Keethy:

      当 I 设置位 18 时、读取值似乎是正确的、但为什么 GPIO1_9 是 main_padcfg_ctrl_MMR_cfg0_PADCONFIG103 ( 0x000F419C )?

    GPIO1_9 是  PADCONFIG PADCONFIG102 吗?  

      什么是 GPIO1_10?  PADCONFIG PADCONFIG104?

      谢谢

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

    您好、

    数据表: https://www.ti.com/lit/ds/symlink/tda4ven-q1.pdf?ts = 1736198248639

    第 24 页

    希望澄清是您的问题。 我们可以关闭这个主题吗?

    - Keerthy

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

    尊敬的 Keerthy:

      我明白、非常感谢!