arm接口技術(shù)-學(xué)生_第1頁
arm接口技術(shù)-學(xué)生_第2頁
arm接口技術(shù)-學(xué)生_第3頁
arm接口技術(shù)-學(xué)生_第4頁
arm接口技術(shù)-學(xué)生_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 一:開發(fā)工具的使用安裝ads在開發(fā)工具目錄下的ADS1.2下面雙擊【SETUP.EXE】,安裝到默認(rèn)目錄【C:Program FilesARMADSv1_2】破解ads安裝ads的過程中會提示安裝license,出現(xiàn)如下界面點(diǎn)【Browse】定位到ads的安裝文件的【CRACK】目錄,選中LICENSE.DAT文件即可3. 安裝調(diào)試工具HJTAG 雙擊【H-JTAG V0.4.4.EXE】 安裝完畢,在安裝目的文件夾下面將會有下列文件:4. 如何使用H-JTAG進(jìn)行調(diào)試雙擊桌面上的【H-JTAG】圖標(biāo)將會彈出如下窗口如果JTAG連接板一邊連上了PC的打印口,一邊連上了開發(fā)板,那么點(diǎn)擊H-JT

2、AG Server的將會出現(xiàn),中間部分表示已經(jīng)找到了CPU的ID號。PC并口位于后面板,如下圖H-Ttag連接板如下:二運(yùn)行測試?yán)?,?yàn)證開發(fā)板是否OK運(yùn)行老師給的myled工程文件,即雙擊myled.mcp文件可以看到以下界面:點(diǎn)開main.c,看看源碼看不懂,沒關(guān)系,直接運(yùn)行,看結(jié)果點(diǎn)【】將會調(diào)出AXD調(diào)試界面運(yùn)行程序點(diǎn)出現(xiàn)下面界面觀察開發(fā)板燈態(tài),燈在亮滅!三,程序起源第一條語句,存放在哪里,如何執(zhí)行3.1 建工程N(yùn)EW->選中Project->ARM Executable Image,然后在Project name中填寫你要命令的工程名字,最后在Location下面選中你要存

3、放你工程的目錄點(diǎn)確定后,將會在你選中的目錄下面生成一個以你工程名相同的目錄,而且在該目錄下有一個你命名的工程3.2 接下來,新建文件與新建工程一樣,進(jìn)入NEW目錄,在該界面下,選中File文件,如下圖所示點(diǎn)確定后,將會出現(xiàn)如下情形因?yàn)槭切陆ㄎ募?,里面為空?.3. 如何寫代碼看老師給的中文-ARM_匯編zhiling.pdf中的第107頁,從第96頁一直看到107頁,特別是107頁的那個完整的例子。3.4 搭框架 通過C語言的程序框架來理解匯編的程序框架3.5 框架搭好了,第一條語句怎么寫看老師給的中文-ARM_匯編zhiling.pdf中的第15頁ARM匯編指令分ARM指令集和thumb指令

4、集,我們只需要了解以下ARM指令集就行了,ARM指令集分,儲存器訪問指令,數(shù)據(jù)處理指令,跳轉(zhuǎn)指令,雜項(xiàng)指令,偽指令幾種。看,中文-ARM_匯編zhiling.pdf中的目錄結(jié)構(gòu)。要用到那類指令,就到相關(guān)目錄下去找,無需死記硬背。寫一條數(shù)據(jù)處理指令mov r0,#0x88記得保存3.6然后編譯編譯成功如下生成的目標(biāo)文件生成的可執(zhí)行文件axf生成的bin文件3.7 真正認(rèn)識目標(biāo)文件,可執(zhí)行文件,二進(jìn)制文件 Axf文件 Start.o目標(biāo)文件Start.bin文件四:ARM機(jī)器碼 4.1 指令碼,條件碼五: 認(rèn)識什么是cpu中的寄存器5.1 r14lr寄存器5.2 r15pc寄存器為什么pc=0x3

