• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Efuse RTL00

pvvx

Активный участник сообщества
'Среверсил' все функции чтения efuse (из lib_platform.a:hal_efuse.o и ROM - см. вложение).
В моем тестовом модуле записано:
Код:
efuse OTP block at 0:
[0000]  0C 95 81 C2  16 3D 00 02
[0008]  2F 3D 1A 05  8F 50 04 02
[0010]  00 07 00 03  01 09 AF 50
[0018]  08 08 01 02  02 04 03 03
[0020]  CF 50 05 00  FF FF FF FF
[0028]  FF FF EF 50  FF FF FF FF
[0030]  FF FF FF FF  FF FF FF FF
[0038]  FF FF FF FF  FF FF FF FF
[0040]  FF FF FF FF  FF FF FF FF
[0048]  FF FF FF FF  FF FF FF FF
[0050]  FF FF FF FF  FF FF FF FF
[0058]  FF FF FF FF  FF FF FF FF
[0060]  FF FF FF FF  FF FF FF FF
[0068]  FF FF FF FF  FF FF FF FF
[0070]  FF FF FF FF  FF FF FF FF
[0078]  FF FF FF FF  FF FF FF FF
efuse OTP block at 128:
[0080]  FF FF FF FF  FF FF FF FF
[0088]  FF FF FF FF  FF FF FF FF
[0090]  FF FF FF FF  FF FF FF FF
[0098]  FF FF FF FF  FF FF FF FF
[00a0]  FF FF FF FF  FF FF FF FF
[00a8]  FF FF FF FF  FF FF FF FF
[00b0]  FF FF FF FF  FF FF FF FF
[00b8]  FF FF FF FF  FF FF FF FF
[00c0]  FF FF FF FF  FF FF FF FF
[00c8]  FF FF FF FF  FF FF FF FF
[00d0]  FF FF FF FF  FF FF FF FF
[00d8]  FF FF FF FF  FF FF FF FF
[00e0]  FF FF FF FF  FF FF FF FF
[00e8]  FF FF FF FF  FF FF F0 E0
[00f0]  FF FF FF FF  3D 1D 0D C9
[00f8]  FC FF FF FF  FF FF FF FF
Остальные байты = 0xFF.

Запись производится с заголовками блоков, при чтении дешифруется (код приведен с примером чтения), предельная длина чтения контроллера EEPROM описана маской 0x3FF (1024 байта).
 

Вложения

pvvx

Активный участник сообщества
В u8 FunctionChk(u32 Function, u32 PinLocation) для RTL8710AF разрешена только такая периферия:
SPI0, SPI0_MCS, I2S1, I2C3, JTAG, LOG_UART, UART0, UART2. Всё остальное запрещено, даже если работает.
Это зависит от байта в efuse[0xF8] = 0xFC. Если значение там 0xFE, 0xFD, 0xFB..0xF8, то разрешено всё (8195).

В u8 GpioFunctionChk(u32 chip_pin, u8 Operation) для RTL8710AF, кроме описанных для 8195 запрещены такиe pin:
PA_1,PA_2,PA_3,PC_5. Хотя прекрасно работают как IO Port. Остальные выбираются по таблице GPIOState...
Код:
    if (GpioFunctionChk(chip_pin, ENABLE) == _FALSE) {
        if((chip_pin > 0x03) && (chip_pin != 0x25)) {
            DBG_GPIO_ERR("HAL_GPIO_Init: GPIO Pin(%x) Unavailable\n ", chip_pin);
            return;
        }
        else DBG_GPIO_ERR("HAL_GPIO_Init: GPIO Pin(%x) Warning for RTL8710AF!\n ", chip_pin);
    }

Так-же зависит от байта в efuse[0xF8] = 0xFC.
 
Последнее редактирование:

sharikov

