原创 Makefile中四種變量賦值的區別

Ask: What is the difference between :  VARIABLE = value  VARIABLE ?= value  VARIABLE := value  VARIABLE += value I

原创 ARM linux hard soft irq

今天在ChinaUnix論壇內核源碼版上與linuxfellow網友討論到hardirq和softirq的問題,雖 然在《深入Linux設備驅動程序內核機制》(以下簡稱“ILDD”)第5章“中斷處理”對此已有詳細的解讀,但是我覺得還是

原创 scsi調用流程

這裏只是記錄了一下scsi命令執行的流程,存在問題歡迎一起交流   void generic_make_request(struct bio *bio) static inline void __generic_make_request(

原创 mtd Nand驅動

大約用了兩個禮拜不到的時間爲公司的IPcamera系統寫了基於MTD的NAND驅動(linux-2.6.22.10內核),目前已可以在該驅動的支持下跑cramfs和jffs2文件系統,另外,該驅動也可以同時支持small page(每頁

原创 ARM Linux 的啓動過程

1. kernel運行的史前時期和內存佈局   在arm平臺下,zImage.bin壓縮鏡像是由bootloader加載到物理內存,然後跳到zImage.bin裏一段程序,它專門於將被壓縮的kernel解壓縮到KERNEL_RAM

原创 內核調試

1.調試技術 內核編程帶來了它自己的,獨特的調試挑戰。內核代碼不能簡單地在調試器中執行,也不能被簡單地跟蹤,因爲它是一組不與特定進程相關的功能。內核

原创 Linux 的內核調試

※ 調試工作艱苦,是內核級開發區別於用戶級開發的一個顯著特點。 ※ 駕馭內核調試的能力,很大程度上取決於經驗和對整個操作系統的把握。   一、調試前的準備    內核級bug具有行爲不可靠,定義不清晰或者說很難再現的諸多特定,爲

原创 oops定位

(  來自Linus Torvalds的討論: https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41/ed9c0a0cfcd3

原创 2.6的系統調用

下面的代碼大家可以在entry-common.S中找到。  在2.6.21中,認真研究大家會發現,你迴避不了這樣一個概念,EABI是什麼東西?  內核裏面談EABI,OABI,其實相對於系統調用的方式,當然我們所說的系統限於arm系統。 

原创 Linux命令行解析

處理模型 Linux kernel 的啓動包括很多組件的初始化和相關配置,這些配置參數一般是通過command line 進行配置的。在進行後續分析之前,先來理解一下command line 的處理模型: 要處理的對象是一個字符串

原创 內核同步機制

爲了避免併發,防止競爭。內核提供了一組同步方法來提供對共享數據的保護。 我們的重點不是介紹這些方法的詳細用法,而是強調爲什麼使用這些方法和它們之間的差別。Linux 使用的同步機制可以說從2.0到2.6以來不斷髮展完善。從最初的原子操作

原创 慢系統調用與信號中斷

早期的Unix系統,如果進程在一個‘慢’系統調用中阻塞時,捕獲到一個信號,這個系統調用被中斷,調用返回錯誤,設置errno爲EINTR。系統調用被分爲慢系統調用和其他兩大類別。     慢系統調用可以被永久阻塞,包括以下幾個類別:

原创 淺析blob到kernel傳遞tags參數和cmdline處理流程

1.blob blob主程序main.c int main(void) {     ...     /* initialise status */     blob_status.paramType = fromFlash;     

原创 Linux內核調試技術指南

前兩天,完成了ucos在2440上的移植,以及boot的修改。今天突然想到,我在linux下,該如何來編寫,調試比較複雜的驅動。我想這個問題應該從如何調試內核入手,先轉載兩個文字,待西西看來。 系統搭建過程中,對於系統平臺搭建工程師在完成