主题 : Android内核移植计划(2) SD卡移植 复制链接 | 浏览器收藏 | 打印
Just do it
级别: 侠客
UID: 2754
精华: 4
发帖: 66
金钱: 2435 两
威望: 873 点
综合积分: 212 分
注册时间: 2008-12-07
最后登录: 2016-04-13
楼主  发表于: 2009-07-22 09:46

 Android内核移植计划(2) SD卡移植

JUL,21th,2009——SD卡移植
今天成功的搞定了SD卡的移植,SD卡的驱动程序还是用了mini2440的驱动程序,不过因为移植到得内核是Linux2.6.25,所以需要做相应的头文件位置更改,另外在ARCH文件夹中要做如下更改:
SC324XX.C中做如下更改:
void __init s3c244x_map_io(struct map_desc *mach_desc, int size)
{
    /* register our io-tables */

    iotable_init(s3c244x_iodesc, ARRAY_SIZE(s3c244x_iodesc));
    iotable_init(mach_desc, size);

    /* rename any peripherals used differing from the s3c2410 */
     s3c_device_sdi.name= "s3c2440-sdi";
    s3c_device_i2c.name  = "s3c2440-i2c";
    s3c_device_nand.name = "s3c2440-nand";
    s3c_device_usbgadget.name = "s3c2440-usbgadget";
}
在commonsmdk.c中做如下更改:
static struct platform_device __initdata *smdk_devs[] = {
    &s3c_device_nand,
    &smdk_led4,
    &smdk_led5,
    &smdk_led6,
    &smdk_led7,
     & s3c_device_sdi,
};
关于内核配置,一下选项是必须的:
#NATIVE LANGUAGE
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
关于根文件的配置文件如下:
/etc/mountd.conf
## mountd configuration file

## add a mount entry for each mount point to be managed by mountd
mount {
    ## root block device with partition map or raw FAT file system
    block_device    /dev/block/mmcblk0p1
        这里必须是mmcblk0p1而不是mmcblk0,尽管/dev/block下有这个文件

    ## mount point for block device
    mount_point     /sdcard
    
    ## true if this mount point can be shared via USB mass storage
    enable_ums      true
}

/etc/vold.conf
## vold configuration file for the emulator/SDK

volume_sdcard {
    ## This is the direct uevent device path to the SD slot on the device
    ##emu_media_path /devices/platform/goldfish_mmc.0/mmc_host/mmc0
    emu_media_path /devices/platform/s3c2440-sdi/mmc_host:mmc0
这个可以查询/SYS下得到类似的
    media_type     mmc
    mount_point    /sdcard
    ums_path       /devices/platform/usb_mass_storage/lun0
}
虽然移植上去了,不过对于MMC LAYER    的机制还不清楚,接下来的几天要弄清楚。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-07-22 10:31
    block_device    /dev/block/mmcblk0p1
        这里必须是mmcblk0p1而不是mmcblk0,尽管/dev/block下有这个文件

mmcblk0p1表示SD卡的第一个分区,mmcblk0表示整个SD卡,至于用哪一个,要根据所用的SD卡是否包含分区表,以及分区的格式
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 5051
精华: 0
发帖: 37
金钱: 355 两
威望: 200 点
综合积分: 74 分
注册时间: 2009-04-09
最后登录: 2011-06-20
2楼  发表于: 2009-08-12 17:45
很多头文件找不到,楼主能说明白点吗?郁闷了很长时间,一直都被卡在这里。谢谢了
Just do it
级别: 侠客
UID: 2754
精华: 4
发帖: 66
金钱: 2435 两
威望: 873 点
综合积分: 212 分
注册时间: 2008-12-07
最后登录: 2016-04-13
3楼  发表于: 2009-08-12 19:15
由于Linux2.69后,内核的头文件结构发生了很大变化,很多原来与平台相关的头文件已经不再根目录的
include下,你需要改变相应文件的位置
级别: 新手上路
UID: 5051
精华: 0
发帖: 37
金钱: 355 两
威望: 200 点
综合积分: 74 分
注册时间: 2009-04-09
最后登录: 2011-06-20
4楼  发表于: 2009-08-12 19:23
加我QQ:895942755    交个朋友   这东西我弄了很久很久了,SD卡就是弄不起来


mapped channel 0 to 0
s3c2410-sdi s3c2410-sdi: powered down.
s3c2410-sdi s3c2410-sdi: initialisation done.
s3c2410-sdi s3c2410-sdi: running at 0kHz (requested: 0kHz).
s3c2410-sdi s3c2410-sdi: running at 99kHz (requested: 98kHz).
s3c2410-sdi s3c2410-sdi: running at 99kHz (requested: 98kHz).

执行: cat  /proc/partitions    
没有看到SD卡
[ 此帖被wangtianxu在2009-08-12 23:07重新编辑 ]
级别: 新手上路
UID: 5051
精华: 0
发帖: 37
金钱: 355 两
威望: 200 点
综合积分: 74 分
注册时间: 2009-04-09
最后登录: 2011-06-20
5楼  发表于: 2009-08-26 09:46
我的编译时在s3cmci.c 文件的1196行出现 unknow   get_cd   导致编译失败  请问是什么原因
Just do it
级别: 侠客
UID: 2754
精华: 4
发帖: 66
金钱: 2435 两
威望: 873 点
综合积分: 212 分
注册时间: 2008-12-07
最后登录: 2016-04-13
6楼  发表于: 2009-08-26 10:52
getcd这个函数是Linux内核后面的版本加入的,您使用的版本应该不是Linux2.6.29吧
级别: 侠客
UID: 8515
精华: 0
发帖: 62
金钱: 535 两
威望: 233 点
综合积分: 124 分
注册时间: 2009-08-26
最后登录: 2014-06-25
7楼  发表于: 2009-08-27 09:15
good
级别: 新手上路
UID: 5051
精华: 0
发帖: 37
金钱: 355 两
威望: 200 点
综合积分: 74 分
注册时间: 2009-04-09
最后登录: 2011-06-20
8楼  发表于: 2009-08-29 16:48
引用第6楼jeefjiang于2009-08-26 10:52发表的  :
getcd这个函数是Linux内核后面的版本加入的,您使用的版本应该不是Linux2.6.29吧



这个可以不理它,注释掉就可以了
级别: 新手上路
UID: 46556
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
综合积分: 24 分
注册时间: 2011-05-14
最后登录: 2017-09-13
9楼  发表于: 2011-05-15 13:36

 回 楼主(jeefjiang) 的帖子

不错