原创 ARMv8-中斷處理接口

不考慮EL2和EL3,IRQ處理分兩種情況:用戶態發生的中斷和內核態發生的中斷,相應的中斷處理接口分別爲: el1_irq el0_irq 以內核態el1發生的irq爲例: 358 .align 6 359 el1_i

原创 ARM基礎學習-存儲管理單元MMU

在ARM系統中,存儲單元MMU的主要完成以下工作: (1) 虛擬存儲空間到物理存儲空間的映射;ARM 採用頁式虛擬存儲管理,把虛擬空間分成固定大小的塊,每一塊稱爲一頁;物理內存地址空間也分成同樣大小的頁;頁的大小分爲粗粒度和細粒

原创 ARM基礎學習-快速上下文切換技術

FCSE的原理 快速上下文切換技術(FCSE)通過修改系統中不同進程的虛擬地址,避免在進行進程間切換時造成虛擬地址到物理地址的重映射,從而提高系統性能; 通常情況下,如果兩個進程佔用的虛擬地址空間重疊,系統在這兩個進程之間進行切換

原创 ARM基礎學習-寄存器尋址方式和指令

尋址方式 數據都存在存儲器中,尋址簡單地說就是找到存儲數據或指令的地址。存儲器有很多存儲單元,用於存儲數據。或者說,尋址就是讀取數據所在儲存裝置中對應地址編號中存儲的內容;尋址方式是指某一個CPU指令系統中規定的尋找操作數所在地址

原创 ARM基礎學習-協處理器CP15

CP15負責管理ARM中存儲管理系統; 常用如下命令來操作CP15的寄存器; MCR{cond} coproc,opc1,CRd,CRn,CRm,opc2 //將arm寄存器中的數據傳送到協處理的寄存器當中; MRC{co

原创 ARM基礎學習-局部標號

局部標號主要用於在局部範圍內使用。他由兩部分組成:開頭是一個0~99的數字,後面緊跟着一個通常表示該局部變量作用範圍的符號。 局部變量的作用範圍通常爲當前段,也可以用僞操作ROUT來定義局部變量的作用範圍。 局部標號定義

原创 ARM基礎學習-異常中斷處理

中斷類型 當異常中斷髮生的時候,系統執行完當前指令後,將跳轉到相應的異常中斷處理程序,當處理程序執行完畢後,程序返回到發生中斷的指令的下一條指令處執行;在進入異常中斷處理程序時,要保存被中斷的執行現場,在異常中斷處理程序退出時,要

原创 ARMv8-異常處理

ARM異常處理分爲同步(synchronous)和異步異常(asynchronous) 滿足下面條件爲同步異常: 1. 異常是由於直接執行或嘗試執行指令而生成的。 2. 提供給異常處理程序的返回地址確定保存着指示引起異常的指令

原创 ARMv8-AArch64寄存器和指令集

(一)簡述 AArch擁有31個通用寄存器,系統運行在64位狀態下的時候名字叫Xn,運行在32位的時候就叫Wn; AArch32與AArch64寄存器對應關係: (二)PSTATE PSTATE不是一個寄存器,它表

原创 ARMv8-AArch64簡述

ARMv8是ARM版本升級以來最大的一次改變,ARMv8的架構繼承以往ARMv7與之前處理器技術的基礎,除了現有的16/32bit的Thumb2指令支持外,也向前兼容現有的A32(ARM 32bit)指令集,擴充了基於64bit的

原创 ARM基礎學習-Cache和寫緩衝器

Cache介紹 CPU的主頻可以達到200MHZ,而一般性能的主存儲器操用DRAM。其存儲週期僅爲100ns-200ns,主存儲的性能將會影響整個系統的性能,Cache和寫緩衝區位於主存儲區和CPU之間,主要用來提高存儲系統性能;

原创 主流手機雙攝介紹

雖然公司做的手機很low,雙攝的產品也沒有機會接觸到,自己是做camera這塊,閒着沒事就把這段時間的主流雙攝產品特點收集下,瞭解下新技術; Iphone 7plus 主:1200 副:1200 特點: 廣角及長焦雙鏡頭 兩個冷色

原创 ARM基礎學習-ATPCS子程序調用基本規範

ATPCS是: Arm Thumb procedure Call Standard的縮寫。意思是arm程序和thumb程序中子程序調用的基本規範。 寄存器的使用規則 當參數個數小於等於4個的時候,子程序間通過R0~R3來傳遞參數,

原创 ARM基礎學習-SWI異常中斷處理

在ARM處理器中,我們常常使用SWI指令來產生一個軟中斷。軟中斷指令SWI指令中包含了一個24位的立即數,這個立即數指示了用戶請求的特定的SWI功能,即這個立即數表示的是SWI指令所想要觸發中斷的中斷號。 所以,當SWI指令觸發了

原创 Native Exception產生

自己創建一個異常 Native Exception,簡稱NE,是發生於C/C++ code裏面最常見的一種異常, 我們在寫代碼的時候一些常見的操作都會導致NE,比如空指針賦值,數組越界訪問等,現在我在代碼裏面人爲的添加一個簡