Active member
В моем тестовом модуле записано:
Вот что в моем:
Код:
efuse OTP block at 0:
[0000]  0C 95 81 C2  16 3D 00 02
[0008]  2F 3D 1A 05  8F 50 04 02
[0010]  00 07 00 03  01 09 AF 50
[0018]  08 08 01 02  02 04 03 03
[0020]  CF 50 05 00  FF FF FF FF
[0028]  FF FF EF 50  FF FF FF FF
[0030]  FF FF FF FF  FF FF FF FF
[0038]  FF FF FF FF  FF FF FF FF
[0040]  FF FF FF FF  FF FF FF FF
[0048]  FF FF FF FF  FF FF FF FF
[0050]  FF FF FF FF  FF FF FF FF
[0058]  FF FF FF FF  FF FF FF FF
[0060]  FF FF FF FF  FF FF FF FF
[0068]  FF FF FF FF  FF FF FF FF
[0070]  FF FF FF FF  FF FF FF FF
[0078]  FF FF FF FF  FF FF FF FF
efuse OTP block at 128:
[0080]  FF FF FF FF  FF FF FF FF
[0088]  FF FF FF FF  FF FF FF FF
[0090]  FF FF FF FF  FF FF FF FF
[0098]  FF FF FF FF  FF FF FF FF
[00a0]  FF FF FF FF  FF FF FF FF
[00a8]  FF FF FF FF  FF FF FF FF
[00b0]  FF FF FF FF  FF FF FF FF
[00b8]  FF FF FF FF  FF FF FF FF
[00c0]  FF FF FF FF  FF FF FF FF
[00c8]  FF FF FF FF  FF FF FF FF
[00d0]  FF FF FF FF  FF FF FF FF
[00d8]  FF FF FF FF  FF FF FF FF
[00e0]  FF FF FF FF  FF FF FF FF
[00e8]  FF FF FF FF  FF FF F7 E0
[00f0]  FF FF FF FF  2E 08 AF 78
[00f8]  FC FF FF FF  FF FF FF FF

...
efuse MTP block: Test Start
[0]  04 02 00 07  00 03 01 09
[8]  08 08 01 02  02 04 03 03
[16]  05 00 FF FF  FF FF FF FF
[24]  FF FF FF FF  FF FF FF FF
Есть отличия от вашего :
Код:
diff efuse_pvvx.txt efuse_00f887110012.txt
32,33c32,33
< [00e8]  FF FF FF FF  FF FF F0 E0
< [00f0]  FF FF FF FF  3D 1D 0D C9
---
> [00e8]  FF FF FF FF  FF FF F7 E0
> [00f0]  FF FF FF FF  2E 08 AF 78
 

pvvx

Активный участник сообщества
Вот что в моем:
Код:
...
efuse MTP block: Test Start
[0]  04 02 00 07  00 03 01 09
[8]  08 08 01 02  02 04 03 03
[16]  05 00 FF FF  FF FF FF FF
[24]  FF FF FF FF  FF FF FF FF
MTB - сборка из первых адресов (удалены заголовки - декодированы). Расчет идет на то, что это OTP и можно только дописать - изменить какой байт...
Есть отличия от вашего :
Код:
diff efuse_pvvx.txt efuse_00f887110012.txt
32,33c32,33
< [00e8]  FF FF FF FF  FF FF F0 E0
< [00f0]  FF FF FF FF  3D 1D 0D C9
---
> [00e8]  FF FF FF FF  FF FF F7 E0
> [00f0]  FF FF FF FF  2E 08 AF 78
Может это и есть нормальный MAC, а не от китайских продавцов?
 

ToJIka4

New member
[off]@pvvx, каким инструментом пользуетесь для создания C кода? Руками и чтением ассемблера?[/off]
 

pvvx

