Вопрос: 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 нет документации.
 

Dmitry Orlov

New member
Подскажите, пожалуйста, кто знает. В 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-х :)
 
Последнее редактирование:
Сверху Снизу