成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MTK平臺中關于Scatter文件學習教程

移動開發
MTK平臺中關于Scatter文件學習是本文要介紹的內容,主要是來了解MTK平臺中Scatter文件的應用,具體內容來看本文詳解。

MTK平臺中關于Scatter文件學習是本文要介紹的內容,主要是來了解MTK平臺Scatter文件的應用,具體內容來看本文詳解。

分散加載(scatterloading)是ARM連接接器提供的一個機制,該機制可以把一個可執行映像文件(即Bin文件)分割放置到內存中不同的獨立段。

映像(Image)文件有兩個視圖:加載視圖(Loadview)和執行視圖(executionview)。在下載的時候Imageregions被放置在memorymap當中,而在執行Image前,或許你需要將一些regions放置在它們執行時的地址上,并建立起ZIregions。例如,你初始化的RW數據需要從它在下載時的在ROM中的地址處移動到執行時RAM的地址處。

scatter文件中可以為每一個代碼或數據段在裝載和執行時指定不同的存儲區域地址,

Scatlertoading的存儲區塊可以分成二種類型:

裝載區:當系統啟動或加載時應用程序的存放區。

執行區:系統啟動后,應用程序進行執行和數據訪問的存儲器區域,系統在實時運行時可以有一個或多個執行區。

映像中所有的代碼和數據都有一個裝載地址和運行地址(二者可能相同也可能不同,視具體情況而定)。在系統啟動時,C函數庫中的__main初始化代碼會執行必要的復制及清零操作,使應用程序的相應代碼和數據段從裝載狀態轉入執行狀態。

MTK Scatter文件學習1 - 天花板 - 天花板的Blog
MTK Scatter文件學習1 - 天花板 - 天花板的Blog
MTK Scatter文件學習1 - 天花板 - 天花板的Blog

為什么需要Scatter文件:

制定存儲器映射(memorymap)的方法基本上有二種,一是在link時使用命令行選項,并在程序執行前利用linkerpre-definesymbol使用匯編語言制定section的段初始化,二是使用scatterfile,即采用“分散加載機制”。以上二種方法依應用程序的復雜度而定,一針對簡單的情況,二針對復雜的情況。

手機屬于復雜的情況,必須使用scatterfile。

Scatter文件語法:

scatter文件是一個簡單的文本文件,包含一些簡單的語法(分號后面的內容是注釋):

