tag 标签: 88E6320

相关博文
  • 热度 6
    2023-6-2 10:00
    1393 次阅读|
    2 个评论
    一、去年在调试MARVELL 88E6320,交换机功能调通。剩下SMI通讯去访问芯片寄存器,这个功能可有可无,调不通的话就当作傻瓜交换机用。所幸调通,也是迷迷糊糊,自己太菜鸡了 ~ 二、下面分享一下调试过程 第一篇 port 操作 只有2个寄存器可以直接访问,命令寄存器(0x00)和数据寄存器(0x01),其他寄存器要通过这两个寄存器访问。 读写流程 读写某一个功能寄存器的时候,必须通过命令寄存器(0x00)和数据寄存器(0x01)实现 读指令 先往命令寄存器(0x00)写入16bit的包含目标device地址和register地址的数据,然后读取数据寄存器(0x01)中的数据,即为所需数据。 写指令 先往数据寄存器(0x01)写入设计数据,然后再往命令寄存器(0x00)写入16bit的包含目标device地址和register地址的数据。 例: 读取port1的status Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Device地址 Status寄存器地址 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 9 A 0 0 往命令寄存器(0x00)写入0x9A00,然后读取数据寄存器(0x01)数据,如下图 具体操作地址,查看寄存器手册212页,9.3章,Figure62:Device Register Map 第二篇 PHY、SERDES操作 操作流程 PHY、SERDES 寄存器的操作,必须经过 命令寄存器(0x00)和数据寄存器(0x01)操作 Global2 寄存器(device addr 为0x1C)来实现,分步如下: ① 通过 命令寄存器(0x00)和数据寄存器(0x01)向 Global2 (device 0x1C)的寄存器SMI PHY COMMAND 寄存器(0x18)写入命令 ② 通过 命令寄存器(0x00)和数据寄存器(0x01),读取 Global2 (device 0x1C)的寄存器SMI PHY COMMAND 寄存器(0x18)写入命令 具体流程如下: ① 将表2.1或者2.2中数据写入 数据寄存器(0x01) ② 将写global2的PC寄存器的命令(0x9798)写入命令寄存器(0x00) ③ 将读global2的pd寄存器的命令(0x9B99)写入命令寄存器(0x00) 例:读SERDES STATUS寄存器,来判断光纤接入与否,光纤接入后,第一次读,读到0x169,显示光纤未接入;第二次及以后读,读到0x16D,显示光纤接入成功。造成此现象,猜测或许是判断光纤接入的寄存器选择不太正确,或许还有其他状态寄存器指示光纤接入与否,比如手册10.2章节,SERDES REGISTER DESCRIPTION。第481页 table 383。 表2.1 Serdes寄存器:(Clause 22 读)——光口 资源(接口)(device addr) 寄存器 (register addr) Serdes(port0) (0x0C) Serdes1(port1) (0x0D) 解释 Control(0x00) 0x9980 0x99A0 Status(0x01) 0x9981 0x99A1 PHY_ID(0x02) 0x9982 0x99A2 PHY_ID(0x03) 0x9983 0x99A3 Auto-Neg(0x04) 0x9984 0x99A4 Ability(0x05) 0x9985 0x99A5 Auto-Neg(0x06) 0x9986 0x99A6 NextPage(0x07) 0x9987 0x99A7 NextPage(0x08) 0x9988 0x99A8 ExtStatus(0x0F) 0x998F 0x99AF Control reg1(0x10) 0x9990 0x99B0 Status reg1(0x11) 0x9991 0x99B1 IntEnable(0x12) 0x9992 0x99B2 IntStatus(0x13) 0x9993 0x99B3 Rx Err Ctr(0x15) 0x9995 0x99B5 CRC_Ctr(0x18) 0x9998 0x99B8 Paket gen(0x19) 0x9999 0x99B9 Control reg2(0x1A) 0x999A 0x99BA SERDES寄存器位解析 control 寄存器 Status 寄存器 2.1 PHY设备寄存器(Clause22 读) 资源(接口)(device addr) 寄存器 (register addr) PH1(port3) (0x03) PH2(port4) (0x04) 解释 Control(0x00) 0x9860 0x9880 Status(0x01) 0x9861 0x9881 PHY_ID(0x02) 0x9862 0x9882 PHY_ID(0x03) 0x9863 0x9883 Auto-Neg(0x04) 0x9864 0x9884 Ability(0x05) 0x9865 0x9885 Auto-Neg(0x06) 0x9866 0x9886 NextPage(0x07) 0x9867 0x9887 NextPage(0x08) 0x9868 0x9888 Control(0x09) 0x9869 0x9889 Status(0x0A) 0x986A 0x988A ExtStatus(0x0F) 0x986F 0x988F PHYSpecific(0x10) 0X9870 0x9890 PHYSpecific(0x11) 0X9871 0x9891 PHYSpecific(0x12) 0X9872 0x9892 PHYSpecific(0x13) 0X9873 0x9893 PHYSpecific(0x14) 0X9874 0x9894 Rx Err Ctr(0x15) 0X9875 0x9895 Page reg(0x16) 0X9876 0x9896 PHY INT(0x17) 0X9877 0x9897 PageSpecific(0x18) 0X9878 0x9898 PageSpecific(0x19) 0X9879 0x9899 PageSpecific(0x1A) 0X987A 0x989A PageSpecific(0x1B) 0X987B 0x989B PageSpecific(0x1C) 0X987C 0x989C