亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 16029 | 回復(fù): 0
打印 上一主題 下一主題

ADS 1.2 簡(jiǎn)單使用(轉(zhuǎn)載) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-21 08:41 |只看該作者 |倒序?yàn)g覽
ADS 1.2 簡(jiǎn)單使用(轉(zhuǎn)載)


一.ADS 1.2 簡(jiǎn)介
-------------------------------------------------------
 
    ARM ADS 全稱(chēng)為 ARM Developer Suite 。是 ARM 公司推出集成開(kāi)發(fā)工具,F(xiàn)在新版本已經(jīng)改名為RealView Developer Suite.簡(jiǎn)稱(chēng)RVDS .RVDS 2.2 就是MDK. 現(xiàn)在RVDS 4.0 采用Eclipse使用集成開(kāi)發(fā)環(huán)境。
 
  但是ADS 1.2 仍然是很多開(kāi)發(fā)人員喜歡用的裸機(jī)開(kāi)發(fā)工具,因?yàn)榘惭b后體積小,操作簡(jiǎn)單,因此還是很多人在用。
 
ADS的定位是是針對(duì)ARM的專(zhuān)用開(kāi)發(fā)工具.gcc以及使用gccIDE工具的定位有所不同.ADS只能使用自帶的標(biāo)準(zhǔn)C庫(kù)/C++庫(kù)來(lái)進(jìn)行開(kāi)發(fā).不能象GCC支持操作系統(tǒng)庫(kù).

 

ADS合適開(kāi)發(fā)和調(diào)試如下項(xiàng)目           無(wú)操作系統(tǒng)的C程序.這個(gè)相當(dāng)把ARM作為一個(gè)32單片機(jī)來(lái)使用.           底層程序.bootloader           能直接調(diào)試簡(jiǎn)單的操作系統(tǒng),uC-OS-II,ucLinux,Nuclues           驅(qū)動(dòng)程序和硬件的驗(yàn)證           比如LCD屏的調(diào)試,往往先從ADS程序開(kāi)始測(cè)試,一個(gè)新的ARM硬件被調(diào)試好往往也先用ADS去測(cè)試 
 
     因此ADS與gcc的應(yīng)用領(lǐng)域是有所差別的,ADS主要集中比較底層的程序.由于ADS能直接用C來(lái)控制硬件,也廣泛用驅(qū)動(dòng)的驗(yàn)證,硬件功能演示等作用. 
      在實(shí)際應(yīng)用開(kāi)發(fā)中,市面上最流行的手機(jī)方案是MTK,展訊的方案.他們的操作系統(tǒng)是一個(gè)嵌入式操作系統(tǒng)Nuclues,CPU的內(nèi)核采用ARM.
      因此,MTK方案的驅(qū)動(dòng)和內(nèi)核開(kāi)發(fā)環(huán)境就是ADS+Nuclues的庫(kù)為主.同時(shí)也用于應(yīng)用程序開(kāi)發(fā),但是他們手機(jī)界面程序(MMI)也能通VC++加模擬器的方法來(lái)調(diào)試.
   完整的ADS環(huán)境由命令行開(kāi)發(fā)工具, ARM 實(shí)時(shí)庫(kù), GUI 開(kāi)發(fā)環(huán)境 (Code Warrior 和 AXD) ,實(shí)用程序和支持軟件組成。 有了這些部件,用戶(hù)就可以為 ARM 系列的 RISC 處理器編寫(xiě)和調(diào)試自己的開(kāi)發(fā)應(yīng)用程序了。
 
 
 
