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.

[参考译文] PROCESSOR-SDK-AM335X:从 logo.c 读取 GPIO

Guru**** 2558250 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/611816/processor-sdk-am335x-reading-a-gpio-from-logo-c

器件型号:PROCESSOR-SDK-AM335X

您好!

我使用的是 SDK03.03 Linux 版本。

我在内核配置中启用了徽标、可以看到它正确地显示在屏幕上。

我想修改 logo.c 文件以读取 GPIO、并根据值加载一个或另一个徽标。

我是否尝试包含它  

#include

并使用:

GPIO_GET_VALUE (67);

我在内核加载期间遇到错误  

[0.997713]未处理故障:在0xfa1ac134上的非线性蚀刻(0x1028)上的外部中止

以及许多发毛打印:

[0.997848] 7980:c02cca2c c02d0204 00000000 00000018 cf0479b4 cf0479a0 c0630070 c02cc9f8
[0.997856] 79a0:cf3a4800 00000018 cf0479d4 cf0479b8 c030aab8 c0630034 cf006800 cf3a4800
[0.997864] 79c0:cf3a0e00 00000720 cf047a24 cf0479d8 c0303288 c030aa30 cf3a7500 00000000
[0.997872] 79e0:cf047a0c cf0479f0 c0370f50 cf006800 cf3a4800 0000003c 00000000 cf006800

直到停止:

[0.998933]内核严重错误-未同步:尝试终止初始化! exitcode=0x00
00000b

这是因为我不正确地使用函数吗?

还是因为还没有初始化而无法使用?

此致、

Ugnius

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

    最近内核上的 GPIO 是动态分配的、而不是静态分配的。 如果您执行"cat /sys/kernel/debug/gpio、您将看到 GPIO 及其编号的分配、即使分配的 GPIO 编号相同、GPIO 控制器驱动程序本身也可能未完成。

    因此、正确的解决方案是通过器件树将 GPIO 引脚传递到 logo.c。 (提示:查看其他驱动程序如何接受 GPIO 引脚)

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

    感谢您的快速回复。 我将尝试检查其他驱动程序是如何从设备树获取的。

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

    我添加了:
    CHECK_OK = GPIO_REQUEST (67、"button0");

    使用前:
    GPIO_val = GPIO_GET_VALUE (67);

    这正常工作。
    如果在 GPIO_GET_VALUE 之前有 GPIO_FREE (67)、则它会崩溃。

    因此,按照我的理解,GPIO_request()创建对 GPIO 的访问。
    以便我可以使用它上的函数。
    GPIO_free()会将其释放。

    此致、
    Ugnius