【问题标题】:Cannot implement custom keyboard in u-boot无法在 u-boot 中实现自定义键盘
【发布时间】:2014-03-26 03:57:23
【问题描述】:

众所周知,u-boot 加载程序支持某种“输入设备系统”,允许注册一组函数(如 getc、tstc、start 等...)。所以我需要实现我自己的硬件专用“键盘”。我应该怎么办?听起来很简单:

1) 在驱动文件中至少创建“init”、“tstc”、“getc”和“start”函数。 2)在“init”中调用“stdio_register”让系统知道我的设备。 3) 从我的自定义板初始化代码中调用驱动程序“init”。

什么问题?不幸的是,它不起作用。 stdio_register 返回 0(一切正常),但从未调用过“start”、“tstc”、“getc”。 我想我做错了什么,但我无法理解:另一个键盘驱动程序似乎不包含任何用于键盘注册的额外代码。谁能说实话?

或者也许我应该破解 u-boot 并在 main_loop 的某处插入轮询调用? :)

【问题讨论】:

    标签: keyboard u-boot


    【解决方案1】:

    听起来您已经创建了自定义设备驱动程序。

    struct stdio_dev kon_dev
    

    在 U-Boot 命令行中尝试这样的操作,将控制台切换到自定义驱动程序

    setenv stdin kon_dev
    

    当然,您的自定义驱动程序必须在您到达满意的地方之前进行调试。第一次可能不行。

    使用 netconsole 与您正在执行的操作类似。例如,使用 netconsole 可以在串行设备上保持 stdout 连续,将 stdin 切换到 nc 设备(即“setenv stdin nc”,通过该 netcat 会话输入命令一段时间,然后将 stdin 切换回串行。

    【讨论】:

    • Joe,我的自定义驱动程序无法完全替换串行设备。它被创建为仅支持连接到 CPU GPIO 引脚的 2-3 个按钮。也许甚至不需要将这些按钮附加到控制台......
    • 您可以查看 CONFIG_CONSOLE_MUX,它可能允许来自常用输入设备以及您的自定义驱动程序的输入。请参阅 doc/README.iomux。
    • 谢谢,我已阅读并启用控制台复用。但这还不够:我添加了 CONFIG_SYS_CONSOLE_IS_IN_ENV 选项,并将自定义驱动程序初始化调用从 board_late_init() 替换为 stdio_init() 下方的 board_init_r()
    猜你喜欢
    • 2020-07-09
    • 2016-10-23
    • 2012-10-02
    • 2017-12-01
    • 1970-01-01
    • 2012-12-02
    • 2023-03-25
    • 2018-05-28
    相关资源
    最近更新 更多