欢迎来到天天文库
浏览记录
ID:28359051
大小:143.32 KB
页数:12页
时间:2018-12-09
《从u-boot移植出来的shell命令界面.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、从u-boot移植出来的shell命令界面以前搞过u-boot,,有很多命令,,用超级终端操作,,比如help、tftp、erase、fatload,其实就是下面这段代码接受超级终端命令的。因为最近打算给产品做一个shell,用超级终端输入命令,,所以从u-boot找到这段代码并移植出来了,就只有delete_char和readline_into_buffer两个函数,非常简单。使用方法是:main(){ charbuffer[16];//缓冲区长度根据命令长度可调整 while(1){
2、 _delay_ms(100); //其中"LW-C360#"就是显示在超级终端的输入命令前端的,叫什么? readline_into_buffer("LW-C360#",buffer); //这里为你的命令解析函数,然后调用对应的处理函数,如我的voidshell(void)函数 Your_Cmd_Parse_and_Process(); }}使用截图: /*********************************************
3、*************************************** 实现一个简单的Shell命令交互界面,命令行接收部分移植自u-boot-1.3.4***********************************************************************************/#define tab_seq (" ")/*usedtoexpandTABs*/#define erase_seq ("bb")/*erases
4、equence*///删除一个字符staticchar*delete_char(char*buffer,char*p,int*colp,int*np,intplen){ char*s; if(*np==0){ return(p); } if(*(--p)=='t'){ /*willretypethewholeline*/ while(*colp>plen){ USART_PutStr(COMMUNICATE_USART,erase_seq);
5、 (*colp)--; } for(s=buffer;s
6、OMMUNICATE_USART,*s); } } }else{ USART_PutStr(COMMUNICATE_USART,erase_seq); (*colp)--; } (*np)--; return(p);}//从串口读取命令行intreadline_into_buffer(constchar*constprompt,char*buffer){ char*p=buffer; char*p_buf=p; /*bufferind
7、ex*/ intn=0; /*promptlength*/ intplen=0; /*outputcolumncnt*/ intcol; charc; /*printprompt*/ if(prompt){ plen=strlen(prompt); USART_PutStr(COMMUNICATE_USART,prompt); } col=plen; for(;;){ //从at91sam9260串口读取一个字符 while(0==(
8、AT91C_BASE_US1->US_CSR&AT91C_US_RXRDY)); c=AT91C_BASE_US1->US_RHR; /* *Specialcharacterhandling */ switch(c){ case'r':/*Enter*/ case'': //回车表示命令输入结束 *p
此文档下载收益归作者所有