Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482361
  • 博文数量: 100
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 955
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-21 09:30
文章分类

全部博文(100)

文章存档

2017年(1)

2016年(16)

2015年(83)

我的朋友

分类: 嵌入式

2015-09-27 20:35:22

参考另一块板子s5p_goni很容易就能添加MMC功能,
首先复制goni.c中的int board_mmc_init(bd_t *bis)函数到smdkv210.c中,
在smdkv210.h中添加MMC的相关宏:
/* MMC */
#define CONFIG_GENERIC_MMC
#define CONFIG_MMC
#define CONFIG_SDHCI
#define CONFIG_S5P_SDHCI

需要包含2个头文件:
#include
#include

static struct s5pc110_gpio *s5pc110_gpio;

编译发现打印MMC: 就卡住了。
MMC:   

正常情况下即使mmc初始化失败应该打印错误,但是这里直接卡住了,很可能pc指针出错了。
检查发现s5pc110_gpio指针没有初始化。添加:
s5pc110_gpio = (struct s5pc110_gpio *)S5PC110_GPIO_BASE;

编译成功,但是mmc打印Unknown command 'mmc' - try 'help'
添加命令宏:
#define CONFIG_CMD_MMC

SMDKV210 # fatls mmc 0
    37504   mlo 
            lost.dir/
            images/
   451872   u-boot.bin 
   484788   u-boot.img 
     6678   smdkv210.h 
     1787   cmd 
            images(210)/
            .android_secure/
            music/
            podcasts/
            ringtones/
            alarms/
            notifications/
            pictures/
            movies/
            download/
            dcim/


5 file(s), 13 dir(s)

MMC驱动移植,就是这么简单。

现在还是以普通方式读写数据,看了exynos4是开启DMA的,试试:
#define CONFIG_MMC_SDMA
#define CONFIG_MMC_DEFAULT_DEV 0

在另一块板子上移植mmc的时候,时钟停在DRAM:  1 GiB,加打印信息,最终卡在nand_set_defaults函数中的
if (!chip->block_markbad)
        chip->block_markbad = nand_default_block_markbad;

但是这句代码怎么看都不像有问题,于是怀疑是不是DDR配置有问题,后来突然想到,BL2程序可能没有拷贝完整,检查:
copy_bl2_to_ram,果然:
    u32 bl2Size = 250 * 1024;    // 250K
这是zjh写的,我没做修改,浪费了一天时间啊。

烧写u-boot到nand:
mmc dev 0
U-Boot# fatload mmc 0 82000000 /MLO  ;nand erase.part NAND.SPL;nand write 82000000 NAND.SPL
U-Boot# fatload mmc 0 82000000 /u-boot.img;nand erase.part NAND.u-boot;nand write 82000000 NAND.u-boot

阅读(2355) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~