简介在开发调试过程中经常会需要触发某些测试函数来验证功能是否正常工作,这时候我们可以在代码中写死测试函数不过这样不是很灵活,我们可以在项目中实现个shell,通过shell命令触发对应的函数这样就会方便很多,可以在程序异常的时候通过命令查看特定的运行状态。我们基于上一个串口实验的基础上参考RT-thread 的shell 的实现逻辑创建shell 工程添加shell 文件我们在原有工程基础上,向工程里添加shell的源代码,添加如下。 shell 的实现是在flash 中定义一个FSymTab 的section,代码中在 FSymTab 起始地址和结束地址范围内进行检索查找输入的命令是否吻合,如果一致的话就执行绑定的函数,在工程的stm32mp13xx_a7_ddr.ld 文件中加入如下 FSymTab section 区间。修改链接脚本添加如下section定义。 shell 依赖串口底层接收输出函数,输出使用printf接口,输入函数使用HAL库的接口对接下即可,对应代码如下:
在main函数内调用shell 入口函数即可,至此shell 已经编译通过移植适配完成。 下载验证编写如下测试代码,添加led 测试命令通过shell 控制板卡点灯
编译通过后按照该贴方法https://shequ.stmicroelectronics.cn/thread-642184-1-1.html 制作镜像包烧写到sd卡验证,输入led on命令可以按照预期的方式点亮led,输入 led off 熄灭led,至此基于STM32MP135裸机的方式shell 移植就告一段落。 shell 实现的细节再此就不展开了,可以查看代码,代码路径已上传如下路径: |
意法半导体最具性价比、速度最快的单核MPU STM32MP13现已支持运行RTOS
【STM32MP13DK】 在Linux主机上交叉编译一个Hello Word应用
STM32MP135F-DK 开箱&开发环境搭建&硬件设计分析
NUCLEO-U545RE-Q评测】3. 串口基本收发测试
NUCLEO-U545RE-Q评测】4. 串口实用收发测试
基于STM32模拟UART串口通信
意法半导体在意大利建SiC整合制造厂
轻松地实现ClassB在STM32CubeIDE上的移植
ST历史小知识(6)- 与世界共同塑造美好明天
ST历史小知识(5)- SiC衬底进一步发展
感谢分享