INMYS WIKI

Инженерами для инженеров

Инструменты пользователя

Инструменты сайта


boards:nms-uq7-bklt:v1_ru:eth_addr

Это старая версия документа!


MAC-адреса в модулях Q7 Baikal

MAC-адреса в модулях устанавливаются двумя способами:

  1. Вычитываются из I2C EEPROM 24AA025E48T-I/OT с прошитым EUI-48
  2. Через переменные окружения U-boot

В розничных модулях по умолчанию используется 1-й способ.

I2C EEPROM с EUI-48

На модуле установлены 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 при старте:

:boards:nms-uq7-bklt:v1_ru:uboot_env_vars.png

title
Переменнные окружения не вычитаны

fw_printenv корректно читается область переменных окружений. При вызове команды не должно высыпаться Error:

boards/nms-uq7-bklt/v1_ru/eth_addr.1705338648.txt.gz · Последнее изменение: 2024/01/15 17:10 — Артем Слепов