首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

单片机软硬之争解决思路

2012-12-28 
单片机软硬之争引子:单片机系统是非常典型的软硬结合的系统对软件和硬件能力的要求很平均软件上,你会得自

单片机软硬之争
引子:单片机系统是非常典型的软硬结合的系统

对软件和硬件能力的要求很平均

软件上,你会得自己处理协议、组织控制逻辑甚至加密解密等

硬件上,你们会用运放调整信号、设计合适的电源稳定的驱动电路等

在开发管理上,常见的有以下两种模式:

一:大家一起完成系统架构,然后软件硬件独立分开,在框架设计时约定接口。分别测试,最后系统联调。

二:由一高手(通常是老工程师)归纳好所有结构框架,组织下面几个单片机工程师(可能各有所长)逐步构建系统。

这两种模式各有优势和不足,你们采取的是哪种?

执行效果怎么样?说说您的感受,也为这个看似简单到不需要管理(其实更需要管理)的行业积累一点你的经验
[最优解释]
单片机就是一个人搞定,软硬通吃。不存在团队放入问题。
执行效果很好,常见于中小规模的公司。

[其他解释]
技术传承是很大的问题
[其他解释]
看你管理的规模,

如果规模大,可以学习一下华为 中兴 这样的团队;

如果规模小,小公司,都是1-2个牛人工程师,1个人一个项目搞定
[其他解释]
版主今天那么有空,呵呵,自己搞个帖子。
小公司的话,很多都是自己负责项目的,特别是单片机项目,说难谈不上,大不了就说它复杂。毕竟代码量不会太多。外围的电路也不会太多,就算很多,也是模块式的,很多都已经是成熟的模块,网上电路图一大把。我公司就是小公司,所有的压力都自己扛。

不过,有点规模的公司我就不清楚了,呵呵。

假如真的要二选一的话,我选第一个。
这两种方式的区别就在系统架构上面。软硬件人员协商,考虑到的东西会比较周全吧,毕竟三个臭皮匠顶一个诸葛亮啊,前提是他们有相关的经验,呵呵!
[其他解释]
这是个纠结的问题
我还是一菜鸟·~ 先学为主
[其他解释]
技术的积累和传承很重要~~
[其他解释]
现在是一个人软件和硬件都做!希望使用第一种!
[其他解释]
一个团队 最好是软硬件方面人才都有吧,但是现在 现实是要一个人丛PCB 搞到 程序部分比较多
[其他解释]
"一:大家一起完成系统架构,然后软件硬件独立分开,在框架设计时约定接口。分别测试,最后系统联调。"
虽然是“一起”,但还得有主次之分。主要是指遇到分歧怎么办?必须有人能拿主意。一旦确定后坚决执行。所以,第二种比较理想。由高人总体负责结构,然后分而治之。这样一来也比较容易控制进度,毕竟高人的经验多,对开发时间的掌握比较准确。
[其他解释]
纠结中..这是个很复杂的问题,自从单片机系统出来后这个问题就一直困扰着各方人士.
以上为个人瞎说!
回贴,捞分,示以存在!
[其他解释]
新人想学什么,跟着感觉走最好,看自己喜好什么,就做什么,呵呵,

世间上,没有两全其美的东西吧,呵呵,这个问题就正如用C好还是用汇编好?只有具体到什么公司,什么环境下,什么情况下,才有个取舍的定夺,呵呵,,个人愚见!
[其他解释]

引用:
引用:
这样的高人不好找,而且,咱周边的高手呢,有很多都是专家型的到管理上不一定能体现出水平

第一种:这个存在很大的问题是成员间的通信,《人月神话》里就对这个问题做出了很好的解答,但是,这样的构建成本和风险对于小公司来说相对是比较低的,它不怕人走,当然集体跳槽那没办法。能保证一定的人才积累,随着公司的成长,有可能会慢慢熬出一两个高手。这将迎来团队的春天!

其实,我个人比较认同第二种方案,也是典型的外科手术团队的形式(手术团队不需要太多的外科医生(牛人、高手),有且仅有一个就够了,然后给他配备相应的护士和麻醉师等辅助其工作,让他专心设计同时助手们也能得到提高和成长),现在大多数老板也都采用这种方案,只不过他们都习惯性的只要一个牛人,然后,把它当成一神牛,一人拉着公司项目的重车。让一牛X的医生一个人去完成一例手术!这显然比较荒唐,可是我们单片机工程师很多人每天都在做着这样的事。呵呵(所有依据来自《人月神话》)