5、0000000六:從根本上理解內(nèi)存的概念0x30000000的來歷-à上面配置中的0x30000000又是根據(jù)什么來的?查看老師給的s3c2440全套中文資料 我們的SDRAM位于0x300000000x40000000=?多少M(fèi) 我們的板子有多少M(fèi),SDRAM 見mini2440-um-20090223.pdf 我們的CPU總共可以掛載256M的sdram,而實(shí)際上,我們的板子只有64M。那,這64M內(nèi)存空間究竟位于0x300000000x40000000中的哪個位置呢?這個由硬件工程師來決定。參見原理圖mini2440原理圖.pdf兩個HY57V561620 拼成64M因?yàn)?,物?/p>

6、上HY57V561620的片選信號是接在2440的nGCS6上,所以,我們的內(nèi)存是0x300000000x34000000-能心算出來嗎?6.1 存儲器系統(tǒng)6.2 如何訪問我們的內(nèi)存先看一個非常重要的數(shù)據(jù)文件搞清楚代碼和數(shù)據(jù)存放位置,徹底理解了嗎?6.3用匯編代碼怎么實(shí)現(xiàn)? Ldr ,str匯編指令,怎么用?不用急,不用背,參考資料中文-ARM_匯編zhiling.pdf第19頁六-:總線的概念6.1 哈弗結(jié)構(gòu)&馮諾依曼結(jié)構(gòu)七:怎么從匯編過渡到CIMPORT是導(dǎo)入外部符合的意思,不懂的參考中文-ARM_匯編zhiling.pdf注意在單步執(zhí)行或者全速運(yùn)行的時候出現(xiàn)下面現(xiàn)象是優(yōu)化等級的問

7、題設(shè)置成調(diào)試模式八:s3c2440 GPIO控制原理思路:要控制一個設(shè)備,首先想到的是搞清楚這個硬件設(shè)備在什么位置。怎么辦? 參考mini2440-um-20090223.pdf第13頁找到絲印再找原理圖參考原理圖mini2440原理圖.pdf第3頁。通過網(wǎng)絡(luò)表Nled_1,在原理圖中找到控制這個燈的cpu引腳。找到cpu引腳與LED燈的對應(yīng)關(guān)系如下GPB5-Nled_1GPG6-Nled_2GPB7-NLED_3GPB8-NLED_4接下來怎么辦?接下來就要看cpu的說明書了,就像我們買了一個微波爐,使用前就要看一下它的說明書,我們CPU的說明書就是s3c2440的datasheet。即S3

8、C2440全套中文手冊.PDF8.1 datasheet怎么看Cpu的簡介,搞清楚我們這個cpu有哪些資源。8.2 GPIO控制原理GPBCON xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx GPB10 9 8 7 6 5 4 3 2 1 0兩個位控制一個引腳,所以GPB0GPB10共11各引腳,需要021共22各位來設(shè)置00-該引腳配置為輸入01-該引腳配置為輸出10-該引腳配置為其他特殊功能11-一般引腳表示保留,未使用要讓我們四個LED亮滅,GPBCON寄存器該如何設(shè)置呢?GPBCON=?GPBDAT是數(shù)據(jù)寄存器,用來控制(或者反應(yīng))引腳的高低電平,該寄

9、存器是一個位對應(yīng)一個引腳,如果某個位為0那么對應(yīng)引腳為低電壓,如果為1則引腳為高電平GPBDAT xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx GPB 10 9 8 7 6 5 4 3 2 1 0原理搞清楚了,程序怎么寫?8.3 程序怎么寫我們要把某個引腳設(shè)置為輸出,也就是我們的GPBCON寄存器要配置為0x15400,那么這個值怎么給我們的cpu呢?這里的地址,就是cpu提供給我們控制它的接口。知道了這個接口,代碼怎么操作呢?這里涉及到怎么訪問可讀性的絕對地址問題?學(xué)生動手實(shí)現(xiàn)延時函數(shù),宏定義,led配置,led亮,led滅函數(shù)。8.4 作業(yè),學(xué)生自己實(shí)現(xiàn)b

