Это старая версия документа!
MAC-адреса в модулях устанавливаются двумя способами:
В розничных модулях по умолчанию используется 1-й способ.
На модуле установлены 2 I2C EEPROM 24AA025E48T-I/OT.
Они работают на I2С-шине с контроллером 0x1f047000. На шине так же висит RTC, STM32 WD. Шина только на модуле, на разъем Q7 не выведена.
U-boot вычитывает EUI из EEPROM и устанавливает их в переменные U-boot ethaddr и eth1addr. Переопределять эти переменные нельзя.
EEPROM прописаны в DTS, поэтому драйвер atmel,24c02 добавляет их в sysfs.
[root@baikal_t1_uq7 ~]# hexdump -C /sys/bus/i2c/devices/1-0052/eeprom 00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| * 000000f0 ff ff ff ff ff ff ff ff ff ff 80 1f 12 30 0b d8 |.............0..| 00000100 [root@baikal_t1_uq7 ~]# hexdump -C /sys/bus/i2c/devices/1-0053/eeprom 00000000 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................| * 000000f0 ff ff ff ff ff ff ff ff ff ff 80 1f 12 30 73 8d |.............0s.| 00000100 [root@baikal_t1_uq7 ~]# i2cdetect -y -r 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- 1a -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- UU UU -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- UU -- 6a -- -- -- -- -- 70: -- -- -- -- -- -- -- -- [root@baikal_t1_uq7 ~]#
В варианте, когда U-boot не вычитывает EEPROM с мак-адресами, необходимо самостоятельно иницилизировать переменнные окружения с желаемым адресом. В u-boot по умолчанию вкомпилированы адреса 4c:a5:15:9e:ce:20 и 4c:a5:15:9e:ce:21.
Переменные окружения хранятся в NOR SPI flash, в которую прошит U-boot:
[root@baikal_t1_uq7 ~]# cat /proc/mtd dev: size erasesize name mtd0: 000c0000 00010000 "bootloader" mtd1: 00010000 00010000 "environment" mtd2: 00010000 00010000 "information" mtd3: 00010000 00010000 "fdt" mtd4: 00e90000 00010000 "fitimage" mtd5: 00080000 00010000 "configs"
Переменные MAC-адреса, в отличие от других нельзя переопределить в U-boot, поэтому это делается из-под Linux с помощью утилит fw_printenv и fw_setenv.
Для начала нужно убедиться, что область переменных окружения валидна. Об этом пишет U-boot при старте:
fw_printenv корректно читается область переменных окружений. При вызове команды не должно высыпаться Error: