看起来我失去了谷歌如何获得答案的技能,或者在配置中错过了太明显的选项。无论如何,我有一个针对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
+ 输入)
只有串行接口,所以我无法切换到替代品。
答案 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
。
解决方案是修复硬件,或为其创建自定义串行驱动程序。