在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            ARM入門(mén)筆記(10)

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

            一.背景

            在ATMEL官方網(wǎng)站上提供了USB的應(yīng)用例子(詳情請(qǐng)參考“BasicUSB Application”說(shuō)明),里面有源代碼(是用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í)終端來(lái)完成USB數(shù)據(jù)的收發(fā)。另一個(gè)是USB 設(shè)備,用ATMEL提供的“BasicUSB_6124.exe”來(lái)完成USB數(shù)據(jù)的收發(fā)。我起初一直在用后面的例子來(lái)做實(shí)驗(yàn),但試了很久都沒(méi)有成功,后來(lái)改用前面的成功了。

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

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

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

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

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

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

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

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

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

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

            原因是進(jìn)入C代碼前,沒(méi)有初始化存儲(chǔ)器的內(nèi)容。用戶可以將起動(dòng)代碼中的“bmain”改成“b__main”,即在跳入到main()函數(shù)前執(zhí)行__main初始化庫(kù)函數(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寫(xiě)的起動(dòng)代碼部分資料。

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

            六.總結(jié)

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


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

            評(píng)論


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

            關(guān)閉