############################################################################### # # IAR ELF Linker V8.32.1.169/W32 for ARM 23/Mar/2026 15:04:51 # Copyright 2007-2018 IAR Systems AB. # # Output file = C:\Users\13232\Desktop\代码练习\iar\Debug\Exe\iar.out # Map file = C:\Users\13232\Desktop\代码练习\iar\Debug\List\iar.map # Command line = # -f C:\Users\13232\AppData\Local\Temp\EW4C13.tmp # (C:\Users\13232\Desktop\代码练习\iar\Debug\Obj\main.o # C:\Users\13232\Desktop\代码练习\iar\Debug\Obj\test.o # --no_out_extension -o # C:\Users\13232\Desktop\代码练习\iar\Debug\Exe\iar.out --redirect # _Printf=_PrintfFullNoMb --redirect _Scanf=_ScanfFullNoMb --map # C:\Users\13232\Desktop\代码练习\iar\Debug\List\iar.map --log # unused_fragments,call_graph --log_file # C:\Users\13232\Desktop\代码练习\iar\Debug\List\iar.log --config # "F:\anzhuangbao\IAR\IAR Systems\Embedded Workbench # 8.2\arm\CONFIG\generic_cortex.icf" --semihosting --entry # __iar_program_start --vfe --text_out locale) # ############################################################################### ******************************************************************************* *** RUNTIME MODEL ATTRIBUTES *** CppFlavor = * __SystemLibrary = DLib __dlib_version = 6 ******************************************************************************* *** HEAP SELECTION *** The basic heap was selected because no calls to memory allocation functions were found in the application outside of system library functions, and there are calls to deallocation functions in the application. ******************************************************************************* *** PLACEMENT SUMMARY *** "A0": place at 0x0 { ro section .intvec }; "P1": place in [from 0x0 to 0x7'ffff] { ro }; define block CSTACK with size = 1K, alignment = 8 { }; define block PROC_STACK with size = 0M, alignment = 8 { }; define block HEAP with size = 2K, alignment = 8 { }; "P2": place in [from 0x2000'0000 to 0x2000'ffff] { rw, block CSTACK, block PROC_STACK, block HEAP }; initialize by copy { rw }; Section Kind Address Size Object ------- ---- ------- ---- ------ "A0": 0x40 .intvec ro code 0x0 0x40 vector_table_M.o [4] - 0x40 0x40 "P1": 0x1dd8 .text ro code 0x40 0xdf2 xprintffull_nomb.o [2] .text ro code 0xe32 0x2 vector_table_M.o [4] .text ro code 0xe34 0x16 strchr.o [4] .text ro code 0xe4c 0x40 xfail_s.o [2] .text ro code 0xe8c 0x36 strlen.o [4] .text ro code 0xec4 0x58 memchr.o [4] .text ro code 0xf1c 0x230 I64DivMod.o [4] .text ro code 0x114c 0x1a2 DblMul.o [3] .text ro code 0x12f0 0x76 ABImemcpy_unaligned.o [4] .text ro code 0x1368 0x70 frexp.o [3] .text ro code 0x13d8 0x2e DblCmpLe.o [3] .text ro code 0x1408 0x2e DblCmpGe.o [3] .text ro code 0x1438 0x13a ldexp.o [3] .text ro code 0x1574 0x3a DblToS32.o [3] .text ro code 0x15b0 0x22 S32ToDbl.o [3] .text ro code 0x15d4 0xe2 DblSub.o [3] .text ro code 0x16b8 0x246 DblDiv.o [3] .text ro code 0x1900 0x28 DblToU32.o [3] .text ro code 0x1928 0x1a U32ToDbl.o [3] .text ro code 0x1942 0x6 abort.o [2] .text ro code 0x1948 0x2 I64DivZer.o [4] .text ro code 0x194c 0x16a DblAdd.o [3] .text ro code 0x1ab8 0x14 exit.o [5] .text ro code 0x1acc 0x80 iarttio.o [5] .text ro code 0x1b4c 0x3c XShttio.o [2] .text ro code 0x1b88 0x50 test.o [1] .text ro code 0x1bd8 0x28 printf.o [2] .text ro code 0x1c00 0x46 main.o [1] .text ro code 0x1c46 0x38 packbits_init_single.o [4] .text ro code 0x1c80 0x28 data_init.o [4] .text ro code 0x1ca8 0x22 iarwrite.o [5] .iar.init_table const 0x1ccc 0x10 - Linker created - .text ro code 0x1cdc 0x20 putchar.o [2] .text ro code 0x1cfc 0x10 write.o [5] .text ro code 0x1d0c 0x1e dwrite.o [5] .text ro code 0x1d2a 0x20 iarwstd.o [5] .text ro code 0x1d4c 0x1e cmain.o [4] .text ro code 0x1d6a 0x4 low_level_init.o [2] .text ro code 0x1d6e 0x4 exit.o [2] .text ro code 0x1d74 0xa cexit.o [4] .rodata const 0x1d80 0x1c test.o [1] .rodata const 0x1d9c 0x1c test.o [1] .rodata const 0x1db8 0x18 test.o [1] .text ro code 0x1dd0 0x16 xprout.o [2] .rodata const 0x1de8 0x10 test.o [1] .rodata const 0x1df8 0x10 test.o [1] .text ro code 0x1e08 0xc cstartup_M.o [4] .rodata const 0x1e14 0x0 packbits_init_single.o [4] Initializer bytes const 0x1e14 0x4 <for P2-1> - 0x1e18 0x1dd8 "P2", part 1 of 2: 0xd P2-1 0x2000'0000 0xd <Init block> .data inited 0x2000'0000 0x8 XShttio.o [2] .bss inited 0x2000'0008 0x4 xfail_s.o [2] .bss inited 0x2000'000c 0x1 XShttio.o [2] - 0x2000'000d 0xd "P2", part 2 of 2: 0x400 CSTACK 0x2000'0010 0x400 <Block> CSTACK uninit 0x2000'0010 0x400 <Block tail> - 0x2000'0410 0x400 Unused ranges: From To Size ---- -- ---- 0x1e18 0x7'ffff 0x7'e1e8 0x2000'000d 0x2000'000f 0x3 0x2000'0410 0x2000'ffff 0xfbf0 ******************************************************************************* *** INIT TABLE *** Address Size ------- ---- Copy/packbits (__iar_packbits_init_single3) 1 source range, total size 0x4 (30% of destination): 0x1e14 0x4 1 destination range, total size 0xd: 0x2000'0000 0xd ******************************************************************************* *** MODULE SUMMARY *** Module ro code ro data rw data ------ ------- ------- ------- command line/config: ------------------------------------------------- Total: C:\Users\13232\Desktop\代码练习\iar\Debug\Obj: [1] main.o 70 test.o 80 112 ------------------------------------------------- Total: 150 112 dl7M_tln.a: [2] XShttio.o 60 3 9 abort.o 6 exit.o 4 low_level_init.o 4 printf.o 40 putchar.o 32 xfail_s.o 64 1 4 xprintffull_nomb.o 3 570 xprout.o 22 ------------------------------------------------- Total: 3 802 4 13 m7M_tl.a: [3] DblAdd.o 362 DblCmpGe.o 46 DblCmpLe.o 46 DblDiv.o 582 DblMul.o 418 DblSub.o 226 DblToS32.o 58 DblToU32.o 40 S32ToDbl.o 34 U32ToDbl.o 26 frexp.o 112 ldexp.o 314 ------------------------------------------------- Total: 2 264 rt7M_tl.a: [4] ABImemcpy_unaligned.o 118 I64DivMod.o 560 I64DivZer.o 2 cexit.o 10 cmain.o 30 cstartup_M.o 12 data_init.o 40 memchr.o 88 packbits_init_single.o 56 strchr.o 22 strlen.o 54 vector_table_M.o 66 ------------------------------------------------- Total: 1 058 shb_l.a: [5] dwrite.o 30 exit.o 20 iarttio.o 128 iarwrite.o 34 iarwstd.o 32 write.o 16 ------------------------------------------------- Total: 260 Gaps 32 6 Linker created 16 1 024 ----------------------------------------------------- Grand Total: 7 566 138 1 037 ******************************************************************************* *** ENTRY LIST *** Entry Address Size Type Object ----- ------- ---- ---- ------ .iar.init_table$$Base 0x1ccc -- Gb - Linker created - .iar.init_table$$Limit 0x1cdc -- Gb - Linker created - ?main 0x1d4d Code Gb cmain.o [4] CSTACK$$Base 0x2000'0010 -- Gb - Linker created - CSTACK$$Limit 0x2000'0410 -- Gb - Linker created - Delay_ms 0x1c01 0x1a Code Gb main.o [1] LoadInt 0x1ef 0x7a Code Lc xprintffull_nomb.o [2] Region$$Table$$Base 0x1ccc -- Gb - Linker created - Region$$Table$$Limit 0x1cdc -- Gb - Linker created - Test_CalcAdd 0x1b99 0x14 Code Gb test.o [1] Test_PrintInfo 0x1b89 0x10 Code Gb test.o [1] Test_SetLedStatus 0x1bad 0x18 Code Gb test.o [1] _GenldFullNoMb 0xb31 0x274 Code Lc xprintffull_nomb.o [2] _LdtobFullNoMb 0x72d 0x3d6 Code Lc xprintffull_nomb.o [2] _LitobFullNoMb 0x5dd 0x10a Code Lc xprintffull_nomb.o [2] _PrintfFullNoMb 0x41 0x19e Code Gb xprintffull_nomb.o [2] _Prout 0x1dd1 0x16 Code Gb xprout.o [2] _PutcharsFullNoMb 0xda5 0x2e Code Lc xprintffull_nomb.o [2] _PutfldFullNoMb 0x269 0x268 Code Lc xprintffull_nomb.o [2] _PuttxtFullNoMb 0x4d1 0x10c Code Lc xprintffull_nomb.o [2] __aeabi_cdcmple 0x13d9 Code Gb DblCmpLe.o [3] __aeabi_cdrcmple 0x1409 Code Gb DblCmpGe.o [3] __aeabi_d2iz 0x1575 Code Gb DblToS32.o [3] __aeabi_d2uiz 0x1901 Code Gb DblToU32.o [3] __aeabi_ddiv 0x16b9 Code Gb DblDiv.o [3] __aeabi_dmul 0x114d Code Gb DblMul.o [3] __aeabi_dsub 0x15d5 Code Gb DblSub.o [3] __aeabi_i2d 0x15b1 Code Gb S32ToDbl.o [3] __aeabi_ldiv0 0x1949 Code Gb I64DivZer.o [4] __aeabi_ui2d 0x1929 Code Gb U32ToDbl.o [3] __aeabi_uldivmod 0xf1d Code Gb I64DivMod.o [4] __cmain 0x1d4d Code Gb cmain.o [4] __dwrite 0x1d0d 0x1e Code Gb dwrite.o [5] __exit 0x1ab9 0x14 Code Gb exit.o [5] __iar_Fail_s 0xe4d 0x1c Code Gb xfail_s.o [2] __iar_Memchr 0xec5 Code Gb memchr.o [4] __iar_Strchr 0xe35 Code Gb strchr.o [4] __iar_close_ttio 0x1acd 0x2e Code Gb iarttio.o [5] __iar_dadd 0x15e5 Code Gb DblSub.o [3] __iar_data_init3 0x1c81 0x28 Code Gb data_init.o [4] __iar_dsub 0x194d Code Gb DblAdd.o [3] __iar_dsubStart 0x195f Code Gb DblAdd.o [3] __iar_frexp 0x1375 Code Gb frexp.o [3] __iar_frexp64 0x1369 Code Gb frexp.o [3] __iar_frexpl 0x1375 Code Gb frexp.o [3] __iar_get_ttio 0x1afd 0x4c Code Gb iarttio.o [5] __iar_ldexp64 0x1439 Code Gb ldexp.o [3] __iar_lookup_ttioh 0x1b7b 0x4 Code Gb XShttio.o [2] __iar_packbits_init_single3 0x1c47 0x38 Code Gb packbits_init_single.o [4] __iar_program_start 0x1e09 Code Gb cstartup_M.o [4] __iar_scalbln64 0x1439 Code Gb ldexp.o [3] __iar_scalbn64 0x1439 Code Gb ldexp.o [3] __iar_sh_stdout 0x1d2b 0x20 Code Gb iarwstd.o [5] __iar_sh_write 0x1ca9 0x22 Code Gb iarwrite.o [5] __iar_ttio_guard_lock 0x1b4d 0x1e Code Gb XShttio.o [2] __iar_ttio_guard_unlock 0x1b6b 0x10 Code Gb XShttio.o [2] __iar_ttio_handles 0x2000'0000 0x8 Data Lc XShttio.o [2] __iar_unaligned_memcpy 0x12f1 Code Gb ABImemcpy_unaligned.o [4] __iar_unaligned_memcpy4 0x1311 Code Gb ABImemcpy_unaligned.o [4] __iar_unaligned_memcpy8 0x1311 Code Gb ABImemcpy_unaligned.o [4] __low_level_init 0x1d6b 0x4 Code Gb low_level_init.o [2] __vector_table 0x0 Data Gb vector_table_M.o [4] __write 0x1cfd 0x10 Code Gb write.o [5] _call_main 0x1d59 Code Gb cmain.o [4] _exit 0x1d75 Code Gb cexit.o [4] _main 0x1d67 Code Gb cmain.o [4] abort 0x1943 0x6 Code Gb abort.o [2] exit 0x1d6f 0x4 Code Gb exit.o [2] frexp 0x1369 Code Gb frexp.o [3] frexpl 0x1369 Code Gb frexp.o [3] ldexp 0x1439 Code Gb ldexp.o [3] ldexpl 0x1439 Code Gb ldexp.o [3] main 0x1c1b 0x2c Code Gb main.o [1] memchr 0xec5 Code Gb memchr.o [4] printf 0x1bd9 0x28 Code Gb printf.o [2] putchar 0x1cdd 0x20 Code Gb putchar.o [2] scalbln 0x1439 Code Gb ldexp.o [3] scalblnl 0x1439 Code Gb ldexp.o [3] scalbn 0x1439 Code Gb ldexp.o [3] scalbnl 0x1439 Code Gb ldexp.o [3] scale 0x6e7 0x46 Code Lc xprintffull_nomb.o [2] sec_hand 0x2000'0008 0x4 Data Lc xfail_s.o [2] strchr 0xe35 Code Gb strchr.o [4] strlen 0xe8d Code Gb strlen.o [4] ttio_guard 0x2000'000c 0x1 Data Lc XShttio.o [2] [1] = C:\Users\13232\Desktop\代码练习\iar\Debug\Obj [2] = dl7M_tln.a [3] = m7M_tl.a [4] = rt7M_tl.a [5] = shb_l.a 7 566 bytes of readonly code memory 138 bytes of readonly data memory 1 037 bytes of readwrite data memory Errors: none Warnings: none这份文件是IAR ARM 链接器生成的链接映射文件(Map File),它详细记录了程序编译链接后,代码、数据在芯片存储中的分配情况。我会按文件的逻辑区块逐段解释核心内容(因内容过长,聚焦关键行,而非逐行逐字节):
一、头部信息区
# IAR ELF Linker V8.32.1.169/W32 for ARM 23/Mar/2026 15:04:51 # Copyright 2007-2018 IAR Systems AB. # # Output file = C:\Users\13232\Desktop\代码练习\iar\Debug\Exe\iar.out # Map file = C:\Users\13232\Desktop\代码练习\iar\Debug\List\iar.map # Command line = # -f C:\Users\13232\AppData\Local\Temp\EW4C13.tmp # (C:\Users\13232\Desktop\代码练习\iar\Debug\Obj\main.o # C:\Users\13232\Desktop\代码练习\iar\Debug\Obj\test.o # --no_out_extension -o # C:\Users\13232\Desktop\代码练习\iar\Debug\Exe\iar.out --redirect # _Printf=_PrintfFullNoMb --redirect _Scanf=_ScanfFullNoMb --map # C:\Users\13232\Desktop\代码练习\iar\Debug\List\iar.map --log # unused_fragments,call_graph --log_file # C:\Users\13232\Desktop\代码练习\iar\Debug\List\iar.log --config # "F:\anzhuangbao\IAR\IAR Systems\Embedded Workbench # 8.2\arm\CONFIG\generic_cortex.icf" --semihosting --entry # __iar_program_start --vfe --text_out locale)- 第一行:链接器版本(IAR ELF Linker V8.32.1)、运行环境(W32=32 位 Windows)、目标架构(ARM),以及链接时间(2026-03-23 15:04:51)。
- Copyright:IAR 版权声明。
- Output file:链接输出的可执行文件路径(
iar.out是 IAR 的目标文件格式)。 - Map file:当前这份映射文件的保存路径。
- Command line:链接器执行时的命令行参数:
main.o/test.o:参与链接的目标文件(你的业务代码编译后的文件)。--redirect _Printf=_PrintfFullNoMb:重定向 printf 函数到_PrintfFullNoMb(无多字节支持的完整版 printf)。--config generic_cortex.icf:指定链接配置文件(ICF 文件定义芯片的内存布局,如 Flash/RAM 地址范围)。--semihosting:启用半主机模式(通过调试器实现 PC 和开发板的输入输出交互)。--entry __iar_program_start:程序入口点(IAR 的启动函数,而非直接是 main)。
二、运行时模型属性(RUNTIME MODEL ATTRIBUTES)
*** RUNTIME MODEL ATTRIBUTES *** CppFlavor = * __SystemLibrary = DLib __dlib_version = 6CppFlavor = *:未启用 C++ 特性(* 表示通用)。__SystemLibrary = DLib:使用 IAR 的 DLib 运行时库(提供 printf/strlen 等基础函数)。__dlib_version = 6:DLib 库版本为 6。
三、堆选择(HEAP SELECTION)
*** HEAP SELECTION *** The basic heap was selected because no calls to memory allocation functions were found in the application outside of system library functions, and there are calls to deallocation functions in the application.- 链接器自动选择了基础堆:原因是你的代码中没有直接调用 malloc/free 等内存分配函数(仅系统库内部使用),但存在释放函数调用,因此启用最小化堆配置。
四、内存布局分配(PLACEMENT SUMMARY)
这是映射文件的核心,记录代码 / 数据在 Flash(0x0~0x7ffff)和 RAM(0x20000000~0x2000ffff)中的具体地址。
"A0": place at 0x0 { ro section .intvec }; // A0段:强制放在0x0地址,存放中断向量表(.intvec) "P1": place in [from 0x0 to 0x7'ffff] { ro }; // P1段:Flash区域(0x0~0x7FFFF),存放只读(ro)数据/代码 define block CSTACK with size = 1K, alignment = 8 { }; // 定义主栈(CSTACK):1KB大小,8字节对齐 define block PROC_STACK with size = 0M, alignment = 8 { }; // 进程栈:0大小(未使用) define block HEAP with size = 2K, alignment = 8 { }; // 堆:2KB大小 "P2": place in [from 0x2000'0000 to 0x2000'ffff] { rw, block CSTACK, block PROC_STACK, block HEAP }; // P2段:RAM区域,存放读写(rw)数据、栈、堆 initialize by copy { rw }; // 读写数据(rw)从Flash复制到RAM(嵌入式系统标准操作)子段详细分配(重点行解释)
"A0": 0x40 .intvec ro code 0x0 0x40 vector_table_M.o [4] // 中断向量表:从0x0开始,占用0x40字节(64字节),来自vector_table_M.o - 0x40 0x40 // A0段总大小0x40 "P1": 0x1dd8 .text ro code 0x40 0xdf2 xprintffull_nomb.o [2] // printf函数实现:从0x40开始,占用0xDF2字节(3570字节) .text ro code 0xe32 0x2 vector_table_M.o [4] // 向量表相关代码:0xE32地址,2字节 .text ro code 0xe34 0x16 strchr.o [4] // strchr函数:0xE34地址,22字节 ... .text ro code 0x1b88 0x50 test.o [1] // 你的test.o代码:0x1B88地址,80字节 .text ro code 0x1c00 0x46 main.o [1] // 你的main.o代码:0x1C00地址,70字节 .rodata const 0x1d80 0x1c test.o [1] // test.o中的只读常量:0x1D80地址,28字节 ... - 0x1e18 0x1dd8 // P1段总大小0x1DD8(7640字节) "P2", part 1 of 2: 0xd P2-1 0x2000'0000 0xd <Init block> // RAM初始化块:从0x20000000开始,9字节 .data inited 0x2000'0000 0x8 XShttio.o [2] // 已初始化数据:8字节 .bss inited 0x2000'0008 0x4 xfail_s.o [2] // BSS段(未初始化数据):4字节 ... "P2", part 2 of 2: 0x400 CSTACK 0x2000'0010 0x400 <Block> // 主栈:从0x20000010开始,0x400字节(1KB) CSTACK uninit 0x2000'0010 0x400 <Block tail> // 栈为未初始化数据未使用内存(Unused ranges)
From To Size ---- -- ---- 0x1e18 0x7'ffff 0x7'e1e8 // Flash剩余空间:约500KB 0x2000'000d 0x2000'000f 0x3 // RAM小间隙:3字节 0x2000'0410 0x2000'ffff 0xfbf0 // RAM剩余空间:约64KB- 显示 Flash/RAM 中未被使用的地址范围,可用于评估代码是否超出芯片内存容量。
五、初始化表(INIT TABLE)
*** INIT TABLE *** Address Size ------- ---- Copy/packbits (__iar_packbits_init_single3) 1 source range, total size 0x4 (30% of destination): 0x1e14 0x4 // Flash中的初始化数据源地址 1 destination range, total size 0xd: 0x2000'0000 0xd // RAM中的目标地址- 链接器记录了 “从 Flash 复制数据到 RAM” 的映射关系:将 Flash 0x1E14 地址开始的 4 字节数据,解压 / 复制到 RAM 0x20000000 开始的 13 字节区域(packbits 是压缩存储优化)。
六、模块汇总(MODULE SUMMARY)
按目标文件 / 库文件统计内存占用:
Module ro code ro data rw data ------ ------- ------- ------- C:\Users\13232\Desktop\代码练习\iar\Debug\Obj: [1] main.o 70 0 0 // main.o:只读代码70字节,无只读/读写数据 test.o 80 112 0 // test.o:只读代码80字节,只读数据112字节 ------------------------------------------------- Total: 150 112 0 // 你的业务代码总占用 dl7M_tln.a: [2] // DLib库(printf/字符串函数等) XShttio.o 60 3 9 ... Total: 3 802 4 13 m7M_tl.a: [3] // 浮点运算库 Total: 2 264 0 0 rt7M_tl.a: [4] // 运行时库(内存操作/启动代码等) Total: 1 058 0 0 shb_l.a: [5] // 半主机库(调试输出相关) Total: 260 0 0 Gaps 32 6 0 // 内存间隙(地址对齐导致的空闲) Linker created 16 1 024 // 链接器创建的段(如栈) ----------------------------------------------------- Grand Total: 7 566 138 1 037 // 全局总计ro code:只读代码(Flash 中);ro data:只读数据(Flash 中,如常量);rw data:读写数据(RAM 中,如全局变量)。
七、符号入口列表(ENTRY LIST)
记录所有全局符号(函数 / 变量)的地址和大小:
Entry Address Size Type Object ----- ------- ---- ---- ------ .iar.init_table$$Base 0x1ccc -- Gb - Linker created - // 初始化表起始地址 CSTACK$$Base 0x2000'0010 -- Gb - Linker created - // 栈起始地址 CSTACK$$Limit 0x2000'0410 -- Gb - Linker created - // 栈结束地址(栈大小=0x410-0x10=0x400=1KB) Delay_ms 0x1c01 0x1a Code Gb main.o [1] // Delay_ms函数:地址0x1C01,大小26字节 Test_CalcAdd 0x1b99 0x14 Code Gb test.o [1] // Test_CalcAdd函数:地址0x1B99,大小20字节 main 0x1c1b 0x2c Code Gb main.o [1] // main函数:地址0x1C1B,大小44字节 printf 0x1bd9 0x28 Code Gb printf.o [2] // printf函数:地址0x1BD9,大小40字节八、最终统计 & 结果
7 566 bytes of readonly code memory // 只读代码总大小:7566字节 138 bytes of readonly data memory // 只读数据总大小:138字节 1 037 bytes of readwrite data memory // 读写数据总大小:1037字节 Errors: none // 无链接错误 Warnings: none // 无链接警告总结
- 这份映射文件核心是内存分配:你的代码 / 库函数存放在 Flash(0x0~0x7FFFF),栈 / 堆 / 全局变量存放在 RAM(0x20000000~0x2000FFFF),符合 ARM Cortex-M 芯片的内存布局规则。
- 关键资源占用:业务代码(main.o+test.o)仅占 Flash 262 字节,大部分 Flash 占用来自 DLib 库(printf / 浮点函数);RAM 主要占用是 1KB 的栈(CSTACK)。
- 链接结果正常:无错误 / 警告,代码未超出芯片 Flash/RAM 容量(剩余大量空闲空间)。