arm開發入(ru)門基(ji)礎,美(mei)女(nv)學霸總(zong)結(新(xin)手必備)
時間:2018-08-03 來(lai)源(yuan):未(wei)知
ARM開發
1.寄存(cun)器:
控(kong)制(zhi)寄存器(qi)、數據(ju)寄存器(qi)、狀態寄存器(qi)
2.linux內核:
進程管理、內(nei)存(cun)管理、文件系(xi)統、設備控制、網絡
3.嵌入式
專用的(de)定制(zhi)的(de)計算(suan)機系統
4.DMA總線
主存儲器和(he)外部設備(IO接(jie)口(kou))之間直(zhi)接(jie)進行數據傳輸的通道,不需要經過(guo)CPU
45.串口
2、3連(lian)接(jie)數據(ju)傳(chuan)輸和接(jie)收端,5接(jie)地
6.指令集
CISC復雜指令集
RISC精簡(jian)指令集
7.ARM 處理器(qi)里(li)面有37個(ge)寄(ji)存器(qi)
8.ARM工作模式
User、FIQ、IRQ、Supervisor、Abort、Undef、System
Mode位:處理器模式(shi)位
10000 User mode 10111 Abort mode
10001 FIQ mode; 11011 Undfined mode
10010 IRQ 11111 System mode;
10011 SVC mode;
9.
10.
MRS指令(ling) mrs r0,cpsr 將cpsr賦(fu)值給r0
MSR指令 msr cpsr,r0 給cpsr賦值(zhi)為r0
操作cpsr不能用mov指令
11.
cmp r0,#0
moveq r1,#0 cmp結果等(deng)于(yu)則(ze)執(zhi)行該(gai)行
addgt r1,r1,#3 cmp比較結果大于則(ze)執(zhi)行該行
12.
mov指令只能操作一個字節內或者通過(guo)一個字節內數字左移偶數位得到(dao)的數
and 按(an)位與(yu)
orr 按(an)位或
13.
bic r0,r1,#0x03 0x03:0000 0011 對r1的0位和1位清零
bic cpsr,#0xc0
bic不能直接操作cpsr
tst r0,#0x20 0x20::0010 0000 測(ce)試第六位是否為零(ling)
跳轉b、bl
14.
ldr r0,[r1] 將r1地址加載(zai)到r0寄存(cun)器
str r0,[r1,#12]! 有感嘆號,r1地址(zhi)變為r1+12
str r0,[r1,#12] 無感嘆號,r1地址不變
LDRB 的指令格式與LDR相似,是將存儲(chu)器地(di)址中的8位(1個字節(jie))讀到目的寄存器中。
LDRH的指令格式也(ye)與LDR相似,它是將內(nei)存(cun)中(zhong)的16位(wei)(半字)讀(du)到目的寄存(cun)器(qi)中(zhong)。
load意為加載、填充 加載填充寄存器 即為給寄存器賦值
store意(yi)為(wei)存儲(chu) 存儲(chu)寄存器(qi) 即為(wei)將(jiang)寄存器(qi)的值存儲(chu)在其(qi)他地址
stmfd 滿增出棧
ldmfd 滿增入棧
15.
arm處理器一般使用小端模(mo)式
匯編里用@作注(zhu)釋(shi)
arm 7種(zhong)異常 對(dui)應(ying)5種(zhong)模式 每個異常占用4個字(zi)節
b的跳轉范圍是2^24 也就是16M
ldr的跳轉(zhuan)范圍(wei)是(shi)2^32 也(ye)就是(shi)4G
bootloader引導程序(xu) 初(chu)始化硬件(jian),加載(zai)操作系統(tong)
led2 GPX2_7
環(huan)境變(bian)量路徑 /etc/profile
環境變量格式PATH=$PATH:/home/ubuntu/gcc-4.6.4/bin
source /etc/profile 導入(ru)環境變(bian)量
export /etc/profile 顯示環境變(bian)量
16.三(san)類(lei)寄存器:
配置寄存器
數據寄存器
狀態寄存器
17.
串口2初始化:
GPA1CON GPA1CON & ~0xff | 0x22 設置串口發送接(jie)收模(mo)式(shi)
ULCON2 0x3
UCON2 0x5
UBRDIV2 53 (115200波(bo)特率(lv))
UFRACVAL2 4 (115200波特率(lv))
18.
arm編譯指令
arm-none-linux-gnueabi-gcc
19.
無(wu)(wu)源蜂(feng)鳴器 內部無(wu)(wu)振蕩器,需要輸入(ru)方波使其產生蜂(feng)鳴
有源蜂鳴(ming)器 內部有振蕩器,只(zhi)需(xu)要一(yi)個持續電壓信(xin)號即可使其產生蜂鳴(ming)
20.
疑難點:
1.在ARM處理器的(de)匯編語言中(zhong),對(dui)(dui)指令(ling)語法格式中(zhong)的(de)的(de)常(chang)數(shu)(shu)表達式有這樣的(de)規(gui)定:“該常(chang)數(shu)(shu)必須對(dui)(dui)應8位位圖,即常(chang)數(shu)(shu)是由一個8位的(de)常(chang)數(shu)(shu)循環移(yi)位偶(ou)數(shu)(shu)位得到的(de)。”
比較下來, 我們可以這樣總(zong)結(jie):
1) 判斷一個(ge)(ge)數(shu)(shu)(shu)是(shi)否(fou)符(fu)(fu)合8位(wei)位(wei)圖的原則, 首先(xian)看(kan)這(zhe)個(ge)(ge)數(shu)(shu)(shu)的二進(jin)制表示中(zhong)1的個(ge)(ge)數(shu)(shu)(shu)是(shi)否(fou)不超過(guo)(guo)8個(ge)(ge). 如(ru)果(guo)(guo)不超過(guo)(guo)8個(ge)(ge), 再看(kan)這(zhe)n個(ge)(ge)1(n<=8)是(shi)否(fou)能同時放到8個(ge)(ge)二進(jin)制位(wei)中(zhong), 如(ru)果(guo)(guo)可以(yi)放進(jin)去, 再看(kan)這(zhe)八個(ge)(ge)二進(jin)制位(wei)是(shi)否(fou)可以(yi)循環(huan)右(you)移偶(ou)數(shu)(shu)(shu)位(wei)得到我們欲使用的數(shu)(shu)(shu). 如(ru)果(guo)(guo)可以(yi), 則此(ci)數(shu)(shu)(shu)符(fu)(fu)合8位(wei)位(wei)圖原理, 是(shi)合法的立即數(shu)(shu)(shu). 否(fou)則, 不符(fu)(fu)合.
2) 無法表(biao)示的(de)32位數(shu), 只有通過(guo)邏(luo)輯或算(suan)術(shu)運算(suan)等其它途徑獲得(de)了. 比如(ru)0xffffff00, 可以(yi)通過(guo)0x000000ff按位取反得(de)到.
21.
別名:R11=fp;R12=ip;R13=SP;R14=LR;R15=PC
各(ge)種接口(kou)需(xu)學會查看芯(xin)(xin)片手冊和外圍電路圖,并學會參考芯(xin)(xin)片廠商的例程。