原创 U-boot中的gd結構體

U-boot中有一個用來保存很多有用信息的全局結構體--gd_t(global data縮寫),其中包括了bd變量,可以說gd_t結構體包括了u-boot中所有重要全局變量。 對於ARM平臺這個結構體的定義大致如下: include

原创 Linux熱插拔及mdev機制

1、創建設備類,是爲了讓mdev知道根據這些信息來創建設備節點,根據/sys來創建,所以從devfs開始,根文件系統就引入了一個/sys目錄,/sys/dev下面都是內核加載的驅動的主從設備號   2、class的初始化過程(在/sy

原创 Linux進程的睡眠和喚醒

1  Linux進程的睡眠和喚醒    在Linux中,僅等待CPU時間的進程稱爲就緒進程,它們被放置在一個運行隊列中,一個就緒進程的狀態標誌位爲TASK_RUNNING。一旦一個運行中的進程時間片用完, Linux內核的調度器會剝奪這個

原创 U-boot 2014 啓動流程詳細分析

U-boot 2014 啓動流程: -> _start: b     reset     (arch/arm/cpu/armv7/start.S line 28) -> bl     _main     (line 151)    

原创 Linux中kfifo數據結構的精妙之處:即使溢出仍然正確

kfifo是linux內核中的環形緩衝區,實現了先進先出的隊列數據結構。以下爲kfifo的數據結構定義(內核版本2.6.33.20): [cpp] view plaincopy struct kfifo {          un

原创 Android文件系統的結構及目錄用途、操作方法

以下內容轉載 1、android文件系統的結構 android源碼編譯後得到system.img,ramdisk.img,userdata.img映像文件。其中,ramdisk.img是emulator的

原创 Android arm linux kernel啓動流程(二)

寫這個總結的時候咱的心情是沉重的,因爲還有好多東西沒弄明白。。。感嘆自己的知識還是淺薄得很,前途錢途漫漫阿~~不過基本脈絡是清楚的,具體的細節只能留在以後有時間再啃了。這裏的第二部分啓動流程指的是解壓後k

原创 Linux 2.6 menuconfig內核編譯配置選項詳解

Code maturity level options 代碼成熟度選項 Prompt for development and/or incomplete code/drivers 顯示尚在開發中或尚未完成的代碼與驅動.除非你是測試人員

原创 關於bootloader鏈接腳本中的ALIGN關鍵字的解析

問題描述: 前幾天遇到一個問題:下圖表示的鏈接腳本中的綠色框中ALIGN(4):表示什麼意思?是4個字節對齊呢?還是2的4次冪個字節對齊?還有就是對齊是如何對齊的呢?如果有結論該如何驗證這些內容? OUTPUT_ARCH(arm)

原创 Linux 內核list_head 學習(一)

在Linux內核中,提供了一個用來創建雙向循環鏈表的結構 list_head。雖然linux內核是用C語言寫的,但是list_head的引入,使得內核數據結構也可以擁有面向對象的特性,通過使用操作list_head 的通用接口很容易實

原创 kzalloc 函數詳解

用kzalloc申請內存的時候, 效果等同於先是用 kmalloc() 申請空間 , 然後用 memset() 來初始化 ,所有申請的元素都被初始化爲 0. [csharp] view plaincopy /**  * kzal

原创 U-Boot重定位代碼分析

概述 重定位(relocate)代碼將BootLoader自身由Flash複製到SDRAM,以便跳轉到SDRAM執行。之所以需要進行重定位是因爲在Flash中執行速度比較慢,而系統復位後總是從0x00000000地址取指。 重定位代碼,

原创 windows下載android源碼

在網上有已經有很多這樣的文章了,自己對這一塊也不是太熟悉,主要是按照以前的方法,會出現以下錯誤: 還是從頭開始吧,先下載window的git工具msysgit:http://code.google.com/p/msysgit/,如下

原创 Android arm linux kernel啓動流程(一)

雖然這裏的Arm Linux kernel前面加上了Android,但實際上還是和普遍Arm linux kernel啓動的過程一樣的,這裏只是結合一下Android的Makefile,講一下bootim

原创 巧奪天工的kfifo

Linux kernel裏面從來就不缺少簡潔,優雅和高效的代碼,只是我們缺少發現和品味的眼光。在Linux kernel裏面,簡潔並不表示代碼使用神出鬼沒的超然技巧,相反,它使用的不過是大家非常熟悉的基礎數據結構,但是kernel開發者