Активный участник сообщества
[off]@pvvx, каким инструментом пользуетесь для создания C кода? Руками и чтением ассемблера?[/off]
Разным - что попадется :) Но на ARM натаскан IDA.
Да и тут дело такое - стаж в этом ещё с до 1990-го...
Ещё на RTL в инет есть куча исходников на другие чипы... Как завелось в конторе, так и пишут.... и 'реверс' более зависит от людей и повадков в конторе писателя, а не от чего-то другого.
И ещё пример - зная, что в Realtek лентяи -> чип RTL8710 не отличается от RTL8195. Ну выкинули внешнюю память и лап меньше вывели. Итого: NFC тоже работает - только что проверил...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Может это и есть нормальный MAC, а не от китайских продавцов?
Другой модуль:
Код:
efuse OTP block at 128:
[0080]  FF FF FF FF  FF FF FF FF
[0088]  FF FF FF FF  FF FF FF FF
[0090]  FF FF FF FF  FF FF FF FF
[0098]  FF FF FF FF  FF FF FF FF
[00a0]  FF FF FF FF  FF FF FF FF
[00a8]  FF FF FF FF  FF FF FF FF
[00b0]  FF FF FF FF  FF FF FF FF
[00b8]  FF FF FF FF  FF FF FF FF
[00c0]  FF FF FF FF  FF FF FF FF
[00c8]  FF FF FF FF  FF FF FF FF
[00d0]  FF FF FF FF  FF FF FF FF
[00d8]  FF FF FF FF  FF FF FF FF
[00e0]  FF FF FF FF  FF FF FF FF
[00e8]  FF FF FF FF  FF FF F0 E8
[00f0]  FF FF FF FF  3F 33 4D 35
[00f8]  FC FF FF FF  FF FF FF FF
Итого:
В каждом модуле байты efuse[f4..f7] отличаются.
1) 2E 08 AF 78
2) 3D 1D 0D C9
3) 3F 33 4D 35
...
Очень похоже на серийный номер или MAC.
Пока неизвестно где они используются в SDK (и/или почему MAC берется из Flash в Амёбе).
 

pvvx

Активный участник сообщества
Функции из ROM для efuse:
Код:
#include "rtl8195a.h"
//#define    NO_ROM_API
#ifdef NO_ROM_API
//====================================================== Start libs ROM efuse
//----- HalEFUSEPowerSwitch8195AROM addr 0x6561
_LONG_CALL_ROM_ int HalEFUSEPowerSwitch8195AROM(unsigned char bWrite, unsigned char PwrState, unsigned char L25OutVoltage) {
     if (PwrState == 1) {
         HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_EEPROM_CTRL0, (HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_EEPROM_CTRL0) & 0xFFFFFF) | 0x69000000); // EFUSE_UNLOCK
         if (!(HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_FUNC_EN) & BIT_SYS_FEN_EELDR))    // REG_SYS_FUNC_EN BIT_SYS_FEN_EELDR ?
             HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_FUNC_EN, HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_FUNC_EN) | BIT_SYS_FEN_EELDR);
         if (!(HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_CLK_CTRL0) & BIT_SYSON_CK_EELDR_EN))    // REG_SYS_CLK_CTRL0 BIT_SYSON_CK_EELDR_EN ?
             HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_CLK_CTRL0, HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_CLK_CTRL0) | BIT_SYSON_CK_EELDR_EN);
         if (!(HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_CLK_CTRL1) & BIT_PESOC_EELDR_CK_SEL)) // REG_SYS_CLK_CTRL1 BIT_PESOC_EELDR_CK_SEL ?
             HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_CLK_CTRL1, HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_CLK_CTRL1) | BIT_PESOC_EELDR_CK_SEL);
         if (bWrite == 1)
             HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_REGU_CTRL0, (HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_REGU_CTRL0) & 0xFFFFF0FF) | BIT_SYS_REGU_LDO25E_EN | BIT_SYS_REGU_LDO25E_ADJ(L25OutVoltage));
     }
     else
     {
         HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_EEPROM_CTRL0, HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_EEPROM_CTRL0) & 0xFFFFFF); // EFUSE_UNLOCK
         if ( bWrite == 1 )
             HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_REGU_CTRL0, (HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_REGU_CTRL0) & (~BIT_SYS_REGU_LDO25E_EN)));
     }
     return bWrite;
}

