Scatter檔案分析

2021-09-21 12:53:32 字數 978 閱讀 2532

轉《

scatter基本點:

編譯後輸出的映像檔案中各段是首尾相連的,中間沒有空閒的區域,它們的先後關係是根據鏈結時引數的先後次序決定的 armlinker -file1.o file2.o ……

scatter用於將編譯後的映像檔案中的特定段載入到多個分散的指定記憶體區域

有2類域region:執行域(execution region,一般是ram區域)和載入域(load region,一般是rom區域)

載入域:就是編譯之後得到的二進位制檔案燒寫到rom中的這一段區域,所有的**ro、預定義變數rw、堆疊之類清不清空無關緊要的大片記憶體區域zi,都包括在其中

執行域:就是把載入域進行『解壓縮』後的樣子。比如:ro沒有變動還是在rom中,rw被移到了sram中,而zi被放置在sdram中

scatter本身並不能對映像實現『解壓縮』,編譯器讀入scatter檔案之後會根據其中的各種位址生成啟動**,實現對映像的載入,而這一段**就是* (inroot$$sections)它是__main()的一部分。這就是在彙編啟動**的最後跳轉到__main() 而不是跳向main()的原因之一。

起始位址與載入域重合的執行域成為root region,* (inrootsec

tion

s)必須

放在這個

執行域中

,否則鏈

接的時候

會報錯。

∗(+r

o)包含

了∗(i

nroo

tsections)必須放在這個執行域中,否則鏈結的時候會報錯。*(+ro)包含了* (inroot

sectio

ns)必

須放在這

個執行域

中,否則

鏈結的時

候會報錯

。∗(+

ro)包

含了∗(

inro

otsections),所以如果在root region中用到了*(+ro)可以不再指定*

Scatter檔案編寫

乙個映像檔案中可以包含多個域 region 在載入和執行映像檔案時,每個域可以有不同的位址。每個域可以包括多達3個輸出段,每個輸出段是由若干個具有相同屬性的輸入段組成。這樣在生成映像檔案時,arm鏈結器就需要知道下述兩個資訊。根據映像檔案中位址對映的複雜程度,有兩種方法來告訴arm鏈結器這些相關的資...

matplotlib之scatter自動繪製散點

1 使用matplotlib.pyplot.scatter繪製散點 2import matplotlib.pyplot as plt 3from pylab import mpl45 設定預設字型,解決中文顯示亂碼問題 6 mpl.rcparams font.sans serif simhei 78...

scatter和make blobs方法的學習

scatter x,y,s none,c none,marker none,cmap none,edgecolors none,x,y 形如shape n,輸入資料 s size,標量或形如shape n,可選,預設 20 c color,色彩或顏色序列,引數 b blue,y yellow,g g...