原创 linux驅動由淺入深系列:camera驅動之二(基於高通平臺的V4L2結構及代碼分析)

在上一篇文章中介紹了camera的基礎知識和相關概念,我們一起來了解一下驅動相關的代碼結構。本文以高通+android平臺爲示例,首先看一下整體框圖:這張圖是從整體上來看的1,圖中最下面的是kernel層的驅動,其中按照V4L2架構實現了

原创 linux驅動由淺入深系列:ALSA框架詳解 音頻子系統之二

linux驅動由淺入深系列:tinyalsa(tinymix/tinycap/tinyplay/tinypcminfo)音頻子系統之一linux驅動由淺入深系列:ALSA框架詳解 音頻子系統之二本文以高通平臺爲例,介紹一下android下

原创 linux驅動由淺入深系列:塊設備驅動之二(從用戶空間的read、write到實際設備物理操作整體架構分析)

linux驅動由淺入深系列:塊設備驅動之一(高通eMMC分區實例)linux驅動由淺入深系列:塊設備驅動之二(從用戶空間的read、write到實際設備物理操作整體架構分析)linux驅動由淺入深系列:塊設備驅動之三(塊設備驅動結構分析,

原创 linux驅動由淺入深系列:塊設備驅動之三(塊設備驅動結構分析,以mmc爲例)

linux驅動由淺入深系列:塊設備驅動之一(高通eMMC分區實例)linux驅動由淺入深系列:塊設備驅動之二(從用戶空間的read、write到實際設備物理操作整體架構分析)linux驅動由淺入深系列:塊設備驅動之三(塊設備驅動結構分析,

原创 文件系統系列之二:ext3/vfs文件系統的結構分析

在上一篇文章中,我們介紹了基本的文件系統概念和SD卡中常用的FAT32文件系統。在有了上文的基礎,我們這次來學習一下linux中默認的ext文件系統。ext文件系統是爲linux量身打造的,因此和linux的虛擬文件系統(VFS)在基礎概

原创 linux網絡驅動分析

網絡驅動與字符驅動和塊驅動最大的區別在於沒有設備節點,這也是linux中一切皆文件的一個例外。網絡設備沒有設備節點,那麼給應用層提供的操作方式是怎麼的呢?答案是-系統調用。如我們在網絡編程中經常用到的socket(),bind(),lis

原创 PCIe的內存地址空間、I/O地址空間和配置地址空間

PCIe的內存地址空間、I/O地址空間和配置地址空間 pci設備與其它接口的設備(如i2c設備)最大的不同是存在內存地址空間和配置地址空間,本文分析一下它們的用途。 首先區分一下IO空間和內存空間 cpu會訪問的設備一般有內存和外設寄存器

原创 高通平臺啓動log概述(PBL log、sbl1 log、kernel log)

高通平臺啓動log概述(PBL log、sbl1 log、kernel log) 在嵌入式linux的調試過程中log有着至關重要的地位,等同於醫生的CT報告。能夠熟悉啓動各個階段的log,如PBL階段,sbl1階段,kernel階段,

原创 android編譯系統解析,執行make bootimage後mk文件的調用順序詳解

android編譯系統解析,執行make bootimage後mk文件的調用順序詳解 構成android編譯系統的有make文件(makefile,xxxxx.mk),shell腳本,python腳本等m

原创 linux中netlink機制的實例講解

netlink作爲內核層與用戶層雙向通信的交互機制廣泛的應用在網絡驅動及字符驅動的uevent機制中。 Netlink 相對於系統調用,ioctl 以及 /proc文件系統而言具有以下優點:1,netli

原创 linux驅動由淺入深系列:顯示子系統之二(基於android的分析)

上一篇文章中介紹了應用層對顯示系統的使用,我們操作framebuffer在屏幕上畫出了圖形。這次我們一起來看一下android中顯示子系統各個模塊的功能。android系統音頻系統在高通平臺上的框圖:HWUIUI硬件加速,從Androd

原创 文件系統系列之一:fat文件系統的結構分析

在這個系類的開篇還是先說一下文件系統是什麼吧。首先來介紹一下對u盤的格式化這個操作,格式化不是僅僅刪除了所有文件,還爲接下的來文件存儲約定了一種存放格式,這種約定的文件存放格式就叫做文件系統。再用最通俗的說法簡要介紹一下,磁盤如sd卡只能

原创 linux系統調用實現的介紹

操作系統負責資源管理,當應用層需要使用資源時就需要向內核發起系統調用。如讀取文件時發起syscall_read系統調用,建立socket時發起syscall_socket等等 內核完成引導後,就處於等待處

原创 linux驅動由淺入深系列:顯示子系統之二(高通平臺lcd驅動代碼分析)

在上一篇文章中我們初步瞭解了lcd對應用層提供的接口-framebuffer,以及應用層通過fb在lcd上畫圖的示例。本文我們來看一下驅動層的相關邏輯,主要介紹幾個核心數據結構fb_info, fb_va

原创 LK(little kernel)第一行代碼鏈接位置分析及lk啓動過程

LK是(L)ittle (K)ernel的縮寫,是一個功能及其強大的bootloader開源項目,但現在只支持arm和x86平臺。 LK的一個顯著的特點就是它實現了一個簡單的線程機制(thread),和對