搜索
bottom↓
回复: 27

总结了个单片机祼机代码架构检查表,诚邀各位大神补充...

[复制链接]

出0入0汤圆

发表于 2020-4-7 10:41:19 | 显示全部楼层 |阅读模式
本帖最后由 jjj 于 2020-4-7 10:53 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2020-4-7 11:05:44 来自手机 | 显示全部楼层
中断函数执行时间尽量短

出0入0汤圆

发表于 2020-4-7 11:08:04 来自手机 | 显示全部楼层
如果是分层的话,应该做到上下层间单向依赖

出0入4汤圆

发表于 2020-4-7 11:09:27 | 显示全部楼层
中断函数执行时间尽量短

出95入100汤圆

发表于 2020-4-7 11:28:05 | 显示全部楼层
数据的生产和消费关系要搞清楚,数据溢出的风险要考虑好,数据溢出要有解决预案

出15入9汤圆

发表于 2020-4-7 11:51:34 | 显示全部楼层
本帖最后由 pcwhy 于 2020-4-7 13:39 编辑

所有子函数中尽量少用局部数组(类似其它大量占用栈空间的东西)。。。防止堆栈溢出然后不明不白死机。

所有函数形参如果包含复杂对象(包含占内存的数组),必须使用指针。

全局变量是否有特别命名,读、写权归属是否明确。

对于互斥型资源(可以是变量,公共缓冲区,ADC之类)是否设置互斥锁。

是否有专用的管道(某种结构体,可以包含函数指针)负责不同功能实体间的消息传递。

处理子函数(线程)是否能自动识别超时(需要有全局计数器)。

读取输入时候是否检查已读序列的长度?。。。这么做是防止缓冲区过大刷掉不该刷的东西。。。没检查就绝对会有堆栈溢出漏洞。

做到我说的这些,也就做到了一个迷你内核的OS了。整理好之后,记得在这个帖子里统一发布一次造福大家。

出0入0汤圆

发表于 2020-4-7 12:36:39 | 显示全部楼层
楼主,我就从别的方面提个建议吧,既然是检查表,那么结果只应该有是,否,具体数量三种结果,然后要有具体的判据。比如是否存在未封闭的判断条件,堆栈最大深度,看门狗复位时间这一类的。
方案是否完整,尽量不使用delay()这些,实在太笼统了,不管实际情况是什么样,都不会影响检查结果,最后就成了走过场。

出0入0汤圆

发表于 2020-4-7 12:39:48 来自手机 | 显示全部楼层
楼主是要去面试吗?

出1310入193汤圆

发表于 2020-4-7 13:01:07 | 显示全部楼层
pcwhy 发表于 2020-4-7 11:51
所有子函数中尽量少用局部数组(类似其它大量占用栈空间的东西)。。。防止堆栈溢出然后不明不白死机。

所 ...

已经很全面了  一定是大公司干活过的

出100入101汤圆

发表于 2020-4-7 13:06:04 | 显示全部楼层
中断喂狗,加主循环逻辑判断,效果更好

出0入0汤圆

 楼主| 发表于 2020-4-7 13:11:44 | 显示全部楼层
fengyunyu 发表于 2020-4-7 13:06
中断喂狗,加主循环逻辑判断,效果更好

我的产品出现过程序死了, 依然可以进中断喂狗, 造成看门狗不复位。。。。

出0入0汤圆

 楼主| 发表于 2020-4-7 13:13:13 | 显示全部楼层
pcwhy 发表于 2020-4-7 11:51
所有子函数中尽量少用局部数组(类似其它大量占用栈空间的东西)。。。防止堆栈溢出然后不明不白死机。

所 ...

多谢指导

出0入0汤圆

 楼主| 发表于 2020-4-7 13:16:35 | 显示全部楼层
本帖最后由 jjj 于 2020-4-7 13:20 编辑
liansh2002 发表于 2020-4-7 12:36
楼主,我就从别的方面提个建议吧,既然是检查表,那么结果只应该有是,否,具体数量三种结果,然后要有具体 ...


