---
# System prepended metadata

title: ARM
tags: [work]

---

# ARM
###### tags: `work`

![](https://i.imgur.com/FGJkKxS.png)

ARM架構
優點: 低成本 高效能 低耗電
ARNv1~v9
    ARM經典核心系列
    ARM Cortex系列
經典核心系列於2009年就沒有新的了
都是Cortex

Cortex有[A,R,M三種系列](https://www.cool3c.com/article/107624), 分別用在
A: 應用 Apllication
R: 反應速度, 微處理器 Microprocessor?
M: 微控制器 嵌入式
[三種各自的差別](https://www.cool3c.com/article/107624)

### Register
16 個 32 bit 長度的暫存器，其中有 13 個為 通用暫存器 (General Purpose Registers, GPRs) ， R13-R15 則有其他用途

:::info
R13 通常會被用來當作堆疊指標 (Stack Pointer, SP)，在實際使用中，一般會在記憶體分配一些空間作為堆疊，系統初始化時將這一塊堆疊的底部位址儲存到 R13 。
::: 
:::info
R14 為 連結暫存器 (Link register, LR) ，用來存放副程式的返回地址，比如我們在組語中呼叫到了 BL、BLX 等指令時，會將 PC 的數值複製到 R14 中，作為反還 (return) 的位址，具體範例如下。
::: 
:::info
R15 則是程式計數器(Program Counter, PC)，用來存放下一道指令的位址，根據 ARM7TDMI Technical Reference Manual， R15 在 ARM 或是 Thumb 模式下狀況不同

- ARM 模式 (ARM state)
bits [1:0] 未定義且會被忽略， bits [31:2] 保留了 PC 數值
- Thumb 模式 (Thumb state)
bit [0] 未定義且被忽略， bits [31:1] 保留了 PC 數值
::: 

ARM指令: 32 bit

thumb-1指令: 指令大小為16 bit, 優點在於小, 可以讓指令密度更高

thumb-2指令: 指令大小為16與32bit綜合, 優點在於效率比thumb-1更好, 比ARM指令更密集
為什麼比thumb-1更好, 因為thumb-1只有16 bit, 要做一些功能會讓指令數增加很多, 因此有了綜合ARM與thumb-1的thumb-2指令


VFP（向量浮點）是在協同處理器針對ARM架構的衍生技術。它提供低成本的單精度和倍精度浮點運算能力

---
### NEON
[基礎介紹](https://zyddora.github.io/2016/02/28/neon_1/)


---

安全性擴充TrustZone

reference: 中文維基百科
https://zh.wikipedia.org/wiki/ARM%E6%9E%B6%E6%A7%8B#%E5%85%A7%E6%A0%B8%E7%A8%AE%E9%A1%9E


除了A, R, M三種
2020還出了X1, 能高度客製化（三劍客：A78, Mali, X1）

高通 三星都自研架構, 但效果沒很好, 三星在2019就不自研架構了
目前自研架構最強的是Apple


---

[**jserv ARM課程**](https://hackmd.io/@sysprog/arm-architecture) 

ARM研究(cortex A72, NEON(Adcanced SIMD) )

[課程單元 - 回顧 ARM 架構(w/ Thumb、VFP、NEON)](https://hackmd.io/tv2qzMGXQ42QCOMoqDoQsg?view)




進階SIMD（NEON）:
它是一個結合64位元和128位元的單指令多重數指令集（SIMD），其針對多媒體和訊號處理程式具備標準化加速的能力。
NEON具有一組廣泛的指令集、各自的暫存器檔案，以及獨立執行的硬體。NEON支援8、16、32和64位元的整數及單精度浮點數據，並以單指令多重數的方式運算，執行圖形和遊戲處理中關於語音及視訊的部分。
單指令多重指令集在向量超級處理機中是個決定性的要素，它具備同時多項處理功能。在NEON技術中，SIMD最高可同時做16個運算。

---

raspberry pi facial landmarks detection
[1](https://circuitdigest.com/microcontroller-projects/facial-landmark-detection-using-raspberry-pi-opencv) [2](https://www.pyimagesearch.com/2017/10/23/raspberry-pi-facial-landmarks-drowsiness-detection-with-opencv-and-dlib/)


---

馮紐曼架構:指令與資料記憶體合併
哈佛架構:指令與資料記憶體分開, 改進後的哈佛反而沒有將兩者完全分開

---

[淺談ARM處理器的七種異常處理](https://kknews.cc/zh-tw/code/429axqv.html)

---

[Jserv: Intel和ARM的Interrupt](https://hackmd.io/@sysprog/linux-interrupt?type=view)

softirq, tasklet, workqueue

tag: `ARM`, `embedded system`, `driver`