二.ADS開(kāi)發(fā)流程
--------------------------------------------------------------------------
 
  ADS最后鏈接出來(lái)的是可執(zhí)行文件是AXF,它實(shí)際上是一個(gè)ELF的格式。因此ADS鏈接出來(lái)的程序跟LINUX的應(yīng)用程序結(jié)構(gòu)差不多,只在一些細(xì)微的段上有差別.
 
  AXF文件可以直接用ADS的調(diào)試器AXD進(jìn)行在線(xiàn)調(diào)試,(在線(xiàn)的意思即不斷電情況下,直接從PC下載,調(diào)式,運(yùn)行)。
 
  如果想燒錄到開(kāi)發(fā)板上,需要轉(zhuǎn)換成原始的bin文件。才能直接運(yùn)行。相對(duì)于ELF它有兩個(gè)變化。第一BIN只有基本的text/bss/data段,沒(méi)有調(diào)試信息。第二。因?yàn)閎in要下載到設(shè)備的。里面各段的地址是按相應(yīng)地址對(duì)齊燒錄的。因?yàn)閮啥沃g很可能補(bǔ)一些空間的0空間。
 
 
  ADS命令行工具有
       armcc.exe ARM C編譯器
       armasm.exe ARM 匯編編譯器
       armcpp.exe ARM C++編譯器
       armlink.exe ARM 鏈接接器把上述編譯目標(biāo)文件鏈接成成AXF
       armar.exe  ARM 靜態(tài)庫(kù)制作工具,類(lèi)似于
       fromElf.exe 把AXF 轉(zhuǎn)換成bin格式。
 
   ADS的IDE實(shí)際上也是調(diào)用這一些工具來(lái)編譯程序。如果你愿意,可以寫(xiě)腳本直接調(diào)用命令行工具來(lái)編譯。象MTK就是這樣做的,它們寫(xiě)了一個(gè)Makefile腳本來(lái)直接調(diào)用編譯器來(lái)編譯器---因?yàn)檫@個(gè)項(xiàng)目文件太多了。。
 
AXF分區(qū)命名
 
    一般的C程序?qū)τ诔绦蚍謪^(qū),一般采用TEXT/BSS/DATA這樣的分區(qū).Gcc 的編譯程序文件成功后,最后都會(huì)生一個(gè).outELF格式的可執(zhí)行文件,這個(gè)文件通常都包含三個(gè)段.text,.data.bss,運(yùn)行時(shí),會(huì)在進(jìn)程空間會(huì)生成.text,.data.bssstack,heap五個(gè)區(qū).  
  AXF對(duì)于不同程序的分區(qū)采用另外命名.GCC程序?qū)?yīng),ADS編寫(xiě)的程序也有兩種狀態(tài),一個(gè)保存狀態(tài).對(duì)于ELF可執(zhí)行文件,一種是運(yùn)行態(tài),對(duì)應(yīng)進(jìn)程空間分區(qū).
 
   RO段:ReadOnly段的意思,可執(zhí)行文件段,相當(dāng)于GCC的text和rodata段
   RW段:ReadWrite段,數(shù)據(jù)段,相當(dāng)于GCC中的Data段
   ZI段,ZeroInit段,未初始化數(shù)據(jù)段,相當(dāng)于GCC中的BSS段,而且ZI是RW的一部分。
 
   對(duì)于裸機(jī)程序,一般在鏈接時(shí)要指定 --ro-base,即RO段的起始地址,一般它就是程序最開(kāi)始段。
    因?yàn)镽O段包含數(shù)據(jù)和代碼,所以RO BASE不一定等于可執(zhí)行程序的入口.有時(shí)ADS里通常還要手工指定 Image Entry Point,它即可以等于或大于RO BASE的地址
 

 

ADS程序運(yùn)行中,可以用幾個(gè)特殊的變量把RO,RWZI段的地址打印出來(lái).

以下均是 unsigned char * 類(lèi)型,在用打印時(shí)需要強(qiáng)制轉(zhuǎn)入成16進(jìn)制的地址顯示(即用%x)

 

l         Image$$RO$$Base 表示RO段起始地址

l         Image$$RO$$Limit 表示RO段結(jié)束地址

l         Image$$RW$$Base表示RW段起始地址

l         Image$$RW$$Limit 表示RW段結(jié)束地址

l         Image$$ZI$$Base表示ZI段起始地址

l         Image$$ZI$$Limit 表示ZI段結(jié)束地址

