當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > arm開發(fā)入門基礎(chǔ),美女學(xué)霸總結(jié)(新手必備)
ARM開發(fā)
1.寄存器:
控制寄存器、數(shù)據(jù)寄存器、狀態(tài)寄存器
2.linux內(nèi)核:
進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、設(shè)備控制、網(wǎng)絡(luò)
3.嵌入式
專用的定制的計算機系統(tǒng)
4.DMA總線
主存儲器和外部設(shè)備(IO接口)之間直接進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ溃恍枰?jīng)過CPU
45.串口
2、3連接數(shù)據(jù)傳輸和接收端,5接地
6.指令集
CISC復(fù)雜指令集
RISC精簡指令集
7.ARM 處理器里面有37個寄存器
8.ARM工作模式
User、FIQ、IRQ、Supervisor、Abort、Undef、System
Mode位:處理器模式位
10000 User mode 10111 Abort mode
10001 FIQ mode; 11011 Undfined mode
10010 IRQ 11111 System mode;
10011 SVC mode;
9.
10.
MRS指令 mrs r0,cpsr 將cpsr賦值給r0
MSR指令 msr cpsr,r0 給cpsr賦值為r0
操作cpsr不能用mov指令
11.
cmp r0,#0
moveq r1,#0 cmp結(jié)果等于則執(zhí)行該行
addgt r1,r1,#3 cmp比較結(jié)果大于則執(zhí)行該行
12.
mov指令只能操作一個字節(jié)內(nèi)或者通過一個字節(jié)內(nèi)數(shù)字左移偶數(shù)位得到的數(shù)
and 按位與
orr 按位或
13.
bic r0,r1,#0x03 0x03:0000 0011 對r1的0位和1位清零
bic cpsr,#0xc0
bic不能直接操作cpsr
tst r0,#0x20 0x20::0010 0000 測試第六位是否為零
跳轉(zhuǎn)b、bl
14.
ldr r0,[r1] 將r1地址加載到r0寄存器
str r0,[r1,#12]! 有感嘆號,r1地址變?yōu)閞1+12
str r0,[r1,#12] 無感嘆號,r1地址不變
LDRB 的指令格式與LDR相似,是將存儲器地址中的8位(1個字節(jié))讀到目的寄存器中。
LDRH的指令格式也與LDR相似,它是將內(nèi)存中的16位(半字)讀到目的寄存器中。
load意為加載、填充 加載填充寄存器 即為給寄存器賦值
store意為存儲 存儲寄存器 即為將寄存器的值存儲在其他地址
stmfd 滿增出棧
ldmfd 滿增入棧
15.
arm處理器一般使用小端模式
匯編里用@作注釋
arm 7種異常 對應(yīng)5種模式 每個異常占用4個字節(jié)
b的跳轉(zhuǎn)范圍是2^24 也就是16M
ldr的跳轉(zhuǎn)范圍是2^32 也就是4G
bootloader引導(dǎo)程序 初始化硬件,加載操作系統(tǒng)
led2 GPX2_7
環(huán)境變量路徑 /etc/profile
環(huán)境變量格式PATH=$PATH:/home/ubuntu/gcc-4.6.4/bin
source /etc/profile 導(dǎo)入環(huán)境變量
export /etc/profile 顯示環(huán)境變量
16.三類寄存器:
配置寄存器
數(shù)據(jù)寄存器
狀態(tài)寄存器
17.
串口2初始化:
GPA1CON GPA1CON & ~0xff | 0x22 設(shè)置串口發(fā)送接收模式
ULCON2 0x3
UCON2 0x5
UBRDIV2 53 (115200波特率)
UFRACVAL2 4 (115200波特率)
18.
arm編譯指令
arm-none-linux-gnueabi-gcc
19.
無源蜂鳴器 內(nèi)部無振蕩器,需要輸入方波使其產(chǎn)生蜂鳴
有源蜂鳴器 內(nèi)部有振蕩器,只需要一個持續(xù)電壓信號即可使其產(chǎn)生蜂鳴
20.
疑難點:
1.在ARM處理器的匯編語言中,對指令語法格式中的的常數(shù)表達(dá)式有這樣的規(guī)定:“該常數(shù)必須對應(yīng)8位位圖,即常數(shù)是由一個8位的常數(shù)循環(huán)移位偶數(shù)位得到的。”
比較下來, 我們可以這樣總結(jié):
1) 判斷一個數(shù)是否符合8位位圖的原則, 首先看這個數(shù)的二進(jìn)制表示中1的個數(shù)是否不超過8個. 如果不超過8個, 再看這n個1(n<=8)是否能同時放到8個二進(jìn)制位中, 如果可以放進(jìn)去, 再看這八個二進(jìn)制位是否可以循環(huán)右移偶數(shù)位得到我們欲使用的數(shù). 如果可以, 則此數(shù)符合8位位圖原理, 是合法的立即數(shù). 否則, 不符合.
2) 無法表示的32位數(shù), 只有通過邏輯或算術(shù)運算等其它途徑獲得了. 比如0xffffff00, 可以通過0x000000ff按位取反得到.
21.
別名:R11=fp;R12=ip;R13=SP;R14=LR;R15=PC
各種接口需學(xué)會查看芯片手冊和外圍電路圖,并學(xué)會參考芯片廠商的例程。