确实结果是“是和否”。
但是架构不能规定的太死了,有的时候确实是会有例外,
我就是想在检查程序的时候,从上面列出的几个方面重点检查而已,   省的毫无头绪的乱查一气

出15入9汤圆

发表于 2020-4-7 13:27:48 | 显示全部楼层
lb0857 发表于 2020-4-7 13:01
已经很全面了  一定是大公司干活过的

真没有,我只是个北美的老师。

我只是在念书时候写过OS,写过Web服务器,搞懂Final word of 8051 、读过LWOOPC,换做是你,你也知道该咋做了。

出15入9汤圆

发表于 2020-4-7 13:36:14 | 显示全部楼层
jjj 发表于 2020-4-7 13:16
确实结果是“是和否”。
但是架构不能规定的太死了,有的时候确实是会有例外,
我就是想在检查程序的时 ...

最简单的办法是所有的项目都基于BSP、调度状态机、轻量消息队列,轻量级面向对象来做,并且每天都要进行代码审查。这样你们甚至可以一开始就在概念级别用formal verification来Check是不是有潜在的问题,至少在涉及航空的实时系统里头是必须这么做的。

最次的办法就是在代码堆里翻顶层设计思路就开始有的错误,但我相信绝大多数国内工程师都在干这种事。

出0入0汤圆

 楼主| 发表于 2020-4-7 13:40:58 | 显示全部楼层
pcwhy 发表于 2020-4-7 13:36
最简单的办法是所有的项目都基于BSP、调度状态机、轻量消息队列,轻量级面向对象来做,并且每天都要进行 ...

我现在要检查的程序是多少年前的,连概要设计文档都没有的程序,唉

出0入0汤圆

发表于 2020-4-7 13:43:04 | 显示全部楼层
好奇为啥不搞个协作的链接

出0入4汤圆

发表于 2020-4-7 14:20:07 | 显示全部楼层
jjj 发表于 2020-4-7 13:11
我的产品出现过程序死了, 依然可以进中断喂狗, 造成看门狗不复位。。。。 ...

中断里面不是直接喂狗,根据程序里面的条件喂狗

出0入8汤圆

发表于 2020-4-7 15:41:54 来自手机 | 显示全部楼层
MAD_FISH 发表于 2020-4-7 14:20
中断里面不是直接喂狗,根据程序里面的条件喂狗

具体怎么操作,这么做的好处是什么?

出0入0汤圆

发表于 2020-4-8 16:56:10 | 显示全部楼层
好久没写程序了,最近要搞,也是多个任务。昨天看楼主在另外一个帖子说是有更好的方法,我来请教下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2020-4-8 16:59:10 | 显示全部楼层
我是250 发表于 2020-4-8 16:56
好久没写程序了,最近要搞,也是多个任务。昨天看楼主在另外一个帖子说是有更好的方法,我来请教下。
...

我想用图形化编程里面的这个,不知道楼主能否有啥意见:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2020-4-8 17:07:26 | 显示全部楼层
有那功夫检查人不如自己写了

出0入0汤圆

发表于 2020-4-9 14:34:17 | 显示全部楼层
持续跟踪,向大神们学习                  

出0入0汤圆

发表于 2020-4-9 21:15:58 | 显示全部楼层
我是250 发表于 2020-4-8 16:59
我想用图形化编程里面的这个,不知道楼主能否有啥意见:

真有人用图形编程?

出0入0汤圆

发表于 2020-4-13 16:47:48 | 显示全部楼层
我是250 发表于 2020-4-8 16:59
我想用图形化编程里面的这个,不知道楼主能否有啥意见:

这种没有UML状态机图形编程友好吧,用状态机的思维更容易维护易读

出0入0汤圆

发表于 2020-4-15 01:58:18 | 显示全部楼层
学习了,谢谢

出0入0汤圆

发表于 2020-4-15 08:31:15 | 显示全部楼层
好好学习各位大神的经验

出0入0汤圆

发表于 2020-4-16 09:26:05 | 显示全部楼层
向前辈们学习。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 17:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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