代码之家  ›  专栏  ›  技术社区  ›  0andriy

U-boot命令行中没有输入

  •  0
  • 0andriy  · 技术社区  · 8 年前

    看起来,要么我失去了谷歌搜索答案的技能,要么在配置中错过了太明显的选项。无论如何,我有一个U-boot最新版本的x86,它一直工作到命令提示,不幸的是,我不能键入任何东西。

    已将调试打印添加到 GETC() NS16550的驱动程序显示输入实际存在,尽管屏幕上没有回声,如果我正确键入命令并按Enter键,命令也没有实际执行。

    fdtdec_get_config_string: bootcmd
    fdtdec_get_config_int: bootsecure
    fdtdec_get_int: bootsecure: (not found)
    => getc() d
    getc() d
    getc() 70
    getc() 72
    getc() 69
    getc() 6e
    getc() 74
    getc() 65
    getc() 6e
    getc() 76
    getc() d
    

    (它有 进入 , 进入 和 printenv + 进入 )

    只有串行接口,所以我不能切换到其他接口。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Xypron Tobu    8 年前

    U-boot既不使用xon/xoff,也不使用硬件握手。请检查终端仿真器中是否禁用了这些功能。

    这三个环境变量影响使用的控制台:

    • stderr=串行
    • stdin=串行
    • stdout=串行

    请检查它们的值。

        2
  •  0
  •   0andriy    8 年前

    问题出现在 硬件 (这实际上是一个模拟),其中未对齐的I/O字节访问不起作用。因此,在以下代码之间会发生什么:

    if (!(serial_in(&com_port->lsr) & UART_LSR_DR))
        return -EAGAIN;
    

    因为LSR有地址0x3fd(偏移量5), serial_in() 退货 0xFF 因此,假设有可用的数据,跳过从这里返回,而读取RBR返回 0x00 重复。

    解决方案是修复硬件,或者为其定制串行驱动程序。

    推荐文章