《人月神话》开始我是想提及一下的,不过感觉在单片机论坛提还是稍微有点太“虚空”,不实在。
实际项目中,根据我的经验,还是比较喜欢软硬分开,但二者都对对方的内容有相当的了解,然后由一个人主导制定总体方案,然后分头开发,最终合并调试。这样都可以发挥自己的长处,毕竟软硬都强的牛人太可遇而不可求。
[其他解释]
软硬件通吃
[其他解释]
不知道楼主说的单片机的软都要做哪些工作?  我认为单片机的软实际上也是硬。
[其他解释]
学习了,硬件啊,一直是我的软肋……
[其他解释]
如果是大规模应用,譬如开发游戏的、大量应用程序的,软件工程师就会分成做BSP的和做应用程序的,后者机会完全看不到硬件这一层了。

[其他解释]
我觉得实际上并没有这么为难。
在立项的时候自然有这么一个人出来规划,要不谁是总负责的呢?
这个人软件或硬件均可,因为都是大概念得问题,不涉及到细节。譬如,需要有哪些功能,需要多大的存储,用什么样的存储,是支持彩屏还是黑白屏,要不要USB通讯等等,这是个总体上的规划,有较多经验的人就可以规划出来。


而作为硬件工程师,我的目标就是作出开发板/demo板,然后试跑demo程序(软件工程师做的)以验证基本的功能,然后就可以交给软件工程师了。
至于什么协议之类的问题,不关我硬件工程师的事,我只需要保证电路参数合格就可以。
软件工程师在实现的过程中,如果确实发现了难以解决的问题,就会和硬件工程师沟通。其实验证硬件只需基本的驱动程序就可以,所以跟软件其实也没太大关系的。
总的来说,软硬基本上是可以分开的。

[其他解释]

引用:
引用:

不知道楼主说的单片机的软都要做哪些工作? 我认为单片机的软实际上也是硬。


通信协议实现过没?人机接口界面实现过没?各种不同的控制逻辑实现过没?

这都是硬不起来的,嘿嘿

什么通信协议? 难道单片机要实现类似基于TCP的复杂协议?
什么人机接口界面? 单片机能够驱动的顶多是灰度点阵液晶吧? 界面应该不会太复杂。
控制逻辑就更简单了。
起码我至今没用单片机做过多少复杂的软件,完全是很硬件相关的,几千行代码都可以由硬件工程师搞定。
[其他解释]
如果是做小规模应用,譬如什么电子锁啊,门控的终端啊,软硬一个人也是很正常的事。

[其他解释]
如果楼主用ARM-M3,7,9等,那另当别论了。
[其他解释]
引用:
单片机就是一个人搞定,软硬通吃。不存在团队放入问题。
执行效果很好,常见于中小规模的公司。


项目的规模足够小的话,那当然一个人做完是最合适的

但这样也带来很多问题:

这个人的工资开多少?

技术积累怎么保障?

这个人被挖走了怎么办?技术传承如何解决?

如果将来的项目他一个人做不下来怎么办?临时招人,这个可是更郁闷的。

我相信有超级明星,但是,除非他自己开的公司、拿公司股份或者是大公司,否则这样的超级明星对中小规模的的公司来说并不能说是很好的模式
[其他解释]
引用:
现在是一个人软件和硬件都做!希望使用第一种!


很多公司都这么干的。感觉单片机系统的开发自古以来就这样

也不知道是谁给咱这行数定下了这样的规矩

是何立民哥?还是周立功哥?天知道呢
[其他解释]
引用:
版主今天那么有空,呵呵,自己搞个帖子。
小公司的话,很多都是自己负责项目的,特别是单片机项目,说难谈不上,大不了就说它复杂。毕竟代码量不会太多。外围的电路也不会太多,就算很多,也是模块式的,很多都已经是成熟的模块,网上电路图一大把。我公司就是小公司,所有的压力都自己扛。

不过,有点规模的公司我就不清楚了,呵呵。

假如真的要二选一的话,我选第一个。
这两种方式的区别就在系统架构上面……


这关于以下几点提出来的:
1.新人不知道学软件还是学硬件,看到坛子里不少这样的贴子
2.个人经历这两种模式,感觉也都对,也都不完整。所以列出来和大伙聊聊


[其他解释]
引用:
"一:大家一起完成系统架构,然后软件硬件独立分开,在框架设计时约定接口。分别测试,最后系统联调。"
虽然是“一起”,但还得有主次之分。主要是指遇到分歧怎么办?必须有人能拿主意。一旦确定后坚决执行。所以,第二种比较理想。由高人总体负责结构,然后分而治之。这样一来也比较容易控制进度,毕竟高人的经验多,对开发时间的掌握比较准确。


通常要面对的问题是:

