原创 /etc/inittab

Linux完成內核(Kernel)引導後,會開始運行init程序。init程序的進程號始終爲1,是所有系統進程的起點。 init程序需要讀取配置文件/etc/inittab。/etc/inittab是一個不可執行的文本文件,它由若干行指令

原创 flash設備驅動

MTD  :內存技術設備 Flash 設備驅動層次:設備節點 ==》MTD設備層,包括MTD字符設備和MTD塊設備==》MTD原始設備層==》Flash硬件驅動層 描述MTD原始設備的數據結構是mtd_info 。每一個分區被認爲是一

原创 彙編中bss,data,text,rodata,heap,stack

bss段: BSS段(bsssegment)通常是指用來存放程序中未初始化的全局變量的一塊內存區域。BSS是英文BlockStarted by Symbol的簡稱。BSS段屬於靜態內存分配。 data段: 數據段(dataseg

原创 EEPROM

一、AT24XX 系列 EEPROM:     AT24CXX系列是ATMEL公司生產的串行電可擦除可編程存儲器,8引腳封裝,具有可掉電記憶、存儲容量大等特點。可以在2線總線上並接多片芯片,適用於需要大容量數據存儲的嵌入式系統。    

原创 struct file和struct inode

struct file:代表一個打開的文件描述符,系統中每一個打開的文件在內核中都有一個關聯的struct file。它由內核在open 時創建,並傳遞給在文件上操作的任何函數,直到最後關閉。當文件的所有實例都關閉之後,內核釋放這個數據

原创 Linux併發控制方式

1、屏蔽中斷  應用範圍:單CPU 原理:屏蔽中斷後,中斷無法處理,不存在競態;屏蔽中斷後,進程無法調度,只能執行本進程,因此也不存在竟態。 使用方法: local_irq_disable()    //屏蔽中斷 local_irq_en

原创 typedef int(init_fnc_t) (void);這句話是什麼意思啊?

typedef int(init_fnc_t) (void);這句話是什麼意思啊? 如果定義的是函數指針的話int(*init_fnc_t) (void);應該有這個星號吧? typedef int(*init_fnc_t) (void)

原创 IS_ERR()

linux內核中的IS_ERR()、PTR_ERR()、ERR_PTR() IS_ERR宏定義在include/linux/err.h,如下所示: #define MAX_ERRNO 4095 //判斷x是不是在(0xfff

原创 kobject_map

/* * linux/drivers/base/map.c * * (C) Copyright Al Viro 2002,2003 * Releas

原创 linux內核中的IS_ERR()、PTR_ERR()、ERR_PTR()

linux內核中的IS_ERR()、PTR_ERR()、ERR_PTR() IS_ERR宏定義在include/linux/err.h,如下所示: #define MAX_ERRNO 4095 //判斷x是不是在(0xffff

原创 printk

printk是內核態信息打印函數,功能和標準C庫的printf類似。 printk還有信息打印級別。   函數原型: int printk(cons

原创 應用程序和VFS之間的接口是系統調用

應用程序和VFS之間的接口是系統調用,而VFS與磁盤文件系統以及普通設備之間的接口是file_operatioons結構體成員函數,這個結構體包含對文件進行打開、關閉、讀寫、控制等一系列成員函數。由於字符設備的上層沒有磁盤文件系統,所以字

原创 Makefile自動變量

所謂自動化變量,就是這種變量會把模式中所定義的一系列文件自動挨個取出,直至所有符合模式的文件 都取完。自動化變量只應出現在規則的命令中。 下面是所有的自動化變量及其說明:   $@ 表示規則中的目標文件。如果目標中有函數庫文件,則代表目標

原创 處理器內核

#處理器內核 -> cache -> 寫緩衝器 -> 主存 -> 輔助存儲器 #寫操作,對內核而言非迫切,所以加一個寫緩衝器很好。 #cache可放在處理器內核與MMU之間(邏輯 cache,主流),也可放在MMU與主存之間(物理 cac

原创 linux驅動概述

內核主要包括以下功能:進程管理、內存管理、文件系統、設備控制、網絡功能。 進程管理:創建和銷燬進程,處理進程的輸入輸出,實現不同進程之間的通信,進程調度 Linux將設備分成三種基本類型:字符設備、塊設備、網絡設備 內核運行時不依賴