10、eep九:s3c2440時鐘系統(tǒng)參考S3C2440全套中文手冊.PDF152頁。時鐘系統(tǒng)中:FCLK,HCLK,PCLK的關(guān)系A(chǔ)HB,APB兩者的關(guān)系PLL的意思電源管理中:普通模式的理解-功耗最大,速度最快慢速模式的理解-沒有PLL空閑模式的理解-cpu空閑,沒有時鐘,其他外設(shè)有時鐘睡眠模式的理解-cpu和內(nèi)部邏輯電源關(guān)閉,喚醒邏輯電源是開啟的,通過EINT或RTC喚醒。OM3:2怎么理解?引申一點(diǎn):OM【1:0】怎么理解?對PLL的大概認(rèn)識:FCLKFCLK默認(rèn)值=2*m*Fin/(p*2s)=2*(MDIV+8)*12/(PDIV+2)*2SDIV) =2*158*12/(5*2)=37

11、9HCLK根據(jù)CLKDIV2:1來設(shè)置PCLK根據(jù)CLKDIV0來設(shè)置9.1 代碼實(shí)現(xiàn)這樣設(shè)置真的打開了嗎?如果有示波器量量就清楚了,示波器真是個好東西!9.2 關(guān)于鎖定時間9.3 注意各模塊都有時鐘開關(guān)十:定時器參考S3C2440全套中文手冊.PDF212頁。步驟:1:配置分頻值2:設(shè)置控制寄存器3:設(shè)置相關(guān)定時器通道的計數(shù)值4:通過觀察寄存器判斷是否計數(shù)到010.1配置分頻值 TCFG07:0第70位設(shè)置定時器0,1的預(yù)分頻值 TCFG015:8第158位設(shè)置定時器2,3,4的預(yù)分頻值 如果我們要用定時器4,而且要255分頻該怎么設(shè)置呢?代碼怎么寫? 該寄存器配置五個定時器的檔位,分2,4

12、,8,16檔如果我們要使用定時器4,且16分檔,該寄存器怎么設(shè)置呢?10.2 配置控制寄存器主要是設(shè)置TCON寄存器, 我們使用的定時器4,那么只需要設(shè)置TCON【22:20】位即可。10.3 配置計數(shù)緩沖寄存器給整個PWM提供的時鐘是PCLK(50Mhz),首先經(jīng)過255分頻,然后16分頻得到,50*1000000/255/16=12254.9=12255所以TCNTB4該設(shè)置為1225510.4 怎么知道計數(shù)器計數(shù)到0了這個寄存器是一個偵測寄存器,它時刻偵測定時器4的計數(shù)器值,所以,我們可以通過它來判斷計數(shù)器是否計數(shù)到0.10.5 pwm實(shí)現(xiàn)自動控制蜂鳴器十一:按鍵實(shí)現(xiàn)作業(yè),實(shí)現(xiàn)KEY1控

13、制LED1的亮滅(按下亮,再按滅) 實(shí)現(xiàn)KEY2控制LED2的亮滅(按下亮,再按滅) 實(shí)現(xiàn)KEY3控制LED3的亮滅(按下亮,再按滅) 實(shí)現(xiàn)KEY4控制LED4的亮滅(按下亮,再按滅) 實(shí)現(xiàn)KEY5控制beep(按下響,再按不響)十二:中斷12.1 不用中斷如果沒有中斷,是怎么樣一種情況呢?看下圖:如果不用中斷,要實(shí)現(xiàn)每一秒定時亮滅一次,亮燈的程序只能放在while里面,或者做成一個函數(shù)在while里面調(diào)用!12.2 不用中斷帶來的問題問題一:實(shí)時性不夠好問題二:沒有優(yōu)先級概念,重要事情得不到體現(xiàn)12.3 使用中斷的程序結(jié)構(gòu):12.4 很奇怪的現(xiàn)象沒有地方調(diào)用Timer4_ISR函數(shù),斷點(diǎn)如何

