自己照著移植文檔把對NAND FLASH驅動和yaffs2文件系統(tǒng)的支持的Linux系統(tǒng)編譯出來,然后把內核鏡像燒入FLASH,然后再把光盤的root_2.6.31.bin鏡像燒入FLASH。這樣就在目標板建立起了測試驅動的最基本的環(huán)境。同時,編譯的源碼也就成了宿主機的編譯驅動的內核樹環(huán)境。
編譯驅動時可以使用: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__initsmdk_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函數中添加的代碼。效果也相同。