【记录】将Uboot 2011.06中mmc驱动移植到uboot 1.1.6的过程
时间:2011-8-14
作者:crifan
联系方式:green-waste (at) 163.com
附上代码:
【背景】
硬件:
(1)TQ2440,CPU是S3C2440,带SD/MMC控制器。
(2)自己的金士顿的1GB的SD卡
软件:
(1)TQ2440的uboot 1.1.6
(2)自己已经移植旧的mmc的驱动成功,可以实现mmcinfo, fatls mmc 0, fatload mmc 0 addr file,但是旧的mmc中检测出来的sd卡的容量不对,原因是由于READ_BL_LEN是15,大于12了,用的计算方法是错误的。
详情参见:
【记录】在TQ2440的uboot中添加SD/MMC支持+添加USB Mass Storage支持+解决fatls乱码问题
【目的】
想要实现正确检测我的1GB的SD卡的容量,所以要把正确的mmc驱动移植过来。
而目前最新的uboot 2011.06版本的中,已经有最新的mmc驱动,但是和uboot 1.1.6比,mmc的整个架构都变了,需要把mmc部分,整个都改了,再添加对应的底层函数,才可以。
【将Uboot 2011.06中mmc驱动移植到uboot 1.1.6的全过程】
1.添加文件,修改makefile等准备工作
先是把mmc最直接相关的cmd_mmc.c,整个替换了
这样就支持了更多的mmc相关的命令了:
mmcinfo
mmc rescan
mmc part
mmc list
mmc dev
fatls mmc 0
fatload mmc 0 addr filename
同时,替换了最新的mmc.h头文件,该文件包含了对应的sd/mmc所有的命令等定义。
由于旧的uboot中在board.c的start_armboot()中没有mmc初始化部分,所以也要填上对应内容:#ifdef CONFIG_GENERIC_MMC
puts(“MMC:“);
mmc_initialize(gd->bd);
#endif
而后再去添加对应的makefile等,使得编译通过,不多细说。
2. s3c_mmc_init()
用beyondcompare,