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

2019-9-27 18:41 [复制链接] 6 224

1金钱
情况是我先制作了一个bsp,基本功能(串口和软件仿真Shell、LED闪烁)完成了。8 Z' D' c% J( y5 A
1,之后我想使用rt-robot这个包,便在menucofig里勾选更新下来编译,提示缺少pwm的驱动函数说明。于是发现还要先把pwm驱动装好。
6 F+ @% b, T' c4 P; T但我忘记要先用Cubemx了。8 Y! \1 A4 P* v+ f& S: `. o0 V
2,于是就进了menuconfig勾选了pwm固件,并编译。编译提示没有TIMER的句柄。) B+ h2 S" h  Y: c  W, V, L
3,我又进menuconfig把pwm的勾去掉,编译。想回到我最开始制作好bsp的状态。' O- F! t) p6 t5 @/ \3 {' g0 x7 ~
4,我再进行软件仿真,发现程序已经进不了Shell了。一直在死循环。$ E5 A# o: j9 c8 x2 \- M
不知道算不算Bug" J+ I$ L! |# \4 h

9 b, c! b6 H! M- l( n+ }0 ?+ Ymenuconfig的功能不是应该制作了什么驱动才能安装什么驱动吗,为啥没制作也能选呢?2 W- s2 X8 ]: A5 Q8 }
就算选了没制作的驱动,我再把勾去掉,回到原来的状态怎么也不行呢?" p3 x$ l+ R* R
9 Q3 W, x! A4 h- U3 y
c42e441d2f8c327248f0f85199db9db.png

最佳答案

查看完整内容

1,你制作了一个bsp,基本功能完成了,PWM属于高级功能,所以你的BSP不支持,STM32系列外设驱动添加指南 2,便在menucofig里勾选更新下来编译,提示缺少pwm的驱动函数说明。RTT的编程思想是一个驱动层和框架层,你勾选的只是框架层,并没有驱动,提示缺少TIMER是因为你的工程里没有STM32的tim.c文件,这个文件一个是依赖CUBEMX的打开,第二个是依赖的board目录下的kconfig是否有可选项 3,又进menuconfig把pwm的勾去掉,编译。 ...
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-9-27 18:41:01 | 显示全部楼层
1,你制作了一个bsp,基本功能完成了,PWM属于高级功能,所以你的BSP不支持,STM32系列外设驱动添加指南4 b6 D4 k) z1 X, n# `' W
2,便在menucofig里勾选更新下来编译,提示缺少pwm的驱动函数说明。RTT的编程思想是一个驱动层和框架层,你勾选的只是框架层,并没有驱动,提示缺少TIMER是因为你的工程里没有STM32的tim.c文件,这个文件一个是依赖CUBEMX的打开,第二个是依赖的board目录下的kconfig是否有可选项' w& `2 F( [% Y+ w' _6 W2 p5 c" T+ U

! d# d% z" h) o: H8 E  w
( ]! y: t6 Y  p

7 u# e$ `6 J7 r0 ]8 h# T1 U
3,又进menuconfig把pwm的勾去掉,编译。想回到我最开始制作好bsp的状态。这个问题可以这么理解,你要做饭了(开启PWM),你把锅碗瓢盆(依赖的驱动框架等等)都拿出来,这个时候你不想吃饭了(关闭PWM),但是锅碗瓢盆不会扔掉(关闭依赖),因为没办法知道你的依赖是否和其他组件是否有兼容。
! U2 S0 J* Q# s" V* v/ `
, X$ z0 Y8 q) D, Y: u
! W9 q4 n# n- O  I# P
3 |+ S# b2 F6 k3 Y# c! T7 U
4,我再进行软件仿真,发现程序已经进不了Shell了。一直在死循环。从哪进的死循环?DEBUG了没有( Y: [& b8 a  x9 g' I, q) ~

/ b5 L$ t* @, u8 l; j4 e- w  a9 n
使用道具 举报 回复
发表于 2019-9-27 20:39:57 | 显示全部楼层
你勾选的是pwm设备框架吧,跟驱动没关系
使用道具 举报 回复
发表于 2019-9-29 21:27:18 | 显示全部楼层
whj467467222 发表于 2019-9-27 18:418 `+ \+ n# ?/ Q6 e
1,你制作了一个bsp,基本功能完成了,PWM属于高级功能,所以你的BSP不支持,STM32系列外设驱动添加指南/ O4 \% q) b# P* t; g
2 ...
/ R( H  }& s3 _9 I
就是DEBUG了,卡在kservice.c的1371行,dummy一直是0
使用道具 举报 回复
发表于 2019-9-29 21:53:47 | 显示全部楼层
whj467467222 发表于 2019-9-27 18:414 N0 p) b% f' O5 d- {% d
1,你制作了一个bsp,基本功能完成了,PWM属于高级功能,所以你的BSP不支持,STM32系列外设驱动添加指南
, b$ |" k; m0 r2 ...

1 Q0 t$ O7 v* n: O而且我是正确添加了外设驱动的情况下,scons --target=mdk5之后再用mdk5软件仿真,也出现了同样的情况。
使用道具 举报 回复
发表于 2019-9-30 11:02:07 | 显示全部楼层
我之前也遇到这样的问题,解决方法:
$ @" [+ N, @; P- S* r1. 使用Beyond compare工具,将你当前的rtconfig.h 和 一个 正常的项目的rtconfig.h进行比较差异,+ O1 D3 Q$ `8 j
2. 看看是不是配置导致的问题,一般情况下 在 rtconfig.h里面把 RT_DEBUG 这个宏去掉。
使用道具 举报 回复
发表于 2019-9-30 11:22:55 | 显示全部楼层
Charlie-Han 发表于 2019-9-30 11:02
3 t: M2 m! Z- {' G% ?3 {. N我之前也遇到这样的问题,解决方法:5 v2 i9 S9 j/ ?( p
1. 使用Beyond compare工具,将你当前的rtconfig.h 和 一个 正常的项 ...

/ K% ?! w0 H+ j! n4 {+ f解决了,谢谢
4 A; S' j. e8 B5 D  t3 j3 chttps://www.rt-thread.org/qa/for ... mp;page=1#pid466275
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表