在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>嵌入式軟件開發(fā)之編譯器的缺省行為詳細(xì)分析

嵌入式軟件開發(fā)之編譯器的缺省行為詳細(xì)分析

2017-10-19 | rar | 0.6 MB | 次下載 | 1積分

資料介紹

 13.2 編譯器的缺省行為
  多數(shù)嵌入式應(yīng)用程序最初都是在原型環(huán)境下開發(fā)的。無(wú)論什么樣的原型仿真環(huán)境與最終產(chǎn)品環(huán)境都是有差異的。因此,考慮如何將嵌入式應(yīng)用程序從其所依賴的開發(fā)工具或調(diào)試環(huán)境中移植到在目標(biāo)硬件上獨(dú)立運(yùn)行是非常重要的。
  開始編寫嵌入式應(yīng)用程序時(shí),開發(fā)者可能并不清楚目標(biāo)硬件的具體規(guī)格。如,目標(biāo)系統(tǒng)使用了什么樣的外圍設(shè)備、存儲(chǔ)器映射情況甚至不能確定處理器的型號(hào)。
  為在了解這些詳細(xì)信息前能夠繼續(xù)軟件的開發(fā),RVCT工具提供了很多默認(rèn)的操作,使用戶能編譯和調(diào)試與目標(biāo)系統(tǒng)無(wú)關(guān)的應(yīng)用程序代碼。下面詳細(xì)介紹這些編譯選項(xiàng),只有深入了解這些編譯選項(xiàng)設(shè)置,才能使開發(fā)更順利的進(jìn)行。
  13.2.1 Semihosting
  1.Semihosting簡(jiǎn)介
  在RVCT C庫(kù)中,對(duì)某些ISO C功能的支持由主機(jī)調(diào)試環(huán)境提供。提供該功能的機(jī)制被稱為Semihostin[1]。大多數(shù)的ARM調(diào)試系統(tǒng)都支持Semihosting機(jī)制,如ReslView Debugger AXD等。
  調(diào)試系統(tǒng)提供這種機(jī)制是非常有用的,因?yàn)橛糜陂_發(fā)使用的硬件系統(tǒng)經(jīng)常沒(méi)有最終系統(tǒng)的所有輸入和輸出設(shè)備。在這種情況下,Semihosting可讓主機(jī)代替目標(biāo)系統(tǒng)提供這些設(shè)備的功能。舉例來(lái)說(shuō),此機(jī)制可以用于啟用C庫(kù)中的函數(shù)(例如,printf()和scanf())使用主機(jī)的屏幕和鍵盤,而不使用目標(biāo)系統(tǒng)的屏幕和鍵盤。
  半主機(jī)由一組已定義的SWI操作來(lái)實(shí)現(xiàn)。應(yīng)用程序調(diào)用相應(yīng)的SWI,然后由調(diào)試代理程序(Debug Agent)處理SWI異常。調(diào)試代理程序完成系統(tǒng)與主機(jī)之間的通信
  圖13.1顯示了Semihosting機(jī)制的處理過(guò)程。
  嵌入式軟件開發(fā)之編譯器的缺省行為詳細(xì)分析
  圖13.1 Semihosting機(jī)制的處理過(guò)程
  在很多情況下,Semihosting SWI由庫(kù)函數(shù)內(nèi)的代碼調(diào)用。應(yīng)用程序也可以直接調(diào)用。支持ARM C庫(kù)中Semihosting的詳細(xì)信息,請(qǐng)參閱ARM相關(guān)文檔。
  2.Semihosting軟件接口
  ARM和Thumb SWI指令包含一個(gè)軟中斷號(hào),該中斷號(hào)可以被應(yīng)用程序使用。此編號(hào)可以由系統(tǒng)中的SWI處理程序進(jìn)行解碼。有關(guān)SWI處理程序的詳細(xì)信息,請(qǐng)參閱本書中ARM異常處理一節(jié)。
  Semihosting使用固定的中斷號(hào)調(diào)用相應(yīng)的處理程序。用于Semihosting的SWI是:
  · 0x123456(在ARM狀態(tài)下);
  · 0xAB(在Thumb狀態(tài)下)。
  注意用戶在編寫自己的中斷處理程序時(shí),避免使用Semihosting已經(jīng)使用的中斷向量號(hào)。
  調(diào)試代理通過(guò)SWI的中斷向量號(hào)識(shí)別該軟中斷是目標(biāo)系統(tǒng)提出的Semihosting請(qǐng)求。具體是何種Semihosting請(qǐng)求(鍵盤輸入請(qǐng)求或屏幕顯示請(qǐng)求),通過(guò)向寄存器r0傳遞不同的參數(shù)進(jìn)行區(qū)分。所有其他參數(shù)通過(guò)一個(gè)數(shù)據(jù)塊進(jìn)行傳遞。該數(shù)據(jù)塊的地址通過(guò)寄存器r1傳遞給中斷處理程序。軟中斷的處理結(jié)果放在r0中返回,也可以通過(guò)顯式的返回值或傳遞數(shù)據(jù)塊的指針帶回程序的處理結(jié)果。即使未返回結(jié)果,也假定r0是被使用的。
  用r0傳遞的可用Semihosting操作編號(hào)分配如下:
  · 0x00-0x31 這些編號(hào)由ARM公司使用;
  · 0x32-0xFF 這些編號(hào)由ARM公司保留,以備將來(lái)使用;
  · 0x100-0x1FF 這些編號(hào)保留給用戶應(yīng)用程序。
  注意雖然這些編號(hào)ARM公司不使用,用戶可以使用這些編號(hào)編寫自己的SWI操作,但建議使用其他 SWI 編號(hào),而不要使用Semihosting SWI 編號(hào)和這些Semihosting的預(yù)留操作類型編號(hào)。
  · 0x200-0xFFFFFFFF這些編號(hào)未定義。當(dāng)前未使用并且不推薦使用這些編號(hào)。
  在以下部分中,操作名稱之后的括號(hào)中的編號(hào)是調(diào)用Semihosting操作時(shí)放入r0的值。例如,SYS_OPEN(0x01)。
  如果從匯編語(yǔ)言代碼中調(diào)用SWI,最好使用semihost.h中定義的操作名稱。可以用 EQU 偽操作定義操作名稱。例如:
  SYS_OPEN EQU 0x01
  SYS_CLOSE EQU 0x02
  3.Semihosting需求函數(shù)
  Semihosting需要的函數(shù)列表如表13.1所示。如果使用默認(rèn)的Semihosting功能,用戶不需要編寫任何其他代碼。也可以重新實(shí)現(xiàn)部分的輸入/輸出函數(shù),使這些函數(shù)和標(biāo)準(zhǔn)Semihosting混合使用。
  表13.1 Semihosting函數(shù)列表
  函 數(shù) 名 稱描 述
  SYS_OPEN (0x01)打開文件
  SYS_CLOSE(0x02)關(guān)閉使用SYS_OPEN打開的文件
  SYS_WRITEC (0x03)向控制臺(tái)輸出字符
  SYS_WRITE0 (0x04)將空終止的字符串寫入控制臺(tái)
  SYS_WRITE (0x05)寫入主機(jī)上的文件
  續(xù)表
  函 數(shù) 名 稱描 述
  SYS_READ (0x06)將文件內(nèi)容讀取到緩存器
  SYS_READC (0x07)從控制臺(tái)讀取字節(jié)
  SYS_ISERROR (0x08)確定返回代碼是否錯(cuò)誤
  SYS_ISTTY (0x09)檢查文件是否連接到交互設(shè)備
  SYS_SEEK (0x0A)搜索到文件中的某個(gè)位置
  SYS_FLEN (0x0C)返回文件的長(zhǎng)度
  SYS_TMPNAM (0x0D)返回文件的臨時(shí)名稱
  SYS_REMOVE (0x0E)刪除主機(jī)上的文件
  SYS_RENAME (0x0F)重命名主機(jī)上的文件
  SYS_CLOCK (0x10)執(zhí)行開始后的厘秒數(shù)
  SYS_TIME (0x11)1970 年 1 月 1 日到現(xiàn)在的秒數(shù)
  SYS_SYSTEM (0x12)將命令傳遞給主機(jī)命令行解釋程序
  SYS_ERRNO (0x13)獲得 C 庫(kù) errno 變量的值
  SYS_GET_CMDLINE (0x15)獲得用于調(diào)用可執(zhí)行程序的命令行
  SYS_HEAPINFO (0x16)獲得系統(tǒng)堆參數(shù)
  SYS_ELAPSED (0x30)獲得自執(zhí)行開始的目標(biāo)滴答聲數(shù)目
  SYS_TICKFREQ (0x31)確定滴答聲的頻率
  13.2.2 C 庫(kù)結(jié)構(gòu)
  從概念上來(lái)講,C庫(kù)函數(shù)可被化分成兩類,一類為ISO C語(yǔ)言的規(guī)范部分,該部分的主要功能是向用戶提供一個(gè)調(diào)用接口;另一類為ISO C語(yǔ)言規(guī)范提供支持。圖13.2顯示了這兩類函數(shù)在C庫(kù)中的結(jié)構(gòu)。
  嵌入式軟件開發(fā)之編譯器的缺省行為詳細(xì)分析
  圖13.2 C庫(kù)的函數(shù)結(jié)構(gòu)
  對(duì)部分ISO C功能的支持是由主機(jī)調(diào)試環(huán)境在支持函數(shù)的設(shè)備驅(qū)動(dòng)程序級(jí)別提供的。
  例如,RVCT C庫(kù)通過(guò)寫入調(diào)試器控制臺(tái)窗口來(lái)實(shí)現(xiàn)ISO C printf()系列函數(shù)。通過(guò)調(diào)用__sys_write()來(lái)提供該功能。這是一個(gè)執(zhí)行半主機(jī)SWI的支持函數(shù),使字符串被寫入到控制臺(tái)。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 激情四月婷婷| 性欧美丰满xxxx性久久久| 性欧美护士18xxxxhd| www.久久综合| 欧美午夜在线视频| 午夜69成人做爰视频网站| 亚洲不卡免费视频| 5g影院欧美成人免费| 天堂在线最新版在线www| 国产美女流出白浆在线观看| 欧美日韩国产成人高清视频| 四虎www成人影院观看| 中文字幕不卡免费高清视频| 69xxxⅹxxxxxx日本| 国产久视频| 日韩加勒比在线| 五月天婷婷免费视频| 777人体粉嫩u美图| 国产嫩草影院精品免费网址| 999www成人免费视频| 操你啦在线播放| 国产三级a三级三级野外| 夜夜夜夜夜操| 18岁禁黄色| 男人天堂网址| 久久久久久久国产精品影院| 日韩美女影院| 88av视频在线观看| 成人国产一区二区| 国产破苞合集 magnet| 91大神精品长腿在线观看网站| sis色中色| lsj老司机精品视频在线观看| 激情婷婷综合久久久久| 欧美不卡视频在线观看| 日本不卡一区二区三区在线观看| 成人理论片| 一区二区不卡免费视频| 日本毛片大全| 色色色色网站| 日本黄色片段|