打印

如何形成一个完整的产品

[复制链接]
1408|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拨云人|  楼主 | 2014-4-28 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 拨云人 于 2014-4-28 16:14 编辑

     刚到公司的时候,直接就上手了一个项目(一个低功耗的可穿戴设备),我负责软件部分。
     刚毕业,实在是没有多少经验。 只是在熟悉了MCU的参考手册,再做了一些官方例程,了解了一些外设的特性之后,就开始火急火燎的代码编写了,没有做任何的规划 。
    我只知道该产品需要“数据采集”,“数据存储”,“蓝牙通信”.三大模块.
    于是一个模块一个模块的实现,在新添一个功能模块的时候,基本上都是把其他模块都屏蔽掉。例如在实现数据存储的时候,我将自定义的buffer数组里的数写入SD卡,并通过PC机读取SD卡的数据,来验证自己写得是否对。

     终于三大模块的功能都实现了,但是问题也来了,我发现这些模块单独运行的时候,都是很好的。可是我不知道我应该如何将这些模块功能有机的组合起来形成一个能够一直循环运行的系统。毕竟这是一款产品,它上面的软件需要安全,可靠,稳定并持续运行。
         
      我的感觉就是,我知道我要建一个房子,现在我把砖块,水泥,钢筋,床,窗子等等,都给搬过来了,却不知道从何下手,建造一个什么样的房子,床应该放在哪里,怎么摆放...我想我缺少一个房子的图纸.

     一开始,为了做成样机,能够进行简单的功能演示,我是通过在大循环中通过检测几个标志位来调用各种功能,例如:
我在采集满  512Bytes (刚好是SD卡的一个扇区) 数据后,置一个标志位,然后在主循环中检测到这个标志后,调用写SD卡函数,并更新文件系统.
如果采集的过程中,发现数据异常,则置一个标志位,然后在主循环中检测到这个标志位之后,调用蓝牙发送函数,告诉上位机数据有异常........

     于是我发现,标志位简直就是太多了.
总感觉自己的工程,是通过几个标志位,硬生生的将几个模块里的功能联系起来,粗糙得很.我也无法保证它能持续正常的工作。

     我想请教一下做过项目的人,你们当初有没有经历过我这样的情况呢,你们会怎么办?











相关帖子

沙发
wangch_sh| | 2014-4-28 18:05 | 只看该作者
调试,发现问题,解决问题。

使用特权

评论回复
板凳
craaazyfor| | 2014-4-28 19:31 | 只看该作者
标志位只是其中一种有机结合的方式,理论上来说只要能确保代码稳定都ok的。裸机代码无非都是标志位、中断和大循环这些,怎么有机的让这3着结合并流畅运行(没有重大bug),就得看程序员水平了。如果使用os,比如ucos,那架构就稍微不太一样了

使用特权

评论回复
地板
拨云人|  楼主 | 2014-5-7 13:17 | 只看该作者
craaazyfor 发表于 2014-4-28 19:31
标志位只是其中一种有机结合的方式,理论上来说只要能确保代码稳定都ok的。裸机代码无非都是标志位、中断和 ...

我把原来的标志位分了个类,引进了3种工作模式; 睡眠,充电,测量
在不同的工作模式下,只需要判断特定的几个标志位就行了,我发现这样之后,代码的架构变得清晰了很多。

使用特权

评论回复
5
lanmp| | 2014-5-7 15:38 | 只看该作者
自下而上的设计就有这种问题。

使用特权

评论回复
6
大秦正声| | 2014-5-7 16:55 | 只看该作者
需要积累经验!
多学习参考别人的!

使用特权

评论回复
7
拨云人|  楼主 | 2014-5-8 16:36 | 只看该作者
lanmp 发表于 2014-5-7 15:38
自下而上的设计就有这种问题。

非常同意,而且深有体会。
前几天把流程图画出来了,我感觉我的流程图是按照代码来画的。所以没有费多大劲。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

34

帖子

0

粉丝