//----- HALEFUSEOneByteReadROM addr 0x6561
_LONG_CALL_ROM_ int HALEFUSEOneByteReadROM(unsigned int CtrlSetting, unsigned short Addr, unsigned char *Data, unsigned char L25OutVoltage)
{
int i = 0, result = 0;
    if ( (Addr <= 0xFF) || ((CtrlSetting & 0xFFFF) == 0x26AE) ) {
        HalEFUSEPowerSwitch8195AROM(1, 1, L25OutVoltage);

        HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_EFUSE_TEST, HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_EFUSE_TEST) & (~BIT_SYS_EF_FORCE_PGMEN));
        HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_EFUSE_CTRL,
                (CtrlSetting & (~(BIT_SYS_EF_RWFLAG | (BIT_MASK_SYS_EF_ADDR << BIT_SHIFT_SYS_EF_ADDR)    | (BIT_MASK_SYS_EF_DATA << BIT_SHIFT_SYS_EF_DATA))))
                | BIT_SYS_EF_ADDR(Addr));
        while(1) {
            if(HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_EFUSE_CTRL) & BIT_SYS_EF_RWFLAG) {
                *Data = HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_EFUSE_CTRL);
                result = 1;
                break;
            }
            HalDelayUs(1000);
            if (i++ >= 100) {
                *Data = -1;
                break;
            };
        };
        HalEFUSEPowerSwitch8195AROM(1, 0, L25OutVoltage);
    }
    else *Data = -1;
    return result;
}

//----- HALEFUSEOneByteWriteROM addr 0x6699
_LONG_CALL_ROM_ int HALEFUSEOneByteWriteROM(IN    unsigned int CtrlSetting, IN unsigned short Addr, IN unsigned char Data, IN unsigned char L25OutVoltage)
{
int i = 0, result = 0;
    if ( (Addr <= 0xFF) || ((CtrlSetting & 0xFFFF) == 0x26AE) ) {
        HalEFUSEPowerSwitch8195AROM(1, 1, L25OutVoltage);
        HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_EFUSE_TEST, HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_EFUSE_TEST) | BIT_SYS_EF_FORCE_PGMEN);
        HAL_WRITE32(SYSTEM_CTRL_BASE, REG_SYS_EFUSE_CTRL, Data | BIT_SYS_EF_RWFLAG | BIT_SYS_EF_ADDR(Addr) | BIT_SYS_EF_DATA(Data) |
                (CtrlSetting & (~(BIT_SYS_EF_RWFLAG | (BIT_MASK_SYS_EF_ADDR << BIT_SHIFT_SYS_EF_ADDR) | (BIT_MASK_SYS_EF_DATA << BIT_SHIFT_SYS_EF_DATA)))));
        while(1) {
            HalDelayUs(1000);
            if(HAL_READ32(SYSTEM_CTRL_BASE, REG_SYS_EFUSE_CTRL) & BIT_SYS_EF_RWFLAG) break;
            if (i++ >= 100) {
                result = 1;
                break;
            };
        };
        HalEFUSEPowerSwitch8195AROM(1, 0, L25OutVoltage);
    }
    return result;
}
//====================================================== End libs ROM efuse
#endif
 

pvvx

