原创 linux內核可裝載模塊(lkm)傳參機制 module_param

對於如何向模塊傳遞參數,Linux kernel 提供了一個簡單的框架。其允許驅動程序聲明參數,並且用戶在系統啓動或模塊裝載時爲參數指定相應值,在驅動程序裏,參數的用法如同全局變量。   使用下面的宏時需要包含頭文件。   通過宏modu

原创 ION memory allocator

什麼是ION ? 我的理解就是google在android4.0引入的一種內存管理器,來替代之前各個芯片廠家(高通、Intel、TI等)自己的方案.以下是網上找到的:   it has become clear that PMEM is

原创 Linux設備驅動程序的基本知識

設備驅動程序用作硬件與使用硬件的應用程序(用戶代碼)或內核之間的轉譯器,它將硬件的工作細節隱藏於幕後,從而起到簡化編程的作用。編程人員可以利用一套標

原创 網絡編程學習(五)

udp套接字編程:sendto、recvfrom 如果recvfrom的from參數是一個空指針,那麼相應的長度參數(addrlen)也必須是一個空指針,表示我們並不關心數據發送者的協議地址。 void dg_cli(FILE *fp,

原创 Android player 流程(供參考)

Java層 要開啓一個播放器進行播放, 需要以下幾行代碼: Java代碼MediaPlayer mp = new MediaPlayer(); mp.setDisplay (...); /// 設置播放器Suface mp.setData

原创 android pmem 和ashmem 介紹及實例分析

1、Ashmem(匿名共享內存驅動:AnonymousShared Memory) 它基於mmap系統調用,不同進程可以將同一段物理內存映射到各自的虛擬地址控制,從而實現共享 A、(mmap:是一種共享內存的系統。假如:A進程的內

原创 android Sim卡鎖定 pin解鎖流程學習

1.Android自帶的pin解鎖部份在framework/base/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java Sim鎖定後開機,會調用這個類,sho

原创 SQLite 設計及概念

       1、API   由兩部分組成: 核心API(core API) 和擴展API(extension API)   核心API的函數實現基本的數據庫操作:連接數據庫,處理SQL,遍歷結果集。它也包括一些實用函數,比如字符串轉

原创 Android系統服務-WindowManager

WindowManager是Android中一個重要的服務(Service )。WindowManager Service 是全局的,是唯一的。它將用戶的操作,翻譯成爲指令,發送給呈現在界面上的各個Window。Activity會將頂級的

原创 Android Camera架構淺析

1、Camera成像原理介紹 Camera工作流程圖 Camera的成像原理可以簡單概括如下: 景物(SCENE)通過鏡頭(LENS)生成的光學圖像投射到圖像傳感器(Sensor)表面上,然後轉爲電信號,經過A/D(模數轉換)轉換後變爲

原创 使用 /proc 文件系統來訪問 Linux 內核的內容

最初開發 /proc 文件系統是爲了提供有關係統中進程的信息。但是由於這個文件系統非常有用,因此內核中的很多元素也開始使用它來報告信息,或啓用動態運行時配置。 /proc 文件系統包含了一些目錄(用作組織信息的方式)和虛擬文件。虛擬文件可

原创 線程同步:Mutex和Condition

Android提供了兩個封裝好的同步類,它們是Mutex和Condition。這是重量級的同步技術,一般內核都會有對應的支持。另外,OS還提供了簡單

原创 Android-StageFright之數據流的封裝和AwesomePlayer流程

數據流的封裝 一、由數據源DataSource生成MediaExtractor。 通過MediaExtractor::Create(dataSource)來實現。Create方法通過兩步來生成相應的MediaExtractor: 1、通過

原创 Qualcomm Camera 開發遇到的錯誤及解決方法

1. Camera module probe error:    (2011.6.28) I2C slave address:0x48 not connected. I2C read transfer failed. Root cause

原创 linux poll函數

# include < sys/ poll. h> int poll ( struct pollfd * fds, unsigned int nfds, int timeout); 和select()不一樣,poll()沒有使用低效的三個