最近在調試arm與外設iic通訊是,想來個投機取巧,先不寫單獨的驅動,直接通過iic bus設備是否可以連接到外設,然后發現在板子上找不到“/dev/i2c-n”的設備,標准的系統應該都是有的。
回去看內核驅動
代碼位於
lichee/linux-3.10/drivers/i2c/
# # Makefile for the i2c core. # obj-$(CONFIG_I2C_BOARDINFO) += i2c-boardinfo.o obj-$(CONFIG_I2C) += i2c-core.o obj-$(CONFIG_I2C_SMBUS) += i2c-smbus.o obj-$(CONFIG_I2C_CHARDEV) += i2c-dev.o obj-$(CONFIG_I2C_MUX) += i2c-mux.o obj-y += algos/ busses/ muxes/ obj-$(CONFIG_I2C_STUB) += i2c-stub.o ccflags-$(CONFIG_I2C_DEBUG_CORE) := -DDEBUG CFLAGS_i2c-core.o := -Wno-deprecated-declarations
查看其中的Makefile中有相關驅動的編譯腳本,但是卻沒有i2c-dev.o文件,說明該驅動沒有參與編譯。
需要去make menuconfig里面配置成m(編譯成ko以模塊的方式插入)或者y(直接和內核編譯在一起),在這里選擇以模塊的方式編譯。
依次執行make menuconfig
然后選擇Device Drivers——>I2C support——>I2C device interface設置成M 保存退出,重新編譯即可。



