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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 多核DSP的BootLoader程序的實(shí)現(xiàn)

          多核DSP的BootLoader程序的實(shí)現(xiàn)

          作者: 時(shí)間:2008-11-27 來(lái)源:網(wǎng)絡(luò) 收藏

            每個(gè)子核啟動(dòng)程序后,采用哪一種程序的工作方式是由各自的GPIO1管腳的狀態(tài)和各自以DMA方式從核外數(shù)據(jù)空間0000H地址單元讀入的數(shù)據(jù)決定的:檢測(cè)GPIO1管腳,如果GPIO1管腳為高電平,則采用串行口EEPROM的工作方式,否則采用并行EPROM的BootLoader工作方式。若子核的DMA通道讀入核外數(shù)據(jù)空間0000H單元中的數(shù)據(jù)為10AAH,則采用16位并行EPROM的BootLoader工作方式;若讀入的數(shù)據(jù)為xx08H或xxAAH,則采用8位并行EPROM的BootLoader工作方式。否則將重新判斷GPIO1管腳的電平,進(jìn)入死循環(huán)。

            2.3 TMS320VC5421的BootLoader程序片外總線沖突的解決

            核的BootLoader程序總是在DSP核或復(fù)位時(shí)啟動(dòng),且一啟動(dòng)BootLoader程序,對(duì)應(yīng)的DSP核就要申請(qǐng)核外的總線控制權(quán)。因此為了避免DSP的各個(gè)DSP子核啟動(dòng)BootLoader程序時(shí)引起的片外總線沖突,可通過(guò)控制每個(gè)DSP子核的復(fù)位過(guò)程,使每個(gè)DSP子核在不同的時(shí)間內(nèi)啟動(dòng)自身的BootLoader程序來(lái)解決片外總線沖突的問(wèn)題。

            為了實(shí)現(xiàn)兩個(gè)DSP子核復(fù)位過(guò)程的分離,應(yīng)采用如圖2所示的DSP子核復(fù)位過(guò)程控制方法。

          多核DSP的BootLoader程序的實(shí)現(xiàn)

            由于TMS320VC5421中A核擁有倍頻的鎖相環(huán)電路,所以首先復(fù)位A核,啟動(dòng)A核的BootLoader程序,實(shí)現(xiàn)A核的用戶(hù)程序自舉。然后再由A核的用戶(hù)程序控制B核的復(fù)位過(guò)程,啟動(dòng)B核的BootLoader程序,實(shí)現(xiàn)B核的用戶(hù)程序自舉。

            在A核的BootLoader程序執(zhí)行完后,A核就會(huì)執(zhí)行自身的用戶(hù)程序代碼。A核的用戶(hù)程序代碼釋放片外總線的控制權(quán),并且控制B核的復(fù)位管腳,促使B核啟動(dòng)自身的BootLoader程序。如果此時(shí)A核中的用戶(hù)代碼又申請(qǐng)片外總線控制權(quán)或正在使用片外總線,就會(huì)造成片外總線沖突。解決此沖突的辦法有如下兩個(gè):



          關(guān)鍵詞: DSP 多核 BootLoader 上電

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();