前段时间一直碰到SD卡驱动编译不进内核的问题,编译好的内核能检测到SD卡的热插拔,但读不到卡里的信息。今天又重新研究了下再加上网上几位大婶的帖子看了下,终于搞定了。
我的内核版本是3.8.0,
1.在make menuconfig之前,先设置要make用的交叉编译器make menuconfig ARCH=arm,复制配置环境cp mini210_linux_defconfig .config
2.选择SD卡驱动,Device Drivers ---><*>MMC/SD/SD/SDIO card support---><*>MMC block device driver<*>USB SD Host Controller(USHC) support
3.修改arch/arm/mach-s3c2410/mach-smdk2410.c,添加内容:
#include <mach/gpio.h>
#include <linux/mmc/host.h>
#include <plat/mci.h>
/*SDI Support*/
static struct s3c24xx_mci_pdata smdk2410_mmc_cfg __initdata = {
.gpio_detect = S3C2410_GPG(10),
.set_power = NULL,
.ocr_avail = MMC_VDD_32_33,
};
在smdk2410_init中添加
s3c24xx_mci_set_platdata(&smdk2410_mmc_cfg);
4.编译内核 make zImage ARCH=arm CROSS_COMPILE=arm-linux-然后将编译好的内核烧进板子,SD 卡就读写正常了。
接下来是移植tslib,早上还实现了,刚重烧了系统,发现又忘记步骤了,等搞定了上传文档。