[STM32F1] 请问:带网络的单片机批量生产时MAC地址如何处理?

[复制链接]
7334|16
 楼主| 946098169 发表于 2015-9-30 14:42 | 显示全部楼层 |阅读模式
比如STM32F107,有的单片机出厂时是没有提供MAC地址的,厂家也不会提供MAC地址,如果自己把唯一的MAC地址编进程序岂不是每颗芯片的代码都不同了,怎么解决批量生产的这个问题?
suxindg 发表于 2015-9-30 14:53 | 显示全部楼层
不要写在程序代码里,写在类似于EEPROM或flash等掉电不丢失的存储器中,在程序中去读取这个数据就行了!
 楼主| 946098169 发表于 2015-9-30 15:04 | 显示全部楼层
suxindg 发表于 2015-9-30 14:53
不要写在程序代码里,写在类似于EEPROM或flash等掉电不丢失的存储器中,在程序中去读取这个数据就行了! ...

这个我知道,现在关键问题是批量生产,我是打算程序里是统一的,程序烧进单片机后再通过联网修改,但这样也是每颗芯片都要修改一次,就是每块板子都要插拔配置一下MAC,不知道有没有其他能统一批量修改的方法
457344370 发表于 2015-9-30 21:52 来自手机 | 显示全部楼层
用自带的96位ID做**可不可以?
``` 发表于 2015-10-1 00:38 | 显示全部楼层
946098169 发表于 2015-9-30 15:04
这个我知道,现在关键问题是批量生产,我是打算程序里是统一的,程序烧进单片机后再通过联网修改,但这样 ...

正规大厂,MAC是要买的,跟那个IEEE(?)
其实买到的就是一个开始地址,再加数量。

量产时就要考虑MAC地址的烧录。

量产时,产线可架设单独的烧录站和测试站。
烧录站只负责烧录Image,测试站再做硬件检测之类。
假设烧录采用J-Flash,J-Flash里提供了SN功能,可以自动累加,而且可以设定累加值。可以设定SN烧录的位置。
这个SN可以是序列号,MAC等等。
如果自己编写量产工具,要支持config部分(比如MAC)的烧录的。
泰山特曲123 发表于 2015-10-1 13:05 来自手机 | 显示全部楼层
5楼正解,用提供序列号自增的烧录器,那么每片芯片的mac就可以不同
yulunna 发表于 2015-10-1 17:48 | 显示全部楼层
可以将年月日时分秒作为MAC值直接写入,这样可以保重自己每烧录的一个程序都不会重复
runningwzf 发表于 2015-10-1 21:32 | 显示全部楼层
如果你的设备要接入公网,那就只能用IEEE认可的部分+自定义部分
不过一般我们都很难弄到IEEE的,所以你可以盗用一些非主流厂商的IEEE部分
自定义部分就容易,初始值就是用CPU或者Flash的ID经过一个算法生成,但是在应用程序中一定要提供一个改变MAC的命令
 楼主| 946098169 发表于 2015-10-8 09:28 | 显示全部楼层
``` 发表于 2015-10-1 00:38
正规大厂,MAC是要买的,跟那个IEEE(?)
其实买到的就是一个开始地址,再加数量。

明白了,谢谢大家!
决狐疑 发表于 2015-10-8 09:51 | 显示全部楼层
5L正解
豆腐块 发表于 2015-10-8 10:53 | 显示全部楼层
假设烧录采用J-Flash,J-Flash里提供了SN功能,可以自动累加,而且可以设定累加值。可以设定SN烧录的位置。

5楼大神,学习了
qq280572 发表于 2015-10-8 11:04 | 显示全部楼层
如果不是内部使用,建议还是正规渠道获得MAC地址,跟网卡芯片厂家购买或者获取。
chen131474 发表于 2016-5-15 14:57 | 显示全部楼层
楼子有联系方式吗?关于mac合作
lcmkl2008 发表于 2019-2-25 17:08 | 显示全部楼层
假设烧录采用J-Flash,J-Flash里提供了SN功能,可以自动累加,而且可以设定累加值。可以设定SN烧录的位置。这个SN可以是序列号,MAC等等。
可以聊一下么,加个QQ673909979
lcmkl2008 发表于 2019-2-25 17:09 | 显示全部楼层
lcmkl2008 发表于 2019-2-25 17:10 | 显示全部楼层
lcmkl2008 发表于 2019-2-25 21:14 | 显示全部楼层
泰山特曲123 发表于 2015-10-1 13:05
5楼正解,用提供序列号自增的烧录器,那么每片芯片的mac就可以不同

第一种做法:通过cmdline的方式:因为在Linux起来的时候我们可以通过cat /proc/cmdline查看uboot传递给内核的一些参数,我们可以将mac地址的信息放入到cmdline中传递过来,到时候在内核里面直接解析,这个比较方便

第二种做法:将 mac地址以固定的格式比如:‘m’,'a','c',"xx:xx:xx:xx:xx:xx"这样的形式写入到比如nvram的固定的位置,然后内核初始化的时候每次都可以从nvram固定的地址去读mac地址的内容然后去设置。
方法一的好处就是,不需要占用nvram的空间,直接通过cmdline传递,缺点是:在内核中解析mac参数稍微麻烦一点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

102

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部