自己照着移植文档把对NAND FLASH驱动和yaffs2文件系统的支持的Linux系统编译出来,然后把内核镜像烧入FLASH,然后再把光盘的root_2.6.31.bin镜像烧入FLASH。这样就在目标板建立起了测试驱动的最基本的环境。同时,编译的源码也就成了宿主机的编译驱动的内核树环境。
编译驱动时可以使用:make -C /.../.../linux-2.6.31/ SUBDIRS=$PWD modules
注意:要有Makefile文件;/.../.../linux-2.6.31/ 为内核树目录
如果要编译TX2440A的led驱动的话,即光盘里的TX2440_led.c源文件,在Makefile文件里有一句:
obj-m := TX2440_led.o 即可。
编译led驱动是还需注意的是:要修改源码中arch/arm/plat-s3c2440/common-smdk.c源文件。在arch/arm/plat-s3c24xx/common-smdk.c中将GPF0-GPF3设为输出,全部输出低电平。只需在smdk_machine_init函数里修改
void __init smdk_machine_init(void)
{
/* Configure the LEDs (even if we have no LED support)*/
s3c2410_gpio_cfgpin(S3C2410_GPF(0), S3C2410_GPIO_OUTPUT);
s3c2410_gpio_cfgpin(S3C2410_GPF(1), S3C2410_GPIO_OUTPUT);
s3c2410_gpio_cfgpin(S3C2410_GPF(2), S3C2410_GPIO_OUTPUT);
s3c2410_gpio_cfgpin(S3C2410_GPF(3), S3C2410_GPIO_OUTPUT);
s3c2410_gpio_cfgpin(S3C2410_GPF(4), S3C2410_GPIO_OUTPUT);
s3c2410_gpio_cfgpin(S3C2410_GPF(5), S3C2410_GPIO_OUTPUT);
s3c2410_gpio_cfgpin(S3C2410_GPF(6), S3C2410_GPIO_OUTPUT);
s3c2410_gpio_cfgpin(S3C2410_GPF(7), S3C2410_GPIO_OUTPUT);
s3c2410_gpio_setpin(S3C2410_GPF(0), 0);
s3c2410_gpio_setpin(S3C2410_GPF(1), 0);
s3c2410_gpio_setpin(S3C2410_GPF(2), 0);
s3c2410_gpio_setpin(S3C2410_GPF(3), 0);
s3c2410_gpio_setpin(S3C2410_GPF(4), 1);
s3c2410_gpio_setpin(S3C2410_GPF(5), 1);
s3c2410_gpio_setpin(S3C2410_GPF(6), 1);
s3c2410_gpio_setpin(S3C2410_GPF(7), 1);
if (machine_is_smdk2443())
smdk_nand_info.twrph0 = 50;
s3c_device_nand.dev.platform_data = &smdk_nand_info;
platform_add_devices(smdk_devs, ARRAY_SIZE(smdk_devs));
s3c_pm_init();
}
该代码是通过codehl软件生成的代码在用word打开复制来的。
由这大家也可想到,其实也可以在驱动中添加在smdk_machine_init函数中添加的代码。效果也相同。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』