3.个人建议自己先把上述源码都交叉编译成内核模块,至于怎么交叉编译成内核模块,这里就不再赘述了,在编译模块的过程中可以检查驱动程序的错误与否,不然你要是直接抠出来就放进内核源码里面,要是等下你编译内核的时候出错,这个就比较麻烦和耗时间了,好了,如果编译内核模块的这个过程中驱动程序源码没有什么问题的话,接下来你就可以放心大胆地将my_adc.c和my_ts.c放进内核源码中,并且修改相应的kconfig和Makefile文件了,具体步骤如下:
3.1 把my_adc.c放入内核源码drivers/char 这个目录下,并且修改这个目录下的kconfig和Makefile文件:
在kconfig里面把config TQ2440_ADC的代码改成下面所示的代码:
config MY_ADC
bool "My ADC driver for TQ2440"
depends on ARCH_S3C2440
default y if ARCH_S3C2440
help
My ADC driver for TQ2440.
在Makefile里面把obj-$(CONFIG_TQ2440_ADC) += EmbedSky_adc.o 改成下面所示的代码:
obj-$(CONFIG_MY_ADC) += my_adc.o
3.2 把my_ts.c放入内核源码drivers/input/touchscreen下,并修改这个目录下的kconfig和Makefile文件:
在kconfig里面把原来的config TOUCHSCREEN_TQ2440的代码修改成如下所示的代码:
config TOUCHSCREEN_MY2440
tristate " MY2440 TouchScreen input driver"
depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN && MY_ADC
help
Say Y here if you have the MY2440 TouchScreen.
and depends on MY_ADC
If unsure, say N.
To compile this driver as a module, choose M here: the
module will be called my_ts.
在Makefile里面把原来的obj-$(CONFIG_TOUCHSCREEN_TQ2440) += tq2440_ts.o 修改成下面所示的代码:
obj-$(CONFIG_TOUCHSCREEN_MY2440) += my_ts.o
4.至此修改linux内核源码的工作就结束了,接下来我们来配置和编译内核:
进入修改后的源码目录linux2.6.30.4下,找到config_EmbedSky_W43(我的显示屏是4.3寸的),然后输入指令:cp config_EmbedSky_W43 .config ,再然后输入指令:make menuconfig ,接着会弹出内核配置的图形界面,具体操作如下:
4.1 进入Device Drivers--> Character devices 把 My ADC driver for TQ2440 这个选项选上,如下图所示:
4.2 进入 Device Drivers --->Input device support ---> Touchscreens --->MY2440 TouchScreen input driver 这个选项选上,如下图所示:
4.3 最后回到 Linux Kernel Configuration ,选择 Save an Alternate Configuration File ,保存你刚才所做的所有设置。
5.好了,到此内核源码的修改和内核的配置工作你都完成了,接下来你就可以编译内核了,输入指令:make 然后就开始编译内核了,等到结束后,找到zImage.bin这个文件便是我们编译好的内核镜像文件,然后把这个内核烧写进开发板,你会发现触摸屏就奇迹般地能够用了,至此TQ2440触摸屏驱动程序的移植就结束了。