linux 驅動總結
linux驅動介面裡的_init _exit 其實就是巨集。
linux驅動程式不能用gcc直接編譯生成模組。要用makefile
ifneq ($(kernelrelease),)
obj-m := test.o
else
#kerneldir ?= /lib/modules/$(shell uname -r)/build
kerneldir := /home/twei/code/linux-2.6.35.3
pwd := $(shell pwd)
modules:
$(make) -c $(kerneldir) m=$(pwd) modules
endif
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.order *.symvers
其中值得注意的是
$(make) -c $(kerneldir) m=$(pwd) modules和rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.order *.symvers這兩句前面需要加入tab鍵,因為它們是命令,具體詳細解釋請參考makefile的詳細教程,
而kerneldir屬於linux核心的編譯路徑,obj-m :=test.o屬於需要編譯的驅動模組,一般情況只需要簡單的修改test.o的名字就能正常的編譯。
嵌入式學習Makefile
make是乙個工具,用來構建和管理軟體享目。之前是個編譯乙個hello.c的程式需要一條gcc命令。但是乙個軟體工程有大量的原始檔需要gcc編譯,手工逐條敲命令編譯顯然是低效且浪費時間的。make能夠使整個軟體工程的編譯,鏈結只需要乙個命令就可以完成。makefile檔案中記錄了一系列規則 targ...
嵌入式筆記之Makefile
1 src shell ls c 2 objs patsubst c,o,src 3 test objs 4 gcc o 5 o c 6 gcc c o 7 cleam 8 rm f test o 注 在makefile編寫規則中,表示規則的目標檔名,表示所有不重複的依賴檔名,表示第乙個依賴檔名。假...
嵌入式linux IIC驅動
linux驅動和裝置隔離,驅動分層,iic驅動框架分為兩部分 1.1 iic匯流排驅動 platform是虛擬匯流排,針對沒有匯流排的裝置實現,匯流排 裝置 驅動框架,iic不用虛擬,可直接用匯流排bus。iic匯流排驅動有兩個重要資料結構 i2c adapter,i2c algorithm。i2c...