在MCU中,BSS段和data段都占用SRAM空間,但它們的存儲方式和用途有所不同。?
BSS段
BSS段(Block Started by Symbol)用于存儲未初始化的全局變量和靜態變量。這些變量在程序啟動時會被清零,因此它們不占用Flash空間,只占用SRAM空間。在程序啟動時,啟動代碼會將對應的RAM區域清零?1。
Data段
Data段用于存儲已初始化的全局變量和靜態變量。這些變量在編譯時就已經被賦予了初始值,并且在程序運行過程中需要保留這些初始值。因此,data段既占用Flash空間(存儲初始值),也占用SRAM空間(在程序運行時從Flash復制到SRAM)?。
Flash和SRAM的區別
- ?Flash?:用于存儲程序代碼和只讀數據,具有掉電不丟失數據的特性,適合存儲程序代碼和常量數據。在程序運行時,代碼和數據會從Flash加載到SRAM中,以便處理器能夠快速訪問和執行?2。
- ?SRAM?:用于存儲程序運行時的數據和變量,訪問速度快但掉電后數據會丟失。BSS段和已初始化的data段的數據在程序運行時存儲在SRAM中?。