这样的高人不好找,而且,咱周边的高手呢,有很多都是专家型的到管理上不一定能体现出水平

第一种:这个存在很大的问题是成员间的通信,《人月神话》里就对这个问题做出了很好的解答,但是,这样的构建成本和风险对于小公司来说相对是比较低的,它不怕人走,当然集体跳槽那没办法。能保证一定的人才积累,随着公司的成长,有可能会慢慢熬出一两个高手。这将迎来团队的春天!

其实,我个人比较认同第二种方案,也是典型的外科手术团队的形式(手术团队不需要太多的外科医生(牛人、高手),有且仅有一个就够了,然后给他配备相应的护士和麻醉师等辅助其工作,让他专心设计同时助手们也能得到提高和成长),现在大多数老板也都采用这种方案,只不过他们都习惯性的只要一个牛人,然后,把它当成一神牛,一人拉着公司项目的重车。让一牛X的医生一个人去完成一例手术!这显然比较荒唐,可是我们单片机工程师很多人每天都在做着这样的事。呵呵(所有依据来自《人月神话》)
[其他解释]
引用:
不知道楼主说的单片机的软都要做哪些工作?  我认为单片机的软实际上也是硬。


通信协议实现过没?人机接口界面实现过没?各种不同的控制逻辑实现过没?

这都是硬不起来的,嘿嘿

[其他解释]
软硬件通吃
[其他解释]
引用:
引用:
引用:

不知道楼主说的单片机的软都要做哪些工作? 我认为单片机的软实际上也是硬。


通信协议实现过没?人机接口界面实现过没?各种不同的控制逻辑实现过没?

这都是硬不起来的,嘿嘿

什么通信协议? 难道单片机要实现类似基于TCP的复杂协议?
什么人机接口界面? 单片机能够驱动的顶多是灰度点阵液晶吧? 界面应该不会太复杂。
控制逻辑就更简单了。
起码我至今没用单片机做过多少复杂的软件,完全是很硬件相关的,几千行代码都可以由硬件工程师搞定。



建议这位兄弟去看看任天堂的游戏机,索尼的游戏机,还有PDA(ARM也是单片机)
[其他解释]
引用:
引用:
引用:

不知道楼主说的单片机的软都要做哪些工作? 我认为单片机的软实际上也是硬。


通信协议实现过没?人机接口界面实现过没?各种不同的控制逻辑实现过没?

这都是硬不起来的,嘿嘿

什么通信协议? 难道单片机要实现类似基于TCP的复杂协议?
什么人机接口界面? 单片机能够驱动的顶多是灰度点……

楼主指的通讯协议应该指的是公司内部通讯自定的数据通讯协议,可以他就是基于232、485或者USB、TCP,并不是说要自己开发一个底层的通讯协议
现在的工程师都把ARM叫单片机了,所以跑个wince、linux啥的有个人机接口界面很正常
其实现在说单片机软硬部分好多都是设计到ARM了,如果纯粹的8位单片机可能还是偏硬一点,从16位的开始就不太好说了……
[其他解释]
引用:
如果楼主用ARM-M3,7,9等,那另当别论了。


米用过ARM,一直觉得8和16位机没学完的飘过。。。
[其他解释]
引用:
引用:
引用:

不知道楼主说的单片机的软都要做哪些工作? 我认为单片机的软实际上也是硬。


通信协议实现过没?人机接口界面实现过没?各种不同的控制逻辑实现过没?

这都是硬不起来的,嘿嘿

什么通信协议? 难道单片机要实现类似基于TCP的复杂协议?
什么人机接口界面? 单片机能够驱动的顶多是灰度……


一个智能前端监控设备协议,光协议就2000多行,我也郁闷,那么轻量级的东西,我要写这么多行代码

另外,用人机接口界面,比如说一个128*64点阵屏的多级菜单和按键选择功能

这很容易就能把人搞郁闷,当然,从网上直接扫代码和拿设计方案结果的不算

除了卖给学生和学校,网上直接能抄到的应该都不值啥钱了吧?

找个能写几千行代码的硬件工程不太容易哈。。。

甚至更郁闷的是,硬件工程师没有经过规范的编码训练,写出来的代码是很郁闷的,几乎没有可读性和可维护性

当然,不排除有那些软件和硬件都做得很好的,这样的人的确很少。
[其他解释]
关于这个问题我不想做太多评价
[其他解释]
引用:
如果是做小规模应用,譬如什么电子锁啊,门控的终端啊,软硬一个人也是很正常的事。


这种私活性质的一锤子买买,对于研发人员来说会是很郁闷的哈。。。
[其他解释]
学习
有道理软硬统吃


