大神們請(qǐng)問(wèn)?text ,data, bss, dec,hex這幾個(gè)數(shù)據(jù)分別代表什么?能指點(diǎn)一下嗎?
您好,text段是程序代碼段,它是由編譯器在編譯連接時(shí)自動(dòng)計(jì)算的,當(dāng)你在鏈接定位文件中將該符號(hào)放置在代碼段后,那么該符號(hào)表示的值就是代碼段大小,編譯連接時(shí),該符號(hào)所代表的值會(huì)自動(dòng)代入到源程序中。 data包含靜態(tài)初始化的數(shù)據(jù),所以有初值的全局變量和static變量在data區(qū)。bss是英文Block Started by Symbol的簡(jiǎn)稱,通常是指用來(lái)存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域,在程序載入時(shí)由內(nèi)核清0。 dec(decimal的縮寫(xiě),即十進(jìn)制數(shù))是text,data和bss的算術(shù)和。hex是指dec的十六進(jìn)制值。
張工你好,有個(gè)小問(wèn)題,data加上bss就是ram的使用大小嗎?如果我用到了3kb的ram,而MCU只有2kb的ram,那么放不下的1kb內(nèi)存MCU會(huì)怎樣處理呢?
應(yīng)該直接過(guò)不了編譯吧
我的問(wèn)題已經(jīng)解決了,好像是多出來(lái)的1kb會(huì)覆蓋掉前面的ram空間。我以前把變量放置在了data區(qū),我很多變量都是像函數(shù)一樣是固定不變的,比如lcd字庫(kù)。將這些變量放置在text區(qū)就行了。我很久都沒(méi)有搞單片機(jī)編程了,都忘了text,data,這些東西了?,F(xiàn)在看來(lái),ch32v003f4p6 20kb的Rom,加 2kb的Ram 對(duì)我這個(gè)項(xiàng)目完全夠用了,text用了10644byte data用了64byte bss用了360byte。這個(gè)mcu速度很快。