88E8057是Marvell的一款PCIE接口的千兆以太网芯片。内含1k的OTP存储器,可以用来初始化芯片的寄存器。比如MAC地址就是用OTP的内容来初始化的。下面的对OTP编程的步骤来源于一些逆向工程,实际使用中看来来是可以,但并不保证一定正确。
OTP 内存进行只能一次性编程,初始时所有的内容为0。当一位被写为1之后,则不能再写回0.
对OTP内存进行编程: (所有寄存器地址均指Control Register)
1. 设 REG_byte 0x04 为1,然后再设为2,用来复位芯片
2. 设 REG_byte 0x158 为2,启用特殊寄存器的写使能。
3. 设 REG_dword 0x1ca0 为 0xff0000f0 (目的不明)
对OTP编程过程为,先往REG_dword 0x1c54中写入数据,然后在REG_word 0x1c52中写入 0x8000|<地址>。等待最高位变为0之后,则该四字节编程完毕。
对OTP读的过程,往REG_word 0x1c52中写入地址,等待最高位变为1之后,则可从 REG_dword 0x1c54中读到数据。