• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос: Chip_ID в RTL

aloika

Active member
Подскажите, пожалуйста, кто знает. В ESP8266 был chip_id - это был уникальный идентификатор экземпляра чипа. В RTL тоже есть chip_id, но это совсем другое - отражает тип чипа, например, для RTL8710 chip_id=0xFC.

Вопрос - есть ли в RTL какой-нибудь уникальный номер экземпляра чипа и (если есть) как его узнать?
 

sharikov

Active member
Вопрос - есть ли в RTL какой-нибудь уникальный номер экземпляра чипа и (если есть) как его узнать?
Есть уникальный ID флэшки. Пройтесь на форуме где то было как читать otp area.
Также что-то было в efuse rtl но это ID или что-то случайное так и не выяснили: по efuse нет документации.
 
Подскажите, пожалуйста, кто знает. В ESP8266 был chip_id - это был уникальный идентификатор экземпляра чипа. В RTL тоже есть chip_id, но это совсем другое - отражает тип чипа, например, для RTL8710 chip_id=0xFC.

Вопрос - есть ли в RTL какой-нибудь уникальный номер экземпляра чипа и (если есть) как его узнать?
А MAC адрес не подходит? В ESP это его кусок.
 

pvvx

Активный участник сообщества
Подскажите, пожалуйста, кто знает. В ESP8266 был chip_id - это был уникальный идентификатор экземпляра чипа. В RTL тоже есть chip_id, но это совсем другое - отражает тип чипа, например, для RTL8710 chip_id=0xFC.

Вопрос - есть ли в RTL какой-нибудь уникальный номер экземпляра чипа и (если есть) как его узнать?
Есть. В eFuse и во встроенной Flash. Найдите темы про eFuse...
https://esp8266.ru/forum/threads/efuse-rtl00.1663/
https://esp8266.ru/forum/threads/identifikacija-rtl871x.2156/
И не майтесь - запишите сами в пользовательскую область eFuse что вам надо. Она однократно программируемая и сотен ячеек вам хватит.
 
Последнее редактирование:

aloika

Active member
То есть в efuse предусмотрено но производители модулей RTL00 шьют во все модули одинаковый.
У меня несколько модулей, если прошить веб-свалку, то MAC виден везде разный. Это где-то в веб-свалке функционал такой, или модули с разными МАС ?
 

pvvx

Активный участник сообщества
У меня несколько модулей, если прошить веб-свалку, то MAC виден везде разный. Это где-то в веб-свалке функционал такой, или модули с разными МАС ?
Там стоит примитив - затычка, т.к. неизвестно, что вам надо.
Вопрос про RTL.
В RTL00 по факту нет MAC. То есть в efuse предусмотрено но производители модулей RTL00 шьют во все модули одинаковый. Лень им.
"Производители с али" RTL-00 пишут MAC во Flash из стандартной прошивки "AT". Остальные, именно производители модулей, пишут MAC в eFuse.
При перепрошивке вы стираете его своим, какой понравится... :)
 

pvvx

Активный участник сообщества
tcp_put_mac(xnetif[WLAN_AP_NETIF_NUM].hwaddr);

Правило у SDK получения MAC в дровах:
1) распаковывается* eFuse в структуру настроек WiFi под названием типа eeprom (struct _ADAPTER, eeprompriv).
2) на неё накладываются* значения из Flash сектора по адресу 0xA000.
3) Если все 6-ть байт MAC равны 0xFF, то ставится mac по умолчанию.

* паковка имеет записи, которые надо заместить. Т.е. в сжатом виде указаны адрес и значения для областей в efuse_eeprom_data[HWSET_MAX_SIZE_512]. Замещения значений MAC там может и не быть. Изначально буфер efuse_eeprom_data 512 байт содержат 0xff. Этим достигается возможность дозаписи в eFuse, которые заместят предыдущие.

pvvx/RTL00_WEB
Кроме того MAC, в структуре есть область efuse_eeprom_data, от куда его скопировали в mac_addr[6], в какой-то момент времени:
Код:
struct eeprom_priv
{
    u8        bautoload_fail_flag;
    u8        mac_addr[6];    //PermanentAddress
    u16        CustomerID;
    u8        EepromOrEfuse;
    u8        efuse_eeprom_data[HWSET_MAX_SIZE_512];
#ifdef CONFIG_RF_GAIN_OFFSET
    u8        EEPROMRFGainOffset;
    u8        EEPROMRFGainVal;
#endif
};
От туда он, в какой-то момент попадет в область WiFi регистров :)

Т.е. существует более 3-х MAC адресов - в eFuse, в Flash, в RAM eeprompriv, в netif-ах у LwIP. И они ещё отличаются для STA и AP драйвера... и могут быть заданы пользователем.
Так-же процедур установки MAC более 3-х :)
 
Последнее редактирование:
Сверху Снизу