運行添加Flash讀寫前的程序,通過.map文件查看程序占用了Flash多少空間。
=========================================================
Memory Map of the image //存儲分布映像
Image Entry point : 0x08000131
/*程序ROM加載空間*/
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000017a8, Max: 0x00080000, ABSOLUTE)
/*程序ROM執行空間*/
Execution Region ER_IROM1 (Base: 0x08000000, Size: 0x0000177c, Max: 0x00080000, ABSOLUTE)
/*地址分布列表*/
Base Addr Size Type Attr Idx E Section Name Object
0x08000000 0x00000130 Data RO 3 RESET startup_stm32f10x_hd.o
0x08000130 0x00000000 Code RO 479 * .ARM.Collect$$$$00000000 mc_w.l(entry.o)
0x08000130 0x00000004 Code RO 742 .ARM.Collect$$$$00000001 mc_w.l(entry2.o)
/*...此處省略大部分內容*/
0x0800173a 0x00000022 Code RO 490 i._printf_core mc_w.l(printfb.o)
0x0800175c 0x00000020 Data RO 782 Region$$Table anon$$obj.o
加載空間:CODE + RO(const變量或字符串常量)+ RW-data已初始化的數據
執行空間:CODE + RO
因為上電后,RW-data已初始化的數據被從Flash搬運到了RAM,所以執行空間會略小
以加載空間為依據,Size: 0x000017a8 = 6056B < 6KB ,查閱《STM32F10xxx閃存編程參考手冊》可知,F103RCT6的Flash為256KB,屬於大容量產品,其Flash的一頁大小為2K,所以僅使用前3頁,頁0~頁2,便可以存儲程序,剩余的部分,即頁3~頁127,可以用於其他用途。