核心主要包括以下功能:程序管理、記憶體管理、檔案系統、裝置控制、網路功能。
程序管理:建立和銷毀程序,處理程序的輸入輸出,實現不同程序之間的通訊,程序排程
linux將裝置分成三種基本型別:字元裝置、塊裝置、網路裝置
核心執行時不依賴c庫,也不能依賴c庫,因此不能使用printf等
printk不支援浮點數,核心**也不能實現浮點數運算。
編譯核心模組的makefile:
ifneq ($(kernelrelease),)
obj-m := hello.o
else
kdir := /home/ubuntu/splicer/f14/kernel
all:
make -c $(kdir) m=$(pwd) modules
clean:
rm -f *.ko *.o *.mod.c .symvers
endif
linux 核心**(包括驅動程式**)必須是可重入的,它必須能夠同時執行在多個上下文中。
核心**可通過訪問全域性項 current 來獲得當前程序,它是乙個指向 struct tast_struct 的指標。在 open、read 等系統呼叫的執行過程中,當前程序指的是呼叫這些系統呼叫的程序。
核心的棧一般都很小,因此在使用較大的變數結構時,應動態分配該結構。
Linux驅動學習 Linux裝置驅動概述
linux裝置驅動概述 以點亮led為例 包括應用程式 庫 作業系統 核心 驅動程式。而開發人員中 只要關注自己的那一層,相鄰層只關注介面就可以了 應用程式使用庫提供的open函式開啟led的裝置檔案 庫根據open函式傳入的引數執行 swi 指令,這是軟中斷,這條指令會引起 cpu異常,進入核心 ...
Linux驅動(1)概述
以上是linux驅動從入口函式到驅動probe函式的整個流程。module init init module 驅動入口函式,一般在驅動 的最下方。其引數即為驅動初始化函式。module init init module 這就入口 module exit exit module 這就裝置退掉的時候調的...
Linux GPIO驅動 驅動框架概述
gpio是嵌入式開發中最常見的介面,之前自己就有寫過小的gpio驅動,提供ioctl介面給使用者空間操作。但直到最近才發現linux自身就有完善的gpio驅動框架,並且通過sysfs向使用者空間提供操作介面。linux的gpio驅動框架層次及資料結構如下 最上層是用來向向使用者空間提供介面,使用者可...