zynq移植vxWorks6.9之SD/EMMC驱动
步骤:
1.在BSP添加SD/EMMC支持
2.SDIO控制器时钟修改
3.EMMC驱动更改
4.镜像工程添加EMMC支持
5.格式化EMMC为FAT32格式
1.在BSP添加SD/EMMC支持
BSP默认定义是“DRV_STORAGE_SDHC”,该定义只有SD0的初始化,且驱动单支持SD卡,不支持EMMC。
在config.h中注释掉“DRV_STORAGE_SDHC”,新增定义如下:
#define DRV_ZYNQ_SDHC_CTRL
#define DRV_MMCSTORAGE_CARD
#define DRV_SDSTORAGE_CARD
添加文件系统支持
# define INCLUDE_DOSFS
# define INCLUDE_DOSFS_MAIN
# define INCLUDE_DOSFS_CHKDSK
# define INCLUDE_DOSFS_FMT
# define INCLUDE_DOSFS_FAT
# define INCLUDE_DOSFS_SHOW
# define INCLUDE_DOSFS_DIR_FIXED
# define INCLUDE_DOSFS_DIR_VFAT
# define INCLUDE_FS_MONITOR
# define INCLUDE_FS_EVENT_UTIL
# define INCLUDE_ERF
# define INCLUDE_XBD
# define INCLUDE_XBD_TRANS
# define INCLUDE_DEVICE_MANAGER
# define INCLUDE_XBD_BLK_DEV
# define INCLUDE_XBD_PART_LIB
# define INCLUDE_DISK_UTIL
2.SDIO控制器时钟修改
在vivado的BLOCK Design中降低SDIO控制的时钟,在BSP的“xlnx_zynq7k.h”中修改对应的时钟。
在BSP的“xlnx_zynq7k.h”中修改对应的时钟。
3.EMMC驱动更改
由于在vxWorks下支持EMMC 4BIT的,注释掉驱动文件“vxbMmcStorage.c”中的mmcSwitch 8IT代码。
“vxbMmcStorage.c”在WindRiver\vxworks-6.9\target\src\hwif\storage目录下
编译驱动
进入wind River的shell界面,
选择工程,点击右键选择“open win river vxworks 6.9 development shell”
进入“WindRiver\vxworks-6.9\target\src\hwif\storage”下执行
make CPU=ARMARCH7 TOOL=diab
4.镜像工程EMMC支持添加
添加“DRV_ZYNQ_SDHC_CTRL”支持
添加“DRV_MMCSTORAGE_CARD”支持
添加"DOSFS"支持
编译生成vxWorks镜像。
5.格式化EMMC为FAT32格式
进入系统devs,如果能看到“/mmc0:0”设备,说明已经成功驱动。
格式化EMMC为FAT32格式
dosFsVolFormat ("/mmc0:0", 0x20, 0); //格式化为FAT32
可以通过copy,拷贝文件测试一下。
例如:copy (“vxWorks”, “/mmc0:0/vxWorks”)
ls “/mmc0:0” 查看文件是否存在
注意事项-------1:
如果进入系统devs,看不到“/mmc0:0”设备;通过vxBusShow,能看到设备注册。请检查第三步。
注意事项-------2:
如果入系统,能看到设备,格式化失败或者拷贝文件失败,降低SDIO的时钟。