U-Boot命令行中没有输入

时间:2018-05-20 18:21:03

标签: x86 serial-port device-driver u-boot

看起来我失去了谷歌如何获得答案的技能,或者在配置中错过了太明显的选项。无论如何,我有一个针对x86的U-Boot最新版本,它一直工作到命令提示符,不幸的是我不能输入任何内容。

向ns16550驱动程序的 getc()添加了调试打印,显示输入实际存在,但屏幕上没有回显,如果我正确输入并按Enter键,则没有实际执行命令。

SELECT c.contract_id, SUM(c.hours*s.rate) AS cost
FROM contracts c INNER JOIN
     staff s
     ON c.staff_id = s.staff_id
GROUP BY c.contract_id
HAVING cost > (SELECT AVG(average_cost)
               FROM (SELECT SUM(c.hours*s.rate) AS average_cost
                     FROM contracts c INNER JOIN
                          staff s
                          ON c.staff_id = s.staff_id
                     GROUP BY c.contract_id
                    ) sc
               );

输入输入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 + 输入

只有串行接口,所以我无法切换到替代品。

2 个答案:

答案 0 :(得分:0)

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

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

  • 标准错误=串行
  • 标准输入=串行
  • 标准输出=串行

请检查它们的价值。

答案 1 :(得分:0)

问题出现在损坏的硬件(它实际上是模拟)中,其中未对齐的I / O字节访问不起作用。那么,下面的代码之间发生了什么:

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

由于LSR的地址为0x3fd(偏移5),serial_in()返回0xFF,因此假设数据可用,则从此处跳过返回,而读取RBR则重复返回0x00

解决方案是修复硬件,或为其创建自定义串行驱动程序。