Merge branch 'bugfix/fix_esp32h2_efuse_get_ext_mac_v4.4' into 'release/v4.4'

efuse_table_gen: Fixes wrong joining fields with omitted names (v4.4)

See merge request espressif/esp-idf!15735
This commit is contained in:
Jiang Jiang Jian
2021-12-08 10:12:25 +00:00
6 changed files with 82 additions and 11 deletions

View File

@ -98,9 +98,11 @@ class FuseTable(list):
# fill group
names = [p.field_name for p in res]
duplicates = set(n for n in names if names.count(n) > 1)
if len(duplicates) != 0:
for dname in duplicates:
i_count = 0
for p in res:
if p.field_name != dname:
continue
if len(duplicates.intersection([p.field_name])) != 0:
p.group = str(i_count)
i_count += 1

View File

@ -9,7 +9,7 @@
#include <assert.h>
#include "esp_efuse_table.h"
// md5_digest_table a007943ae37fe41884a23d505a6e7dbb
// md5_digest_table 6aaac59bd3f6d31bea4aef43b1f0d78a
// This file was generated from the file esp_efuse_table.csv. DO NOT CHANGE THIS FILE MANUALLY.
// If you want to change some fields, you need to change esp_efuse_table.csv file
// then run `efuse_common_table` or `efuse_custom_table` command it will generate this file.
@ -349,8 +349,8 @@ static const esp_efuse_desc_t MAC_FACTORY[] = {
};
static const esp_efuse_desc_t MAC_EXT[] = {
{EFUSE_BLK1, 123, 8}, // Factory MAC addr [6],
{EFUSE_BLK1, 131, 8}, // Factory MAC addr [7],
{EFUSE_BLK1, 123, 8}, // Extend MAC addr [0],
{EFUSE_BLK1, 131, 8}, // Extend MAC addr [1],
};
static const esp_efuse_desc_t SPI_PAD_CONFIG_CLK[] = {
@ -913,8 +913,8 @@ const esp_efuse_desc_t* ESP_EFUSE_MAC_FACTORY[] = {
};
const esp_efuse_desc_t* ESP_EFUSE_MAC_EXT[] = {
&MAC_EXT[6], // Factory MAC addr [6]
&MAC_EXT[7], // Factory MAC addr [7]
&MAC_EXT[0], // Extend MAC addr [0]
&MAC_EXT[1], // Extend MAC addr [1]
NULL
};

View File

@ -115,8 +115,8 @@
, EFUSE_BLK1, 16, 8, Factory MAC addr [3]
, EFUSE_BLK1, 8, 8, Factory MAC addr [4]
, EFUSE_BLK1, 0, 8, Factory MAC addr [5]
MAC_EXT, EFUSE_BLK1, 123, 8, Factory MAC addr [6]
, EFUSE_BLK1, 131, 8, Factory MAC addr [7]
MAC_EXT, EFUSE_BLK1, 123, 8, Extend MAC addr [0]
, EFUSE_BLK1, 131, 8, Extend MAC addr [1]
SPI_PAD_CONFIG_CLK, EFUSE_BLK1, 48, 6, SPI_PAD_configure CLK
SPI_PAD_CONFIG_Q_D1, EFUSE_BLK1, 54, 6, SPI_PAD_configure Q(D1)
SPI_PAD_CONFIG_D_D0, EFUSE_BLK1, 60, 6, SPI_PAD_configure D(D0)

Can't render this file because it contains an unexpected character in line 7 and column 87.

View File

@ -9,7 +9,7 @@ extern "C" {
#endif
// md5_digest_table a007943ae37fe41884a23d505a6e7dbb
// md5_digest_table 6aaac59bd3f6d31bea4aef43b1f0d78a
// This file was generated from the file esp_efuse_table.csv. DO NOT CHANGE THIS FILE MANUALLY.
// If you want to change some fields, you need to change esp_efuse_table.csv file
// then run `efuse_common_table` or `efuse_custom_table` command it will generate this file.

View File

@ -454,6 +454,73 @@ name2.F1, EFUSE_BLK2, 22,
with self.assertRaisesRegex(efuse_table_gen.InputError, 'name2 is not found'):
t.verify()
def test_two_fields_with_lists(self):
csv = """
MAC_FACTORY, EFUSE_BLK1, 40, 8, Factory MAC addr [0]
, EFUSE_BLK1, 32, 8, Factory MAC addr [1]
, EFUSE_BLK1, 24, 8, Factory MAC addr [2]
, EFUSE_BLK1, 16, 8, Factory MAC addr [3]
, EFUSE_BLK1, 8, 8, Factory MAC addr [4]
, EFUSE_BLK1, 0, 8, Factory MAC addr [5]
MAC_EXT, EFUSE_BLK1, 123, 8, Extend MAC addr [0]
, EFUSE_BLK1, 131, 8, Extend MAC addr [1]
"""
t = efuse_table_gen.FuseTable.from_csv(csv)
t.verify()
self.assertEqual(t[0].field_name, 'MAC_FACTORY')
self.assertEqual(t[0].group, str(0))
self.assertEqual(t[1].field_name, 'MAC_FACTORY')
self.assertEqual(t[1].group, str(1))
self.assertEqual(t[2].field_name, 'MAC_FACTORY')
self.assertEqual(t[2].group, str(2))
self.assertEqual(t[3].field_name, 'MAC_FACTORY')
self.assertEqual(t[3].group, str(3))
self.assertEqual(t[4].field_name, 'MAC_FACTORY')
self.assertEqual(t[4].group, str(4))
self.assertEqual(t[5].field_name, 'MAC_FACTORY')
self.assertEqual(t[5].group, str(5))
self.assertEqual(t[6].field_name, 'MAC_EXT')
self.assertEqual(t[6].group, str(0))
self.assertEqual(t[7].field_name, 'MAC_EXT')
self.assertEqual(t[7].group, str(1))
def test_two_fields_with_lists_and_field_between(self):
csv = """
MAC_FACTORY, EFUSE_BLK1, 40, 8, Factory MAC addr [0]
, EFUSE_BLK1, 32, 8, Factory MAC addr [1]
, EFUSE_BLK1, 24, 8, Factory MAC addr [2]
, EFUSE_BLK1, 16, 8, Factory MAC addr [3]
, EFUSE_BLK1, 8, 8, Factory MAC addr [4]
, EFUSE_BLK1, 0, 8, Factory MAC addr [5]
name2, EFUSE_BLK3, 5, 1, comment
MAC_EXT, EFUSE_BLK1, 123, 8, Extend MAC addr [0]
, EFUSE_BLK1, 131, 8, Extend MAC addr [1]
"""
t = efuse_table_gen.FuseTable.from_csv(csv)
t.verify()
self.assertEqual(t[0].field_name, 'MAC_FACTORY')
self.assertEqual(t[0].group, str(0))
self.assertEqual(t[1].field_name, 'MAC_FACTORY')
self.assertEqual(t[1].group, str(1))
self.assertEqual(t[2].field_name, 'MAC_FACTORY')
self.assertEqual(t[2].group, str(2))
self.assertEqual(t[3].field_name, 'MAC_FACTORY')
self.assertEqual(t[3].group, str(3))
self.assertEqual(t[4].field_name, 'MAC_FACTORY')
self.assertEqual(t[4].group, str(4))
self.assertEqual(t[5].field_name, 'MAC_FACTORY')
self.assertEqual(t[5].group, str(5))
self.assertEqual(t[6].field_name, 'name2')
self.assertEqual(t[7].field_name, 'MAC_EXT')
self.assertEqual(t[7].group, str(0))
self.assertEqual(t[8].field_name, 'MAC_EXT')
self.assertEqual(t[8].group, str(1))
if __name__ == '__main__':
unittest.main()

View File

@ -75,8 +75,9 @@ esp_err_t esp_efuse_mac_get_custom(uint8_t *mac)
return ESP_ERR_INVALID_MAC;
}
#if (ESP_MAC_ADDRESS_LEN == 8)
err = esp_efuse_read_field_blob(ESP_EFUSE_MAC_EXT, &mac[6], ESP_MAC_ADDRESS_LEN - size);
err = esp_efuse_read_field_blob(ESP_EFUSE_MAC_EXT, &mac[6], ESP_MAC_ADDRESS_LEN * 8 - size_bits);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Reading MAC_EXT failed, error=%d", err);
return err;
}
#endif
@ -111,8 +112,9 @@ esp_err_t esp_efuse_mac_get_default(uint8_t *mac)
return err;
}
#if (ESP_MAC_ADDRESS_LEN == 8)
err = esp_efuse_read_field_blob(ESP_EFUSE_MAC_EXT, &mac[6], ESP_MAC_ADDRESS_LEN - size_bits / 8);
err = esp_efuse_read_field_blob(ESP_EFUSE_MAC_EXT, &mac[6], ESP_MAC_ADDRESS_LEN * 8 - size_bits);
if (err != ESP_OK) {
ESP_LOGE(TAG, "Reading MAC_EXT failed, error=%d", err);
return err;
}
#endif