Uart_Printf("\r\n<***********************************************>\r\n");
    Uart_Printf(" S3C6410 Test Program VER1.0\r\n");
    Uart_Printf(" Build time is: %s %s\r\n", __DATE__ , __TIME__ );
    Uart_SendString(" Mini6410 Andrew Huang \r\n");
    
    Uart_Printf( " Image$$RO$$Base = 0x%x\r\n", Image$$RO$$Base );
    Uart_Printf( " Image$$RO$$Limit = 0x%x\r\n", Image$$RO$$Limit );
    Uart_Printf( " Image$$RW$$Base = 0x%x\r\n", Image$$RW$$Base );
    Uart_Printf( " Image$$RW$$Limit = 0x%x\r\n", Image$$RW$$Limit );
    Uart_Printf( " Image$$ZI$$Base = 0x%x\r\n", Image$$ZI$$Base );
    Uart_Printf( " Image$$ZI$$Limit = 0x%x\r\n", Image$$ZI$$Limit );
    Uart_Printf("<***********************************************>\r\n");

 

復(fù)雜的分區(qū)

    簡(jiǎn)單的AXF的分區(qū),認(rèn)為程序只有一個(gè)RO段,一個(gè)RW段。但是在嵌入式程序,很多程序需要更為復(fù)雜的分區(qū),可能有好幾個(gè)RO分不在同地址。在GCC中,非常規(guī)的分段需要ld調(diào)用lds腳本來(lái)設(shè)定,在ADS中,需要調(diào)用scatter描述文件來(lái)設(shè)置.

  以下就是6410 test的scatter描述文件內(nèi)容

   可以看到除了傳統(tǒng)的RO,RW外,它還增加了IRAM和ITCM段.

DRAM 0x50200000
{
  CODE 0x50200000
  {
    startup.o (Init,+FIRST)
    scatter_load.o (+RO)
 
    * (+RO)
    * (+RW, +ZI)
  }
  IRAM 0x0c000400 0xc00   ;0x0c000000~0x0c0003ff : Exception vector area(Nand Booting)
  {
    ;dmc.o (+RO)
    ;dmc.o (+RW, +ZI)     ; all remaining data
  }
  ITCM 0x80000000 0x4000
  {
  ; dmc.o (+RO)
   dmc_library.o (+RO)
  }
  DTCM 0x80004000 0x4000
  {
  ; dmc.o (+RW, +ZI)
   dmc_library.o (+RW, +ZI)
  }  
}

 

三.ADS快速使用手冊(cè)

------------------------------------------------------------

一個(gè)IDE集成開(kāi)發(fā)環(huán)境最重要的操作無(wú)非如下向個(gè)幾操作
 
  1.新建一個(gè)項(xiàng)目
  2.向項(xiàng)目增加源碼
  3.切換輸出結(jié)果
  4.配置項(xiàng)目屬性
  5.構(gòu)造程序
  6.清除編譯結(jié)果(make clean)
  7.運(yùn)行.
  8.調(diào)試.
 
  下面我們來(lái)看下如何做如下操作,請(qǐng)初學(xué)者熟記幾個(gè)操作.
 
   1.新建一個(gè)項(xiàng)目
       主菜單 File->New,里面選擇ARM Executealbe Image,表示要?jiǎng)?chuàng)建一個(gè)axf項(xiàng)目
 

我們?cè)谶@里選擇ARM Executable Image,在Project name中輸入工程文件名,本為myled,點(diǎn)擊Location文本 Set按鈕,瀏覽選擇想要保存該工程的路徑(本例為D:\work),將這些設(shè)置好之后,點(diǎn)擊 ,即可創(chuàng)建一個(gè)新的名為 myled的工程。

 注意ADS對(duì)中文支持非常不好,強(qiáng)烈建議不在放在中文路徑下面

 

 
 

ADS的項(xiàng)目文件是 mcp.創(chuàng)建成功后會(huì)出現(xiàn)空項(xiàng)目窗口

 

 
  2.向項(xiàng)目增加源碼
     把源碼拷入項(xiàng)目目當(dāng),在項(xiàng)目窗按右鍵,選擇增加文件
   
 
