您的位置:首页 > 其它

uboot1.1.6移植SDHC驱动、Fat支持

2013-08-17 10:27 381 查看
1、原始的uboot1.1.6只支持mmc不支持SDHC!

cpu/s3c64xx/hs_mmc.c 此驱动文件比较旧,不支持SDHC卡和SD2.0协议,SD/MMC(2G或以下)可以;

需要修改初始化函数hsmmc_init(),

SD2.0初始化卡顺序

SD rest CMD0 -> SD_SEND_IF_COND CMD8 -> 选中SD ... 具体参考移植好的代码,

更详细可以搜索SD2.0协议

SDMA也有问题,它是大块一次读完,我测试当文件大于16M时,读取的数据就不正确了。需要修改movi_read()函数,

改成每次按512Byte字节读,直到把block num读完为止,为什么要这样,我仔细看过datasheet,

原本程序应该也是没有问题,估计三星的SDMA没有做好或有BUG,网上也可以搜到,但不多。

2、用hs_mmc.c替换cpu/s3c64xx/hs_mmc.c

在Y:\urbetter-u-boot-1.1.6-v1.0\include添加linux-mmc-protocol.h和glamo-mmc.h!

在Y:\urbetter-u-boot-1.1.6-v1.0\include\asm\arch下添加:mmc.h

驱动下载地址:http://download.csdn.net/detail/longtian635241/5974279

重新编译即支持SDHC了!

3、支持大于2G的SDHC卡!

SD启动的bin文件会被分成BL1,BL2两块,移植好的uboot目录下有mkmovi脚本工具可以生成u-boot-movi.bin可供SD_Write.exe烧录;

也可以使用三星提供的IROM_Fusing_Tool工具(网上可以下载到源码,可以自己修改)烧录;

uboot的bl1和bl2的分布在Y:\urbetter-u-boot-1.1.6-v1.0\include的movi.h中定义!如果使用飞凌的SD_Write.exe的修改为:

#define PART_UBOOT_OFFSET 0x0

#define PART_ZIMAGE_OFFSET 0x40000

#define PART_ROOTFS_OFFSET 0x200000

#define PART_EXTRA_OFFSET 0x3200000

//#define MOVI_BL2_BLKCNT (PART_SIZE_BL / MOVI_BLKSIZE)

//#define MOVI_ZIMAGE_BLKCNT (PART_SIZE_KERNEL / MOVI_BLKSIZE)

#define MOVI_BL2_BLKCNT (((PART_ZIMAGE_OFFSET - PART_UBOOT_OFFSET) / MOVI_BLKSIZE) - MOVI_ENV_BLKCNT)

#define MOVI_ZIMAGE_BLKCNT ((PART_ROOTFS_OFFSET - PART_ZIMAGE_OFFSET) / MOVI_BLKSIZE)

如果没有工具也可以使用WinHex工具直接写SD卡,注意SD ,SDHC写入的偏移不一样,都是写在SD尾部,

卡的块大小可通过IROM code 全局变量globalBlockSizeHide得到,

具体看三星IROM boot文档,这些uboot代码已经写好了;

到此,sd uboot 应该可以跑起来了

3、支持FAT命令!

在smdk6410.h中添加

#define CONFIG_COMMANDS \

(CONFIG_CMD_DFL| \

CFG_CMD_CACHE
| \

CFG_CMD_USB
| \

CFG_CMD_REGINFO| \

CFG_CMD_LOADS
| \

CFG_CMD_LOADB
| \

CFG_CMD_ENV
| \

CFG_CMD_NAND
| \

CFG_CMD_MOVINAND| \

CFG_CMD_ONENAND| \

CFG_CMD_DATE
| \

CFG_CMD_PING
| \

CFG_CMD_FAT| \

CFG_CMD_ELF)
\

& ~(CFG_CMD_AUTOSCRIPT| \

CFG_CMD_BOOTD
| \

CFG_CMD_IMI
| \

CFG_CMD_RUN
| \

CFG_CMD_CONSOLE| \

CFG_CMD_DOCG3P3 | \

CFG_CMD_EEPROM | \

CFG_CMD_I2C
| \

0)

其次添加:

#define CONFIG_MMC 1 //fs/fat/fat.c中有用到!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: