本帖最后由 andeyqi 于 2020-6-24 09:49 编辑
在开发调试过程中经常会需要触发某些测试函数来验证功能是否正常工作,这时候我们可以在代码中写死测试函数不过这样不是很灵活,我们可以在项目中实现个shell,通过shell命令触发对应的函数这样就会方便很多,可以在程序异常的时候通过命令查看特定的运行状态。之前的活动收到的开发板已经有几天了,计划在S08的板子上添加个shell,通过shell命令来测试板载外设工作状态,官方的demo程序中已经实现了所有外设的控制,我们只要调用其提供的接口即可,shell的实现参照了RTT的shell实现,这样应该会节约很多时间。
根据原理图的模块图,可疑看出板子的片上资源还是很丰富的,两路TSI button,两个机械按键,8个用户LED,一个蜂鸣器,两路ADC分别接了热敏电阻和滑动变阻器,一路SPIflash,还有一路I2C的DAC,一路串口接到调试器上,一路红外收发接口。
1.shell终端的输入与输出控制
大部分情况下在嵌入式领域我们使用的终端设备来说,串口还是很普遍的,S08的开发板的usb接口已经集成了下载功能和串口输入输出,可以使用板子上的usb接口来作为输入输出设备,不得不说还是很方便的只需要一根USB线即可,开发板的原理图如下。
2.开发环境
安装CodeWarrior集成开发环境,并打开官方的demo工程,通过查看官方的demo,已经集成了串口的驱动程序,对于串口的输出直接使用我们熟悉的printf函数即可,官方的demo中已经封装了对应的输入函数。
- char in_char (void)
- {
- char ch;
- #if (USE_SCI == 1)
- ch = TERMIO_GetChar1();
- return(ch);
- #elif (USE_SCI == 2)
- ch = TERMIO_GetChar2();
- return(ch);
- #elif (USE_SCI == 3)
- ch = TERMIO_GetChar3();
- return(ch);
- #elif (USE_SCI == 4)
- ch = TERMIO_GetChar4();
- return(ch);
- #endif
- }
复制代码
shell 依赖的输入输出接口都已经有现成的我们只要实现对应的终端的数据解析和函数绑定的即可,具体的实现细节就不多描述了。
RTT的shell中已经实现了自动补全及历史记录等功能,本实现也是在RTT的基础上移植修改的。
3.调试运行
初步只是验证shell是否正常工作,只是添加了led和蜂鸣器的操作的测试指令,其他指令后续在继续添加,暂时添加的指令如下。
- S08#
- S08-LITE shell commands:
- hello - say hello
- ledon - test led on
- ledoff - test led off
- ledtest - test led on/off
- buzzertest - test buzzer
- S08#
复制代码 在终端上输入ledon/off即可点亮熄灭led,输入buzzertest可以发出一声beep音。
=====================资料整理========================
|