原创 ARM TTBR0,TTBR1寄存器與ARM32頁表複製

一,ARM TTBR0,TTBR1寄存器; 從ARMV6開始增加了TTBR1寄存器,但是在ARM32的時候,TTBR1寄存器未使用,原因如下: TTBR0和TTBR1寄存器只支持2G,1G,512M等,但是ARM32虛擬地址空間的

原创 LDD之IO端口與IO內存

一,IO端口與IO內存          獨立編址:處理器將IO地址在獨立的IO地址空間編排(具有獨立的操作指令,指令短訪問速度快)——設備寄存器與設備內存被映射到IO地址空間稱爲IO映射;          統一編址:處理器將IO地址和

原创 Android SurfaceFlinger VSync流程分析

一,VSync機制的作用及VSync在SurfaceFlinger服務中的位置: VSync信號通常都來自硬件控制器,在Android中也可以採用軟件模擬; VSync的作用,如下圖(以雙緩衝爲例,爲了提高流暢性有時也

原创 LDD之數據類型

Linux內核數據類型分爲三種:   1,標準C語言基本數據類型:在不同操作系統中內存空間大小不同          byte,char,short,int,long,long long          unsigined char,u

原创 LDD DMA訪問內存

DMA 直接內存訪問, DMA是設備與內存之間不經過cpu直接傳輸數據的一種機制,CPU讀取設備數據每次需要經過讀取指令,執行指令,讀取數據的過程,所以有一部分時間花費在讀取指令和執行指令的過程;DMA在設備與內存之間傳輸數據時不需要執行

原创 LDD之USB設備驅動

一,USB設備規範:         USB硬件層由USB設備,USB總線,USB主機控制器組成;         USB驅動層由USB設備側驅動程序,USB主機控制器驅動程序,USB核心,USB宿主機上的設備驅動程序組成;      

原创 Linux X86 PS/2鍵盤驅動分析記錄

1,Linux X86 PS/2 鍵盤驅動框架流程(以下均已Intel 8042鍵盤控制器爲例): 1.1 設備初始化註冊流程: 鍵盤控制器硬件驅動(i8042.c) -> 串口驅動核心(serio.c) -> 串口驅動(atkbd.

原创 LDD之內存分配

一,kmalloc內存分配介紹;         void *kmalloc(size_t  size, int flags);         1,參數               size參數是需要分配的連續內存(連續的虛擬頁和物理頁

原创 Binder通信——用戶空間C/C++層架構與Java層對接點概述

一,Java層主要通過下述API訪問Binder: Binder——————————Java層Binder對象 BinderProxy——————Java層服務端Binder在客戶端進程中的代理對象 IHelloService———

原创 Linux Input輸入驅動架構記錄

Linux 輸入驅動框架有三部分組成:輸入設備驅動程序,輸入子系統核心,輸入事件驅動程序; 1,輸入設備驅動程序初始化硬件設備寄存器,讀取硬件信息,構造struct input_dev結構體實例,並將struct input_dev結構

原创 LDD之中斷

一,Linux 中斷實現:        <linux/interrupt.h>         中斷註冊:int request_irq(int irq,irqreturn_t (*irq_handle)(int irq,void *d

原创 LDD內存映射

1,Linux內核內存管理基礎:         1》Linux系統5種地址類型:用戶空間虛擬地址,物理地址,總線地址,內核邏輯地址,內核虛擬地址;                內核邏輯地址就是內核虛擬地址,內核邏輯地址通過kmallo

原创 LDD操作延遲(延緩)

延遲:      一,內核定時器              1,內核定時器用在延遲指定時長之後調度異步函數執行(調度異步函數在延遲指定時長之後執行);              2,內核定時器在 “軟件中斷”上下文中,以院子模式運行,所以

原创 對芯片總線接口分類記錄

嵌入式芯片處理器與外圍設備的鏈接接口基本上可以歸納爲三種接口:GPIO接口,協議類接口,類內存類接口; 一,GPIO總線接口是最簡單的接口,每個GPIO引腳通過配置寄存器和數據寄存器兩個寄存器的相應位來控制; 每個GPI

原创 LDD之PCI設備

一,PCI總線:          1,PCI總線是系統總線;Host-Briage(PCI總線0)——PCI設備,PCI-PCI briage ——PCI總線1(圖片來自精通Linux設備驅動程序開發)