Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
boards:nms-uq7-bklt:v1_ru:eth_addr [2024/01/15 16:53] – [Переменные окружения] Артем Слепов | boards:nms-uq7-bklt:v1_ru:eth_addr [2024/01/26 09:57] (текущий) – [Переопределение MAC-адреса из Linux] Артем Слепов | ||
---|---|---|---|
Строка 3: | Строка 3: | ||
MAC-адреса в модулях устанавливаются двумя способами: | MAC-адреса в модулях устанавливаются двумя способами: | ||
- Вычитываются из I2C EEPROM 24AA025E48T-I/ | - Вычитываются из I2C EEPROM 24AA025E48T-I/ | ||
- | - Через переменные окружения U-boot | + | - Через переменные окружения U-boot |
- | В розничных модулях по умолчанию | + | Способ работы с MAC-адресами определяется на этапе сборки U-boot. |
+ | |||
+ | В розничных модулях по умолчанию прошит 1-й способ. | ||
Строка 43: | Строка 45: | ||
+ | ==== Переменные окружения ==== | ||
+ | В варианте, | ||
+ | В u-boot по умолчанию вкомпилированы адреса 4c: | ||
+ | Переменные окружения хранятся в NOR SPI Flash, в которую прошит U-boot: | ||
+ | < | ||
+ | [root@baikal_t1_uq7 ~]# cat / | ||
+ | dev: size | ||
+ | mtd0: 000c0000 00010000 " | ||
+ | mtd1: 00010000 00010000 " | ||
+ | mtd2: 00010000 00010000 " | ||
+ | mtd3: 00010000 00010000 " | ||
+ | mtd4: 00e90000 00010000 " | ||
+ | mtd5: 00080000 00010000 " | ||
+ | </ | ||
+ | Переменные MAC-адреса, | ||
+ | |||
+ | |||
+ | Для начала нужно убедиться, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | **Переменнные окружения вычитаны успешно** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ** Переменнные окружения не вычитаны ** | ||
+ | |||
+ | === Переменные окружения с точки зрения U-boot === | ||
+ | U-boot вычитывает переменные окружения либо из из области flash, которая опеределна на этапе компиляции, | ||
+ | Во случае невалидности необходимо выполнить команду //saveenv// в консоли U-boot. Так вкомпилированные переменные попадут во Flash. | ||
+ | < | ||
+ | BAIKAL # saveenv | ||
+ | Saving Environment to SPIFlash... Erasing SPI flash...Writing to SPI flash...done | ||
+ | OK | ||
+ | BAIKAL # | ||
+ | </ | ||
+ | |||
+ | === Переменные окружения с точки зрения Linux === | ||
+ | Linux читает переменные окружения опираясь на /// | ||
+ | < | ||
+ | [root@baikal_t1_uq7 ~]# cat / | ||
+ | # MTD device name Device offset Env. size Flash sector size Number of sectors | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Если MTD device невалиден, | ||
+ | |||
+ | Оба файла задаются на этапе сборке rootfs. | ||
+ | |||
+ | Linux должен корректно вычитывать переменные через fw_printenv (не должно быть сообщения //using default environment// | ||
+ | |||
+ | === Переопределение MAC-адреса из Linux === | ||
+ | Команда записи переменной окружения ethaddr: | ||
+ | < | ||
+ | fw_setenv ethaddr aa: | ||
+ | </ | ||
+ | |||
+ | После перезагрузки MAC-адрес должен быть применен к сетевому интерфейсу и читаться через ifconfig | ||
+ | |||
+ | < | ||
+ | [root@baikal_t1_uq7 ~]# ifconfig | ||
+ | eth0 Link encap: | ||
+ | inet addr: | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Команды для автоматического назначения MAC из EEPROM === | ||
+ | < | ||
+ | ethaddr=`dd if=/ | ||
+ | echo "set ethaddr=$ethaddr" | ||
+ | fw_setenv ethaddr $ethaddr | ||
+ | eth1addr=`dd if=/ | ||
+ | echo "set eth1addr=$eth1addr" | ||
+ | fw_setenv eth1addr $eth1addr | ||
+ | </ |