(基于ARM的)微機原理與接口技術(shù)筆記(3)
咕了幾天,不好意思.先說個題外話,專欄不能插入markdown有億些難受.樹莓派pico可以整活,國慶節(jié)考慮整個好活.
下面言歸正傳.先從一些計算機的存儲系統(tǒng)說起.

這樣的問題需要使用位運算去解決.假設(shè)輸入A/D的數(shù)據(jù)存到變量a里面了,先檢查符號位,然后去取原碼,最后輸出.
注意字符串求長
strlen
求的東西是什么.如果是寬字符wchar_t
型的,求長wcslen
一組固定大小的
bit
稱為字(WORD
)在《微機》中先默認一個字
WORD
字長32位但是
Windows.h
中有下面的定義typedef unsigned short WORD;
Big-Endian 高字節(jié)放低地址,低字節(jié)放高地址
Little-Endian 低字節(jié)放低地址,高字節(jié)放高地址
查看內(nèi)存:
首地址是
0x20002000
地址從上到下增長.一個地址里面是一個byte如果在
0x20002008
先看地址,再看地址增長方向,然后看一個格子多大.
拿下面的內(nèi)存片段舉例:


ARM概述
1.ARM及其應(yīng)用
處理器架構(gòu)包括指令集,寄存器,處理器時序.
ARM (Advanced RISC Machines)公司成立于1990.11 ARM不生產(chǎn)處理器只生產(chǎn)
IP
,授權(quán)給生產(chǎn)商.900片ARM/秒 700萬片ARM/天
2.處理器體系
《微機》用的ARM7/ARM7TDMI STR710F
STM32: ARM Cortex M3/M4
樹莓派4B: ARM Cortex A72
A系列追求高性能可以運行操作系統(tǒng)(android,linux等),R系列追求實時和性能,M系列低功耗用于單片機
智能手機有>=10片ARM


同樣是32位單片機,ST R710F的核是個比較老的ARM7TDMI. STM32和樹莓派pico是相對比較新的Cortex-M核.樹莓派4B則是4個64位Cortex-A72核.
3.ARM的工作狀態(tài)
32位架構(gòu)
byte(字節(jié))?8bit
halfword(半字) 16bit
word(字) 32bit
ARM狀態(tài) 32位ARM指令集 處理32位
Thumb狀態(tài) 16位Thumb指令集(是ARM指令集的子集)
ARM狀態(tài)和Thumb狀態(tài)可以互相切換 區(qū)別是指令長度不一樣
7個基本工作模式
User:非特權(quán)模式(其它的稱為特權(quán)模式)
FIQ:快中斷模式
IRQ:中斷模式
Supervisior:管理模式 操作系統(tǒng)調(diào)用 復(fù)位/軟中斷 上電復(fù)位
Abort:存取異常
Undef:未定義指令異常
System:系統(tǒng)模式
4.ARM的寄存器
31個通用寄存器 6個狀態(tài)寄存器
實際用的是16+2
r0到r7是共用的
r8-r12除了快中斷以外通用,快中斷有專用的r8-r12目的是加速快速響應(yīng)
r13,r14有6組
r13 棧指針(stack pointer)表示當前執(zhí)行
r14 鏈接寄存器 保存返回的地址
r15 程序計數(shù)器 正在"取指"的指令 要考慮三級流水線的問題
cpsr 當前程序狀態(tài)寄存器
spsr 程序狀態(tài)保存寄存器(異常狀態(tài)時用于恢復(fù))

31位到28位 條件位
7位中斷禁止位
6位快中斷禁止位
程序計數(shù)器(pc)
16位指令 按半字對齊
pc值bit[31:1]決定
bit[0]未定義
32位指令 按字對齊
pc值bit[31:2]決定
bit[1:0]未定義
ARM狀態(tài)
Thumb狀態(tài)
異常處理
改變arm狀態(tài)
改變異常模式
屏蔽中斷
copy cpsr到spsr
設(shè)置cpsr相應(yīng)位
存儲返回地址
修改pc指向終端入口
異常后返回
從spsr恢復(fù)cpsr