My_Region0x00000x1000;區域名稱區起始地址區長度

  1. {  
  2. thecontextofregion;區內容  

每個區由一個頭標題開始定義,頭中至少包含區的名字和起始地址,另外還有最大長度和其他一些屬性選項。區定義的內容包括在緊接的一對花括號內,依賴于具體的系統情況。

一個加載區必須至少含有一個執行段;實踐中通常有多個執行段。

一個執行區必須至少含有一個代碼或數據段;這些通常來自源文件或庫函數等的目標文件;通配符號*可以匹配指定屬性項中所有沒有在文件中定義的余下部分。

簡單分散加載樣例

圖8所示樣例中,只有一個加載區,包含了所有的代碼和數據,起始地址為0。這個加載區一共對應兩個執行段。一個包含所有的RO代碼和數據,執行地址與裝載地址相同;同時另一個起始地址為0x10000的執行段,包含所有的RW和ZI數據。這樣當系統開始啟動時,從第一個執行段開始運行(執行地址等于裝載地址),在執行過程中,有一段初始化代碼會把裝載區中的一部分代碼轉移到另外的執行段中。

下面是這個scatter描述文件,該文件描述了上述存儲器映射方式。

  1. LOAD_ROM0x4000  
  2. {  
  3. EXE_ROM0x00000x4000  
  4. {  
  5. *〈+RO〉;所有代碼、常量數據  
  6. }  
  7. RAM0x100000x8000  
  8. {  
  9. *〈+RW,+ZI〉;所有非常量數據  
  10. }  
  11. } 

在分散文件中放置對象

在大多數應用中,并不是像前例那樣,簡單地把所有屬性都放在一起,用戶需要控制特定代碼和數據段的放置位置。這可以通過在scatter文件中對單個目標文件進行定義實現,而不是只簡單地依靠通配符。

為了覆蓋標準的連接器布局規則,我們可以使用+FIRST和+LAST分散加載指令。典型的例子是在執行段的開始處放置中斷向量表格:

  1. LOAD_ROM0x00000x4000  
  2. {  
  3. EXEC_ROM0x00000x4000  
  4. {  
  5. vectors.o〈Vect,+FIRST〉  
  6. *〈+RO〉  
  7. }  
  8. ;moreexecregions...  
  9. } 

在這個scatter文件中,保證了vextors.o中的Vect域被放置于地址0x0000。

一個實際的Scatter.txt詳細分析

ROM0x000x800000;名字為ROM的區,起始地址是0x00,區的長度是0x800000。區的名字是唯一的;MTK平臺對第一個區的大小限制是8Mbytes

{

ROM0x00FIXED0x3D8000;名稱為ROM的執行段,該名稱在所有執行段中是唯一的。段的起始地址是0x00,長度固定為0x3D8000.

{

bootarm.obj(C$$code,+First);First指把代碼放到本段的起始地址處,C$$code的含義可能是一個塊的名字.

*.obj(LEADING_PART,+First);含義應該是:把后綴名為.obj的文件的LEADING_PART塊放到緊挨前面(即bootarm.obj的結尾處)的地方。

*.l(+RO);所有以.l為后綴的文件的可執行代碼、常量放置在這里。

*bmt.lib(+RO);所有以bmt.lib結尾的文件的可執行代碼、常量放置在這里。

  1. *adaptation.lib(+RO)  
  2. *config.lib(+RO)  
  3. *custom.lib(+RO)  
  4. *drv.lib(+RO)  
  5. *fdm.lib(+RO)  
  6. *init.lib(+RO)  
  7. *kal.lib(+RO)  
  8. *l1_classb.lib(+RO)  
  9. *nucleus.lib(+RO)  
  10. *nucleus_int.lib(+RO)  
  11. *nucleus_debug.lib(+RO)  
  12. *stacklib.lib(+RO)  
  13. *sst.lib(+RO)  
  14. *tst.lib(+RO)  
  15. *mtkapp.lib(+RO)  
  16. *usb.lib(+RO)  
  17. ;*j2me_hi.lib(+RO);這行語句被注釋了,無效  
  18. *nvram.lib(+RO)  
  19. *nvram_sec.lib(+RO)  
  20. *ft.lib(+RO)  
  21. *irda.lib(+RO)  
  22. *fs.lib(+RO)  
  23. *media.lib(+RO)  
  24. *media_sec.lib(+RO)  
  25. *dsp_ram.lib(+RO)  
  26. ;*plutommi.lib(+RO)  
  27. ScreenRotation.obj(+RO)  
  28. wingui.obj(+RO)  
  29. wgui_categories.obj(+RO)  
  30. ;*media.lib(+RO)  
  31. png_decoder_sw.obj(PRIMARY_CODE);png_decoder_sw.obj文件中的PRIMARY_CODE塊(可以是代碼、數據)放在這里。  
  32. ;*mmiresource.lib(+RO)  
  33. custNFBProgressImg.obj(+RO)  
  34. gui_wrapper.obj(+RO)  
  35. }  
  36. DYNAMIC_CODE20xA0018800OVERLAY0x2800;對照MT6228芯片的地址空間表,DYNAMIC_CODE2塊將放在TCM中。  
  37. {  
  38. *(G3D_DYNAMIC_CODE,G3D_DYNAMIC_ZI);塊G3D_DYNAMIC_CODE、G3D_DYNAMIC_ZI包含的代碼、數據都放這。  
  39. }  
  40. DYNAMIC_CODE10xA001B000OVERLAY0x5000  
  41. {  
  42. *(AMR515_DYNAMIC_CODE,AMR515_DYNAMIC_ZI)  
  43. }  
  44. DYNAMIC_CODE30xA001B000OVERLAY0x5000  
  45. {  
  46. *(CTM_DYNAMIC_CODE,CTM_DYNAMIC_ZI)  
  47. }  
  48. DYNAMIC_CODE40xA001B000OVERLAY0x5000  
  49. {  
  50. *(G729_DYNAMIC_CODE,G729_DYNAMIC_ZI)  
  51. }  
  52. DYNAMIC_CODE50xA001B000OVERLAY0x5000  
  53. {  
  54. *(SBC_DYNAMIC_CODE,SBC_DYNAMIC_ZI)  
  55. }  
  56. PRIMARY_EXTSRAM0x400000FIXED0x400000;段的名字是PRIMARY_EXTSRAM,起始地址是0x400000,長度固定為0x400000。  
  57. {  
  58. *.l(+RW)  
  59. *bmt.lib(+RW)  
  60. *adaptation.lib(+RW);所有以adaptation.lib結尾的文件的可讀寫數據放到這里。  
  61. *config.lib(+RW)  
  62. *custom.lib(+RW)  
  63. *drv.lib(+RW)  
  64. *fdm.lib(+RW)  
  65. *init.lib(+RW)  
  66. *kal.lib(+RW)  
  67. *l1_classb.lib(+RW)  
  68. *nucleus.lib(+RW)  
  69. *nucleus_int.lib(+RW)  
  70. *nucleus_debug.lib(+RW)  
  71. *stacklib.lib(+RW)  
  72. *sst.lib(+RW)  
  73. *tst.lib(+RW)  
  74. *mtkapp.lib(+RW)  
  75. *usb.lib(+RW)  
  76. *j2me_hi.lib(+RW)  
  77. *nvram.lib(+RW)  
  78. *nvram_sec.lib(+RW)  
  79. *ft.lib(+RW)  
  80. *irda.lib(+RW)  
  81. *fs.lib(+RW)  
  82. *media.lib(+RW)  
  83. *media_sec.lib(+RW)  
  84. *dsp_ram.lib(+RW)  
  85. ;*plutommi.lib(+RW);代碼被注釋了,無效  
  86. ScreenRotation.obj(+RW)  
  87. wingui.obj(+RW)  
  88. wgui_categories.obj(+RW)  
  89. ;*mmiresource.lib(+RW)  
  90. custNFBProgressImg.obj(+RW)  
  91. gui_wrapper.obj(+RW)  
  92. ;ZIchunk  
  93. *(+ZI);其他所有文件中的數據都放這,且開機時會把這些數據清零。  

小結:MTK平臺中關于Scatter文件學習教程的內容介紹完了,希望通過MTK平臺Scatter文件的應用內容的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-08-31 10:20:26

MTK驅動開發

2011-08-30 16:22:00

MTK開發環境

2011-09-13 15:26:25

MTK環境搭建

2011-09-06 10:24:11

2011-08-31 10:23:40

MTK平臺列表控件

2011-09-06 13:58:28

MTK系統

2011-08-31 09:52:55

MTKMT6235驅動

2011-08-30 16:55:31

MTK開發編譯

2011-08-30 16:02:10

MTK開發環境

2011-08-31 10:37:06

MTK開發入門

2011-09-06 09:48:41

MTK平臺

2011-09-05 15:09:06

Android平臺Phonegap

2011-08-31 10:51:39

MTKAndroid 開發

2011-08-30 18:01:20

2011-08-23 17:06:03

2011-09-06 09:14:27

MTK平臺軟件

2010-07-22 08:42:04

Eclipse平臺中P

2014-05-09 15:43:39

移動安全Android安全

2010-05-04 13:41:04

Unix平臺

2011-08-31 10:26:38

MTK驅動開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久成人精品视频 | 午夜激情在线 | 成人av鲁丝片一区二区小说 | xx性欧美肥妇精品久久久久久 | 99re66在线观看精品热 | 国产福利在线小视频 | www.伊人.com| 91久久精品日日躁夜夜躁国产 | 91久久精品国产91久久 | 日韩成人在线网址 | 亚洲成人精品久久久 | 亚洲黄色一级 | 日韩视频区 | 九九av| 日韩一区精品 | 国产一级毛片精品完整视频版 | 国产精品免费小视频 | 色呦呦在线 | 一级免费a | 男女午夜激情视频 | 中文字幕一区二区三区不卡 | 久久噜噜噜精品国产亚洲综合 | 久久精品91久久久久久再现 | 久久久精品国产 | 欧美成人一区二区三区 | 播放一级毛片 | 欧美日韩综合 | 日本不卡一区 | 国产 欧美 日韩 一区 | 天堂素人约啪 | 9久久 | 欧美激情久久久久久 | 国产精品区一区二 | 韩国av影院 | 午夜影院在线 | 伊人久久综合影院 | 亚洲国产精久久久久久久 | 久热伊人 | 国产视频一二三区 | 黄色片免费在线观看 | 日韩精品一区二区三区老鸭窝 |