发现一个Bug,程序陷入无限循环

发布于 2019-09-27 18:41:00
情况是我先制作了一个bsp,基本功能(串口和软件仿真Shell、LED闪烁)完成了。
1,之后我想使用rt-robot这个包,便在menucofig里勾选更新下来编译,提示缺少pwm的驱动函数说明。于是发现还要先把pwm驱动装好。
但我忘记要先用Cubemx了。
2,于是就进了menuconfig勾选了pwm固件,并编译。编译提示没有TIMER的句柄。
3,我又进menuconfig把pwm的勾去掉,编译。想回到我最开始制作好bsp的状态。
4,我再进行软件仿真,发现程序已经进不了Shell了。一直在死循环。
不知道算不算Bug

menuconfig的功能不是应该制作了什么驱动才能安装什么驱动吗,为啥没制作也能选呢?
就算选了没制作的驱动,我再把勾去掉,回到原来的状态怎么也不行呢?


c42e441d2f8c327248f0f85199db9db.png

查看更多

关注者
0
被浏览
585
6 个回答
霹雳大乌龙
霹雳大乌龙 2019-09-27
你勾选的是pwm设备框架吧,跟驱动没关系
whj467467222
whj467467222 2019-09-27
1,你制作了一个bsp,基本功能完成了,PWM属于高级功能,所以你的BSP不支持,STM32系列外设驱动添加指南
2,便在menucofig里勾选更新下来编译,提示缺少pwm的驱动函数说明。RTT的编程思想是一个驱动层和框架层,你勾选的只是框架层,并没有驱动,提示缺少TIMER是因为你的工程里没有STM32的tim.c文件,这个文件一个是依赖CUBEMX的打开,第二个是依赖的board目录下的kconfig是否有可选项



3,又进menuconfig把pwm的勾去掉,编译。想回到我最开始制作好bsp的状态。这个问题可以这么理解,你要做饭了(开启PWM),你把锅碗瓢盆(依赖的驱动框架等等)都拿出来,这个时候你不想吃饭了(关闭PWM),但是锅碗瓢盆不会扔掉(关闭依赖),因为没办法知道你的依赖是否和其他组件是否有兼容。



4,我再进行软件仿真,发现程序已经进不了Shell了。一直在死循环。从哪进的死循环?DEBUG了没有


Carry
Carry 2019-09-29
whj467467222 发表于 2019-9-27 18:41
1,你制作了一个bsp,基本功能完成了,PWM属于高级功能,所以你的BSP不支持,STM32系列外设驱动添加指南
2 ...


就是DEBUG了,卡在kservice.c的1371行,dummy一直是0
Carry
Carry 2019-09-29
whj467467222 发表于 2019-9-27 18:41
1,你制作了一个bsp,基本功能完成了,PWM属于高级功能,所以你的BSP不支持,STM32系列外设驱动添加指南
2 ...


而且我是正确添加了外设驱动的情况下,scons --target=mdk5之后再用mdk5软件仿真,也出现了同样的情况。
Charlie-Han
Charlie-Han 2019-09-30
我之前也遇到这样的问题,解决方法:
1. 使用Beyond compare工具,将你当前的rtconfig.h 和 一个 正常的项目的rtconfig.h进行比较差异,
2. 看看是不是配置导致的问题,一般情况下 在 rtconfig.h里面把 RT_DEBUG 这个宏去掉。
Carry
Carry 2019-09-30
Charlie-Han 发表于 2019-9-30 11:02
我之前也遇到这样的问题,解决方法:
1. 使用Beyond compare工具,将你当前的rtconfig.h 和 一个 正常的项 ...


解决了,谢谢
https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=422020&page=1#pid466275

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友