明远智睿技术论坛

 找回密码
 立即注册
搜索
查看: 13233|回复: 7
打印 上一主题 下一主题

关于IMX283的网口MAC

[复制链接]

3

主题

7

帖子

39

积分

新手上路

Rank: 1

积分
39
跳转到指定楼层
楼主
发表于 2016-9-8 10:23:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
现在使用的IMX283核心板使用了两路网口,但是在获取网口mac地址时所有板子返回的都是00:04:00:00:00:00或者是00:04:00:00:00:01,请问这是什么原因?我们只能追踪到imx_get_mac_from_fuse函数里data = readl(&ocotp_regs->hw_ocotp_cust0);,初步判断是这个data的值固定了,但是为什么是固定的还请提供合理的解释,谢谢

回复

使用道具 举报

36

主题

745

帖子

2872

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2872
7#
发表于 2016-9-14 12:06:10 | 只看该作者
min 发表于 2016-9-9 10:30
我们是想搞清楚u-boot里的这个设置为何会后面4个字节都固定为0了,按理来说val = REG_RD(REGS_OCOTP_BASE ...

cat /sys/fsl_otp/HW_OCOTP_CUST0
可以看到默认就是0,所以看到的mac地址为00:04:00:00:00:00
回复 支持 反对

使用道具 举报

36

主题

745

帖子

2872

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2872
6#
发表于 2016-9-14 12:06:08 | 只看该作者
min 发表于 2016-9-9 10:30
我们是想搞清楚u-boot里的这个设置为何会后面4个字节都固定为0了,按理来说val = REG_RD(REGS_OCOTP_BASE ...

cat /sys/fsl_otp/HW_OCOTP_CUST0
可以看到默认就是0,所以看到的mac地址为00:04:00:00:00:00
回复 支持 反对

使用道具 举报

0

主题

1

帖子

16

积分

新手上路

Rank: 1

积分
16
5#
发表于 2016-9-9 10:30:21 | 只看该作者
软件01 发表于 2016-9-8 16:00
可以按一下的方法修改:
echo 0x11223344 > /sys/fsl_otp/HW_OCOTP_CUST0
只修改mac地址后面四位,eth1会 ...

我们是想搞清楚u-boot里的这个设置为何会后面4个字节都固定为0了,按理来说val = REG_RD(REGS_OCOTP_BASE, HW_OCOTP_CUSTn(0));获取的是实际的值,而不是0吧。
我们也有使用过其他平台的,没有出现这种问题。
回复 支持 反对

使用道具 举报

36

主题

745

帖子

2872

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2872
地板
发表于 2016-9-8 16:00:15 | 只看该作者
haodatoub 发表于 2016-9-8 13:42
那后边的几个字节是固定的么?现在我们的板子前面获取到的字节是00,04没错,但是后边获取的字节都是固定的 ...

可以按一下的方法修改:
echo 0x11223344 > /sys/fsl_otp/HW_OCOTP_CUST0
只修改mac地址后面四位,eth1会在eth0的地址最后一位加1.
回复 支持 反对

使用道具 举报

3

主题

7

帖子

39

积分

新手上路

Rank: 1

积分
39
板凳
 楼主| 发表于 2016-9-8 13:42:12 | 只看该作者
那后边的几个字节是固定的么?现在我们的板子前面获取到的字节是00,04没错,但是后边获取的字节都是固定的,这个有点不明白
回复 支持 反对

使用道具 举报

36

主题

745

帖子

2872

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2872
沙发
发表于 2016-9-8 10:38:04 | 只看该作者
vim board/freescale/mx28_evk/mx28_evk.c
int fec_get_mac_addr(unsigned char *mac)
{
        u32 val;

        /*set this bit to open the OTP banks for reading*/
        REG_WR(REGS_OCOTP_BASE, HW_OCOTP_CTRL_SET,
                BM_OCOTP_CTRL_RD_BANK_OPEN);

        /*wait until OTP contents are readable*/
        while (BM_OCOTP_CTRL_BUSY & REG_RD(REGS_OCOTP_BASE, HW_OCOTP_CTRL))
                udelay(100);

        mac[0] = 0x00;
        mac[1] = 0x04;
        val = REG_RD(REGS_OCOTP_BASE, HW_OCOTP_CUSTn(0));
        mac[2] = (val >> 24) & 0xFF;
        mac[3] = (val >> 16) & 0xFF;
        mac[4] = (val >> 8) & 0xFF;
        mac[5] = (val >> 0) & 0xFF;
        return 0;
}                          
从这个函数可以看出来默认的前个字节是0x00,0x04
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|明远智睿  

GMT+8, 2024-11-23 03:01 , Processed in 0.064381 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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