3.切換構(gòu)造輸出選項(xiàng)
     ADS與一般開(kāi)發(fā)環(huán)境不一樣的,ADS的項(xiàng)目除了有Debug和Release輸出兩個(gè)選項(xiàng)之外,還多出了一DebugRel選項(xiàng),它與Debug的區(qū)別在,DebugRel只有一個(gè)基本的調(diào)試信息,體積小一點(diǎn),一般我們?cè)诰(xiàn)調(diào)試選擇DebugRel的構(gòu)造結(jié)果來(lái)調(diào)試
 
   切換的方法在項(xiàng)目窗口,右邊的下拉列表選擇相應(yīng)輸出選項(xiàng).
   
 
– DebugRel:使用該目標(biāo)選項(xiàng),在生成目標(biāo)的時(shí)候,會(huì)為每一個(gè)源文件生成調(diào)試信息。 
– Debug:使用該目標(biāo)選項(xiàng),在生成目標(biāo)的時(shí)候,會(huì)為每一個(gè)源代碼生成最完整的調(diào)試信息。 
– Release:使用該目標(biāo)選項(xiàng),在生成目標(biāo)的時(shí)候,不會(huì)生成任何調(diào)試信息。
 
4.配置項(xiàng)目屬性
      

一般缺省項(xiàng)目是不能直接來(lái)編譯的,往往需要對(duì)生成的目標(biāo)進(jìn)行配置,點(diǎn)擊主菜單Edit 菜單,選擇“DebugRelSetting…”(注意:這個(gè)選項(xiàng)會(huì)因?yàn)橛脩?hù)選擇的不同目標(biāo)而有所不同), 或者選擇項(xiàng)目窗口的配置按鈕,出現(xiàn)如圖所示的設(shè)置窗口。

 

基中關(guān)鍵幾個(gè)配置有

 1.ARM Assembler 的編譯選項(xiàng)    這里要選擇匯編編譯的指令集。不同CPU要選對(duì)類(lèi)型,如S3C2440要選ARM920T.ADS 1.2不支持S3C6410的ARM1172JZF-S的內(nèi)核,可以昨時(shí)用ARM920T或ARM112020E來(lái)代替

    還有字節(jié)序選擇小端字節(jié)序.

  

   

同理道理,如果你的項(xiàng)目包含C或C++的源碼,必須要配置ARM C Compiler選項(xiàng)/ARM C++ Compiler選項(xiàng).

 

2.ARM 鏈接選項(xiàng)

     這里L(fēng)inkType項(xiàng)目,如果Simple類(lèi)型(即標(biāo)準(zhǔn)只有一個(gè)RO,一個(gè)RW類(lèi)型),則需要配置RO_BASE即默認(rèn)的代碼段地址。RW段地址不填表示緊密排在RO段后面。

 

另外程序的入口地址可以單獨(dú)配置,不寫(xiě)表示與RO Base地址一致,

  

 

如果可以自己初始化啟動(dòng)的程序,一般最好指定是哪一個(gè)S中的哪一個(gè)段是作為入口。在layout頁(yè)標(biāo)簽里

如果選擇scatter 輸出類(lèi)型,必須要還選擇相應(yīng)的scatter文件路徑。

 

3.輸出 bin文件格式

       這要做兩步設(shè)置.首先設(shè)置Target Settings中的Post-linker為ARM FromElf

   

 
  然后在 ARM fromElf再設(shè)相應(yīng)的文件名
     
 
5.構(gòu)造程序
     選擇項(xiàng)目窗口的Make,或工具條上Make按鍵
    

 

6.清除編譯結(jié)果(make clean)

   選擇主菜單的project-->Remove Object Code.或用快捷鍵 Ctrl->-.

   強(qiáng)出對(duì)話(huà)框,選擇All Targets

 
 
7.8運(yùn)行和調(diào)試高度依賴(lài)于具體的調(diào)試器
 
  具體請(qǐng)看我的博文:
     ADS 下使用簡(jiǎn)易JTAG + H-Jtag調(diào)試程序  http://blog.chinaunix.net/u3/105675/showart_2388518.html
 
Windows下 基于ADS+J-Link 的ARM開(kāi)發(fā)環(huán)境搭建
 
用U-boot進(jìn)行裸機(jī)開(kāi)發(fā)


附件測(cè)試程序: mini2240led.zip   
 
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP