2011年(24)
分类: LINUX
2011-07-06 15:15:30
转自:http://blog.csdn.net/subfate/article/details/5995794
u-boot移植随笔:让u-boot shell支持tab、命令历史
前两天一直在想一个问题,u-boot的shell怎么不支持命令自动补齐,命令历史呢?由于受linux的shell影响,只要其它的“shell”有点什么不好的,一试就能感觉出来,所以要设置回那些基本功能。
我搜啊搜,陷入了自己设置给自己的深渊了。下面写一下自己找到的结果——虽然这些努力基本是白费的。
u-boot的shell使用的是HUSH shell,来自busybox的那个HUSH shell。hush.h在./include/里面,hush.c在./common里面,对比busybox那个hush.c发现u-boot的这个少很多(单从文件大小来看,具体没能力研究),应该是减少很多功能了。再去查busybox用了哪些shell,结果有msh shell、ash shell、hush shell,看busybox的配置(make menuconfig命令)时,上面明确说msh已经不再用了,代替为hush shell,但在网上查到的很多都是关于msh,郁闷啊!
我想啊想啊,会不会要我自己实现这些东西呢?那就得研究shell的代码了,这工程可不小。后面又试了vivi的shell,这个shell有我想要的功能。难不成就研究它的代码?
后来google到了u-boot的邮件列表上去了,上面的u-boot版本是1.1.6,跟现在这个差了N年了。不过学习下也无所谓。一不小心,看到一句话:
Yes, it does. You have to enable it in the configuration, though.
一语点醒梦中人!再看提问者的回答:
It's realy a nice feature for debug. I just tried that for u-boot
1.1.6 and it worked fine. Enable CONFIG_CMDLINE_EDITING.
靠!原来就这么简单!一切都在人家掌握之中!唉,由于自己才疏学浅、孤陋寡闻导致这两天搞得自己走了很多冤枉路。不过,有失必有得,怎么说自己也学到点东西了。
只要在开发板相关的头文件,如smdk2440.h定义下面两个宏,就能实现命令自动补齐、命令历史,一切就搞定了!
#define CONFIG_CMDLINE_EDITING
#define CONFIG_AUTO_COMPLETE