14、進(jìn)去?12.5 順藤摸瓜跟這個函數(shù)有關(guān)的地方是pISR_TIMER4 = (unsigned int)Timer4_ISR;這條語句。這條語句實(shí)現(xiàn)的功能是,把某個函數(shù)名稱復(fù)制給一個地址!pISR_TIMER4定義在而_ISR_STARTADDRESS定義在:最后的結(jié)果就是:(*(unsigned *)(0x33ffff00+0x58) = (unsigned int)Timer4_ISR; 這些地址就是提供給我們程序員存放中斷服務(wù)程序地址的! 當(dāng)我們定時器中斷發(fā)生時,cpu如何跳到(0x33ffff00+0x58)處取出中斷服務(wù)程序地址?回答這個問題,要從arm中斷體系講起!十三:arm體系結(jié)

15、構(gòu)13.1 arm八種模式13.2 八種模式的運(yùn)行過程13.3 八種模式寄存器13.4 CPSR&SPSR寄存器13.5 七種異常13.6 異常向量表,IRQ向量表,MMU之間的關(guān)系 因此,通過MMU,當(dāng)IRQ中斷發(fā)生時,程序可以條到0x300000018處運(yùn)行,而此處是一條跳轉(zhuǎn)指令b HandlerIRQ,那么HandlerIRQ在哪里呢?我們再來看匯編里面的關(guān)系!十四:s3c2440啟動代碼中斷脈絡(luò)關(guān)系bicr0,r0,#MODEMASK 0x1f Xxxx xxxx xxxx xxxx Bic 0000 0001 1111 1100 Xxxx xxx00 000 ; Setup

16、IRQ handlerldrr0,=HandleIRQ ;This routine is neededldrr1,=IsrIRQ ;if there is not 'subs pc,lr,#4' at 0x18, 0x1cstrr1,r0 HandleIRQ = IsrIRQ HandlerIRQ /SP=0x33ff7000 sp-4=0x33ff6ffcsubsp,sp,#4;decrement sp(to store jump address)stmfdsp!,r0;PUSH the work register to stack(lr does not push beca

17、use it return to original address)ldr r0,=HandleIRQ;0x33ffff00+0x18= load the address of HandleXXX to r0ldr r0,r0 ;r0=0x33ffff00+0x18=ISR_IRQ load the contents(service routine start address) of HandleXXXstr r0,sp,#4 ;store the contents(ISR) of HandleXXX to stackldmfd sp!,r0,pc ;POP the work register

18、 and pc(jump to ISR)MEND當(dāng)IRQ異常發(fā)生時,cpu跳到0x300000018處執(zhí)行程序(本來cpu是跳到0x00000018執(zhí)行的,但是因?yàn)橛蠱MU的映射,就跳到了0x300000018),而0x300000018處放的是一條跳轉(zhuǎn)語句b HandlerIRQ,而HandlerIRQ是一個宏,展開后,實(shí)際上是去執(zhí)行HandleIRQ,而HandleIRQ在之前(irq異常中斷發(fā)生前)就已經(jīng)復(fù)制了,該地址(即HandleIRQ)處存放的是IsrIRQ處的代碼地址。IsrIRQ實(shí)現(xiàn)的就是從IRQ向量表中取出當(dāng)前發(fā)生中斷的中斷服務(wù)程序地址,即(0x33ffff00+0x58)的

19、地址Timer4_ISR。十五 0x33ffff00的迷惑0x33ffff00這個地址,是我們程序員來定義的,當(dāng)我們地址到0x32ffff00的時候,記得在mmu映射時,要定義好映射基地址,十六:串口通信16.1 串口長什么樣子16.2 通信過程16.3 串口通信可以做什么 GSM,GPSR,3G,4G模塊=手機(jī)最基本的通信功能 Bluetooth模塊=藍(lán)牙通信 工業(yè)485通信16.4 串口通信原理16.5 怎么實(shí)現(xiàn)通信(PC端)PC端,設(shè)備管理器里并對PC端,串口進(jìn)行配置16.6 怎么實(shí)現(xiàn)通信(S3C2440端)16.7 要發(fā)送的數(shù)據(jù)往哪兒放?代碼如何寫:*(unsigned int *)0

20、x50000020 = data/data為我們要發(fā)送的數(shù)據(jù)(8位)16.8 怎么知道發(fā)送完畢 數(shù)據(jù)給了發(fā)送器,那么串口控制器肯定有一個狀態(tài)寄存器來指示其中的第二位就是指示發(fā)送器為空的,當(dāng)UTRSTAT02=1,表示發(fā)送器為空了,也就是我們給UTXH0的數(shù)據(jù)發(fā)送完畢了。代碼怎么實(shí)現(xiàn)?while(!(*(volatile unsigned int *)0x50000010) & 0X4);16.9 怎么設(shè)置端口號,波特率 關(guān)注細(xì)節(jié) 1:怎么設(shè)置端口號 2:怎么設(shè)置波特率我們要找到設(shè)置數(shù)據(jù)位,停止位,校驗(yàn)位,波特率的寄存器。數(shù)據(jù)位,停止位,校驗(yàn)位的設(shè)置:我們通過ULCON0來設(shè)置串口0的數(shù)

21、據(jù)位,停止位,校驗(yàn)位,代碼實(shí)現(xiàn):*(unsigned int *)0x50000000 = 3/時鐘的選擇,通道開關(guān):這組寄存器是用來設(shè)置串口時鐘源的!我們選擇PCLK,這里的默認(rèn)配置就是00; 代碼實(shí)現(xiàn):該寄存器只需要設(shè)置如下值: *(unsigned int *)0x50000004 = 4/使能發(fā)送mode波特率的設(shè)置:波特率的計算根據(jù)公式: 所以UBRDIV0 = PCLK/(115200*16)-119.20如何寫代碼實(shí)現(xiàn)向PC發(fā)送helloworld字符串PC端結(jié)果好像發(fā)送速度太快,如何加入延時函數(shù)?發(fā)送單字符成功了,如何發(fā)送字符串?16.20 如何做接收功能?接收功能就是,PC端

22、向我們的板子發(fā)送字符,我們要寫程序接收。十七:看門狗17.1 復(fù)位功能#define WTCON (*(volatile unsigned int *)0x53000000)#define WTDAT (*(volatile unsigned int *)0x53000004)#define WTCNT (*(volatile unsigned int *)0x53000008)WTCON = (255<<8) | (1<<5) | (0<<3) | (0<<2) | (1<<0); 問題:怎么解決這個問題?17.2 中斷功能十八:AD轉(zhuǎn)換18.1 要搞清楚的幾個問題:1:為什么說分別率是10位的-對分別率的理解答:這是由數(shù)據(jù)手冊標(biāo)明的,2440的ad位數(shù)是10位,所以分別率是10位;2:轉(zhuǎn)換時鐘(2.5Mhz)與采樣頻率(500ksps)的關(guān)系答:轉(zhuǎn)換時鐘2.5Mhz即指每秒有2500次;上面提到在2.5Mhz的轉(zhuǎn)換頻率下采用頻率是500ksps,那么就知道每采用一次需要5個時鐘。3:線性誤差的概念4:供電電壓和模擬輸入范圍電壓(參考電壓)答:供電電壓是AD控制器的工作電壓;模擬輸入電壓范圍03.3v,是指模擬量可以是0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論