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

          新聞中心

          ARM入門筆記(10)

          作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          USB設(shè)備實(shí)驗(yàn)

          一.背景

          在ATMEL官方網(wǎng)站上提供了USB的應(yīng)用例子(詳情請(qǐng)參考“BasicUSB Application”說明),里面有源代碼(是用IAR編譯的,需要稍作修改才能用在ADS上),兩個(gè)不同的USB驅(qū)動(dòng)程序。兩個(gè)不同的USB驅(qū)動(dòng)程序,在PC機(jī)上是兩個(gè)不同的應(yīng)用例子。當(dāng)安裝完兩個(gè)不同的驅(qū)動(dòng)后,一個(gè)出現(xiàn)的是調(diào)制解調(diào)器的設(shè)備,可以用超級(jí)終端來完成USB數(shù)據(jù)的收發(fā)。另一個(gè)是USB 設(shè)備,用ATMEL提供的“BasicUSB_6124.exe”來完成USB數(shù)據(jù)的收發(fā)。我起初一直在用后面的例子來做實(shí)驗(yàn),但試了很久都沒有成功,后來改用前面的成功了。

          二.USB驅(qū)動(dòng)安裝說明

          當(dāng)?shù)谝淮闻chost PC機(jī)連接時(shí),系統(tǒng)會(huì)彈出一個(gè)“找到新的硬件向?qū)?rdquo;窗口,選擇“從列表或指定位置安裝”后點(diǎn)擊“下一步”。在接下來的窗口中選擇“不要搜索。我要自己選擇要安裝的驅(qū)動(dòng)程序”,然后點(diǎn)擊“下一步”。再在接下來的窗口中點(diǎn)擊“從磁盤安裝”,找到“atm6124ser.inf”所在的目錄后打開。再點(diǎn)擊“下一步”開始安裝,最后點(diǎn)“完成”就可以。

          安裝完成后,會(huì)在設(shè)備管理器的“調(diào)制解調(diào)器”欄中查看到“ATMEL AT91 USB serial emulation #2”設(shè)備。此時(shí)就可以使用“超級(jí)終端”通過USB與AT91SAM7S64通訊了。詳請(qǐng)請(qǐng)查看該目錄的“BasicUSB Application.pdf”文件。

          三.實(shí)驗(yàn)?zāi)康?br />
          用PC機(jī)上的超級(jí)終端發(fā)送數(shù)據(jù),AT91SAM7S64通過USB接收超級(jí)終端上發(fā)過來的數(shù)據(jù)(USB的讀操作),再通過USB將接收到的數(shù)據(jù)返回給PC機(jī)上的超級(jí)終端(USB的寫操作),這樣就完成了PC機(jī)與 AT91SAM7S64的USB通訊。如果AT91SAM7S64將接收到數(shù)據(jù)通過DBUG串口再發(fā)送出去,這樣AT91SAM7S64就可以當(dāng)作一個(gè) USB轉(zhuǎn)串口的設(shè)備使用。

          四.實(shí)驗(yàn)源程序

          由于這個(gè)實(shí)驗(yàn)的源程序比較多,且ATMEL提供了詳細(xì)的文檔和源代碼,故不再列出。有什么問題可以通過ccn422@hotmail.com聯(lián)系我。

          另外因?yàn)锳TMEL的源碼中沒有使能重映射功能,如果想將程序下載到地址為0x00200000的SRAM中調(diào)試,又要使用在0x0地址空間的中斷向量表,使程序跳轉(zhuǎn)到中斷處理程序,必須使用重映射的功能。所以我在起動(dòng)代碼(AT91F_LowLevelInit)中加了重映射這條命令,如下:

          if (Remap_Flag == 0)
          { //由于不能重復(fù)執(zhí)行重映射命令,所以加了Remap_Flag標(biāo)志來避免多次執(zhí)行重映射命令
          Remap_Flag = 0xff;
          *AT91C_MC_RCR = AT91C_MC_RCB; //Remap Command Bit
          }

          五.出現(xiàn)的問題與解決方法

          1> 每次重新裝載程序進(jìn)行調(diào)試時(shí),Remap_Flag沒有等于0。

          原因是進(jìn)入C代碼前,沒有初始化存儲(chǔ)器的內(nèi)容。用戶可以將起動(dòng)代碼中的“bmain”改成“b__main”,即在跳入到main()函數(shù)前執(zhí)行__main初始化庫函數(shù),也可自己加入初始化存儲(chǔ)器的代碼。程序如下:

          InitReset
          IMPORT |Image$$RO$$Limit|; End of ROM code (=start of ROM data)
          IMPORT |Image$$RW$$Base| ; Base of RAM to initialise
          IMPORT |Image$$ZI$$Base| ; Base and limit of area
          IMPORT |Image$$ZI$$Limit|; to zero initialise
          ;********************************************************
          ;* Copy and paste RW data/zero initialized data *
          ;********************************************************
          LDR r0, =|Image$$RO$$Limit| ; Get pointer to ROM data
          LDR r1, =|Image$$RW$$Base| ; and RAM copy
          LDR r3, =|Image$$ZI$$Base|
          ;Zero init base => top of initialised data

          CMP r0, r1 ; Check that they are different
          BEQ %F1
          0
          CMP r1, r3 ; Copy init data
          LDRCC r2, [r0], #4 ;--> LDRCC r2, [r0] + ADD r0, r0, #4
          STRCC r2, [r1], #4 ;--> STRCC r2, [r1] + ADD r1, r1, #4
          BCC %B0
          1
          LDR r1, =|Image$$ZI$$Limit| ; Top of zero init segment
          MOV r2, #0
          2
          CMP r3, r1 ; Zero init
          STRCC r2, [r3], #4
          BCC %B2

          如果想詳細(xì)了解該部分的原理,可以參考三星公司為44B0寫的起動(dòng)代碼部分資料。

          2> 這個(gè)實(shí)驗(yàn)浪費(fèi)了很多的時(shí)間,原因就是因?yàn)槲乙恢庇玫腶tm6124.sys和atm6124.inf驅(qū)動(dòng)程序以及BasicUSB_6124.exe來做此實(shí)驗(yàn),當(dāng)執(zhí)行BasicUSB_6124.exe后,總是出現(xiàn)“設(shè)備不能連接”。為此我專門去書店買了《USB2.0應(yīng)用與設(shè)計(jì)》參考,再研究和調(diào)試源代碼,再加上仔細(xì)的閱讀“BasicUSB Application.pdf”文件,后來改用atm6124ser.inf驅(qū)動(dòng)程序與超級(jí)終端來完成了本次實(shí)驗(yàn)。

          六.總結(jié)

          如果一開始就很成功的完成了本次實(shí)驗(yàn),我可能對(duì)USB的原理等不會(huì)了解到多少,正是因?yàn)槌霈F(xiàn)了問題,我才會(huì)為了解決問題而去找相關(guān)的資料學(xué)習(xí),最終到問題的解決。因此出現(xiàn)問題并不是一件什么壞事,相反,問題的出現(xiàn)會(huì)引導(dǎo)我們靜下心來向更深層次去探究,最終更深刻更全面地掌握知識(shí)。


          關(guān)鍵詞: ARM入門筆

          評(píng)論


          技術(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); })();