[其他解释]
软硬统吃
[其他解释]
顶起这个帖子,这确实是很多新手遇到的问题。我刚学单片机,感觉编写程序比搞外围硬件简单
[其他解释]
初学者,学习。。。。
[其他解释]
由一高手(通常是老工程师)归纳好所有结构框架,组织下面几个单片机工程师(可能各有所长)逐步构建系统。

[其他解释]
这种问题,主要看项目规模,其次是项目完成的期限。这两项就决定了需要的人员,两个及以上的人员就需要指定负责人。开发流程也是需求分析->总体设计->软硬件总体设计->软硬件详细设计->软硬件测试->联调->系统总体测试.  在这个流程中,也许可以一个人担负起各项工作.也许需要不同的人员配合. 就算一个人搞,也要有人对其进行考核,设计文档等完备了就可以积累和传承.
[其他解释]
单片机关键在于外围电路,就单片机本身很简单的
[其他解释]
我感觉,单片机软件的比硬件的更加需要懂硬件.


[其他解释]
个人和团队都有各自的优势
[其他解释]
硬件是基础 软硬通吃是必然的  这样才能把握总的架构
[其他解释]
个人认为还是得软硬件通吃的好,更有信心
[其他解释]
UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
[其他解释]
无聊,这就好比是先有鸡还是先有蛋的问题!!!!!!!!
------其他解决方案--------------------


单片机其实就是一门软硬通吃的课程嘛。。。。。。。。。。呵呵呵呵呵呵!!!!!
[其他解释]
UP!
[其他解释]
很早一起大家就说软硬件都懂会比较好,现在的情况是企业里边分工很细,复杂的项目不可能靠个人,得靠团队,个人认为方案一好
[其他解释]
  单片机而言,硬件比软件要重要,并且要难。落实到公司中,各有分工,联合调试比较好。
[其他解释]
楼主是不是想开公司啊,,,个人感觉硬件比较重要,没有硬件软件根本用不上,
哎,,最近就没有一个比较和放大电路整的烦死了,,,做不出来啊
[其他解释]
刚开始还是跟着感觉好,呵呵
[其他解释]
这个问题:其实说纠结,也纠结。说不纠结,也不纠结。

纠结,是因为,你必须经过几次具体的实施才能真正的说是能把握。而且,不同的人,不同的资源组成会有不同的结果。它不完全遵从于当前的纯软件和纯硬件的设计经验,在国内也很少能看到具体总结这个结合领域的参考文献,甚至连文档规范都是千差万别的。

不纠结:是因为,你可以很简单的把它归结为两个说法:经验和具体问题具体分析。

发起这个话题,目的是为了从纠结中找到不纠结,而不是直接不纠结。

呵呵
[其他解释]
第一种方案可能比较适合小公司
[其他解释]
单片机算软件,
做开关电源一类的算硬件,
当然你什么都搞了那就软硬通吃了
[其他解释]
在外头单片机设计,包括电路设计和单片机程序编写这些都是硬件工程师干的事情,一般都是一个人负责。
[其他解释]
都不知道怎么学习好了,不过还是好好学吧,学了什么都有用的
[其他解释]
结合自己兴趣看吧。去了公司,以团队为主的,得有自己的主攻方向
[其他解释]

引用:
单片机就是一个人搞定,软硬通吃。不存在团队放入问题。
执行效果很好,常见于中小规模的公司。

基本同意,单片机代码量小,容易学习,不必嵌入式这么庞大,
所以估计一两个人做一个产品绰绰有余了,不会像wince,或者Linux那样分工详细!
[其他解释]
引用:
小公司软硬通吃,大公司为了效率、传承分工细,有的研发、画电路板、焊接、调试各是各。顺便说一句tmg213的头像好似游戏风云的解说雪妍啊
 
软硬兼施
[其他解释]
小公司软硬通吃,大公司为了效率、传承分工细,有的研发、画电路板、焊接、调试各是各。顺便说一句tmg213的头像好似游戏风云的解说雪妍啊
[其他解释]
对于单片机来说,软件和硬件本身就是一个整体。不好分开,如果分开了也就不是一个整体的系统了。
难道软件的只会软件编程,硬件的只会电路设计?如果有两个这样的高手的话,设计出来的系统我想也好不到哪儿去。

解决传承的问题可以让两个人或者更多人去做一个工程,但是也没必要说搞软件的只搞软件,硬件只搞硬件。
几个软硬通吃的人搞在一起不也挺好的吗?
[其他解释]
小公司的技术传承问题不只发生在单片机方面
[其他解释]
规范开发的技术文档时关键,这样才能完成技术的传承
[其他解释]
不知道楼主说的单片机的软都要做哪些工作? 我认为单片机的软实际上也是硬。 
 

