打印

一个产品有不同的硬件版本,有什么好方法可以是软件区分出来?

[复制链接]
4751|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
花心小博菜|  楼主 | 2016-5-7 09:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实际做产品时,同一个产品,会有很多硬件版本升级,相应的软件也会有升级,怎么在硬件上加上标志,可以使用软件判断出来这个硬件的版本,这样软件就可以一次全部升级了。
现在我的方案是在单片机4个管脚用上拉下拉区分,这样也就有16个硬件版本,而且占用4个管脚,感觉不划算,大家有什么别的好方法吗

相关帖子

沙发
wangkj| | 2016-5-7 10:46 | 只看该作者
用个adc,加上不同的电阻。

使用特权

评论回复
板凳
静海惊天| | 2016-5-7 12:10 | 只看该作者
对 用ADC 采集电阻不同的分压值。

使用特权

评论回复
地板
nethopper| | 2016-5-7 12:16 | 只看该作者
为啥不在硬件存储器中固化个版本号?

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
xuander + 3 赞一个!
5
nethopper 发表于 2016-5-7 12:16
为啥不在硬件存储器中固化个版本号?

对呀,这个方法可以的

使用特权

评论回复
6
mohanwei| | 2016-5-7 16:35 | 只看该作者
通信领域的做法:
找一堆用作输出的I/O口,外部接上拉或下拉电阻,上电后暂时把它们设置为输入,根据他们的电平来初始化一些寄存器配置(这里可以作为版本号),然后正常切换为输出……

这种方法并不会额外占用I/O

使用特权

评论回复
7
xuander| | 2016-5-7 18:17 | 只看该作者

我一般直接写在程序里,
与上位机握手时会主动上传。


使用特权

评论回复
8
huarana| | 2016-5-7 18:23 | 只看该作者
贴标签 - -!

硬件和软件最好不要关联。 各升级各的  。 关联起来痛不欲生。

不管是软件 还是 pcba  都属于半成品  ,合到一起才是成品。

而一款班子可以刷不同的代码实现不同的功能, 一款代码也可以刷到不同板子上实现不同功能

使用特权

评论回复
9
cjseng| | 2016-5-7 22:25 | 只看该作者
同一个产品,硬件版本太多了也不好吧,有2-3个就可以了吧,再往前的版本就淘汰掉。

使用特权

评论回复
10
huangqi412| | 2016-5-7 23:21 | 只看该作者
mohanwei 发表于 2016-5-7 16:35
通信领域的做法:
找一堆用作输出的I/O口,外部接上拉或下拉电阻,上电后暂时把它们设置为输入,根据他们的 ...

额,通信领域这个是哪类产品   没明白为什么不写固件直接指定个版本,要用硬件标示。

使用特权

评论回复
11
mohanwei| | 2016-5-8 11:29 | 只看该作者
huangqi412 发表于 2016-5-7 23:21
额,通信领域这个是哪类产品   没明白为什么不写固件直接指定个版本,要用硬件标示。
...

特点:系统比较庞大复杂,硬件和软件变化范围都激烈,软硬件分开,还要求硬件能向未来兼容,软件能历史兼容

所有硬件的大部分代码都是通用的,所以软件代码通常只有一份,需要新功能就增加几个宏定义,重新编译一次发行……通过网络执行一次批量升级后,所有版本的硬件都获得了新的功能(软件在开机阶段根据识别到的版本号执行不同硬件对应的分支)

这样软硬件双方约定用引脚来定义版本号就是最简单最可靠的办法,焊接PCB阶段工人就能搞定。

使用特权

评论回复
12
huangqi412| | 2016-5-8 21:39 | 只看该作者
mohanwei 发表于 2016-5-8 11:29
特点:系统比较庞大复杂,硬件和软件变化范围都激烈,软硬件分开,还要求硬件能向未来兼容,软件能历史兼 ...

就是说硬件跟电脑一样可以后期修改配置么  硬件能动态变化那是不能烧个固定值   如果出厂硬件就固定死了那应该出厂烧个型号代码就行吧后面不用上电检查

使用特权

评论回复
13
cjseng| | 2016-5-8 22:16 | 只看该作者
huangqi412 发表于 2016-5-8 21:39
就是说硬件跟电脑一样可以后期修改配置么  硬件能动态变化那是不能烧个固定值   如果出厂硬件就固定死了 ...

