Приветствую всех!
Столкнулся с проблемой - есть несколько плат 9g45. Все они работают в одной локальной сетке. IP адреса прописаны разные, но вот mac адреса у всех плат одинаковые. Мы хотим задать разные mac адреса всем платам. Возникает вопрос - можно ли жестко прошить mac адрес в PHY-чип Ethernet, чтобы он не изменялся даже при переустановке системы?
В данный момент mac адрес меняем через Linux изменением файла /etc/network/interfaces.
Думаю - нет.
Вариантов можно много придумать:
1) хранить его в области nand которую не стираете при обновлении системы
2) пару значений адреса генерировать случайным образом при старте (по моему это даже в штатных средствах linux есть)
...
Спасибо за ответ!
Я думаю, что в текущей ситуации можно действительно придумать что-то лучше, чем жесткая записи в PHY. Можно даже ограничиться и задачей mac через скрипт в Linux.
самый надежный вариант - внешний eeprom для физики.. один раз прописали и это навсегда - смена фирмвари или чипа нанда или рутовой на МАС уже не повлияют.. на всех сетевых картах именно так и делают..
еще как вариант посмотреть на возможность получать МАС адрес (ethaddr) из юбута (его переменных)
Про внешний EEPROM тоже думал, но у нас уже реализация проекта скоро, а тут придется все платы переразводить по новому. Сначала подумал, что сама PHY-микруха обладает энергонезависимой памятью как раз для сохранения в ней mac. На начальном этапе разработки что-то про mac никто не вспомнил - поэтому только в конце данный косяк и всплыл.
С юбутом можно попробовать даже из чисто практического интереса. А заодно получше в нем разобраться.
У нас тут просто материнка своя для SK-9G45-OEM. Там не развели вообще шину i2c . Разведены только 2 RS-485, RS-232 debug, Ethernet, USB, светодиоды индикации и все. EEPROM конечно можно проводками к неразведенным i2c контактам подпаять и к питанию, но это колхоз уже будет.
для чтения мас-адреса достаточно эмуляции i2c на любых свободных GPIO, кстати последний раз когда интересовался вопросом - в Linux на атмеловских процессорах TWI не используется из-за его ограниченности, по умолчанию эмуляция на GPIO только пины для совместимости от TWI.
тогда копайте переменные юбута
если не получится, то смотрите в сторону совета Павла по выделению области (раздела) в нанде - в этом случае всегда держите в голове возможность случайного стирания, например, при апдейте софта или просто косяка в программах..
так в том то и дело, что нет даже любых свободных GPIO))) А так - да, действительно, если программная реализация i2c, то там все равно на какие пины вешать eeprom.
Сейчас реально только через убут или nand менять или все оставить на простом скрипте, который при старте системы выполняется, а в следующий раз уже на начальных этапах разработки про i2c и mac задумываться.