[其他解释]
如果规模大,可以学习一下华为 中兴 这样的团队;

如果规模小,小公司,都是1-2个牛人工程师,1个人一个项目搞定
[其他解释]
如果项目不是很大,自己一个人搞定会效率高点
[其他解释]
个人感觉,
在完成项目的时候,
如果只是小的项目,一个人可以应付下来,
可能就是有些累吧,

如果涉及到比较大的项目可能就不行了,
得有一个团队,分而治之,
前提是大家软硬都能说得过去。
不然,到时候各自编的都联合不到一块去。
这结果也没办法了。

所以我认为,
在初期学的时候,两个方面都要照顾。
硬件与软件,都要会。
到后期可以有专攻。

这样,
一来自己拿到一个小项目,能拿下来。
二来当遇到大的项目时,可以合作完成。
不知楼主认为怎么样??
------其他解决方案--------------------


一个项目负责人,一个软,一个硬...这样比较好吧
[其他解释]
从事工控行业,现在工控行业单片机用的并不多。
[其他解释]

引用:
"一:大家一起完成系统架构,然后软件硬件独立分开,在框架设计时约定接口。分别测试,最后系统联调。"
虽然是“一起”,但还得有主次之分。主要是指遇到分歧怎么办?必须有人能拿主意。一旦确定后坚决执行。所以,第二种比较理想。由高人总体负责结构,然后分而治之。这样一来也比较容易控制进度,毕竟高人的经验多,对开发时间的掌握比较准确。


[其他解释]
现在太多的”软件和硬件都做“的,千万不要做万金油。
[其他解释]
该回复于2010-08-17 16:36:26被版主删除
[其他解释]
还是软硬都坚固一点的好。
[其他解释]
小项目可以通吃,大点的团队
提倡团队
[其他解释]
引用:
必须要有一个总领全局有威望的人,就算是错也要贯彻执行,或者向上提意见,但是若是一帮人争个你死我活,项目永远完不了。。。。
亲身体会。




[其他解释]
该回复于2010-09-02 13:32:57被版主删除
[其他解释]
哪种都有过,还有第三种,一个人搞定。

[其他解释]
软硬通吃  一个人
[其他解释]
必须要有一个总领全局有威望的人,就算是错也要贯彻执行,或者向上提意见,但是若是一帮人争个你死我活,项目永远完不了。。。。
亲身体会。
[其他解释]
说了这么多,更切合实际需要的,就是最好的,是一个人,多个人,全看实际需要。
[其他解释]
引用:
项目的规模足够小的话,那当然一个人做完是最合适的
但这样也带来很多问题:
这个人的工资开多少?
技术积累怎么保障?
这个人被挖走了怎么办?技术传承如何解决?
如果将来的项目他一个人做不下来怎么办?临时招人,这个可是更郁闷的……

谈谈我的看法。
其实对单片机而言,有无操作系统是一个明显的划分。对有操作系统而言,分软硬件比较合适。
我们主要讨论无操作系统的。
一个人软硬通吃,不代表公司对研发文档不做管理。公司在很小的时候,那对研发人员就需要考虑如何留人。
公司再大一些的情况下,有3-4个有经验的工程师。就需要加大研发文档的管理,利用他们相互监督,保证文档的正确性和完整性。
此时就可以考虑梯队的建设啦。
[其他解释]
一起搞很麻烦,还是一个人的好
[其他解释]
引用:
从事工控行业,现在工控行业单片机用的并不多。

用ARM7?
[其他解释]
该回复于2012-06-24 09:34:48被版主删除
[其他解释]
小项目可以通吃
[其他解释]
楼上的太牛了
[其他解释]
单片机最好是一个人搞定,做一个系统才需要一个团队
[其他解释]
是的,DIY——单片机的特色
[其他解释]
两种都可以。通常第二种这个人在这方面很有经验了,有时候在一个公司呆很久,因为对公司产品都很熟悉了,但如果换一个公司或者领域,他也不一定什么都规划了,继而转成第一种方案。
大公司分工会很明确,画电路图,布板的就管画电路图布板;编写单片机程序就管编写程序。小公司可能会两个都让一个人做,但有时软的一个人负责,硬的一个人负责。
上面看到有些人说单片机都算硬的,其实只要是编写程序的就是算软的,硬的顶多也就算到FPGA。当然硬件工程师基本都会编firmware,可能就没有专门做软的编得那么好。而专门做软的,一般都不会电路,顶多就是知道接口,哪个连哪个。

热点排行