STM32之基于一款开源嵌入式shell工具移植的学习笔记

论坛 期权论坛 脚本     
匿名网站用户   2020-12-21 09:09   30   0

对于嵌入式应用而言,尤其是对于没有操作系统,裸机运行的嵌入式应用,迫切的需要一种高效快捷的调试手段进行嵌入式应用的开发,之前在网上找到一个网友写的开源的嵌入式shell工具,它的源码的地址为https://github.com/NevermindZZT/letter-shell,其代码结构如下图所示:

现将我在STM32F767上基于串口的移植过程整理如下:

1、首先在工程目录下新建一个SHELL文件夹,将上图中的四个文件拷贝到SHELL文件夹下,同时将该目录添加到头文件目录中,并将.c文件添加到项目中

2、编译工程,发现很多函数中报循环变量i的错误,将相关函数循环变量i的定义提到函数的前面,即可消除相关错误

3、同时将 shell.c中的shellInit函数里面的代码位置作如下替换,不然会报错:

4、定义shell对象,并对其进行相关初始化,同时这里我采用中断的方式处理串口读到的数据,即shellHandler函数放在串口中断里面进行处理

SHELL_TypeDef shell;

void printchar(const char ch)
{
 while((USART1->ISR&0X40)==0);//循环发送,直到发送完毕   
 USART1->TDR = (u8) ch;    
}

//shell.read = NULL;
shell.write = printchar;
shellInit(&shell);

void USART1_IRQHandler(void)
{
 u8 res; 
#if SYSTEM_SUPPORT_OS   //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
 OSIntEnter();    
#endif
 if(USART1->ISR&(1<<5))//接收到数据
 {  
  res=USART1->RDR; 
  shellHandler(&shell, res);
 }
#if SYSTEM_SUPPORT_OS  //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
 OSIntExit();              
#endif
} 

5、注册自己自定义的相关命令,即可进行相关shell命令的操作(这里采用的串口工具是SecureCRT)

SHELL_EXPORT_CMD_EX(ledt,ledtest, command ledt, ledt [command] --control the led status); 

至此,移植工作完成,就可以轻松的添加和使用自定义的shell指令进行嵌入式应用的调试了。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP