找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4131|回復(fù): 4
收起左側(cè)

2013年學(xué)習(xí)ARM單片機(jī)總結(jié)

[復(fù)制鏈接]
ID:59284 發(fā)表于 2014-3-2 17:48 | 顯示全部樓層 |閱讀模式
今天是ARM部分的第一講,重點(diǎn)是從構(gòu)造、兩種工作狀態(tài)、兩種存儲(chǔ)模式、七種工作模式方面來(lái)開始ARM部分的學(xué)習(xí),讓我們對(duì)于ARM有個(gè)大體的認(rèn)識(shí)。

1、ARM處理器的兩種工作狀態(tài)
    ARM狀態(tài)(32位,字方式指令)和Thumb狀態(tài)(16位,半字方式指令),在兩個(gè)工作狀態(tài)之間轉(zhuǎn)換不影處理器模式和寄存器內(nèi)容,發(fā)生異常是 總是在ARM狀態(tài)下進(jìn)行處理。

2、ARM處理器的七種工作模式
    用戶、系統(tǒng)、快中斷、中斷、管理、中止、未定義。除用戶模式以外,其他均為特權(quán)模式,在特權(quán)模式下可以自由切換處理器模式。除了用戶、系統(tǒng)模式外,其他五種模式為異常模式,用戶、系統(tǒng)模式不能由異常進(jìn)入。

3、寄存器
    31個(gè)通用32位寄存器,6個(gè)狀態(tài)寄存器
    R13作為堆棧指針。在ARM指令集中沒(méi)有以特殊方式使用R13的指令,但在Thumb指令集中存在使用R13的指令
    R14為鏈接寄存器。在結(jié)構(gòu)上有兩個(gè)特殊功能:
                                       1)每種模式下,用于保存子程序返回地址
                                       2)發(fā)生異常時(shí),用于保存異常返回地址
   (R14)當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會(huì)發(fā)生沖突
    解決方法:入棧(地址、數(shù)據(jù))
              跳轉(zhuǎn)模式
   (R15)避免使用STR和STM指令保存R15,如有需要,應(yīng)先計(jì)算出芯片偏移量

4、異常的進(jìn)入和退出
    異常的處理 :①保護(hù)現(xiàn)場(chǎng),入棧(講CPSR寄存器內(nèi)容存入IRQ標(biāo)式SPSR寄存器)
                 ②關(guān)中斷
                 ③用戶中斷服務(wù)子程序
                 ④出棧
                 ⑤開中斷(清中斷標(biāo)志)

5、九種尋址方式
    寄存器尋址,立即尋址,寄存器移位尋址,寄存器間接尋址,基址尋址,多寄存器尋址,堆棧尋址,塊拷貝 尋址,相對(duì)尋址

6、keil的安裝和設(shè)置
回復(fù)

使用道具 舉報(bào)

ID:59284 發(fā)表于 2014-3-2 17:48 | 顯示全部樓層
今天是ARM部分的第二講,相對(duì)于之前一節(jié)課的關(guān)于ARM的簡(jiǎn)要介紹來(lái)說(shuō),今天的重點(diǎn)便是關(guān)于ARM指令的講解和一些實(shí)例代碼的閱讀。
  
ARM指令總體可以分為6類:
①跳轉(zhuǎn)指令
②數(shù)據(jù)處理指令
③狀態(tài)寄存器指令
④存儲(chǔ)器指令
⑤交換指令
⑥軟中斷,相對(duì)于以前學(xué)的C語(yǔ)言的指令來(lái)說(shuō),ARM指令就顯得復(fù)雜的多,不僅僅是指令數(shù)量比較多,而且同樣的指令在添加不同的指令條件以后,對(duì)于指令的執(zhí)行有一定的影響,所以在對(duì)于ARM實(shí)例程序的閱讀的時(shí)候,必須注意在各個(gè)指令之后所跟的指令條件。

在對(duì)ARM指令有一定了解之后,便是KEIL軟件的運(yùn)用,將要閱讀的程序添加到KEIL中,對(duì)其進(jìn)行加載和執(zhí)行,這不僅可以閱讀程序熟悉指令,還能在同時(shí)讓我們了解KEIL軟件各種功能的使用,同時(shí)還能更為細(xì)致的觀察程序在運(yùn)行的過(guò)程中各個(gè)寄存器的內(nèi)容的變化,或你指定的地址的內(nèi)容變化。
回復(fù)

