心梦 · 2022年08月30日 · 上海市

【MM32F5270开发板试用】shell在MM32F5270上的移植

前言

shell作为一种强大的调试和交互工具,目前已经广泛应用于MCU上。本人平时用的多的还是RT-Thread操作系统自带的finsh组件,但是只有在使用RT-Thread的时候才能使用,裸机是不行的,如果裸机能使用请大家科普。

xcmd介绍

本文介绍一种很方便在裸机上运行的轻量级shell开源组件xcmd。
源码下载地址:https://gitee.com/two_salted_eggs/xcmd

xcmd是一款单片机命令行工具,移植十分方便,并且对flash与ram占用很小,旨在为单片机提供一个能够快速搭建且占用资源很小的命令行工具,可以大大加快单片机程序调试工作,它有一下几个优点。

  • 移植十分简单
  • 资源占用很小
  • 支持历史记录
  • 支持命令自动补全
  • 支持注册快捷键
  • 支持 xcmd_cmd_register()/xcmd_key_register方法注册命令或按键
  • 支持 XCMD_EXPORT_CMD()/XCMD_EXPORT_KEY()方法直接导出命令或按键,不需要额外运行注册函数

支持的平台

  • linux
  • arduino
  • stm32
  • esp32
  • qemu-stm32

测试过的串口软件

  • (win/linux推荐)putty
  • (win推荐)MobaXterm
  • (linux端推荐)cu
  • SecureCRT:请设置成Xterm模式
  • Xshell
  • nc(支持性很差)
  • minicom(支持性很差)

支持的扩展功能

  • 类linux风格的快捷键:ctr+left、ctr+right、ctr+a、ctr+e、ctr+u、ctr+k、ctr+l快捷键
  • 支持字体、背景颜色显示
  • 支持类linux的文件操作(Fatfs文件系统):ls、cd、rm、df、mv、mkdir、touch、rd、wr、cat
  • 支持基于socket的udp server、udp client测试程序

xcmd移植

xcmd的移植非常简单,基本上只需要对接字符的输入和输出函数就能实现交互功能。

下面就从头开始将xcmd移植到MM32F5270开发板上。

  1. 准备一个串口功能ok的工程。
  2. 下载源代码(下载地址见文章最开始xcmd介绍)
  3. 添加源代码到自己准备的工程

图片.png

需要添加的文件为:

图片.png

添加完成后如下:

图片.png

  1. 添加头文件路径到工程

图片.png

  1. 对接字符输出和输入函数

图片.png

注意,这里不要去改这两个函数名

  1. 调用xcmd初始化函数

在主函数中调用xcmd的初始化函数:

图片.png

  1. 定义宏ssize

因为mdk里面没有对ssize进行类型定义,因此我们要自己定义:

图片.png

  1. 编译下载体验

现在编译下载后就能体验xcmd自带的命令了,主要如下:

图片.png

感兴趣的同学可以逐个试一下这些命令,这里就不再详细说明。

  1. 增加自定义命令控制led的亮灭

添加代码:

图片.png

在主函数中进行初始化命令:

图片.png

  1. 编译下载就能用命令来控制led了

使用led on命令来点亮led
使用led off来关闭led

图片.png

总结

以上就是移植的全部过程,也达到是预设的效果(用命令控制led的亮灭),非常方便,给项目开发过程中的调试带来了很多的便利,极大提高了调试效率。

推荐阅读
关注数
6151
内容数
276
灵动MM32 MCU相关技术知识,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息