关于uboot2010.03LCD命令行界面,命令超过一行时,最后一行被输出结果覆盖的探讨

将uboot2010.03移植到mini2440上,选择LCD作为输出设备,串口作为输入设备。LCD分辨率240*320。在lcd的命令行界面出现了一个问题:当命令长度超过一行转到下一行时,输入回车,执行结果会将命令本身的最后一行覆盖。比如:命令本身一共2行,则执行后第2行,被覆盖;命令本身3行,则前2行没问题,第3行被覆盖。这个问题困扰了很久,但是今天终于找到原因了。

首先分析一下管理命令行界面的部分。uboot进入命令行界面的过程为:reset->start_armboot->main_loop->readline。界面的交互处理就是在readline()函数中实现的。然后readline函数本身很简单,就是调用readlinr_into_buffer(),在readlinr_into_buffer()中有一段处理特殊字符的代码:

c = getc();


/*
* Special character handling
*/
switch (c) {
case '\r': /* Enter */
case '\n':
*p = '\0';
puts ("\r\n");
return (p - p_buf);


case '\0': /* nul */
continue;


case 0x03: /* ^C - break */
p_buf[0] = '\0'; /* discard input */
return (-1);


case 0x15: /* ^U - erase line */
while (col > plen) {
puts (erase_seq);
--col;
}
p = p_buf;
n = 0;
continue;


case 0x17: /* ^W - erase word */

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值