使用道具 舉報(bào)

ID:59284 發(fā)表于 2014-3-2 17:49 | 顯示全部樓層
今天是開始ARM學(xué)習(xí)的第三天,與之前不同的是今天不在是不停的學(xué)習(xí)各種指令紙上談兵,而是真正的拿到MINI2440開發(fā)板實(shí)物,所以相比之前的學(xué)習(xí),今天很是興奮,但是這股興奮勁也沒(méi)能持續(xù)多久,在之后的開發(fā)板與電腦的連接中,卻遇到了各種問(wèn)題無(wú)法解決,讓人頭痛不已。

除了MINI2440開發(fā)板與電腦的連接,還對(duì)于用匯編來(lái)控制開發(fā)板的LED的點(diǎn)亮,主要是要學(xué)會(huì)查詢S3C2440使用手冊(cè),同時(shí)還要會(huì)看MINI2440開發(fā)板的原理圖,從而找到相對(duì)應(yīng)的引腳。今天一天都過(guò)的十分忙碌,一大部分時(shí)間都花在了開發(fā)板和電腦的連接上,才發(fā)現(xiàn)自己知識(shí)的儲(chǔ)備還是太少,遇到很多問(wèn)題都不能解決,還得花不少時(shí)間去月的相關(guān)的書籍來(lái)充實(shí)自己。
回復(fù)

使用道具 舉報(bào)

ID:59284 發(fā)表于 2014-3-2 17:50 | 顯示全部樓層
今天已經(jīng)是進(jìn)入ARM學(xué)習(xí)的第四講,我們也結(jié)束了中斷寄存器的學(xué)習(xí),進(jìn)入看門狗部分學(xué)習(xí)

1.中斷產(chǎn)生:①按鍵②外部電平③定時(shí)器,ADC,LCD④系統(tǒng)軟中斷
2.中斷處理流程:
①中斷控制器匯集各類外設(shè)發(fā)出的中斷信號(hào)
②CPU保存當(dāng)前程序運(yùn)行的環(huán)境,調(diào)用中斷服務(wù)程序ISR來(lái)處理中斷
③在ISR中識(shí)別哪類中斷
④清除中斷

3.中斷服務(wù)子程序原則
①程序盡量短
②中斷無(wú)入?yún)⒁矡o(wú)返回值
③實(shí)現(xiàn)信號(hào)的全局變量

4.流水線的誤差需要修正返回地址

5.分散加載
當(dāng)嵌入式系統(tǒng)在仿真環(huán)境下調(diào)試完畢,脫機(jī)運(yùn)行時(shí),要將源程序編譯連接成可執(zhí)行代碼燒寫到ROM中,CPU取指令,數(shù)據(jù)都要調(diào)用ROM,其間得加入等待周期來(lái)降低總線速率用以滿足訪問(wèn)慢速ROM

6.分散加載注意點(diǎn)
①每個(gè)分散加載文件必須包含一個(gè)根區(qū),每個(gè)根區(qū)加載地址等于運(yùn)行地址
②每個(gè)引導(dǎo)區(qū)至少包含一個(gè)執(zhí)行區(qū),每個(gè)執(zhí)行區(qū)必須包含多個(gè)代碼段或數(shù)據(jù)段,一個(gè)引導(dǎo)區(qū)可以包含多個(gè)執(zhí)行區(qū),但每個(gè)執(zhí)行區(qū)只屬于一個(gè)引導(dǎo)區(qū)

7.看門狗定時(shí)器工作原理
在看門狗定時(shí)器內(nèi)部存在一個(gè)遞減計(jì)數(shù)器,當(dāng)計(jì)數(shù)器為0時(shí),便會(huì)自動(dòng)重啟控制器,但在其計(jì)數(shù)器遞減至0前,將其遞減計(jì)數(shù)器重新設(shè)置一下,那么就不會(huì)執(zhí)行重啟操作

8.時(shí)間計(jì)算
t_watchdog=1/[PCLK(50M)/(Prescaler+1)/Division_factor]
回復(fù)

使用道具 舉報(bào)

ID:60025 發(fā)表于 2014-3-26 11:56 來(lái)自手機(jī) | 顯示全部樓層
每天更新嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表