Активный участник сообщества
Доступ к efuse можно получить и через lib_wlan_mp.a при включенном CONFIG_INTERACTIVE_MODE (см. 'AN0004 Realtek low power wi-fi mp user guide.pdf')
Код:
# iwpriv efuse_get rmap,0,16
Private Message: 0x95 0x81 0xC2 0x16 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
# iwpriv config_get rmap,0,16
Private Message: 0x95 0x81 0xC2 0x16 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
# iwpriv config_get realmap
Private Message:
0x000   95 81 C2 16 FF FF FF FF         FF FF FF FF FF FF FF FF
0x010   FF FF FF FF FF FF FF FF         FF FF 00 02 FF FF FF FF
0x020   26 26 27 27 27 27 28 29         2A 2A 2B 02 FF FF FF FF
0x030   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x040   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x050   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x060   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x070   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x080   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x090   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0a0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0b0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0c0   FF FF FF FF FF FF FF FF         20 20 21 05 00 00 00 FF
0x0d0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0e0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0f0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x100   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x110   FF FF FF FF FF FF FF FF         FF FF 00 F8 87 11 00 12
0x120   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x130   FF 01 00 10 00 FF 00 FF         10 00 FF FF FF FF FF FF
0x140   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x150   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x160   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x170   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x180   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x190   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1a0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1b0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1c0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1d0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1e0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1f0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
#iwpriv efuse_get realmap
Private Message:
0x000   95 81 C2 16 FF FF FF FF         FF FF FF FF FF FF FF FF
0x010   FF FF FF FF FF FF FF FF         FF FF 00 02 FF FF FF FF
0x020   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x030   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x040   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x050   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x060   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x070   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x080   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x090   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0a0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0b0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0c0   FF FF FF FF FF FF FF FF         FF FF 1E 05 FF FF FF FF
0x0d0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0e0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x0f0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x100   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x110   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x120   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x130   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x140   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x150   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x160   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x170   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x180   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x190   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1a0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1b0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1c0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1d0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1e0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
0x1f0   FF FF FF FF FF FF FF FF         FF FF FF FF FF FF FF FF
И так-же про MAC:
Код:
# iwpriv efuse_get mac
Private Message: FF:FF:FF:FF:FF:FF
# iwpriv config_get mac
Private Message: 00:F8:87:11:00:12
Прочее:
# iwpriv config_get ableraw
Private Message: [available raw size]= 76 bytes
# iwpriv efuse_get ableraw
Private Message: [available raw size]= 76 bytes
# iwpriv config_get vidpid
Private Message: 0x95,0x81,0xC2,0x16
# iwpriv efuse_get vidpid
Private Message: 0x95,0x81,0xC2,0x16
# iwpriv config_get realflash,0,16
Private Message:
95 81 20 00 10 00 26 26 27 27 27 27 28 29 2A 2A
# iwpriv efuse_get realflash,0,16
Private Message:
95 81 20 00 10 00 26 26 27 27 27 27 28 29 2A 2A
Надеюсь понятно, от куда читается realflash и что это всё пишется через iwpriv efuse_set/config_set, но меняется rmap на wmap, wflash.
Т.е. примерно:
iwpriv efuse_set mac,123456789abc
iwpriv config_set mac,123456789abc
 
Последнее редактирование:

pvvx

Активный участник сообщества
if (!rtl_strcmp(str, "realmap")) rtw_config_map_read(padapter, 0, 512, xxx);
if (!rtl_strcmp(str, "rmap")) { EFUSE_GetEfuseDefinition(_adapter * pAdapter, u8 efuseType = 0 , u8 type = 4, void *pOut = max_available_size, BOOLEAN bPseudoTest);
rtw_config_map_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data, u8 efuse); }
if (!rtl_strcmp(str, "realflash")) rtw_flash_read(PADAPTER padapter, u16 addr, u16 cnts, u8 *data);
Скорее rmap/realmap всего дают декодированный и не декодированный дамп map настроек или текущие значения и записанные где в efuse без наложения значений из Flash и типа... Для какой-то совместимости с rtwpriv tool от Realtek... Разгадать это не покопавшись невозможно...
 

Вложения

Последнее редактирование:

sharikov

Active member
Понятнее не стало особенно с EFUSE_GetEfuseDefinition()
Опытным путем определил что realflash выдает не декодированное содержимое а realmap - декодированное.
Разницу realmap и rmap не понял.
 

Geniuser

New member
В моём модуле
Код:
efuse OTP block: Test Start
...
[00e8]  FF FF FF FF  FF FF F5 E8
[00f0]  FF FF FF FF  3D 0A 38 22
...
efuse MTP block: Test Start
[0]     04 02 00 07  00 03 01 09
[8]     08 08 01 02  02 04 03 03
[16]    05 00 FF FF  FF FF FF FF
[24]    FF FF FF FF  FF FF FF FF
...
 
Сверху Снизу