[root@localhost6 Kernel]# make zImage
CHK include/linux/version.h
make[1]: “include/asm-arm/mach-types.h”是最新的。
CHK include/linux/utsrelease.h
CALL scripts/checksyscalls.sh
:1097:2: warning: #warning syscall fadvise64 not implemented
:1265:2: warning: #warning syscall migrate_pages not implemented
:1321:2: warning: #warning syscall pselect6 not implemented
:1325:2: warning: #warning syscall ppoll not implemented
:1365:2: warning: #warning syscall epoll_pwait not implemented
CHK include/linux/compile.h
CC drivers/mmc/host/s3c2410mci.o
drivers/mmc/host/s3c2410mci.c:262: error: parse error before "s3c2410_dma_buffresult"
drivers/mmc/host/s3c2410mci.c:263: warning: function declaration isn't a prototype
drivers/mmc/host/s3c2410mci.c: In function `s3c2410sdi_dma_done_callback':
drivers/mmc/host/s3c2410mci.c:265: error: `buf_id' undeclared (first use in this function)
drivers/mmc/host/s3c2410mci.c:265: error: (Each undeclared identifier is reported only once
drivers/mmc/host/s3c2410mci.c:265: error: for each function it appears in.)
drivers/mmc/host/s3c2410mci.c:283: error: `result' undeclared (first use in this function)
drivers/mmc/host/s3c2410mci.c: At top level:
drivers/mmc/host/s3c2410mci.c:310: error: parse error before "s3c2410_dmasrc_t"
drivers/mmc/host/s3c2410mci.c:310: warning: function declaration isn't a prototype
drivers/mmc/host/s3c2410mci.c: In function `s3c2410sdi_dma_setup':
drivers/mmc/host/s3c2410mci.c:312: error: `host' undeclared (first use in this function)
drivers/mmc/host/s3c2410mci.c:312: error: `source' undeclared (first use in this function)
drivers/mmc/host/s3c2410mci.c: In function `s3c2410sdi_request':
drivers/mmc/host/s3c2410mci.c:321: error: implicit declaration of function `to_platform_device'
drivers/mmc/host/s3c2410mci.c:321: warning: initialization makes pointer from integer without a cast
drivers/mmc/host/s3c2410mci.c:333: error: `S3C2410_SDICMDCON_SENDERHOST' undeclared (first use in this function)
drivers/mmc/host/s3c2410mci.c:352: error: `MMC_RSP_MASK' undeclared (first use in this function)
drivers/mmc/host/s3c2410mci.c:378: error: structure has no member named `blksz_bits'
drivers/mmc/host/s3c2410mci.c:384: error: `S3C2410_SDIDCON_BLKNUM_MASK' undeclared (first use in this function)
drivers/mmc/host/s3c2410mci.c:417: error: dereferencing pointer to incomplete type
drivers/mmc/host/s3c2410mci.c:425: error: structure has no member named `blksz_bits'
drivers/mmc/host/s3c2410mci.c:483: error: dereferencing pointer to incomplete type
drivers/mmc/host/s3c2410mci.c:487: error: structure has no member named `blksz_bits'
drivers/mmc/host/s3c2410mci.c: In function `s3c2410sdi_set_ios':
drivers/mmc/host/s3c2410mci.c:544: error: implicit declaration of function `clk_get_rate'
drivers/mmc/host/s3c2410mci.c: In function `s3c2410sdi_probe':
drivers/mmc/host/s3c2410mci.c:584: warning: initialization makes pointer from integer without a cast
drivers/mmc/host/s3c2410mci.c:616: error: implicit declaration of function `platform_get_resource'
drivers/mmc/host/s3c2410mci.c:616: warning: assignment makes pointer from integer without a cast
drivers/mmc/host/s3c2410mci.c:623: error: dereferencing pointer to incomplete type
drivers/mmc/host/s3c2410mci.c:639: error: implicit declaration of function `platform_get_irq'
drivers/mmc/host/s3c2410mci.c:646: warning: passing arg 2 of `request_irq' from incompatible pointer type
drivers/mmc/host/s3c2410mci.c:654: error: implicit declaration of function `set_irq_type'
drivers/mmc/host/s3c2410mci.c:654: error: `IRQ_TYPE_EDGE_RISING' undeclared (first use in this function)
drivers/mmc/host/s3c2410mci.c:654: error: `IRQ_TYPE_EDGE_FALLING' undeclared (first use in this function)
drivers/mmc/host/s3c2410mci.c:656: warning: passing arg 2 of `request_irq' from incompatible pointer type
drivers/mmc/host/s3c2410mci.c:667: error: implicit declaration of function `clk_get'
drivers/mmc/host/s3c2410mci.c:667: warning: assignment makes pointer from integer without a cast
drivers/mmc/host/s3c2410mci.c:675: error: implicit declaration of function `clk_use'
drivers/mmc/host/s3c2410mci.c:680: error: implicit declaration of function `clk_enable'
drivers/mmc/host/s3c2410mci.c:701: error: structure has no member named `max_sectors'
drivers/mmc/host/s3c2410mci.c:708: error: structure has no member named `max_sectors'
drivers/mmc/host/s3c2410mci.c:730: error: implicit declaration of function `clk_disable'
drivers/mmc/host/s3c2410mci.c:733: error: implicit declaration of function `clk_unuse'
drivers/mmc/host/s3c2410mci.c:736: error: implicit declaration of function `clk_put'
drivers/mmc/host/s3c2410mci.c: At top level:
drivers/mmc/host/s3c2410mci.c:777: error: `platform_bus_type' undeclared here (not in a function)
drivers/mmc/host/s3c2410mci.c:777: error: initializer element is not constant
drivers/mmc/host/s3c2410mci.c:777: error: (near initialization for `s3c2410sdi_driver.bus')
make[3]: *** [drivers/mmc/host/s3c2410mci.o] 错误 1
make[2]: *** [drivers/mmc/host] 错误 2
make[1]: *** [drivers/mmc] 错误 2
make: *** [drivers] 错误 2
首先是根据错误提示修改出错的函数void s3c2410sdi_dma_done_callback(struct s3c2410_dma_chan *dma_ch,void *buf_id,int size,enum s3c2410_dma_buffresult result)注意参数中一些数据结构在2.6.24中都已经改变了,所以要加上struct和enum这二处的声明。
同理要修改
static void s3c2410sdi_dma_setup(struct s3c2410sdi_host *host, enum s3c2410_dmasrc source)注意加上enum声明
warning: passing arg 2 of `request_irq' from incompatible pointer type
说明注册的中断处理函数参数个数不符合2.6.24版本要求。
修改稳定后,编译内核烧录竟然开机没有初始化硬件,编译时也注意看内核提示的信息,看到顺利编译通过了s3c2410mci.o,百思不得其解,结果在make menuconfig时发现竟然mmc的支持选中了模块形式(显示为M),真是晕啊,呵呵,原来的时候我用make xconfig时没有注意这里,看来要检查的再仔细才行,重新烧录,可以看到内核不仅编译了这个模块还有mmc的公用模块。最后要注意:
mmci-s3c2410: failed to request card detect interrupt.
s3c2410-sdi: probe of s3c2410-sdi failed with error -2
这是由于中断冲突引起的。通常的驱动根据Sumsung官方开发板的设置会把s3c2410的EINT18脚连接到sd卡的cd脚上,用于插上sd卡后的中断检测。如果EINT18被用于其他的中断的话,sd卡的驱动将申请不到相应的中断。为此,需要将s3c2410mci.c中s3c2410_mmc_defplat的gpio_detect变量由gpg10改为自己设计中的cd脚,如果没有连接该脚的话,可以设为一个闲置的中断管脚。
此后在mount /dev/mmcblock0p0 /mnt时出现:FAT: codepage cp437 not found错误,原因是在设置内核时没有Codepage 437 (United States ,Canada)选中即可
阅读(4258) | 评论(1) | 转发(0) |