This commit is contained in:
J. Nick Koston 2025-07-02 08:35:42 -05:00
parent 6f05ee7427
commit bc9c4a8b8e
No known key found for this signature in database

View File

@ -48,6 +48,9 @@ SYMBOL_PATTERNS = {
"prvAcquireItemNoSplit",
"prvNotifyQueueSetContainer",
"ucStaticTimerQueueStorage",
"eTaskGetState",
"main_task",
"do_system_init_fn",
],
"xtensa": ["xt_", "_xt_", "xPortEnterCriticalTimeout"],
"heap": ["heap_", "multi_heap"],
@ -78,6 +81,11 @@ SYMBOL_PATTERNS = {
"raw_bind",
"icmp_send_response",
"sockets",
"icmp_dest_unreach",
"inet_chksum_pseudo",
"alloc_socket",
"done_socket",
"set_global_fd_sets",
],
"ipv6_stack": ["nd6_", "ip6_", "mld6_", "icmp6_", "icmp6_input"],
"wifi_stack": [
@ -113,7 +121,41 @@ SYMBOL_PATTERNS = {
"bluetooth": ["bt_", "ble_", "l2c_", "gatt_", "gap_", "hci_", "BT_init"],
"wifi_bt_coex": ["coex"],
"bluetooth_rom": ["r_ble", "r_lld", "r_llc", "r_llm"],
"bluedroid_bt": ["bluedroid", "btc_", "bta_", "btm_", "btu_"],
"bluedroid_bt": [
"bluedroid",
"btc_",
"bta_",
"btm_",
"btu_",
"BTM_",
"GATT",
"L2CA_",
"smp_",
"gatts_",
"attp_",
"l2cu_",
"l2cb",
"smp_cb",
"BTA_GATTC_",
"SMP_",
"BTU_",
"BTA_Dm",
"GAP_Ble",
"BT_tx_if",
"host_recv_pkt_cb",
"saved_local_oob_data",
"string_to_bdaddr",
"string_is_bdaddr",
"CalConnectParamTimeout",
"transmit_fragment",
"transmit_data",
"event_command_ready",
"read_command_complete_header",
"parse_read_local_extended_features_response",
"parse_read_local_version_info_response",
"should_request_high",
"btdm_wakeup_request",
],
"crypto_math": [
"ecp_",
"bignum_",
@ -127,6 +169,17 @@ SYMBOL_PATTERNS = {
"__mdiff",
"__lshift",
"__mprec_tens",
"ECC_",
"multiprecision_",
"mix_sub_columns",
"sbox",
"gfm2_sbox",
"gfm3_sbox",
"curve_p256",
"curve",
"p_256_init_curve",
"shift_sub_rows",
"rshift",
],
"hw_crypto": ["esp_aes", "esp_sha", "esp_rsa", "esp_bignum", "esp_mpi"],
"libc": [
@ -149,6 +202,30 @@ SYMBOL_PATTERNS = {
"_reclaim_reent",
"_open_r",
"strncpy",
"_strtod_l",
"__gethex",
"__hexnan",
"_setenv_r",
"_tzset_unlocked_r",
"__tzcalc_limits",
"select",
"scalbnf",
"strtof",
"strtof_l",
"__d2b",
"__b2d",
"__s2b",
"_Balloc",
"__multadd",
"__lo0bits",
"__atexit0",
"__smakebuf_r",
"__swhatbuf_r",
"_sungetc_r",
"_close_r",
"_link_r",
"_unsetenv_r",
"_rename_r",
],
"string_ops": ["strcmp", "strncmp", "strchr", "strstr", "strtok", "strdup"],
"memory_alloc": ["malloc", "calloc", "realloc", "free", "_sbrk"],
@ -205,6 +282,22 @@ SYMBOL_PATTERNS = {
"txiq_cal_init",
"pwdet_sar",
"pwdet_sar2_init",
"ram_iq_est_enable",
"ram_rfpll_set_freq",
"ant_wifirx_cfg",
"ant_btrx_cfg",
"force_txrxoff",
"force_txrx_off",
"tx_paon_set",
"opt_11b_resart",
"rfpll_1p2_opt",
"ram_dc_iq_est",
"ram_start_tx_tone",
"ram_en_pwdet",
"ram_cbw2040_cfg",
"rxdc_est_min",
"i2cmst_reg_init",
"temprature_sens_read",
],
"wifi_phy_pp": ["pp_", "ppT", "ppR", "ppP", "ppInstall", "ppCalTxAMPDULength"],
"wifi_lmac": ["lmac"],
@ -260,6 +353,13 @@ SYMBOL_PATTERNS = {
"phy_rtl",
"phy_dp83",
"phy_ksz",
"lan87xx_",
"rtl8201_",
"ip101_",
"ksz80xx_",
"jl1101_",
"dp83848_",
"eth_on_state_changed",
],
"threading": ["pthread_", "thread_", "_task_"],
"pthread": ["pthread"],
@ -451,7 +551,59 @@ SYMBOL_PATTERNS = {
"raw_api": ["raw_bind", "raw_connect"],
"checksum": ["process_checksum"],
"entry_management": ["add_entry"],
"esp_ota": ["esp_ota", "ota_"],
"esp_ota": ["esp_ota", "ota_", "read_otadata"],
"http_server": [
"httpd_",
"parse_url_char",
"cb_headers_complete",
"delete_entry",
"validate_structure",
"config_save",
"config_new",
"verify_url",
"cb_url",
],
"misc_system": [
"alarm_cbs",
"start_up",
"tokens",
"unhex",
"osi_funcs_ro",
"enum_function",
"fragment_and_dispatch",
"alarm_set",
"osi_alarm_new",
"config_set_string",
"config_update_newest_section",
"config_remove_key",
"method_strings",
"interop_match",
"interop_database",
"__state_table",
"__action_table",
"s_stub_table",
"s_context",
"s_mmu_ctx",
"s_get_bus_mask",
"hli_queue_put",
"list_remove",
"list_delete",
"lock_acquire_generic",
"is_vect_desc_usable",
"io_mode_str",
"__c$20233",
],
"bluetooth_ll": [
"lld_pdu_",
"ld_acl_",
"lld_stop_ind_handler",
"lld_evt_winsize_change",
"config_lld_evt_funcs_reset",
"config_lld_funcs_reset",
"config_llm_funcs_reset",
"llm_set_long_adv_data",
"lld_retry_tx_prog",
],
}
# Demangled patterns: patterns found in demangled C++ names
@ -849,59 +1001,63 @@ class MemoryAnalyzer:
# Build report
lines = []
lines.append("=" * 108)
lines.append(" Component Memory Analysis")
lines.append("=" * 108)
# Calculate the exact table width
table_width = 29 + 3 + 13 + 3 + 13 + 3 + 11 + 3 + 11 + 3 + 14 + 3 + 11
lines.append("=" * table_width)
lines.append("Component Memory Analysis".center(table_width))
lines.append("=" * table_width)
lines.append("")
# Main table
# Main table - fixed column widths
lines.append(
f"{'Component':<28} | {'Flash (text)':>12} | {'Flash (data)':>12} | {'RAM (data)':>10} | {'RAM (bss)':>10} | {'Total Flash':>12} | {'Total RAM':>10}"
f"{'Component':<29} | {'Flash (text)':>13} | {'Flash (data)':>13} | {'RAM (data)':>11} | {'RAM (bss)':>11} | {'Total Flash':>14} | {'Total RAM':>11}"
)
lines.append(
"-" * 28
"-" * 29
+ "-+-"
+ "-" * 12
+ "-" * 13
+ "-+-"
+ "-" * 12
+ "-" * 13
+ "-+-"
+ "-" * 10
+ "-" * 11
+ "-+-"
+ "-" * 10
+ "-" * 11
+ "-+-"
+ "-" * 12
+ "-" * 14
+ "-+-"
+ "-" * 10
+ "-" * 11
)
for name, mem in components:
if mem.flash_total > 0 or mem.ram_total > 0:
flash_rodata = mem.rodata_size + mem.data_size
lines.append(
f"{name:<28} | {mem.text_size:>11,} B | {flash_rodata:>11,} B | "
f"{mem.data_size:>9,} B | {mem.bss_size:>9,} B | "
f"{mem.flash_total:>11,} B | {mem.ram_total:>9,} B"
f"{name:<29} | {mem.text_size:>12,} B | {flash_rodata:>12,} B | "
f"{mem.data_size:>10,} B | {mem.bss_size:>10,} B | "
f"{mem.flash_total:>13,} B | {mem.ram_total:>10,} B"
)
lines.append(
"-" * 28
"-" * 29
+ "-+-"
+ "-" * 12
+ "-" * 13
+ "-+-"
+ "-" * 12
+ "-" * 13
+ "-+-"
+ "-" * 10
+ "-" * 11
+ "-+-"
+ "-" * 10
+ "-" * 11
+ "-+-"
+ "-" * 12
+ "-" * 14
+ "-+-"
+ "-" * 10
+ "-" * 11
)
lines.append(
f"{'TOTAL':<28} | {' ':>11} | {' ':>11} | "
f"{' ':>9} | {' ':>9} | "
f"{total_flash:>11,} B | {total_ram:>9,} B"
f"{'TOTAL':<29} | {' ':>12} | {' ':>12} | "
f"{' ':>10} | {' ':>10} | "
f"{total_flash:>13,} B | {total_ram:>10,} B"
)
# Top consumers
@ -930,7 +1086,7 @@ class MemoryAnalyzer:
lines.append(
"Note: This analysis covers symbols in the ELF file. Some runtime allocations may not be included."
)
lines.append("=" * 108)
lines.append("=" * table_width)
return "\n".join(lines)