你没搞明白啊!
不是为了区分版本号,而是让同一个软件在不同版本号的硬件上都能正常工作。
举个例子吧:以前我有一产品,实时时钟芯片用的是DS12BB7,后来这个芯片不好买了,我就改了硬件,改成采用DS1302,这两个芯片完全不一样吧。但是,我的软件要能兼容原先采用DS12887的,也要能在采用1302的板子上运行。我就是采用一个空余的IO,通过检测这个IO的高低电平,软件自动调用不同的实时时钟驱动函数。

使用特权

评论回复
14
mohanwei| | 2016-5-9 09:58 | 只看该作者
huangqi412 发表于 2016-5-8 21:39
就是说硬件跟电脑一样可以后期修改配置么  硬件能动态变化那是不能烧个固定值   如果出厂硬件就固定死了 ...

硬件通常还有FPGA、从MCU等,可以配不同的板卡模块,可以认为是可以后期修改配置。最简单就是只对主MCU烧个通用的Bootloader,通电后,工人只需等几十秒到几分钟,静候它下载主程序、再由主程序烧录FPGA、从MCU,初始化、自动测试……

这种公司硬件和软件工程师往往权力很小,做点什么都要申请走流程,如果做个改动还需要他们去申请协调其他部门做事很麻烦。不如硬件工程师直接在BOM里加几个电阻配置一下版本号,软件工程师直接搞定。

使用特权

评论回复
15
huangqi412| | 2016-5-9 10:56 | 只看该作者
mohanwei 发表于 2016-5-9 09:58
硬件通常还有FPGA、从MCU等,可以配不同的板卡模块,可以认为是可以后期修改配置。最简单就是只对主MCU烧 ...

明白了,走流程麻烦。

使用特权

评论回复
16
huangqi412| | 2016-5-9 10:59 | 只看该作者
cjseng 发表于 2016-5-8 22:16
你没搞明白啊!
不是为了区分版本号,而是让同一个软件在不同版本号的硬件上都能正常工作。
举个例子吧: ...

是你没明白。。。只要硬件不会使用中动态变化,那么用软件和用硬件有什么区别。
在ROM某个字节根据不同批次分别分别写7和2, 软件读这个字节分别调用尾号7的芯片驱动和尾号2的芯片驱动。            跟读一个IO,根据高低电平调用7和2驱动有何区别?

使用特权

评论回复
17
cjseng| | 2016-5-9 11:13 | 只看该作者
huangqi412 发表于 2016-5-9 10:59
是你没明白。。。只要硬件不会使用中动态变化,那么用软件和用硬件有什么区别。
在ROM某个字节根据不同批 ...

有区别,区别很大哦。
IO的高低电平,在焊接板子的过程中就可以实现,甚至在画PCB的时候,就可以直接将这个IO的电平确定,焊接好的板子,直接烧入同一个程序即可,不用其它操作。
在ROM里事先写入识别码,需要另外一个操作,不利于生产。

使用特权

评论回复
18
huangqi412| | 2016-5-9 14:27 | 只看该作者
cjseng 发表于 2016-5-9 11:13
有区别,区别很大哦。
IO的高低电平,在焊接板子的过程中就可以实现,甚至在画PCB的时候,就可以直接将这 ...

  你的ROM没用完就行。不同批次板子设置一下固件版本号,一顿烧写,哪里来的另一个操作,哪里来的不利于生产。             批量烧写器都支持在指定偏移处指定版本号/序列号,还能根据算法生成,能自动递增等等,现在只是要写个固定数值而已。

使用特权

评论回复
19
cjseng| | 2016-5-9 15:28 | 只看该作者
huangqi412 发表于 2016-5-9 14:27
你的ROM没用完就行。不同批次板子设置一下固件版本号,一顿烧写,哪里来的另一个操作,哪里来 ...


我的意思,产品本身不需要版本号啊,至少对于客户来说,这个版本号没有意义。比如,之前已经发出去的板子,版本很老,我把升级程序发给客户,让客户自己升级,这就要求我现在的程序,能够兼容以前的老板子。
也许客户通过不同渠道购买了我的产品,我给他升级,我都不知道客户手里的产品是哪一个版本的,我就发一个程序过去,要能全兼容。
对于车间生产也是这样,我给车间一个最新版本程序,之前的程序全部作废,就可以兼容在这之前所有的硬件版本,不需要加以区分。

使用特权

评论回复
20
tuzihog| | 2016-5-9 15:43 | 只看该作者
标记一下

使用特权

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

本版积分规则

5

主题

32

帖子

1

粉丝