<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 新型Linux開發(fā)工具應(yīng)對(duì)下一代嵌入式系統(tǒng)設(shè)計(jì)挑戰(zhàn)

          新型Linux開發(fā)工具應(yīng)對(duì)下一代嵌入式系統(tǒng)設(shè)計(jì)挑戰(zhàn)

          作者: 時(shí)間:2010-01-14 來源:網(wǎng)絡(luò) 收藏
          如今已在實(shí)時(shí)操作(RTOS)領(lǐng)域占有一席之地。那些過去需要商用或自創(chuàng)及維護(hù)的 RTOS 應(yīng)用正越來越多被 平臺(tái)所取代。每家公司這樣做的理由可能不盡相同,但共同的因素是:1)得到操作源代碼的可能性;2)大量的設(shè)備驅(qū)動(dòng)程序以及通信棧;3)精通 的軟件工程師團(tuán)隊(duì)正日益壯大;4)從產(chǎn)品材料成本中減去操作版稅部分能帶來顯而易見的成本優(yōu)勢;5)現(xiàn)在半導(dǎo)體供應(yīng)商們?yōu)榛谄溆布⒖计脚_(tái)的系統(tǒng)級(jí)芯片(SoC)、工具鏈和參考發(fā)布提供了一個(gè) Linux 端口。

          為了充分利用 Linux 操作系統(tǒng),原始設(shè)備制造商(OEM)可選擇與商用 Linux 供應(yīng)商合作,或在內(nèi)部增添工程能力。這兩種模式都已被證明是成功的,但是每種做法都需各自的成本。

          本文引用地址:http://www.ex-cimer.com/article/152135.htm

          不管 OEM 如何選擇,他們的工程師所使用的典型調(diào)試模型都是相同的:基于 GDB(GNU Debugger)的客戶服務(wù)器環(huán)境。如圖1所示,它描述了在調(diào)試目標(biāo)時(shí),附加并運(yùn)行在每個(gè) Linux 進(jìn)程中的 GDBSERVER 例示。每個(gè) GDBSERVER 都通過一個(gè)以太網(wǎng)端口與主機(jī)通信。

          另外,需要特別注意的是,采用這種調(diào)試方法,標(biāo)準(zhǔn) Linux內(nèi)核被替換成一種“靜態(tài)”版本。僅有少數(shù)例外,所有通過 KGDB的目標(biāo)調(diào)試通信都被限制在 RS232 串行鏈路。

          圖1: 標(biāo)準(zhǔn) Linux 調(diào)試模型。
          圖1: 標(biāo)準(zhǔn) Linux 調(diào)試模型。

          這種方法給開發(fā)人員帶來了另一個(gè),即要使用 Linux內(nèi)核的測試版(instrumented version)。雖然這是可接受的默認(rèn)Linux調(diào)試環(huán)境,但這種方法有一些很明確的局限性。例如,采用多進(jìn)程組成的應(yīng)用,需要多個(gè) GDBSERVER 運(yùn)行于有限的目標(biāo)存儲(chǔ)器上。這可能影響被調(diào)試目標(biāo)的性能,在一些情況下目標(biāo)性能可降低50%以上。

          即使在所有的內(nèi)核工具和通信通道均可用的最佳情形下,仍有一些區(qū)域的代碼在這個(gè)調(diào)試范例下難以到達(dá)。圖2中說明的“問題”區(qū)域給內(nèi)核和應(yīng)用程序開發(fā)人員提出了更多。這些區(qū)域包括每個(gè)進(jìn)程下大量的線程,以及代碼獨(dú)立和數(shù)據(jù)位置獨(dú)立的內(nèi)核可加載模塊。盡管對(duì)于熟練的開發(fā)人員來說,有可能利用現(xiàn)有技術(shù)合成一個(gè)環(huán)境,來滿足這些區(qū)域的調(diào)試需要,但是這種環(huán)境對(duì)用戶非常不友好,且在負(fù)載下無法擴(kuò)展。

          圖 2: “問題”區(qū)域。
          圖 2: “問題”區(qū)域。

          接下來我們看看在Linux 內(nèi)核可加載模塊的例子中,模塊加載時(shí)間調(diào)用的初始化程序由哪些部分組成。目前的調(diào)試范例表明加載了這些模塊,然后利用調(diào)試器對(duì)其代碼和數(shù)據(jù)偏移進(jìn)行調(diào)整(手動(dòng)和自動(dòng))。但是,這時(shí)模塊的初始化代碼已經(jīng)執(zhí)行了,無法在代碼所在區(qū)域?qū)栴}進(jìn)行調(diào)試。另一個(gè)使用情形涉及共享庫,這經(jīng)常無法由 GDBSERVER 或其他類似程序很好地處理。即使存在這些問題,許多工程師仍在采用 printf(用戶空間)和 printk(內(nèi)核空間)作為主要調(diào)試幫助。一些調(diào)試“工具”帶來新的軟件問題或可能掩蓋現(xiàn)有的問題。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();